700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 计算机图像处理实验三 图像空间域平滑与锐化

计算机图像处理实验三 图像空间域平滑与锐化

时间:2022-02-01 07:16:45

相关推荐

计算机图像处理实验三 图像空间域平滑与锐化

一、实验目的与要求

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-2for j=3:col-2Inew(i,j)=round(sum(sum(I(i-2:i+2,j-2:j+2)))/25);endendresult=zeros(row,col);for i=1:rowfor j=1:colif(abs(Inew(i,j)-I(i,j))>k)result(i,j)=Inew(i,j);elseresult(i,j)=I(i,j);endendendoutput=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-1for j=2:col-1value(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)=abs(I(i,j)-I(i,j));value(6)=abs(I(i,j)-I(i,j+1));value(7)=abs(I(i,j)-I(i+1,j-1));value(8)=abs(I(i,j)-I(i+1,j));value(9)=abs(I(i,j)-I(i+1,j+1));value1(1)=I(i-1,j-1);value1(2)=I(i-1,j);value1(3)=I(i-1,j+1);value1(4)=I(i,j-1);value1(5)=I(i,j);value1(6)=I(i,j+1);value1(7)=I(i+1,j-1);value1(8)=I(i+1,j);value1(9)=I(i+1,j+1);%冒泡排序for b=1:9for c=1:9-bif(value(c)>value(c+1))temp=value(c);value(c)=value(c+1);value(c+1)=temp;temp1=value1(c);value1(c)=value1(c+1);value1(c+1)=temp1;endendend%计算sum=0;for a=1:ksum=sum+value1(a);endInew(i,j)=round(sum/k);endendoutput=uint8(Inew);end%主程序I=imread('C:\Users\Administrator\Pictures\pout.tif');J=imnoise(I,'gaussian',0,0.02); %在图像i上叠加均值为0、方差为0.02的高斯噪声,得到含噪图像jK=imnoise(I,'salt & pepper',0.04) %在图像i上叠加密度为0.04的椒盐噪声,得到含噪图像ksubplot(3,3,1);imshow(I);title('原图像');subplot(3,3,4);imshow(J);title('高斯噪声图像');subplot(3,3,7);imshow(K);title('椒盐噪声图像');%超限像素平滑法(5*5邻域,阈值为30)J1=smooth_method1(J,30);subplot(3,3,5);imshow(J1);title('超限像素平滑法处理高斯噪声');K1=smooth_method1(K,30);subplot(3,3,8);imshow(K1);title('超限像素平滑法处理椒盐噪声');%灰度最相近的K个邻点平均法,3*3窗口J2=smooth_method2(J,5);subplot(3,3,6);imshow(J2);title('灰度最相近的K个邻点平均法处理高斯噪声');K2=smooth_method2(K,5);subplot(3,3,9);imshow(K2);title('灰度最相近的K个邻点平均法');

(2)实验结果

(3)实验分析

超限像素平滑法:对抑制椒盐噪声比较有效,对保护仅有微小灰度差的细节及纹理也有效,随着邻域增大,该算法去噪能力增强,但模糊程度也加大。

灰度最相近的K个邻点平均法:该方法物理概念明确,处理效果也较好,但是计算量比较大,较小的k值使噪声方差下降较小,但保持细节效果较好;而较大的k值平滑噪声较好,但会使图像边缘模糊。

2、图像锐化:编写梯度锐化算法函数my_grad(method,T);参数method可以是梯度算子、Roberts算子、Prewitt和Sobel算子,T是梯度阈值,根据参数method和T选用不同的算子和阈值进行锐化处理,用二值图像表示处理结果,小于T的用黑色表示,大于等于T的用白色表示。显示处理前后的各个图像,分析不同方法对锐化效果及其优缺点。

(1)源代码

function [ output ] = my_grad(img, method,T )[m,n]=size(img);imgr = zeros(m,n);if(method==1)%梯度算子for i=2:m-1for j=2:n-1imgr(i,j)= abs(img(i,j)-img(i+1,j)) + abs(img(i,j)-img(i,j+1));if imgr(i,j)<Timgr(i,j) = 0;elseimgr(i,j) = 255;endendendelseif(method==2)%Roberts算子 for i=2:m-1for j=2:n-1imgr(i,j)= abs(img(i,j)-img(i+1,j+1)) + abs(img(i+1,j)-img(i,j+1));if imgr(i,j)<Timgr(i,j) = 0;elseimgr(i,j) = 255;endendendelseif(method==3)%Prewitt算子%与Sobel算子相同,方程的形式相同,但其中系数不同:%可见:与Sobel算子不同,其重点没有放在接近于模板中心的像素点for i=2:m-1for j=2:n-1imgr(i,j)= abs(img(i-1,j+1)+img(i,j+1)+img(i+1,j+1)-img(i-1,j-1)-img(i,j-1)-img(i+1,j-1)+img(i+1,j-1)+img(i+1,j)+img(i+1,j+1)-img(i-1,j-1)-img(i-1,j)-img(i-1,j+1));if imgr(i,j)<Timgr(i,j) = 0;elseimgr(i,j) = 255;endendendelseif(method==4)%Sobel算子%由于引入了加权平均,所以对图像中的随机噪声具有一定的平滑作用%由于采用间隔两行或两列的查分,边缘两侧的像素得到增强,锐化图像的边缘显得粗而亮%S_x,S_y可用卷积模板来实现:%可见:其重点放在接近于模板中心的像素点for i=2:m-1for j=2:n-1imgr(i,j)= abs(img(i-1,j+1)+2*img(i,j+1)+img(i+1,j+1)-img(i-1,j-1)-2*img(i,j-1)-img(i+1,j-1)+ img(i+1,j-1)+2*img(i+1,j)+img(i+1,j+1)-img(i-1,j-1)-2*img(i-1,j)-img(i-1,j+1));if imgr(i,j)<Timgr(i,j) = 0;elseimgr(i,j) = 255;endendendendoutput=uint8(imgr);end%主程序I=imread('C:\Users\Administrator\Pictures\514.jpg');I = rgb2gray(I);%将图像转为灰度图I1=my_grad(I,1,20);I2=my_grad(I,2,20);I3=my_grad(I,3,20);I4=my_grad(I,4,20);subplot(2,3,1);imshow(I);title('原图像');subplot(2,3,2);imshow(I1);title('梯度算子处理后的图像');subplot(2,3,3);imshow(I2);title('Roberts算子处理后的图像');subplot(2,3,4);imshow(I3);title('Prewitt算子处理后的图像');subplot(2,3,5);imshow(I4);title('Sobel算子处理后的图像');

(2)实验结果

(3)实验分析

梯度算子法:梯度值正比于像素之差,对于一幅图像中突出的边缘区,其梯度值较大;在平滑区域梯度值小;对于灰度级为常数的区域,梯度为零。

Roberts梯度算子法:用四点进行差分以求得梯度,方法简单。但是对于噪声较敏感,常用于不含噪声的图像边缘点检测。

Prewitt算子法和Sobel算子法:都在检测边缘点的同时具有抑制噪声的能力,检测出的边缘宽度至少为二像素。由于它们都是先平均后差分,平均时会丢失一些细节信息,使边缘有一定的模糊。但由于Sobel算子的加权作用,其使边缘模糊的程度要稍低于Prewitt算子。

Sobel算子:

可写为:

Prewitt算子:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。