第一篇:数字图像处理_边缘检测算子与锐化算子(含MATLAB代码)
数字图像处理实验五
15生医
一、实验内容
对某一灰度图像,进行如下处理:
(1)分别用Roberts、Prewitt和Sobel边缘检测算子进行边缘检测;(2)将Roberts、Prewitt和Sobel边缘检测算子修改为锐化算子,对原图像进行锐化,同屏显示原图像、边缘检测结果和锐化后图像,说明三者之间的关系。一灰度图像的二值化。
二、运行环境 MATLAB R2014a
三、运行结果及分析
运行结果如图所示:可以观察出原图像、边缘检测结果和锐化后图像三者之间的关系为:原图像+边缘检测结果=锐化后图像
四、心得体会
通过MATLAB编程更加熟悉了课本上关于锐化与边缘检测的相关知识点,对二者的关系也有了具体的认识。同时,对MATLAB图像导入函数、图像边缘检测函数、锐化窗口矩阵卷积函数的调用及实现机理也有所掌握,比如后边附的程序中会提到的“%”标注的思考。
五、具体程序
size=512;Img_rgb=imread('E:lena.jpg');%读取图像
Img_gray=rgb2gray(Img_rgb);%进行RGB到灰度图像的转换(虽然原来在网上下载的lena就是黑白图像,但是这一步必须要有!否则处理结果不正确)
figure(1);subplot(2,3,1);imshow(Img_gray);title('原图像');
Img_edge=zeros(size);a={'roberts','prewitt','sobel'};for i=1:3
Img_edge=edge(Img_gray,a{i});figure(1);subplot(2,3,i+1);imshow(Img_edge);axis image;title(a(i));end
A=imread('E:lena.jpg');B=rgb2gray(A);B=double(B);Window=[-1-1-1;-1 9-1;-1-1-1];%八邻域拉普拉斯锐化算子(α取1)C=conv2(B,Window,'same');Img_sharp=uint8(C);subplot(2,3,5);imshow(Img_sharp);title('sharp');
第二篇:数字图像处理_平均滤波与中值滤波(含MATLAB代码)[小编推荐]
数字图像处理实验二
15生医
一、实验内容
产生教材104页题图4.18(右图)所示的二值图像(白为1,黑为0),编程实现习题4.18所要求的处理(3x3的平均滤波和中值滤波)功能(图像四周边界不考虑,处理结果按四舍五入仍取0或1),显示处理前后的图像,比较其异同。
二、运行环境 MATLAB R2014a
三、运行结果及分析
1.四种不同的窗的3x3平均滤波
4邻域平均滤波后图像8邻域平均滤波后图像4邻域加权平均滤波后图像8邻域加权平均滤波后图像
①在MATLAB图形窗界面进行放大可以看出四者之间的差别: 4领域与8邻域之间没有明显差别,但是加权与未加权之间的差别较为明显,体现在:加权后每个矩形块的四个尖角部分都被保留了下来(图像四周边界不考虑),而未加权的尖角处黑色变为白色。②原因分析:
加权后尖角处原来白色的点(1)进行计算3/5=0.6四舍五入后值为1,保持白色,原来黑色的点(0)进行计算2/5=0.4四舍五入后值为0,保持黑色;而未加权尖角处无论原来是黑色还是白色,进行计算2/4=0.5四舍五入后值为1,所以原先的黑色(0)也变成了白色(1)。③下图为放大后的截图:
2.中值滤波与原图像的对比 原图像中值滤波后图像
①在MATLAB图形窗界面进行放大后可观察出:
使用3x3方形中值滤波模板的效果与4领域、8领域加权平均滤波的效果相同,每个矩形块的四个尖角部分都被保留了下来(图像四周边界不考虑)。②原因分析:
套用3x3方形中值滤波模板后,尖角处原来白色的点(1)在窗内1多于0,取中值后仍保持白色,原来黑色的点(0)在窗内0多于1,取中值后仍保持白色。③下图为放大后的截图:
四、心得体会
通过MATLAB编程更加理解了课后题的计算结果,直观地看出了黑白像素点灰度值变化前后的取值异同。同时,对MATLAB实现像素点灰度值的替换机理也有所掌握,比如后边附的程序中会提到的“%”标注的思考。
五、具体程序
% 生成黑白块图像
unit=zeros(64,64);f=zeros(256,256);for i=1:1:32 for j=1:1:32 unit(i,j)=1;% 1/4白块 end end for i=33:1:64 for j=33:1:64 unit(i,j)=1;% 1/4白块 end end for i=1:64:256 for j=1:64:256 f(i:i+63,j:j+63)=unit;end end
% 对原图像进行3x3平均滤波 for i=2:1:255 for j=2:1:255 fave4(i,j)=(f(i-1,j)+f(i+1,j)+f(i,j-1)+f(i,j+1))/4;
fave8(i,j)=(f(i-1,j-1)+f(i-1,j)+f(i-1,j+1)+f(i,j-1)+f(i,j+1)+f(i+1,j-1)+f(i+1,j)+f(i+1,j+1))/8;
fave4_weighted(i,j)=(f(i-1,j)+f(i+1,j)+f(i,j-1)+f(i,j+1)+f(i,j))/5;
fave8_weighted(i,j)=(f(i-1,j-1)+f(i-1,j)+f(i-1,j+1)+f(i,j-1)+f(i,j+1)+f(i+1,j-1)+f(i+1,j)+f(i+1,j+1)+f(i,j))/9;end end fave4=round(fave4);%平均后灰度值有可能是小数,要取整 fave8=round(fave8);fave4_weighted =round(fave4_weighted);fave8_weighted =round(fave8_weighted);subplot(2,2,1);imshow(fave4);title('4邻域平均滤波后图像');subplot(2,2,2);imshow(fave8);title('8邻域平均滤波后图像')subplot(2,2,3);imshow(fave4_weighted);title('4邻域加权平均滤波后图像')subplot(2,2,4);imshow(fave8_weighted);title('8邻域加权平均滤波后图像')
4邻域平均滤波后图像8邻域平均滤波后图像4邻域加权平均滤波后图像8邻域加权平均滤波后图像
% 对原图像进行3x3方形中值滤波 for i=2:1:255 for j=2:1:255
a=[f(i-1,j-1),f(i-1,j),f(i-1,j+1),f(i,j-1),f(i,j),f(i,j+1),f(i+1,j-1),f(i+1,j),f(i+1,j+1)];b=sort(a);% 排序函数
fmid(i,j)=b(5);% 9个数排序的中值 end end subplot(1,2,1);imshow(f);title('原图像');subplot(1,2,2);imshow(fmid);title('中值滤波后图像')
原图像中值滤波后图像