赞
踩
图像锐化是通过增强图像的边缘和细节来提高图像的清晰度的操作。这种操作通常用于将模糊或不清晰的图像改进为更清晰的图像。由于微分是对函数局部变化率的一种描述,因此图像锐化算法的实现可基于空间微分。
对任意一阶微分的定义必须满足两点:灰度不变的区域微分值为0;在灰度变化的区域微分值非0。由于处理的是离散情况,微分用差分近似。对于一维函数,一阶微分基本定义:
一维微分可用导数符号。二维图像 将沿着两个空间坐标轴求解一阶微分,分别对x,y求偏导:
,
二维图像的梯度是一个二维向量:
梯度的幅值:
M(x,y)是梯度向量方向变化率在(x,y)处的值。
这里使用3*3邻域灰度值表示z1,z2...z9,其中z5表示f(x,y),依次类推。
二维图像最简单的一阶微分近似:
根据罗伯特观点,边缘检测器应具有:
产生边缘清晰;背景尽可能减小噪声;边缘强度应尽可能接近人类的感知。并提出两个交叉差分表示:
梯度幅值为:
正负对角线梯度算子:
罗伯特边缘图像和梯度图像代码:
- from skimage import io,filters
- from matplotlib import pyplot as plt
- from skimage.color import rgb2gray
-
- #原始图像
- I=io.imread('demo.jpg')
- I_gray=rgb2gray(I) #灰度转换
- #robert交叉梯度算子
- I_rob_pos=filters.roberts_pos_diag(I_gray)
- I_rob_neg=filters.roberts_neg_diag(I_gray)
- I_rob=filters.roberts(I_gray)
- #显示
- plt.subplot(121)
- plt.title("gray")
- plt.imshow(I_gray,cmap='gray')
- plt.subplot(122)
- plt.title("Pos")
- plt.imshow(I_rob_pos,cmap='gray')
- plt.show()
- plt.subplot(121)
- plt.title("Neg")
- plt.imshow(I_rob_neg,cmap='gray')
- plt.subplot(122)
- plt.title("Rob")
- plt.imshow(I_rob,cmap='gray')
- plt.show()
原始图像和正对角线边缘图像:
负对角先边缘图像和罗伯特梯度图像:
使用交叉梯度算子可以得到梯度图像M(x,y),将梯度图像以一定比例叠加到原始图像f(x,y)即可得到锐化图像:
c为锐化强度系数。
由于奇数模板有对称中心,更易于实现。使用3*3模板对 ,进行表达:
=
=
Sobel边缘图像和梯度图像:
- from skimage import io,filters
- from matplotlib import pyplot as plt
- from skimage.color import rgb2gray
-
- #原始图像
- I=io.imread('demo.jpg')
- I_gray=rgb2gray(I) #灰度转换
- #sobel算子
- I_h=filters.sobel_h(I_gray)
- I_v=filters.sobel_v(I_gray)
- I_sobel=filters.sobel(I_gray)
-
- #显示
- plt.subplot(121)
- plt.title("gray")
- plt.imshow(I_gray,cmap='gray')
- plt.subplot(122)
- plt.title("H")
- plt.imshow(I_h,cmap='gray')
- plt.show()
- plt.subplot(121)
- plt.title("V")
- plt.imshow(I_v,cmap='gray')
- plt.subplot(122)
- plt.title("Sobel")
- plt.imshow(I_sobel,cmap='gray')
- plt.show()
原图与水平sobel边缘图像:
竖直sobel边缘图像和sobel梯度图像:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。