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

目录

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

锐化(高通)空间滤波器

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

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

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

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

  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}xf=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}x22f=f(x+1)+f(x1)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=x22f+y22f(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}x22f=f(x+1,y)+f(x1,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}y22f=f(x,y+1)+f(x,y1)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(x1,y)+f(x,y+1)+f(x,y1)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(x1,y))01(f(x,y1))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}010141010111181111

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

[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}010141010111181111

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

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()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260771.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Debian on VirtualBox下共享win7文件夹设置

借用&#xff1a;http://www.dbasoul.com/2010/695.html 1. 安装增强功能包(Guest Additions) 参考文档&#xff1a;Debian下安装VirtualBox增强功能2. 设置共享文件夹 重启完成后点击”设备(Devices)” -> 共享文件夹(Shared Folders)菜单&#xff0c;添加一个共享文件夹&a…

第四周作业

1、复制/etc/skel目录为/home/tuser1&#xff0c;要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。cp -r /etc/skel/ /home/tuser1/chmod -R go--- /home/tuser1/2、编辑/etc/group文件&#xff0c;添加组hadoop。vim /etc/group G, o, hadoop:x:501, esc, …

C# 导出 Excel 数字列出现‘0’的解决办法

在DataGird的中某一列全是数字并且长度大于15的字符&#xff0c;在导出excel时数字列第15-18位全部为0。解决办法&#xff1a;在需导出数字列前加入英文字符状态的单引号&#xff08;‘ &#xff09;&#xff0c;如&#xff1a;<asp:TemplateField HeaderText"身份证号…

在python是什么意思_python 的 表示什么

python代码里经常会需要用到各种各样的运算符&#xff0c;这里我将要和大家介绍的是Python中的&&#xff0c;想知道他是什么意思吗&#xff1f;那就和小编一起来了解一下吧。&是位运算符-与&#xff0c;类似的还有|&#xff08;或&#xff09;&#xff0c;!(非)。 整数…

Ubuntu 更改ROOT密码的方法

真蛋疼啊&#xff0c;刚安装了Ubuntu 需要安装程序&#xff0c;提示输入root密码&#xff0c;我才想起来Ubuntu的root密码是什么&#xff0c;我貌似没设置啊。 上网搜索了下相关信息&#xff0c;才知道原来root默认是没有密码的。 需要使用以下命令 sudo passwd root 然后会要求…

DevExpress控件GridControl中的布局详解 【转】

DevExpress控件GridControl中的布局详解 【转】 2012-10-24 13:27:28| 分类&#xff1a; devexpress | 标签&#xff1a;devexpress |举报|字号 订阅 http://www.cnblogs.com/martintuan/archive/2011/03/05/1971472.html 进行DevExpress控件GridControl的使用时&#xff…

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

目录锐化&#xff08;高通&#xff09;空间滤波器钝化掩蔽和高提升滤波锐化&#xff08;高通&#xff09;空间滤波器 平滑通过称为低通滤波类似于积分运算锐化通常称为高通滤波微分运算高过&#xff08;负责细节的&#xff09;高频&#xff0c;衰减或抑制低频 钝化掩蔽和高提…

python画圆并填充图形颜色_如何使用python设计语言graphics绘制圆形图形

在python设计语言中&#xff0c;可以利用第三方包graphics绘制不同的图形&#xff0c;有圆形、直线、矩形等。如果想要绘制一个圆形&#xff0c;可以设置圆形的半径和坐标位置。下面利用一个实例说明绘制圆形&#xff0c;操作如下&#xff1a;工具/原料 python 截图工具 方法/步…

设计模式学习-工厂方法模式

在上文(设计模式学习-简单工厂模式)的模拟场景中&#xff0c;我们用简单工厂模式实现了VISA和MASTERARD卡的刷卡处理&#xff0c;系统成功上线并运行良好&#xff0c;突然有一天老大跑来说&#xff0c;我们的系统需要升级&#xff0c;提供对一般银联卡的支持。怎么办&#xff1…

3ds Max Shortcuts 快捷键大全

主界面 【Q】选择循环改变方式 【W】移动 【E】旋转 【R】缩放循环改变方式 【7】物体面数 【8】Environment 【9】Advanced lighting 【0】Render to Textures 【1】【2】【3】【4】【5】分别对应5个次物体级别&#xff0c;例如Edit Mesh中的点、线、面、多边形、 【F2】切换在…

word2010激活工具使用方法

1、关闭杀毒&#xff0c;关闭正打开着的word文档 2、执行Activator_v1.2.exe-->Activation Office 2010VL --》按1 --》完毕。 3、打开word--》文件--》帮助--》看右上角。 2、【补充】使用 Office 2010 Toolkit 下载地址&#xff1a; http://vdisk.weibo.com/s/yoz9R 或…

python编程单词排序_Python实现对文件进行单词划分并去重排序操作示例

本文实例讲述了Python实现对文件进行单词划分并去重排序操作。分享给大家供大家参考&#xff0c;具体如下&#xff1a; 文件名&#xff1a;test1.txt 文件内容&#xff1a; But soft what light through yonder window breaks It is the east and Juliet is the sun Arise fair…

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

目录锐化&#xff08;高通&#xff09;空间滤波器使用一阶导数锐化图像&#xff0d;梯度锐化&#xff08;高通&#xff09;空间滤波器 平滑通过称为低通滤波类似于积分运算锐化通常称为高通滤波微分运算高过&#xff08;负责细节的&#xff09;高频&#xff0c;衰减或抑制低频…

如何学习Linux / 新手入门

如何学习Linux / 新手入门 一、从基础开始&#xff1a;常常有些朋友在Linux论坛问一些问题&#xff0c;不过&#xff0c;其中大多数的问题都是很基础的。例如&#xff1a;为什么我使用一个命令的时候&#xff0c;系统告诉我找不到该目录&#xff0c;我要如何限制使用者的权限等…

opacity用法:

/* older safari/Chrome browsers */ -webkit-opacity: 0.5; /* Netscape and Older than Firefox 0.9 */ -moz-opacity: 0.5; /* Safari 1.x (pre WebKit!) 老式khtml内核的Safari浏览器*/ -khtml-opacity: 0.5; /* IE9 etc...modern browsers */ opacity: .5; /* IE…

网络传输层之TCP、UDP详解

1、传输层存在的必要性 由于网络层的分组传输是不可靠的&#xff0c;无法了解数据到达终点的时间&#xff0c;无法了解数据未达终点的状态。因此有必要增强网络层提供服务的服务质量。 2、引入传输层的原因 面向连接的传输服务与面向连接的网络服务类似&#xff0c;都分为建立连…

关机与禁止关机代码

今天抽空,写完了定时关机程序的代码,测试了一下,还不错,以前写过个禁止关机的程序,用来测试一下,看哪个强,先运行禁止关机的程序,用Windows xp的关闭计算机试了一下,关不了. 代码很少: private procedure QueryEndSession(var Msg:TMessage);Message WM_QueryEndSession;…

pythonweb开发面试_Python web 面试题(一)

1、列举django的内置组件&#xff1f; url 、view、model、template、中间件 2、列举django中间件的5个方法&#xff1f;以及django中间件的应用场景&#xff1f; process_request(self,request) process_view(self, request, callback, callback_args, callback_kwargs) proce…

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

低通、高通、带阻和带通滤波器 得到空间滤波器的第三种方法&#xff0c;生成一维滤波器函数&#xff0c;然后要么使用式(3.42)wvvTw vv^TwvvT生成二维可分离的滤波器函数&#xff0c;要么旋转这些一维函数来生成二维核。旋转后的一维函数是圆对称&#xff08;各向同性&#x…