- 图像边缘分析
- 一阶微分算子
- 一梯度算子
- 二Robert算子
- 三Sobel算子
- 四Prewitt算子
- 二阶微分算子
- 高斯滤波和边缘检测
- 一高斯函数
- 二LOG算子
- 三Canny算子
- 频域高通滤波
图像边缘分析
边缘定义为图像中亮度突变的区域,分为:细线型边缘、突变型边缘和渐变型边缘
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*7的LOG模板,标准差为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)指数高通滤波器