码迷,mamicode.com
首页 > 其他好文 > 详细

图像锐化

时间:2016-04-22 19:27:39      阅读:357      评论:0      收藏:0      [点我收藏+]

标签:

图像边缘分析

边缘定义为图像中亮度突变的区域,分为:细线型边缘、突变型边缘和渐变型边缘
1)突变型边缘位于图像中具有不同灰度值的相邻区域之间,对应于一阶导数的极值和二阶导数的过零点
2)细线型边缘对应于灰度变化曲线的极值,对应于一阶导数的过零点和二阶微分的极值点
2)渐进型边缘因变化缓慢,没有明确的边界点


一阶微分算子

一、梯度算子

图像处理中应用微分最常用的方法是计算梯度,梯度是方向导数取最大值的方向的向量
梯度定义为:
G[f(x,y)]=?? ?f?x?f?y??
用其幅度代替:
G[f(x,y)]=[(?f?x)2+(?f?y)2]12
为计算方便,也常用绝对值代替
G[f(x,y)]=|?f?x|+|?f?y|
最后用差分代替微分
G[f(x,y)]=|f(x+1,y)?f(x,y)|+|f(x,y+1)=f(x,y)|

I=im2double(rgb2gray(imread(‘106.jpg‘)));
figure;
imshow(I),title(‘原始图像‘);
[h w]=size(I);
edgeI=zeros(h,w);
for x=1:w-1;
    for y=1:h-1
        edgeI(y,x)=abs(I(y,x+1)-I(y,x))+abs(I(y+1,x)-I(y,x));%梯度运算  
    end
end
figure;
imshow(edgeI),title(‘边缘图像‘);
sharpI=I+edgeI;
figure;
imshow(sharpI),title(‘锐化图像‘);

技术分享
技术分享
技术分享


二、Robert算子

Robert算子是通过交叉求微分实现边缘检测
G[f(x,y)]=|f(x,y)?f(x+1,y+1)|+|f(x+1,y)?f(x,y+1)|
模板表示:
H1=[ 100?1]

H1=[ 0?110]
Matlab提供函数:
BW=edge(I,type,parameters)

I=im2double(rgb2gray(imread(‘106.jpg‘)));
figure;
imshow(I),title(‘原始图像‘);
BW=edge(I,‘roberts‘);
H1=[1 0;0 -1];H2=[0 1;-1 0];
R1=imfilter(I,H1);
R2=imfilter(I,H2);
edgeI=abs(R1)+abs(R2);
figure;
imshow(edgeI),title(‘Robert梯度图像‘);
sharpI=I+edgeI;
figure;
imshow(sharpI),title(‘Robert锐化图像‘);

技术分享
技术分享
技术分享


三、Sobel算子

Sobel算子是一种3×3模板下的微分算子,定义如下:
Sx=|f(x?1,y+1)+2f(x,y+1)+f(x+1,y+1)|-
|f(x?1,y?1)+2f(x,y?1)+f(x+1,y?1)|
Sy=|f(x+1,y?1)+2f(x+1,y)+f(x+1,y+1)|-
|f(x?1,y?1)+2f(x?1,y)+f(x?1,y+1)|
g=|Sx|+|Sy|
模板来表示:

Hx=??? ?101?202?101???

Hy=??? ?1?2?1000121???

I=im2double(rgb2gray(imread(‘106.jpg‘)));
figure;
imshow(I),title(‘原始图像‘);
BW=edge(I,‘roberts‘);
figure,imshow(BW),title(‘Sobel边缘检测‘)
H1=[1 0;0 -1];H2=[0 1;-1 0];
R1=imfilter(I,H1);
R2=imfilter(I,H2);
edgeI=abs(R1)+abs(R2);
figure;
imshow(edgeI),title(‘Robert梯度图像‘);
sharpI=I+edgeI;
figure;
imshow(sharpI),title(‘Robert锐化图像‘);

技术分享
技术分享
技术分享



四、Prewitt算子

Prewitt算子与Sobel算子思路类似,但模板系数不同
Sx=|f(x?1,y+1)+f(x,y+1)+f(x+1,y+1)|-
|f(x?1,y?1)+f(x,y?1)+f(x+1,y?1)|
Sy=|f(x+1,y?1)+f(x+1,y)+f(x+1,y+1)|-
|f(x?1,y?1)+f(x?1,y)+f(x?1,y+1)|
g=|Sx|+|Sy|
模板来表示:

Hx=??? ?101?101?101???

Hy=??? ?1?1?1000111???

%%Prewitt算子
I=im2double(rgb2gray(imread(‘106.jpg‘)));
figure;
imshow(I),title(‘原始图像‘);
BW=edge(I,‘Prewitt‘);
figure,imshow(BW),title(‘Prewitt边缘检测‘)
H1=[-1 -1 -1;0 0 0;1 1 1];H2=[-1 0 1;-1 0 1;-1 0 1];
R1=imfilter(I,H1);
R2=imfilter(I,H2);
edgeI=abs(R1)+abs(R2);
figure;
imshow(edgeI),title(‘Prewitt梯度图像‘);
sharpI=I+edgeI;
figure;
imshow(sharpI),title(‘Prewitt锐化图像‘);

技术分享
技术分享
技术分享


二阶微分算子

拉普拉斯算子为二阶微分算子,定义如下:
?2f=?2f?x2+?2f?y2
化简:
?2f=f(x+1,y)+f(x?1,y)+f(x,y+1)+f(x,y?1)?4f(x,y)
模板:
H1=??? 0101?41010???

H1=??? 0?10?14?10?10???


拉普拉斯算子对图像增强基本方法
g(x,y)={ f(x,y)?2f(x,y)f(x,y)+2f(x,y)

I=im2double(rgb2gray(imread(‘106.jpg‘)));
figure;
imshow(I),title(‘原始图像‘);
H=fspecial(‘laplacian‘,0);%生成拉普拉斯模板
R=imfilter(I,H);%拉普拉斯算子滤波
edgeI=abs(R);%获取拉普拉斯算子滤波图像
figure,imshow(edgeI),title(‘拉普拉斯边缘图像‘)
H1=[0 -1 0;-1 5 -1;0 -1 0];
SharpI=imfilter(I,H1);
figure;
imshow(sharpI),title(‘拉普拉斯锐化图像‘);

技术分享
技术分享


一阶微分算子获得的边界是比较粗略的边界,反映的边界信息较少,但是所反映的边界比较清晰;二阶微分算子获得的边界是比较细致的边界。反映的边界信息包括了许多的细节信息,但是所反映的边界不是太清晰。


高斯滤波和边缘检测

一、高斯函数

二、LOG算子

图像常常受到随机噪声干扰,在其上执行边缘检测的结果常将噪声当作边缘点而检测出来,而真正的边缘则由于受噪声干扰而没能检测出来
用高斯函数g(x,y)先对图像作平滑,将高斯函数g(x,y)f(x,y)$ 卷积,得到一个图像函数,对该函数做拉普拉斯运算,提取边缘
可以证明:
?2[f(x,y)?g(x,y)]=f(x,y)??2g(x,y)
?2g(x,y)=?2g?x2+?2g?y2=1πσ4(x2+y22σ2?1)exp(?x2+y22σ2)

?2g(x,y)为LOG滤波器。σ称为尺度因子,大的值可以检测模糊的边缘,小的值可以检测聚焦良好的图像细节

%%LOG算子
I=im2double(rgb2gray(imread(‘106.jpg‘)));
figure;
imshow(I),title(‘原始图像‘);
BW=edge(I,‘log‘);%使用LOG算子进行边缘检测,得到二值边界图像
figure,imshow(BW),title(‘LOG边缘检测‘)
H=fspecial(‘log‘,7,1);%生成7*7LOG模板,标准差为1
R=imfilter(I,H);
edgeI=abs(R);
figure;
imshow(edgeI),title(‘LOG滤波图像‘);
sharpI=I+edgeI;
figure;
imshow(sharpI),title(‘LOG锐化图像‘);

技术分享
技术分享
技术分享



三、Canny算子

多级边缘检测算法,被很多人认为是边缘检测最优算法
最优边缘检测的三个主要评价标准:
1)低错误率,更多的实际边缘,更少的噪声误报
2)对边缘的准确定位
3)最小响应,图中的边缘最好只标识一次


主要步骤
1)高斯平滑滤波器卷积降噪
2)平滑后图像的梯度幅值和方向的计算,可采用不同的梯度算子
3)对梯度幅值应用非极大抑制,其过程是找出图像梯度中局部极大值,将其他非局部极大值点置零
4)使用双阈值检测和连接边缘

I=im2double(rgb2gray(imread(‘106.jpg‘)));
figure;
imshow(I),title(‘原始图像‘);
BW=edge(I,‘canny‘);
figure,imshow(BW),title(‘Canny边缘检测‘);

技术分享



频域高通滤波

由于图像边缘对应于高频分量,因此图象锐化可采用高通滤波器,关键之处为选择合适的高通滤波系统传递函数 H(u,v)
1)理想高通滤波器
2)巴特沃斯高通滤波器
3)指数高通滤波器

图像锐化

标签:

原文地址:http://blog.csdn.net/qq_20602929/article/details/51213314

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!