目录

  • 锐化(高通)空间滤波器
    • 基础 - 一阶导数和二阶导数的锐化滤波器
    • 二阶导数锐化图像--拉普拉斯

锐化(高通)空间滤波器

  • 平滑通过称为低通滤波
  • 类似于积分运算
  • 锐化通常称为高通滤波
  • 微分运算
  • 高过(负责细节的)高频,衰减或抑制低频

基础 - 一阶导数和二阶导数的锐化滤波器

数字函数的导数是用差分来定义的。定义这些差分的方法有多种

一阶导数的任何定义都要满足如下要求:

  1. 恒定灰度区域的一阶导数必须为0
  2. 灰度台阶或斜坡开始处的一阶导数必须非零。
  3. 灰度斜坡上的一阶导数必须非零。

二阶导数的任何定义都要满足如下要求:

  1. 恒定灰度区域的二阶导数必须为零。
  2. 灰度台阶或斜坡的开始处和结束处的地阶导数必须非零。
  3. 灰度斜坡上的二阶导数必须为零。

一维函数f(x)f(x)f(x)的一阶导数的一个基本定义是差分:
∂f∂x=f(x+1)−f(x)(3.48)\frac{\partial f}{\partial x} = f(x+1) -f(x) \tag{3.48}∂x∂f​=f(x+1)−f(x)(3.48)

二阶导数定义为差分:
∂2f∂x2=f(x+1)+f(x−1)−2f(x)(3.49)\frac{\partial^2 f}{\partial x^2} = f(x+1) + f(x-1) - 2f(x) \tag{3.49}∂x2∂2f​=f(x+1)+f(x−1)−2f(x)(3.49)

def first_derivative(y):y_1 = np.zeros(len(y)-1)for i in range(1, len(y)):if i + 1 < len(y):y_1[i] = y[i+1] - y[i]return y_1def second_derivative(y):y_2 = np.zeros(len(y)-1)for i in range(1, len(y)):if i + 1 < len(y):y_2[i] = y[i+1] + y[i-1] - 2*y[i]return y_2
#一维数字一阶与二阶导数
y = np.arange(1, 7)
y = y[::-1]
y = np.pad(y, (3, 5), mode='constant', constant_values=(6, 1))
y = np.pad(y, (0, 5), mode='constant', constant_values=(0, 6))
x = np.arange(len(y))fig = plt.figure(figsize=(16, 4))
ax_1 = fig.add_subplot(1, 2, 1)
ax_1.plot(x, y, '-.s', label="data")
ax_1.legend(loc='best', fontsize=12)y_1 = first_derivative(y)
y_2 = second_derivative(y)ax_2 = fig.add_subplot(1, 2, 2)
ax_2.plot(y_1[1:], ':o', label='First derivative')
ax_2.plot(y_2[1:], '--s', alpha=0.5, label='Second derivative')
ax_2.plot(np.zeros(19), '--k', alpha=0.5)
ax_2.legend(loc='best', fontsize=12)
plt.tight_layout()
plt.show()

二阶导数锐化图像–拉普拉斯

我们感兴趣的是各向同性核,这种核的响应与图像中灰度不连续的方向无关。最简单的各向同性导数算子(核)是拉普拉斯, 它定义为:
∇2f=∂2f∂x2+∂2f∂y2(3.50)\nabla^2 f = \frac{\partial^2 f}{\partial x^2} + \frac{\partial^2 f}{\partial y^2} \tag{3.50}∇2f=∂x2∂2f​+∂y2∂2f​(3.50)

我们把这个片子以离散形式表达:
∂2f∂x2=f(x+1,y)+f(x−1,y)−2f(x,y)(3.51)\frac{\partial^2 f}{\partial x^2} = f(x+1, y) + f(x-1, y) -2f(x, y) \tag{3.51}∂x2∂2f​=f(x+1,y)+f(x−1,y)−2f(x,y)(3.51)
∂2f∂y2=f(x,y+1)+f(x,y−1)−2f(x,y)(3.52)\frac{\partial^2 f}{\partial y^2} = f(x, y+1) + f(x, y-1) -2f(x, y) \tag{3.52}∂y2∂2f​=f(x,y+1)+f(x,y−1)−2f(x,y)(3.52)

两个变量的离散拉普拉斯是
∇2f(x,y)=f(x+1,y)+f(x−1,y)+f(x,y+1)+f(x,y−1)−4f(x,y)(3.53)\nabla^2 f(x, y)= f(x+1, y) + f(x-1, y) + f(x, y+1) + f(x, y-1)-4f(x, y) \tag{3.53}∇2f(x,y)=f(x+1,y)+f(x−1,y)+f(x,y+1)+f(x,y−1)−4f(x,y)(3.53)

写成矩阵的形式就得到拉普拉斯核:
[01(f(x,y−1)的权值)01(f(x−1,y)的权值)−4(f(x,y)的权值)1(f(x+1,y)的权值)01(f(x,y+1)的权值)0]\begin{bmatrix} 0 & 1 (f(x,y-1)的权值) & 0 \\ 1 (f(x-1,y)的权值) & -4 (f(x,y)的权值) & 1 (f(x+1,y)的权值) \\ 0 & 1 (f(x,y+1)的权值) & 0\end{bmatrix}⎣⎡​01(f(x−1,y)的权值)0​1(f(x,y−1)的权值)−4(f(x,y)的权值)1(f(x,y+1)的权值)​01(f(x+1,y)的权值)0​⎦⎤​

图像的锐化的滤波原理也类似于描述的低通滤波,只不过使用不同的系数
后面两个是含对角项的扩展公式的核:

[0101−41010][1111−81111]\begin{bmatrix} 0 & 1 & 0 \\ 1 & -4 & 1 \\ 0 & 1 & 0\end{bmatrix} \begin{bmatrix} 1 & 1 & 1 \\ 1 & -8 & 1 \\ 1 & 1 & 1\end{bmatrix}⎣⎡​010​1−41​010​⎦⎤​⎣⎡​111​1−81​111​⎦⎤​

这两个是二阶导数定义得到的:

[0−10−14−10−10][−1−1−1−18−1−1−1−1]\begin{bmatrix} 0 & -1 & 0 \\ -1 & 4 & -1 \\ 0 & -1 & 0\end{bmatrix} \begin{bmatrix} -1 & -1 & -1 \\ -1 & 8 & -1 \\ -1 & -1 & -1\end{bmatrix}⎣⎡​0−10​−14−1​0−10​⎦⎤​⎣⎡​−1−1−1​−18−1​−1−1−1​⎦⎤​

拉普拉斯是导数算子,因此会突出图像中的急剧灰度过渡,并且不会强调缓慢变化的灰度区域。这往往会产生具有灰色边缘线和其他不连续性的图像,它们都叠加在暗色无特征背景上。将拉普拉斯图像与原图相加,就可以“恢复”背景特征,同时保留拉普拉斯的锐化效果。 上面两个核得到的图像需要用原图减去得到的图,下面两个核得到的图像需要用原图加下得到的图,以实现锐化。

g(x,y)=f(x,y)+c[∇2f(x,y)](3.54)g(x,y) = f(x,y) + c[\nabla^2 f(x,y)] \tag{3.54}g(x,y)=f(x,y)+c[∇2f(x,y)](3.54)
使用上面的前两个核,则c=−1c = -1c=−1,后面的两个二阶导数定义的核则c=1c = 1c=1
两组核刚好相差一个负号

观察平滑与锐化核可发现,平滑核的系数之和为1,锐化核的系数之和为0。用锐化核处理图像时,有会出现负值,需要进行额外处理才能得到合适的视觉结果。

# Laplacian filter 不同的核,拉普拉斯锐化
img = cv2.imread('DIP_Figures/DIP3E_Original_Images_CH03/Fig0338(a)(blurry_moon).tif', 0)
img = normalize(img)kernel_laplacian_a = np.array([[0,1,0],[1,-4,1],[0,1,0]])
# 下面这个核虽然可以锐化,但是效果没有上面这个好
# kernel_laplacian_d = np.array([[
#                     [-1, -1, -1],
#                     [-1, 8, -1],
#                     [-1, -1, -1]
#                                 ]])
laplacian_img_a = filter_2d(img, kernel_laplacian_a, mode='constant')
laplacian_img_b = filter_2d(img, -kernel_laplacian_a, mode='constant')plt.figure(figsize=(14, 16))
plt.subplot(2, 2, 1), plt.imshow(img, cmap='gray', vmin=0, vmax=1), plt.title('Original')
plt.subplot(2, 2, 2), plt.imshow(laplacian_img_a, cmap='gray', vmax=1), plt.title('Laplacian')laplacian_img_ori = normalize(img - laplacian_img_a)
plt.subplot(2, 2, 3), plt.imshow(laplacian_img_ori, cmap='gray', vmax=1), plt.title('Laplacian With ORI')laplacian_imgori = normalize(img + laplacian_img_b)
plt.subplot(2, 2, 4), plt.imshow(laplacian_imgori, cmap='gray', vmax=1), plt.title('Laplacian With ORI')plt.tight_layout()
plt.show()

第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波15 - 锐化高通滤波器 -拉普拉斯核(二阶导数)相关推荐

  1. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波17 - 锐化高通滤波器 - 梯度图像(罗伯特,Sobel算子)

    目录 锐化(高通)空间滤波器 使用一阶导数锐化图像-梯度 锐化(高通)空间滤波器 平滑通过称为低通滤波 类似于积分运算 锐化通常称为高通滤波 微分运算 高过(负责细节的)高频,衰减或抑制低频 使用一阶 ...

  2. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波16 - 锐化高通滤波器 - 钝化掩蔽和高提升滤波

    目录 锐化(高通)空间滤波器 钝化掩蔽和高提升滤波 锐化(高通)空间滤波器 平滑通过称为低通滤波 类似于积分运算 锐化通常称为高通滤波 微分运算 高过(负责细节的)高频,衰减或抑制低频 钝化掩蔽和高提 ...

  3. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波1 - 灰度变换和空间滤波基础、Sigmoid激活函数

    这里写目录标题 本节的目标 背景 灰度变换和空间滤波基础 本节的目标 了解空间域图像处理的意义,以及它与变换域图像处理的区别 熟悉灰度变换所有的主要技术 了解直方图的意义以及如何操作直方图来增强图像 ...

  4. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波18 - 低通、高通、带阻和带通滤波器、组合使用空间增强方法

    低通.高通.带阻和带通滤波器 得到空间滤波器的第三种方法,生成一维滤波器函数,然后要么使用式(3.42)w=vvTw = vv^Tw=vvT生成二维可分离的滤波器函数,要么旋转这些一维函数来生成二维核 ...

  5. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波8 - 直方图处理 - 直方图均衡化(全局直方图均衡化)

    直方图均衡化 灰度映射函数: s=T(r),0≤r≤L−1(3.8)s = T(r), \quad 0\leq r \leq L -1 \tag{3.8}s=T(r),0≤r≤L−1(3.8) 假设: ...

  6. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波13 - 平滑低通滤波器 -盒式滤波器核

    这里写目录标题 平滑(低通)空间滤波器 盒式滤波器核 平滑(低通)空间滤波器 平滑(也称平均)空间滤波器用于降低灰度的急剧过渡 在图像重取样之前平滑图像以减少混淆 用于减少图像中无关细节 平滑因灰度级 ...

  7. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波11 - 直方图处理 - 使用直方图统计量增强图像

    使用直方图统计量增强图像 全局均值和方差 μn=∑i=0L−1(ri−m)np(ri)(3.24)\mu_{n} = \sum_{i=0}^{L-1} (r_{i} - m)^{n} p(r_{i}) ...

  8. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波10 - 直方图处理 - 局部直方图处理

    这里写目录标题 局部直方图处理 局部直方图处理 因为像素是由基于整个图像的灰度的变换函数修改的.这种全局性方法适合于整体增强,但当目的是增强图像中几个小区域的细节时,通常就会失败.这是因为在这些小区域 ...

  9. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波9 - 直方图处理 - 直方图匹配(规定化)灰度图像,彩色图像都适用

    直方图匹配(规定化) 连续灰度 s=T(r)=(L−1)∫0rpr(w)dw(3.17)s = T(r) = (L-1) \int_{0}^{r} p_r(w) \text{d} w \tag{3.1 ...

最新文章

  1. 单片机c语言编程300例_趣味c语言编程100例(四)
  2. 沉浸式技术immersive technology
  3. IE JS关闭窗口不提示的方法
  4. EF Code First 学习笔记:关系(转)
  5. eos-unittest
  6. mysql数据库管理手册_CentOS MySQL 用户及数据库管理手册
  7. Nginx核心原理揭秘:Nginx为什么高效?
  8. [原创]性能测试工程师试题
  9. RoaringBitmap分析及使用
  10. 视易linux进图形界面,视易KTV点歌机系统安装说明.ppt
  11. 计算机流程图代表判断的是什么意思,算法流程图符号含义有哪些?用奇偶数判断算法流程图理解...
  12. 寻找生态位置,中小险企破局生态建设——保险生态建设...
  13. 何佳佳:民生银行基于开源的运维实践
  14. 免费和低成本开发人员工具和资源的终极清单
  15. obs多推流地址_OBS下载、安装、使用(腾讯)推流直播教程
  16. 声源定位matlab模拟,matlab声源定位程序的一点小问题
  17. 3D检测无痛涨点 | 暴涨8%!上下文感知数据增强方法CA-Aug
  18. 绕过安卓的唯一机会,可能是利用EMUI中沉睡的AI藏宝图
  19. 迷你型云台摄像头组装方法
  20. 【小技巧】AI语音合成,文本音频互转经验分享

热门文章

  1. kubernetes--配置文件
  2. [51CTO]给您介绍Windows10各大版本之间区别
  3. 阿里云深圳数据中心正式开放
  4. SQL之用户自定义函数
  5. 黑马训练营自学笔记(03)
  6. 浅谈Java网络编程之Socket (1)
  7. 使用SQL Server 2008提供的表分区向导
  8. PHP从零开始--错误处理函数
  9. 前端面试---Vue部分考点梳理
  10. [题解]Codeforces Round #519 - B. Lost Array