1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > MATLAB--数字图像处理 图像锐化

MATLAB--数字图像处理 图像锐化

时间:2020-06-01 19:56:20

相关推荐

MATLAB--数字图像处理  图像锐化

一、实验名称

图像锐化

二、实验目的

1.熟悉MATLAB软件的使用。

2.掌握图像锐化的原理及数学运算。

3.于MATLAB环境下编程实现对图片锐化。

三、实验内容

利用图像基于单方向梯度算子,Robert算子,Sobel算 子,Pritt算 子, Laplacian算子,多方向模板,LoG算子编写matlab增强程序;最后,显示边缘图像和锐化增强图像,并对这些仿真结果所呈现的边缘提取和增强效果进行对比分析。

四、实验仪器与设备

Win10 64位电脑

MATLABa

五、实验原理

1.Sobel算子是像素图像边缘检测中最重要的算子之一。在技术上,它是一个离散的一阶差分算子,用来计算图像亮度函数的一阶梯度之近似值。在图像的任何一点使用此算子,将会产生该点对应的梯度矢量或是其法矢量。

2.Roberts边缘检测算子是一种利用局部差分算子寻找边缘的算子,Robert算子图像处理后结果边缘不是很平滑。经分析,由于Robert算子通常会在图像边缘附近的区域内 产生较宽的响应,故采用上述算子检测的边缘图像常需做细化处理,边缘定位的精度不是很高。

3.Prewitt算子是一种一阶微分算子的边缘检测,利用像素点上下、左右邻点的灰度差,在边缘处达到极值检测边缘,去掉部分伪边缘,对噪声具有平滑作用 。其原理是在图像空间利用两个方向模板与图像进行邻域卷积来完成的,这两个方向模板一个检测水平边缘,一个检测垂直边缘。

4. Laplacian算子是n维欧几里得空间中的一个二阶微分算子,定义为梯度grad()的散度div()。因此如果f是二阶 可微的实函数,则f的laplacian算子定义为:

(1) f的拉普拉斯算子也是笛卡尔坐标系xi中的所有非混合二阶偏导数求和:

(2) 作为一个二阶 微分算子,拉普拉斯算子把C函数映射到C函数,对于k ≥ 2。

六、实验过程及代码

Sobel算子

I=imread('a3.jpg'); %读取图像I1=rgb2gray(I); %将彩色图变成灰色图subplot(131),imshow(I1),title('原图');model=[-1,0,1;-2,0,2;-1,0,1];[m,n]=size(I1);I2=double(I1);for i=2:m-1for j=2:n-1I2(i,j)=I1(i+1,j+1)+2*I1(i+1,j)+I1(i+1,j-1)-I1(i-1,j+1)-2*I1(i-1,j)-I1(i-1,j-1);endendsubplot(132),imshow(I2),title('边缘提取后的图像');I2 = I2 + double(I1);subplot(133),imshow(uint8(I2)),title('锐化后的图像');

Robert算子

I=imread('a3.jpg'); %读取图像I1=rgb2gray(I); %将彩色图变成灰色图subplot(131),imshow(I1),title('原图');model=[0,-1;1,0];[m,n]=size(I1);I2=double(I1);for i=2:m-1for j=2:n-1I2(i,j)=I1(i+1,j)-I1(i,j+1);endendsubplot(132),imshow(I2),title('边缘提取后的图像');I2 = I2 + double(I1);subplot(133),imshow(uint8(I2)),title('锐化后的图像');

Prewitt算子

I=imread('a3.jpg');I1=rgb2gray(I); %将彩色图变成灰色图subplot(131);imshow(I1),title('原图');model=[-1,0,1;-1,0,1;-1,0,1];[m,n]=size(I1);I2=I1;for i=2:m-1for j=2:n-1tem=I1(i-1:i+1,j-1:j+1);tem=double(tem).*model;I2(i,j)=sum(sum(tem));endendsubplot(132),imshow(uint8(I2)),title('边缘提取后的图像');I2=I2+I1;subplot(133),imshow(I2),title('图像锐化')

laplacian算子

I=imread('a3.jpg'); I1=mat2gray(I);%实现图像矩阵的归一化操作[m,n]=size(I1);newGrayPic=I1;%为保留图像的边缘一个像素LaplacianNum=0;%经Laplacian算子计算得到的每个像素的值LaplacianThreshold=0.2;%设定阈值for j=2:m-1 %进行边界提取for k=2:n-1LaplacianNum=abs(4*I1(j,k)-I1(j-1,k)-I1(j+1,k)-I1(j,k+1)-I1(j,k-1));if(LaplacianNum > LaplacianThreshold)newGrayPic(j,k)=255;elsenewGrayPic(j,k)=0;endendendI2=rgb2gray(I); %将彩色图变成灰色图subplot(131),imshow(I2),title('原图');subplot(132),imshow(newGrayPic);title('Laplacian算子的处理结果')t=I1+newGrayPic;subplot(133),imshow(t),title('图像锐化后')

Log算子

t=imread('a3.jpg');t=rgb2gray(t);[m,n]=size(t);subplot(1,3,1),imshow(t),title('原图')tt=t;model=[0,0,1,0,0; 0,1,2,1,0;1,2,-16,2,1;0,0,1,0,0;0,1,2,1,0;]for i=3:m-2for j=3:n-2tem=double(t(i-2:i+2,j-2:j+2)).*model;x=sum(sum(tem));tt(i,j)=x;endendsubplot(1,3,2),imshow(tt),title('log提取边缘后')t_1=double(tt)+double(t);subplot(1,3,3),imshow(uint8(t_1)),title('log锐化后')

七、实验结果与分析

Sobel算子

Robert算子

Prewitt算子

laplacian算子

Log算子

总结

图像锐化(image sharpening)是补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使图像变得清晰,分为空间域处理和频域处理两类。图像锐化是为了突出图像上地物的边缘、轮廓,或某些线性目标要素的特征。这种滤波方法提高了地物边缘与周围像元之间的反差,因此也被称为边缘增强。我的理解:图像锐化就是通过使得图像的边缘更加突出,可以是原图与原图的高频部分叠加而成。

Sobel算法与Priwitt算法的思路相同,属于同一类型,因此处理效果基本相同。Roberts算法的模板为2*2,提取信息较弱。单方向锐化经过处理之后,也可以对边界进行增强。Laplacian算子对噪声比较敏感,Laplacian算子有一个缺点是它对图像中的某些边缘产生双重响应。所以图像一般先经过平滑处理,通常把Laplacian算子和平滑算子结合起来生成一个新的模板-Log算子。

八、实验总结及心得体会

通过此次实验,自己学习了图像锐化的几种算子。开始的时候,不懂每个算子的来源,后面看了老师的推导过程后,发现其实锐化就是先对图像进行差分(类似求导),再叠加到原图上。这里主要的问题就是对算子的差分原理的验证,然后在MATLAB上机过程中,没有注意到数据类型的限制,导致数据上溢。

更多

获取更多资料、代码,微信公众号:海轰Pro

回复海轰即可

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