阅读桑迪潘·戴伊的《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)构造高斯金字塔步骤:

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

你可能感兴趣的:(笔记,python,图像处理,计算机视觉)