1、实验目的
要求完成对任意图像几何变换。
2、掌握图像复原的原理及常用图像复原方法。
1、 熟练掌握图像的几何操作原理,图像几何变换的程序设计技术,可以按
2、实验原理
图像恢复指将退化的图像尽量恢复到原来的状态。 1、几何校正
图像与原景物图像相比,会产生比例失调,扭曲,我们把这类图像退化现象称之为几何畸变,消除几何畸变的复原过程,称几何校正。 设两幅图像坐标系统之间几何畸变关系能用解析式来描述
xh1(x,y)yh2(x,y)若函数h1(x,y)和h2(x,y)已知,则可以从一个坐标系统的像素坐标算出在另一坐标系统的对应像素的坐标。在未知情况下, 通常h1(x,y)和h2(x,y)可用多项式来近似。
xaijxyii0j0N1N1jybijxiyji0j0N1N1 几何校正分平移、旋转、缩放、镜像、转置。
(1)图像旋转使用B=imrotate(A,angle,method); angle是旋转的角度(单位是“度”);method是插补的方法,可以是nearest(最邻近插补),bilinear(双线性插补),bicubic(双立方插补)。还可使用B= B=imrotate(A,angle,method,’crop’); crop表示剪切。
(2)图像剪切使用:x2=imcrop(x,map),对索引图像进行交互式剪切;I2=imcrop(I), 对灰度图像进行交互式剪切;RGB2=imcrop(rgb),对彩色图像进行交互式剪切;x2=imcrop(x,map,RECT),对索引图像进行非交互式剪切;I2=imcrop(I,RECT), 对灰度图像进行非交互式剪切;rgb2=imcrop(rgb,RECT),
对彩色图像进行非交互式剪切;RECT是四元素向量[xmin ymin width height] 例如:rgb2=imcrop(rgb,[100 100 80 10]),
(3)图像缩放使用B=imresize(A,m,method) 返回为A的m倍]大小的图像; b=imresize(A,[mrows ncols],method),返回为mrows× ncols]大小的图像。 (4)镜像分三种情况:垂直镜像、水平镜像、对角镜像。 低版本的matlab可以用mirror(I,n )函数,n=1、2、3 J1=mirror(I,1);%原图像的水平镜像 J2=mirror(I,2);%原图像的垂直镜像 J3=mirror(I,3);%原图像的水平垂直镜像 高版本的,使用flipdim(I,n),n=1、2、3 J1=flipdim(I,1);%原图像的水平镜像 J2=flipdim(I,2);%原图像的垂直镜像 J3=flipdim(I,3);%原图像的水平垂直镜像 还可以使用:
tform=maketform('affine',[-1 0 0;0 1 0;width 0 1]); tform2=maketform('affine',[1 0 0;0 -1 0;0 height 1]); 2、图像复原
逆滤波复原、维纳滤波复原和盲复原
MATLAB中的维纳滤波函数:deconvwnr( )
J=deconvwnr(I,PSF,NSR ) 或 J=deconvwnr(I,PSF,NCORR,ICORR ) NSR :信噪比,默认0 NCORR噪声自相关函数,ICORR原始图像自相关函数 PSF点扩散函数,在处理时,必须定义。如:PSF=fspecial('motion',LEN,theta) LEN运动向数个数,默认9;theta运动方向角,默认
MATLAB提供deconvblind( )函数进行盲复原
[J,PSF]=deconvblind(I,INITPSF,NUMIT,DAMPAR,WEIGHT,READOUT 3. 运动模糊复原
PSF = fspecial('motion',20,15); J = imfilter(I,PSF,'conv','circular');
3、实验内容(包括实验程序、实验图片、实验数据、实验结果分析)
(1)%设计程序,将已知图像分别按顺时针和逆时针旋转40度,
%采用不同的插值方法后与原图像比较,分析统计数据。
clc; clear;
I=imread('C:\\Users\\Administrator\\Desktop\\sy4_1.jpg'); imshow(I),title('原图') %%
As=imrotate(I,-40,'nearest'); An=imrotate(I,40,'nearest'); figure
subplot(121),imshow(As),title('最邻近插补(顺时针40度)') subplot(122),imshow(An),title('最邻近插补(逆时针40度)') %%
Bs=imrotate(I,-40,'bilinear'); Bn=imrotate(I,40,'bilinear'); figure
subplot(121),imshow(Bs),title('双线性插补(顺时针40度)') subplot(122),imshow(Bn),title('双线性插补(逆时针40度)') %%
Cs=imrotate(I,-40,'bicubic'); Cn=imrotate(I,40,'bicubic'); figure
subplot(121),imshow(Cs),title('双立方插补(顺时针40度)') subplot(122),imshow(Cn),title('双立方插补(逆时针40度)') %%
Ds=imrotate(I,40,'crop'); Dn=imrotate(I,320,'crop'); figure
subplot(121),imshow(Ds),title('剪切(顺时针40度)') subplot(122),imshow(Dn),title('剪切(逆时针40度)')
(2)%设计程序将已知图像缩小到1/3,将图像放大3倍, %选择不同的插补方式,输出。分析统计数据。 clc; clear;
I=imread('C:\\Users\\Administrator\\Desktop\\sy4_1.jpg'); imshow(I),title('原图') %%
Al=imresize(I,1/3,'nearest') As=imresize(I,3,'nearest')
figure
subplot(121),imshow(Al),title('最邻近插补(缩小到1/3)') subplot(122),imshow(As),title('最邻近插补(放大3倍)') %%
Bl=imresize(I,1/3,'bilinear') Bs=imresize(I,3,'bilinear') figure
subplot(121),imshow(Al),title('双线性插补(缩小到1/3)') subplot(122),imshow(As),title('双线性插补(放大3倍)') %%
Cl=imresize(I,1/3,'bicubic') Cs=imresize(I,3,'bicubic') figure
subplot(121),imshow(Al),title('双立方插补(缩小到1/3)') subplot(122),imshow(As),title('双立方插补(放大3倍)')
(3)%做一幅图像的水平、垂直、对角镜像图像及转置图像, %分析变化情况。 clc; clear;
I=imread('C:\\Users\\Administrator\\Desktop\\sy4_1.jpg'); subplot(221),imshow(I),title('原图') %%
J1=flip(I,1);
subplot(222),imshow(J1),title('水平镜像') %%
J2=flip(I,2);
subplot(223),imshow(J2),title('垂直镜像') %%
J3=flipdim(I,3);
subplot(224),imshow(J3),title('对角镜像')
(4)%设计程序从已知图像中剪切出[60 90 100 90]的部分后与原图像在同一画面输出,
%加坐标,利用交互式剪切在图像中剪切出人头,并以30万像素存储。 clc; clear;
A=imread('C:\\Users\\Administrator\\Desktop\\sy4_1.jpg'); %%
B=imcrop(A,[60 90 100 90]) x=1:1:110 y=1:1:110
subplot(121),imshow(A),title('原图') axis on
subplot(122),imshow(B),title('剪切图') axis on %%
figure
RGB2=imcrop(A);
RGB2=imresize(RGB2,[550,550]) imshow(RGB2),title('交互式剪切')
(5)%对退化的图像设置不同信噪比、噪声和自相关系数进行维纳滤波复原。 clc; clear;
I=imread('C:\\Users\\Administrator\\Desktop\\sy4_1.jpg'); %%
I=imnoise(I,'poisson');
PSF=fspecial('motion',9) %点扩散函数 J=deconvwnr(I,PSF,0.5)
subplot(121),imshow(I),title('原图噪声') subplot(122),imshow(J),title('复原图')
(6)%对退化的图像设置不同信噪比、噪声和自相关系数进行盲复原处理。 clc; clear;
I=imread('C:\\Users\\Administrator\\Desktop\\sy4_1.jpg'); %%
I=imnoise(I,'poisson');
PSF=fspecial('motion',20,15) %点扩散函数 INITPSF=ones(size(PSF));
[J,PSF]=deconvblind(I,INITPSF)
subplot(121),imshow(I),title('原图噪声') subplot(122),imshow(J),title('复原图')
(7)%对运动模糊图像进行复原。 clc; clear;
I=imread('C:\\Users\\Administrator\\Desktop\\sy4_3.jpg'); subplot(121),imshow(I),title('运动模糊图') %%
PSF = fspecial('motion',20,200);
J = imfilter(I,PSF,'conv','circular'); subplot(122),imshow(J),title('复原图')
分析:镜像处理图片是,效果并不是理想图,原因未知,处理失败。
运动模糊的图像复原,也达不到理想效果,沿着模糊方向复原时半径设置一直没有理想值。
4、实验结论
图像的复原需要选择好参数、算子,否则复原效果不理想。
维纳滤波是一种有约束的复原恢复,它综合了退化图像和噪声统计两个方面进行了复原处理。它是使原图像及其恢复图像之间的均方差最小的复原方法。是在假图像信号可以近似看做平稳随机过程的前提下,按照使恢复的图像与原图像f(x,y)的均方差最小原则来恢复图像。
逆滤波复原在频域上使用退化后观察得到的图像频域值来除去退化函数,得到近似于原图像的估计图像,然后通过傅里叶逆变换得到原图像的估计值
盲解卷积复原在实际应用中,经常在不知道PSF的情况下对图像进行复原。其优点在于对退化图像没有先验知识的情况下,仍然能够进行复原
因篇幅问题不能全部显示,请点此查看更多更全内容