阅读桑迪潘·戴伊的《Python图像处理实战》笔记五

五、应用导数方法实现图像增强

1.图像导数——梯度和拉普拉斯算子

(1)梯度(一阶导)幅值的峰值表示边缘位置

(2)拉普拉斯近似于图像的二阶导数,用于检测边缘,如果在输入图像的一阶图像中有尖峰或谷的位置,那么在输入图像的二阶导数的相应位置上有零交叉点(用于标记边缘位置)

以下为关于拉普拉斯算子的些说明。

①∇^2 f(x,y)是标量,而不是向量(与梯度不同,梯度是向量)。
②用单个核(掩模)来计算拉普拉斯算子(不像梯度通常有两个核,即x方向和,y方向上的偏导数)。 ③拉普拉斯算子作为个标量,
它没有任何方向,因此丢失了方向信息, ④∇^2 f(x,y)是二阶偏导数之和(梯度表示由一阶偏导数组成的向量),阶数越高,噪声增加得越多。
⑤拉普拉斯算子对噪声非常敏感。 ⑥拉普拉斯算子之前总是要进行平滑运算(例如使用高斯滤波器),否则会大大增加噪声。

(3)噪声对梯度计算的影响
利用有限差分计算的导数滤波器对噪声非常敏感,一般情况,噪声越大,强度变化越大,滤波器的响应越强。
解决方案:先用低通滤波器对图输入图像进行平滑,然后再平滑后的图像中找到峰值。

2.锐化和反锐化掩膜

锐化的目的:突出图像中的细节或增强模糊的细节
(1)使用拉普拉斯滤波器锐化图像步骤:(laplace()函数)

①对原始输入图像应用拉普拉斯滤波器
②将步骤①得到的输出图像与原始输入图像相叠(得到锐化后的图像)

(2)反锐化掩膜公式:(使用Scipy的ndimage模块)

*锐化图像=原始图像+(原始图像-模糊图像)总数

3.使用导数和滤波器进行边缘检测

(1)用偏导数计算梯度大小
梯度大小又称为边缘强度,使用偏导数的有限差分近似法计算梯度大小可以用于边缘检测
(2)非最大抑制算法

①该算法首先检测边缘的角度或方向 ②若一个像素值在与其边缘角相切的直线上为非最大值,则可以将其从边缘映射中删除
③通过将边缘方向分割成8个等份,每等份角度为22.50度来实现的 ④假设系列条件具备,可以聚焦在Π/8的范围,相应的设置切向比较
⑤对比具有和不具有非最大抑制的梯度图像,从之前的图像中可以清楚的观察到边缘细化的效果。

(3)边缘检测器

①Sobel算子:sobel_h(),sobel_y(),sobel()函数分别查找水平/垂直边缘、计算梯度
②常用的一阶导滤波器:Sobel,Scharr,Roberts,二阶导:拉普拉斯滤波器
③Canny算法:平滑/去噪—计算梯度大小和方向—非最大抑制—链接和滞后阈值—输出强边缘
④LoG(高斯拉普拉斯)滤波器和DoG滤波器

(4)基于LoG滤波器的边缘检测步骤:
平滑输入图像—平滑后的图像与拉普拉斯滤波器进行卷积得到输出图像—计算最后一步得到图像的零交叉点。

4.图像金字塔——融合图像

(1)pyramid_guassian()函数来计算输入图像的高斯金字塔;pyramid_reduce()函数递归地获得平滑的和向下采样的图像。
(2)构造高斯金字塔步骤:

①从原始图像开始
②迭代计算金字塔每一层的图像,首先平滑图像,然后对图像进行下采样
③在图像大小变的足够小的层停止

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误提示是Python报告的一个模块导入错误。具体来说,它指出找不到名为'SANDI'的模块。在给出的引用中,并没有提到名为'SANDI'的模块。因此,我无提供有关该模块的详细信息。要解决此错误,您可以尝试以下几种方: 1. 检查代码中模块的导入语句是否正确,并确保模块名称拼写正确。如果'SANDI'是您自己创建的一个模块,您需要确认它的位置和拼写是否正确,并确保您已正确安装该模块。 2. 确保您的Python环境中已安装了所需的模块。您可以使用命令`pip list`来查看已安装的模块列表,并确保'SANDI'模块在其中。 3. 如果'SANDI'是来自于示例代码或其他资源,您需要确保它已正确地导入到您的项目中。您可以检查相关文档或示例代码来获取正确的导入方式。 请确保按照正确的方式导入和安装模块,并检查是否有其他错误或拼写错误导致此错误。如果问题仍然存在,请提供更多关于您的代码和环境的信息,以便我可以给出更具体的建议。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [poodr-py:来自 Sandi Metz 的“Practical Object-Oriented Design in Ruby”示例代码的 Python 版本](https://download.csdn.net/download/weixin_42160376/20004766)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [poodr-swift:来自 Sandi Metz 的 Practical Object-Oriented Design in Ruby 的示例代码翻译成 Swift](https://download.csdn.net/download/weixin_42143221/19526783)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [practical_object_oriented_design_in_ruby:桑迪·梅茨 (Sandi Metz) 的书令人难以置信。 这是我对她的敬意](https://download.csdn.net/download/weixin_42100188/19794690)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值