图像锐化-梯度算子

本文详细介绍了图像锐化中梯度算子的概念,包括经典和Roberts梯度算法的计算,以及如何通过阈值处理增强边缘清晰度。探讨了梯度模在检测图像细节和边界的重要性,并展示了四种处理方法,如阈值选择和固定灰度替代,以减少信息损失并保持图像质量。
摘要由CSDN通过智能技术生成

图像锐化-梯度算子

原图
在这里插入图片描述

该博文参考《数字图像处理》-杨帆
在图像识别中,需要有边缘鲜明的图像,及图像锐化。。然而边缘模糊是图像处理中常见的图像问题,由此造成的轮廓不清晰,线条不鲜明,使图像特征提取、识别、理解难以进行。
根据图像信号的频率特性,大面积的背景区域和缓慢变化的部分代表图像的低频分量,而他的边缘、细节、跳跃部分等都代表了高频分量,利用这一特性,我们可基于高通滤波来增强细节信息从而达到锐化目的的本质。

1.梯度算子

图像锐化中最常用的方法市梯度法。对图像 f ( x , y ) {\color{Blue} f(x,y)} f(x,y),在点 ( x , y ) {\color{Blue} (x,y)} (x,y)上的梯度是一个二维向量,可定义为:
G [ f ( x , y ) ] = [ ∂ f ∂ x ∂ f ∂ y ] T {\color{Blue} G[f(x,y)]=\begin{bmatrix} \frac{\partial f}{\partial x} & \frac{\partial f}{\partial y} \end{bmatrix}^{T}} G[f(x,y)]=[xfyf]T
对其取模:
∣ G [ f ( x , y ) ] ∣ = G x 2 + G y 2 = [ ( ∂ f ∂ x ) 2 + ( ∂ f ∂ y ) 2 ] 1 / 2 {\color{Blue} \left | G[f(x,y)] \right |=\sqrt{G_{x}^2+G_{y}^2}=[(\frac{\partial f}{\partial x})^2+(\frac{\partial f}{\partial y})^2]^{1/2}} G[f(x,y)]=Gx2+Gy2 =[(xf)2+(yf)2]1/2
不难证明,梯度的模是一个各向同性算子,并且是 f ( x , y ) {\color{Blue} f(x,y)} f(x,y)沿着G方向上的最大变化率。
对于数字图像处理,有两种二维梯度的计算方法:

(1)典型梯度算法

G x = Δ x f ( i , j ) = f ( i + 1 , j ) − f ( i , j ) {\color{Blue} G_{x}=\Delta _{x}f(i,j)=f(i+1,j)-f(i,j)} Gx=Δxf(i,j)=f(i+1,j)f(i,j)
G y = Δ x f ( i , j ) = f ( i , j + 1 ) − f ( i , j ) {\color{Blue} G_{y}=\Delta _{x}f(i,j)=f(i,j+1)-f(i,j)} Gy=Δxf(i,j)=f(i,j+1)f(i,j)
将其带入上述取模运算可得到典型梯度算法。

(2)Roberts梯度算法

G x = Δ x f ( i , j ) = f ( i + 1 , j + 1 ) − f ( i , j ) {\color{Blue} G_{x}=\Delta _{x}f(i,j)=f(i+1,j+1)-f(i,j)} Gx=Δxf(i,j)=f(i+1,j+1)f(i,j)
G y = Δ x f ( i , j ) = f ( i , j + 1 ) − f ( i + 1 , j ) {\color{Blue} G_{y}=\Delta _{x}f(i,j)=f(i,j+1)-f(i+1,j)} Gy=Δxf(i,j)=f(i,j+1)f(i+1,j)
将其带入上述取模运算可得到Roberts梯度算法。
我们将上述两种算法作图可直观展现:
在这里插入图片描述
由公式可见,梯度模相关与相邻像素灰度差值。在图像轮廓上,像素的灰度陡然变化,梯度值很大;在图像灰度相对平缓的区域梯度较小;而在等灰度区域,梯度值为0。由此可见,梯度算子对边界即灰度变化的区域具有偏好性,图像经过梯度运算之后可使细节清晰从而达到锐化的目的。
然而事实证明,对图像采用梯度运算之后,虽然能使图像细节清晰,但往往在灰度变化比较小的区域会丢失部分信息。我们需要采用某些手段去修正上述梯度算子。
下面介绍一些常用的方法:
1.
在这里插入图片描述
当梯度值超过某阈值T的像素,采用梯度值,而小于该阈值的梯度,选择用原图像的像素值。即适当的选用T,可以有效增强边界而不影响比较平滑的背景
2.
在这里插入图片描述
当梯度值超过某阈值T的像素时,选用固定灰度 L G L_{G} LG来代替,而小于该阈值T时,选用原图像像素。这种方法可以使边界清晰,同时又不损害灰度变化比较平缓的区域的图像特性。
3.
在这里插入图片描述
当梯度值超过某阈值T的像素时,选用梯度值,而小于该阈值T时,选用固定灰度 L B L_{B} LB。这种方法将背景用一个固定的灰度级 L B L_{B} LB表示,可用于分析边缘灰度的变化。

在这里插入图片描述
当梯度值超过某阈值T的像素时,选用固定灰度 L G L_{G} LG,而小于该阈值T时,选用固定灰度 L B L_{B} LB。这种方法生成二值图像。

[I,map]=imread('zzpic2648.jpg'); %读入原图像
figure(1),imshow(I,map); %显示原图像
I=double(I);

[IX,IY]=gradient(I);
GM=sqrt(IX.*IX+IY.*IY); %计算梯度模值
OUT1=GM;
figure(2),imshow(OUT1,map) %显示未经处理的锐化
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
OUT2=I;
J=find(GM>=10);          %阈值T=10
OUT2(J)=GM(J);           
figure(3),imshow(OUT2,map) %显示第一种处理的锐化
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
OUT3=I;
J=find(GM>=10);
OUT3(J)=255;
figure(4),imshow(OUT3,map) %显示第二种处理的锐化
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&%%%
OUT4=I;
J=find(GM<=10);
OUT4(J)=255;
figure(5),imshow(OUT4,map) %显示第三种处理的锐化
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
OUT5=I;
J=find(GM>=10);
OUT5(J)=255;
Q=find(GM<10);
OUT5(Q)=0;
figure(6),imshow(OUT5,map)%显示第四种处理的锐化

在这里插入图片描述

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值