图像放大的二次线性插值(计算机视觉)

一、实验目的

利用python 语言编程实现缩小放大,对比两种方法得到放大图像的差异,进一步理解计算机视觉中图像缩小及放大的各种方法及其原理。同时培养学生的编程能力。

2. 实验软硬件环境

笔记本电脑、windows10系统,Visual Studio Code编辑器,opencv视觉库,numpy库, matplolib库。

三、实验内容及步骤

(一)实验内容

使用python编程,实现图片的缩小与放大。

(2) 实验过程

1. python编程实现图像的缩小。

基于opencv读取包含个人人脸的图像。

调用opencv中的库函数,使用图像的缩小。

img=cv2.imread(‘xiao.jpg’)

y ,x = img.shape[0:2]

图片太小,缩小后作为基础图片,确定宽高。

while x>=500:

img2=cv2.resize(img,(int(0.5*x),int(0.5*y)))

y ,x = img2.shape[0:2]

img=img2

cv2.imshow(‘img2’,img2)

H,W=img2.shape[0:2]

连续缩小

while x>=200:

img3=cv2.resize(img2,(int(0.5*x),int(0.5*y)))

cv2.imshow(‘showing’,img3)

y ,x = img3.shape[0:2]

img2=img3

H1,W1=img3.shape[0:2]

s=H/H1

print(s)

最近邻插值放大

Iimg4=cv2.resize(img3,(0,0),fx=int(s),fy=int(s),interpolation=cv2.INTER_NEAREST) #缩放图像

cv2.imshow(‘最近邻插值’,img4)

双线性插值

img5=cv2.resize(img3,(0,0),fx=int(s),fy=int(s),interpolation=cv2.INTER_LINEAR) #缩放图像

cv2.imshow(‘双线性插值法’,img5)

将缩小后的图像保存到文件夹中。

2. 基于双线性插值对1中缩小后的图像进行放大。

3. 基于最近邻插值法对1,中的缩小的图像进行放大。

4.记录原图,缩小后的图像,两种方法放大的图像。

5.上述得到的图像均保存到文件夹中。命名格式  **人基准图,缩小图,最近邻放大图,双线性放大图

人类基准:

图像放大的二次线性插值(计算机视觉)

缩小:

图像放大的二次线性插值(计算机视觉)

最近的邻居放大:

图像放大的二次线性插值(计算机视觉)

双线性放大:

图像放大的二次线性插值(计算机视觉)

(3)对比分析两幅放大图像的差异,分析原因。与原图对比,分析原因。

答:这两张放大后的图像分辨率不高,特别是最近邻插值有严重的混叠现象,灰度值不连续,而双线性插值的灰度值是连续的,图像比较平滑连续。

附test1.py:(记得和照片放一个文件夹)

from imp import reload

from re import S
import cv2
img=cv2.imread(‘ xiao.jpg ‘)   #读取图像
#sc =[1,0.2,0.5,1.5,2]   #设置图像放缩比例
cv2.imshow(‘showimg’,img)  #显示图像
y ,x = img.shape[0:2]
#图片太小,缩小后作为基础图,确定宽高
while x>=500:
img2=cv2.resize(img,(int(0.5*x),int(0.5*y))) #缩放图像
cv2.imwrite(‘xiao1.jpg’,img2)
y ,x = img2.shape[0:2]
img=img2
#cv2.imwrite(‘xiao.jpg’,img2)
cv2.imshow(‘img2’,img2) #显示图像
H,W=img2.shape[0:2]
#####不断减少
while x>=200:
img3=cv2.resize(img2,(int(0.5*x),int(0.5*y))) #缩放图像
cv2.imshow(‘showing’,img3)    #显示图像
#cv2.imwrite(‘xiao1.jpg’,img2)
y ,x = img3.shape[0:2]
img2=img3
cv2.imwrite(‘xiao2.jpg’,img3)
H1,W1=img3.shape[0:2]
s=H/H1
print(s)
####连续放大最近邻值
img4=cv2.resize(img3,(0,0),fx=int(s),fy=int(s),interpolation=cv2.INTER_NEAREST) #缩放图像
cv2.imshow(‘zuijinlingchazhi最近邻插值’,img4)
cv2.imwrite(‘zuijin.jpg’,img4)

##连续放大双线性插值法
img5=cv2.resize(img3,(0,0),fx=int(s),fy=int(s),interpolation=cv2.INTER_LINEAR) #缩放图像
cv2.imshow(‘双线性插值法’,img5)
cv2.imwrite(‘shuangxian.jpg’,img5)

##连续放大    3次样插值法
img6=cv2.resize(img3,(0,0),fx=int(s),fy=int(s),interpolation=cv2.INTER_CUBIC) #缩放图像
cv2.imshow(‘ 3次样插值法’,img6)
cv2.imwrite(‘3ciyang.jpg’,img6)
img7=cv2.resize(img3,(0,0),fx=int(s),fy=int(s),interpolation=cv2.INTER_LANCZOS4) #缩放图像
cv2.imshow(‘ 3’,img7)
cv2.waitKey()

图像放大的二次线性插值(计算机视觉)

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(1)
青葱年少的头像青葱年少普通用户
上一篇 2022年4月6日 下午5:55
下一篇 2022年4月7日 上午10:16

相关推荐