【图像处理】轻松搞懂图像锐化
图像锐化的目的是使模糊图像变清晰,方法可以大致分为两类:微分法、高频加重滤波法。其中微分法可以分为梯度法、Sobel算子法、Laplace算子法。在做图像锐化时要注意,处理的图像必须有较高的信噪比,否则锐化会使噪声收到比信号还强的增强,一般先降噪后锐化。
微分法
微分运算是求信号的变化率,加强高频分量,使图像轮廓清晰。希望通过导数运算使边缘和轮廓变清晰,这就要求该导数运算是各向同性的(旋转不变性),可以证明偏导数的平方和运算具有此性质。
[*]梯度法
对于图像 https://www.zhihu.com/equation?tex=f%28x%2Cy%29 ,在点 https://www.zhihu.com/equation?tex=%28x%2Cy%29 处的梯度是一个矢量,定义为https://www.zhihu.com/equation?tex=+G%5Cleft%5B+f%5Cleft%28+x%2Cy+%5Cright%29+%5Cright%5D+%3D%5Cleft%5B+%5Cbegin%7Barray%7D%7Bc%7D+%09%5Cfrac%7B%5Cpartial+f%7D%7B%5Cpartial+x%7D%5C%5C+%09%5Cfrac%7B%5Cpartial+f%7D%7B%5Cpartial+y%7D%5C%5C+%5Cend%7Barray%7D+%5Cright%5D+++。
梯度的幅度表示为 https://www.zhihu.com/equation?tex=G%5Bf%28x%2Cy%29%5D%3D%5B%28%5Cfrac%7B%5Cpartial+f%7D%7B%5Cpartial+x%7D%29%5E2%2B%28%5Cfrac%7B%5Cpartial+f%7D%7B%5Cpartial+y%7D%29%5E2%5D%5E%7B1%2F2%7D
对于数字图像而言, https://www.zhihu.com/equation?tex=+G%5Cleft%5B+f%5Cleft%28+x%2Cy+%5Cright%29+%5Cright%5D+%3D%5Cleft%5C%7B+%5Cleft%5B+f%5Cleft%28+i%2Cj+%5Cright%29+-f%5Cleft%28+i%2B1%2Cj+%5Cright%29+%5Cright%5D+%5E2%2B%5Cleft%5B+f%5Cleft%28+i%2Cj+%5Cright%29+-f%5Cleft%28+i%2Cj%2B1+%5Cright%29+%5Cright%5D+%5E2+%5Cright%5C%7D+%5E%7B1%2F2%7D+ ,
该式可以简化成 https://www.zhihu.com/equation?tex=+G%5Cleft%5B+f%5Cleft%28+x%2Cy+%5Cright%29+%5Cright%5D+%3D%5Cleft%7C+f%5Cleft%28+i%2Cj+%5Cright%29+-f%5Cleft%28+i%2B1%2Cj+%5Cright%29+%5Cright%7C%2B%5Cleft%7C+f%5Cleft%28+i%2Cj+%5Cright%29+-f%5Cleft%28+i%2Cj%2B1+%5Cright%29+%5Cright%7C+
各个像素的位置
图像的最后一行(列)的梯度无法求得,一般用前一行(列)的梯度代替。
当梯度计算完之后,可以根据需要生成不同的梯度增强图像,
1)第一种, https://www.zhihu.com/equation?tex=+g%5Cleft%28+x%2Cy+%5Cright%29+%3DG%5Cleft%5B+f%5Cleft%28+x%2Cy+%5Cright%29+%5Cright%5D+++ ,只显示灰度变化大的边缘轮廓,灰度变化平缓的呈黑色。
2)第二种, https://www.zhihu.com/equation?tex=g%5Cleft%28+x%2Cy+%5Cright%29+%3D%5Cleft%5C%7B+%5Cbegin%7Barray%7D%7Bc%7D+%09G%5Cleft%5B+f%5Cleft%28+x%2Cy+%5Cright%29+%5Cright%5D+%26%2CG%5Cleft%5B+f%5Cleft%28+x%2Cy+%5Cright%29+%5Cright%5D+%5Cge+thresh%5C%5C+%09f%5Cleft%28+x%2Cy+%5Cright%29+%26%2C+otherwise%5C%5C+%5Cend%7Barray%7D+%5Cright.+
可以显示出非常明显的边缘轮廓,又不会破坏原灰度变化平缓的背景。
3)第三种, https://www.zhihu.com/equation?tex=+g%5Cleft%28+x%2Cy+%5Cright%29+%3D%5Cleft%5C%7B+%5Cbegin%7Bmatrix%7D+%09L_G%26%09%09%2CG%5Cleft%5B+f%5Cleft%28+x%2Cy+%5Cright%29+%5Cright%5D+%5Cge+thresh%5C%5C+%09f%5Cleft%28+x%2Cy+%5Cright%29%26%09%09%2Cotherwise%5C%5C+%5Cend%7Bmatrix%7D+%5Cright.+++
边缘轮廓用固定的灰度级 https://www.zhihu.com/equation?tex=L_G+ 表示。
4)第四种, https://www.zhihu.com/equation?tex=+g%5Cleft%28+x%2Cy+%5Cright%29+%3D%5Cleft%5C%7B+%5Cbegin%7Bmatrix%7D+%09G%5Cleft%5B+f%5Cleft%28+x%2Cy+%5Cright%29+%5Cright%5D%26%09%09%2CG%5Cleft%5B+f%5Cleft%28+x%2Cy+%5Cright%29+%5Cright%5D+%5Cge+thresh%5C%5C+%09L_G%26%09%09%2Cotherwise%5C%5C+%5Cend%7Bmatrix%7D+%5Cright.+++
背景用固定灰度级 https://www.zhihu.com/equation?tex=L_G 表示,便于研究边缘灰度的变化。
5)第五种, https://www.zhihu.com/equation?tex=+g%5Cleft%28+x%2Cy+%5Cright%29+%3D%5Cleft%5C%7B+%5Cbegin%7Bmatrix%7D+%09L_G%26%09%09%2CG%5Cleft%5B+f%5Cleft%28+x%2Cy+%5Cright%29+%5Cright%5D+%5Cge+thresh%5C%5C+%09L_B%26%09%09%2Cotherwise%5C%5C+%5Cend%7Bmatrix%7D+%5Cright.+++
将背景和边缘用二值图像表示,便于研究边缘所在位置。
2. Sobel算子
采用梯度微分锐化图像,会让噪声、条纹得到增强,Sobel算子在一定程度上解决了这个问题, https://www.zhihu.com/equation?tex=+S_x%3D%5Cleft%5B+f%5Cleft%28+i%2B1%2Cj-1+%5Cright%29+%2B2f%5Cleft%28+i%2B1%2Cj+%5Cright%29+%2Bf%5Cleft%28+i%2B1%2Cj%2B1+%5Cright%29+%5Cright%5D++%5C%5C+-%5Cleft%5B+f%5Cleft%28+i-1%2Cj-1+%5Cright%29+%2B2f%5Cleft%28+i-1%2Cj+%5Cright%29+%2Bf%5Cleft%28+i-1%2Cj%2B1+%5Cright%29+%5Cright%5D++%5C%5C+S_y%3D%5Cleft%5B+f%5Cleft%28+i-1%2Cj%2B1+%5Cright%29+%2B2f%5Cleft%28+i%2Cj%2B1+%5Cright%29+%2Bf%5Cleft%28+i%2B1%2Cj%2B1+%5Cright%29+%5Cright%5D++%5C%5C+-%5Cleft%5B+f%5Cleft%28+i-1%2Cj-1+%5Cright%29+%2B2f%5Cleft%28+i%2Cj-1+%5Cright%29+%2Bf%5Cleft%28+i%2B1%2Cj-1+%5Cright%29+%5Cright%5D++
从这个式子中,可以得到两个性质,
[*]Sobel引入了平均的因素,因此对噪声有一定的平滑作用
[*]Sobel算子的操作就是相隔两个行(列)的差分,所以边缘两侧元素的得到了增强,因此边缘显得粗而亮。
Sobel算子表示形式为:
https://www.zhihu.com/equation?tex=+H_1%3D%5Cleft%5B+%5Cbegin%7Bmatrix%7D+%09-1%26%09%090%26%09%091%5C%5C+%09-2%26%09%090%2A%26%09%092%5C%5C+%09-1%26%09%090%26%09%091%5C%5C+%5Cend%7Bmatrix%7D+%5Cright%5D+%5C%2C%5C%2C+++H_2%3D%5Cleft%5B+%5Cbegin%7Bmatrix%7D+%09-1%26%09%09-2%26%09%09-1%5C%5C+%090%26%09%090%2A%26%09%090%5C%5C+%091%26%09%092%26%09%091%5C%5C+%5Cend%7Bmatrix%7D+%5Cright%5D+
3. 拉普拉斯算子(二阶微分)
拉普拉斯运算也是各向同性的线性运算。拉普拉斯算子为: https://www.zhihu.com/equation?tex=+%5Cnabla+%5E2f%3D%5Cfrac%7B%5Cpartial+%5E2f%7D%7B%5Cpartial+x%5E2%7D%2B%5Cfrac%7B%5Cpartial+%5E2f%7D%7B%5Cpartial+y%5E2%7D++ ,锐化之后的图像 https://www.zhihu.com/equation?tex=g%3Df-k+%5Cnabla+%5E2f
https://www.zhihu.com/equation?tex=k 为扩散效应的系数。
https://www.zhihu.com/equation?tex=%5Cbegin%7Balign%2A%7D+++%5Cfrac%7B%5Cpartial+%5E2f%5Cleft%28+x%2Cy+%5Cright%29%7D%7B%5Cpartial+x%5E2%7D+%26%3D+%5Cnabla+_xf%5Cleft%28+i%2B1%2Cj+%5Cright%29+-%5Cnabla+_xf%5Cleft%28+i%2Cj+%5Cright%29+%5C%5C+%26%3D+%5Cleft%5B+f%5Cleft%28+i%2B1%2Cj+%5Cright%29+-f%5Cleft%28+i%2Cj+%5Cright%29+%5Cright%5D+-%5Cleft%5B+f%5Cleft%28+i%2Cj+%5Cright%29+-f%5Cleft%28+i-1%2Cj+%5Cright%29+%5Cright%5D+%5C%5C+%26%3D+f%5Cleft%28+i%2B1%2Cj+%5Cright%29+%2Bf%5Cleft%28+i-1%2Cj+%5Cright%29+-2f%5Cleft%28+i%2Cj+%5Cright%29+%5C%5C+%5Cfrac%7B%5Cpartial+%5E2f%5Cleft%28+x%2Cy+%5Cright%29%7D%7B%5Cpartial+y%5E2%7D%26%3Df%5Cleft%28+i%2Cj-1+%5Cright%29+%2Bf%5Cleft%28+i%2Cj%2B1+%5Cright%29+-2f%5Cleft%28+i%2Cj+%5Cright%29%5C%5C+%5Cend%7Balign%2A%7D
https://www.zhihu.com/equation?tex=%5Cbegin%7Balign%7D+%5Cnabla+%5E2f+%26%3D%5Cfrac%7B%5Cpartial+%5E2f%5Cleft%28+x%2Cy+%5Cright%29%7D%7B%5Cpartial+x%5E2%7D%2B%5Cfrac%7B%5Cpartial+%5E2f%5Cleft%28+x%2Cy+%5Cright%29%7D%7B%5Cpartial+y%5E2%7D+%5C%5C+%26%3D-5%5Cleft%5C%7B+f%5Cleft%28+i%2Cj+%5Cright%29+-%5Cfrac%7B1%7D%7B5%7D%5Cleft%5B+f%5Cleft%28+i%2B1%2Cj+%5Cright%29+%2Bf%5Cleft%28+i-1%2Cj+%5Cright%29+%2Bf%5Cleft%28+i-1%2Cj-1+%5Cright%29+%2Bf%5Cleft%28+i%2B1.j%2B1+%5Cright%29+%2Bf%5Cleft%28+i%2Cj+%5Cright%29+%5Cright%5D+%5Cright%5C%7D++%5Cend%7Balign%7D
由此式可知,数字图像在点的拉普拉斯算子,可以由该点的灰度值减去该点及其邻域四个点的平均灰度值求得。
拉普拉斯算子的模板图可表示为:
https://www.zhihu.com/equation?tex=+H%3D%5Cleft%5B+%5Cbegin%7Bmatrix%7D+%090%26%09%09-1%26%09%090%5C%5C+%09-1%26%09%094%26%09%09-1%5C%5C+%090%26%09%09-1%26%09%090%5C%5C+%5Cend%7Bmatrix%7D+%5Cright%5D+++
还有其他的常用拉普拉斯模板:
https://www.zhihu.com/equation?tex=+H%3D%5Cleft%5B+%5Cbegin%7Bmatrix%7D+%09-1%26%09%09-1%26%09%09-1%5C%5C+%09-1%26%09%098%26%09%09-1%5C%5C+%09-1%26%09%09-1%26%09%09-1%5C%5C+%5Cend%7Bmatrix%7D+%5Cright%5D+++
高通滤波
高通滤波法采用高通滤波器让高频分量通过,使图像的边缘和线条变得清楚,实现锐化。
高通滤波器而用空域法和频域法实现,在空间域使用卷积方法,模板如
https://www.zhihu.com/equation?tex=+H%3D%5Cleft%5B+%5Cbegin%7Bmatrix%7D+%09-1%26%09%09-1%26%09%09-1%5C%5C+%09-1%26%09%099%26%09%09-1%5C%5C+%09-1%26%09%09-1%26%09%09-1%5C%5C+%5Cend%7Bmatrix%7D+%5Cright%5D+++
可以看出和拉普拉斯算子基本相同。
个人理解:为了能够让高频通过,点与其四个邻域点应该满足可以过零的性质,因为导数跨零,原函数曲线不会是单调的,必然会在零点处改变单调性,产生高频效果。
代码
Sobel算子
import cv2
import matplotlib.pyplot as plt
plt.subplot(1, 2, 1)
img = cv2.imread("image.jpg", 0)# 0为灰度图
plt.imshow(img)
plt.subplot(1, 2, 2)
depth = cv2.CV_16S
#求X方向梯度(创建grad_x, grad_y矩阵)
grad_x = cv2.Sobel( img, depth, 1, 0 )
abs_grad_x = cv2.convertScaleAbs( grad_x )
#求Y方向梯度
grad_y = cv2.Sobel( img, depth, 0, 1 )
abs_grad_y = cv2.convertScaleAbs( grad_y )
#合并梯度
sobel_img = cv2.addWeighted( abs_grad_x, 0.5, abs_grad_y, 0.5, 0 )
plt.imshow(sobel_img)
plt.show()
灰度图 以及 Sobel算子
Laplace算子
import cv2
import matplotlib.pyplot as plt
plt.subplot(1, 2, 1)
img = cv2.imread("image.jpg", 0)# 0为灰度图
plt.imshow(img)
plt.subplot(1, 2, 2)
depth = cv2.CV_16S
kernel_size = (3, 3)# 模板大小
scale = 1# 扩散系数
laplace_img = cv2.Laplacian(img, depth, kernel_size, scale=scale)
plt.imshow(laplace_img)
plt.show()
灰度图 以及 Laplace算子 噢……我的天……高等数学
[思考] 请问大佬有什么边缘增强的综述性文章吗 emmm,不是很清楚,我是看的数字图像处理书。文章可以搜一搜百度学术和谷歌学术
页:
[1]