新疆大学信息科学与工程学院
PSF=fspecial('motion',LEN,THETA); E=imfilter(a,PSF,'circular','conv'); LEN=100; THETA=10;
PSF=fspecial('motion',LEN,THETA); F=imfilter(a,PSF,'circular','conv'); LEN=20; THETA=10;
PSF=fspecial('motion',LEN,THETA); M=imfilter(a,PSF,'circular','conv'); subplot(2,4,1),imshow(a); subplot(2,4,2),imshow(e); subplot(2,4,3),imshow(f); subplot(2,4,4),imshow(m); subplot(2,4,5),imshow(E); subplot(2,4,6),imshow(F); subplot(2,4,7),imshow(M);
3、对1,2产生的图像分别进行复原,选用逆滤波法,改进逆滤波器法进行图像复原.(需要编程,为选作题),显示处理结果。
4、对1,2产生的图像分别进行复原,选用维纳滤波器进行图像复原,显示处理结果。
参考程序如下:
在1,2产生的图像后可加一段:
figure,
wnr1=deconvwnr(b,PSF); subplot(2,3,1),imshow(wnr1); wnr2=deconvwnr(d,PSF); subplot(2,3,2),imshow(wnr2); wnr3=deconvwnr(e,PSF); subplot(2,3,3),imshow(wnr3); wnr4=deconvwnr(f,PSF); subplot(2,3,4),imshow(wnr4); wnr5=deconvwnr(m,PSF); subplot(2,3,5),imshow(wnr5);
5、对1,2产生的图像使用维纳滤波图像复原(deconvwnr)、约束最小平方滤波图像复原(deconvreg)2种方法任一种去实现,设置不同参数,比较复原效果。(选作,提示:可参看相关参考书实现deconvreg函数功能)
【思考题】
1、逆滤波器存在什么病态问题,如何改进?
答:复原由退化函数H退化的图像最直接的方法是直接逆滤波。在方法中,用退化函数除退化图像的傅立叶变换来计算原始图像的傅立叶变换。
37
新疆大学信息科学与工程学院
即使我们知道退化函数,也可能无法准确复原未退化的图像。因为噪声是一个随机函数,其傅氏变换未知。实际应用逆滤波复原方法时存在病态的问题,即在频谱域中对图像信号的那些频谱点上,若:H(u,v)=0,而噪声N(u,v)<>0,则 N(u,v)/H(u,v)>>F(u,v),面目全非,这种恢复会出现病态性。由上述方法进行图像复原时,由于H(u,v)在分母上,当u-v平面上的某引起点或区域H(u, v)很小或等于零,即出现了零点时, 就会导致不稳定解。因此,即使没有噪声,一般也不可能精确地复原f(x, y)。如果考虑噪声项N(x, y), 则出现零点时, 噪声项将被放大,零点的影响将会更大,对复原的结果起主导地位, 这就是无约束图像复原模型的病态性质。它意味着退化图像中小的噪声干扰在H(u, v)取得很小值的那些频谱上将对恢复图像产生很大的影响。由简单的光学分析知道,在超出光学系统的绕射极限时,H(u, v)将很小或等于零,因此对多数图像直接采用逆滤波复原会遇到上述求解方程的病态性。 改进:
即如果退化为零或非常小的值,则N(u,v)/H(u,v)之比很容易决定复原函数的值。
1)、在H(u,v)=0处,人为仔细设置H-1(u,v)值,使得这些频谱点附近, N(u,v)/H(u,v)对^F(u,v)影响小些
2)、窄带H(u,v),相比噪声具低通特性。
2、维纳滤波适用于什么场合?有何缺陷?
答:逆滤波较简单,但对噪声有放大作用,而维纳滤波则抑制噪声,维纳滤波即寻找一个滤波器,使得复原后的图像与原始图像的方差最小,即
1)、适用于假设图像和噪声不相关,且h(x,y)有零均值(平稳随机过程),退化系统线性时不变
2)、信噪比较高时,等同逆滤波
3)、大多数情况下较满意,但信噪比较低时,效果不好,由于以平稳随机过程为基础,线性时不变条件不满足,与实际情况有差距;另外,最小均方误差准则与人眼的视觉准则并不匹配。
【实验报告】
1、对上述操作,要求编程,并附图像的显示结果。
2、实验报告写明实验题目,可简写实验原理,实验内容,详细写实验过程和实验结果分析,要求附相关程序。按格式书写,将结果贴入相应位置 3、回答思考题,写在实验报告上
38
新疆大学信息科学与工程学院
实验6 MATLAB实现图像分割(2学时)
【实验内容】 一、图像分割
1、任选一副图像,对实验图像用edge函数实现roberts算子、sobel、log等算子检测边缘,并对比显示其结果,评价一下各算子对于噪声条件下边界检测的性能。
参考程序如下:
I=imread('rice.png');
K=imnoise(I,'salt & pepper',0.04); BW1=edge(I,'roberts'); BW2=edge(I,'sobel'); BW3=edge(I,'log'); BW4=edge(K,'roberts'); BW5=edge(K,'sobel'); BW6=edge(K,'log');
subplot(3,3,1),imshow(I),title('?ê?í???');
subplot(3,3,2),imshow(K),title('?ó?·????éùí?');
subplot(3,3,3),imshow(BW1),title('?í?roberts±??μ?ì2a'); subplot(3,3,4),imshow(BW2),title('?í?sobel±??μ?ì2a'); subplot(3,3,5),imshow(BW3),title('?í?log±??μ?ì2a');
subplot(3,3,6),imshow(BW4),title('?ó??roberts±??μ?ì2a'); subplot(3,3,7),imshow(BW5),title('?ó??sobel±??μ?ì2a'); subplot(3,3,8),imshow(BW6),title('?ó??log±??μ?ì2a'); 参考程序如下:
I=imread('eight.tif'); imshow(I)
BW1=edge(I,'roberts');
figure ,imshow(BW1),title('用Roberts算子') BW2=edge(I,'sobel');
figure,imshow(BW2),title('用Sobel算子 ') BW3=edge(I,'log');
figure,imshow(BW3),title('用拉普拉斯高斯算子') 得到:
39
新疆大学信息科学与工程学院
比较提取边缘的效果可以看出,sober算子是一种微分算子,对边缘的定位较精确,但是会漏去一些边缘细节。而Laplacian-Gaussian算子是一种二阶边缘检测方法,它通过寻找图象灰度值中二阶过零点来检测边缘并将边缘提取出来,边缘的细节比较丰富。通过比较可以看出Laplacian-Gaussian算子比sober算子边缘更完整,效果更好。
2、任选一副背景和前景区别较大的灰度图像,对该图像进行二值化处理(im2Bw,设置不同阈值实现),绘制该图像直方图,利用双峰法和迭代法估计设置其阈值,然后利用计算出的阈值对测试图像进行分割处理,结果显示原图像、处理后的分割图像及相应的分割阈值,观察不同阈值的分割效果。
参考程序如下: clear;
close all;
I0=imread(‘cell.tif’);
I1=im2bw(I0,0.3);%二值化处理 I1=im2bw(I0,0.7);%二值化处理 figure,
subplot(3,2,1),imshow(I0),title(‘原图’);
subplot(3,2,2),imhist(I0),title(‘原图直方图’); subplot(3,2,3),imshow(I1),title(‘二值化图,T=0.3’);
subplot(3,2,4),imhist(I1),title(‘二值化图的直方图,T=0.3’);
40