一、实验目的与要求
1.加深对图像增强及边缘检测技术的感性认识,应用MATLAB工具箱自带的处理函数或自己编程完成相关的工作,分析处理结果,巩固所学理论知识。
2.熟练掌握空域滤波中常用的平滑和锐化滤波器,针对不同类型和强度的噪声,进行滤波处理,体会并正确评价滤波效果,了解不同滤波方式的使用场合,能够从理论上作出合理的解释。
二、实验相关知识
图像增强是指按特定的需要突出一幅图像中的某些有用信息,同时消弱或去除某些不需要的信息的处理方法,其主要目的是使处理后的图像对某些特定的应用比原来的图像更加有效。图像平滑与锐化处理是图像增强的主要研究内容。
图像分割是由图像处理过渡到图像分析的关键步骤,一般是按照一定的规则,把图像分成互不重叠的若干区域或子集,并提取出感兴趣目标的技术和过程。本实验主要研究利用边缘提取算子的分割方法。
和本实验有关的几个常用Matlab函数:
(1) imnoise:用于对图像生成模拟噪声,如:
j=imnoise(i,‘gaussian’,0,0.02) %在图像i上叠加均值为0、方差为0.02的高斯噪声,得到含噪图像j
j=imnoise(i,‘salt & pepper’,0.04) %在图像i上叠加密度为0.04的椒盐噪声,得到含噪图像j
(2) fspecial:用于产生预定义滤波器,如:
h=fspecial(‘average’,3); %产生3×3模板的均值滤波器
h=fspecial(‘sobel’); %产生sobel水平边缘增强的滤波器
可选项还有:'gaussian’高斯低通滤波器、'laplacian’拉普拉斯滤波器、'log’高斯拉普拉斯滤波器等
(3) imfilter、filter2、conv2:均是基于卷积的图像滤波函数,都可用于图像滤波,用法类似,如:
i=imread(‘p1.tif’);
h=fspecial(‘prewitt’); %产生prewitt算子的水平方向模板
j1=imfilter(i,h); %或者j2=filter2(h,i); 或者j3=conv2(i,h);
(4) medfilt2:用于图像的中值滤波,如:
j=medfilt2(i, [M N]); %对矩阵i进行二维中值滤波,邻域为M×N,缺省值为3×3
三、实验内容
1、图像平滑(去噪):编写超限像素平滑法,灰度最相近的K个邻点平均法(函数名称可以自定义),并对上面实验1选择的噪声图片进行处理,显示处理前后的各个图像,分析不同方法对不同噪声的处理效果及其优缺点。
(1)源代码
%超限像素平滑法,5*5邻域
function [ output ] = smooth_method1(I,k )
[row,col]=size(I);
Inew=I;
for i=3:row-2
for j=3:col-2
Inew(i,j)=round(sum(sum(I(i-2:i+2,j-2:j+2)))/25);
end
end
result=zeros(row,col);
for i=1:row
for j=1:col
if(abs(Inew(i,j)-I(i,j))>k)
result(i,j)=Inew(i,j);
else
result(i,j)=I(i,j);
end
end
end
output=uint8(result);
end
%灰度最相近的K个邻点平均法,3*3窗口,算上中心值
function [ output ] = smooth_method2( I,k )
[row,col]=size(I);
Inew=I;
value=zeros(1,9);
value1=zeros(1,9);
for i=2:row-1
for j=2:col-1
value(1)=abs(I(i,j)-I(i-1,j-1));
value(2)=abs(I(i,j)-I(i-1,j));
value(3)=abs(I(i,j)-I(i-1,j+1));
value(4)=abs(I(i,j)-I(i,j-1));
value(5)&#