当前位置:   article > 正文

图像锐化处理之一阶微分算子

一阶微分算子

  图像锐化是通过增强图像的边缘和细节来提高图像的清晰度的操作。这种操作通常用于将模糊或不清晰的图像改进为更清晰的图像。由于微分是对函数局部变化率的一种描述,因此图像锐化算法的实现可基于空间微分。

一阶微分算子

  对任意一阶微分的定义必须满足两点:灰度不变的区域微分值为0;在灰度变化的区域微分值非0。由于处理的是离散情况,微分用差分近似。对于一维函数f(x,y),一阶微分基本定义:

                                              \frac{\partial f}{\partial x}=f(x+1)-f(x)

 一维微分可用导数符号。二维图像f(x,y) 将沿着两个空间坐标轴求解一阶微分,分别对x,y求偏导:

               g_{x}=\frac{\partial f}{\partial x}=f(x+1,y)-f(x,y)  , g_{y}=\frac{\partial f}{\partial y}=f(x,y+1)-f(x,y)

  二维图像的梯度是一个二维向量:

                    \Delta f=grad(f)=\begin{bmatrix} g_{x}\\ g_{y} \end{bmatrix}

  梯度的幅值:

                      M(x,y)=mag(\Delta f)=\sqrt{g_{x}^{2}+g_{y}^{2}}

  M(x,y)是梯度向量方向变化率在(x,y)处的值。

  

    这里使用3*3邻域灰度值表示z1,z2...z9,其中z5表示f(x,y),依次类推。

二维图像最简单的一阶微分近似:

  g_{x}=z_{9}-z_{5}             g_{y}=z_{8}-z_{6}

  根据罗伯特观点,边缘检测器应具有:

产生边缘清晰;背景尽可能减小噪声;边缘强度应尽可能接近人类的感知。并提出两个交叉差分表示:

  g_{x}=z_{9}-z_{5}       g_{y}=z_{8}-z_{6}

梯度幅值为:

M(x,y)=mag(\Delta f)=\sqrt{g_{x}^{2}+g_{y}^{2}} =\sqrt{(z_{9}-z_{5})^{2}+(z_{8}-z_{6})^{2}}

 正负对角线梯度算子:

  罗伯特边缘图像和梯度图像代码:

  1. from skimage import io,filters
  2. from matplotlib import pyplot as plt
  3. from skimage.color import rgb2gray
  4. #原始图像
  5. I=io.imread('demo.jpg')
  6. I_gray=rgb2gray(I) #灰度转换
  7. #robert交叉梯度算子
  8. I_rob_pos=filters.roberts_pos_diag(I_gray)
  9. I_rob_neg=filters.roberts_neg_diag(I_gray)
  10. I_rob=filters.roberts(I_gray)
  11. #显示
  12. plt.subplot(121)
  13. plt.title("gray")
  14. plt.imshow(I_gray,cmap='gray')
  15. plt.subplot(122)
  16. plt.title("Pos")
  17. plt.imshow(I_rob_pos,cmap='gray')
  18. plt.show()
  19. plt.subplot(121)
  20. plt.title("Neg")
  21. plt.imshow(I_rob_neg,cmap='gray')
  22. plt.subplot(122)
  23. plt.title("Rob")
  24. plt.imshow(I_rob,cmap='gray')
  25. plt.show()

 原始图像和正对角线边缘图像:

负对角先边缘图像和罗伯特梯度图像:

 

  使用交叉梯度算子可以得到梯度图像M(x,y),将梯度图像以一定比例叠加到原始图像f(x,y)即可得到锐化图像:

     g(x,y)=f(x,y)+c*M(x,y)

 c为锐化强度系数。

  由于奇数模板有对称中心,更易于实现。使用3*3模板对g_{x} ,g_{y}进行表达:

g_{x} =\frac{\partial f}{\partial x}=(z_{7}+2z_{8}+z_{9})-(z_{1}+2z_{2}+z_{3})

g_{y}\frac{\partial f}{\partial y}=(z_{3}+2z_{6}+z_{9})-(z_{1}+2z_{4}+z_{7})

 

Sobel边缘图像和梯度图像:

  1. from skimage import io,filters
  2. from matplotlib import pyplot as plt
  3. from skimage.color import rgb2gray
  4. #原始图像
  5. I=io.imread('demo.jpg')
  6. I_gray=rgb2gray(I) #灰度转换
  7. #sobel算子
  8. I_h=filters.sobel_h(I_gray)
  9. I_v=filters.sobel_v(I_gray)
  10. I_sobel=filters.sobel(I_gray)
  11. #显示
  12. plt.subplot(121)
  13. plt.title("gray")
  14. plt.imshow(I_gray,cmap='gray')
  15. plt.subplot(122)
  16. plt.title("H")
  17. plt.imshow(I_h,cmap='gray')
  18. plt.show()
  19. plt.subplot(121)
  20. plt.title("V")
  21. plt.imshow(I_v,cmap='gray')
  22. plt.subplot(122)
  23. plt.title("Sobel")
  24. plt.imshow(I_sobel,cmap='gray')
  25. plt.show()

原图与水平sobel边缘图像:

竖直sobel边缘图像和sobel梯度图像:

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/72499
推荐阅读
相关标签
  

闽ICP备14008679号