Skip to content

Latest commit

 

History

History
64 lines (43 loc) · 4.46 KB

Vague.md

File metadata and controls

64 lines (43 loc) · 4.46 KB

模糊图处理

为了评估验证图片的质量,我们通常采用边缘检测算子针对图片进行分析,从而评估图片的整体质量,为此我们通过三种对应的算子 对图片进行分析并通过折线图进行呈现,对应的代码可以了解并进行调整修改。同时针对其中 使用的算子将进行专门的介绍说明。

Laplacian算子

拉普拉斯算子(Laplacian operator)是一种在图像处理中常用的算子,用于检测图像中的边缘和特征。其算子主要应用于如下 两种目的:

  1. 边缘检测:用于检测图像中的边缘,应用该算子后,它会突出显示图像中像素强度的变化,这些变化往往对应于图像中的边缘。
  2. 图像增强:用于增强图像的特征,通过应用该算子,可以强调图像中的高频特征,使图像的细节更加突出。

该函数对应的参数使用说明如下(cv2.Laplacian):

  • src: 输入图像,通常是灰度图像。
  • ddepth: 输出图像的深度,通常设置为 -1(表示与输入图像相同的深度)或 cv2.CV_64F(64-bit 浮点数)。
  • ksize: 拉普拉斯核的大小,指定使用的核大小,一般为 1、3、5 或 7。

在使用 cv2.Laplacian() 函数时,主要调整的是 ddepth 和 ksize 两个参数。

  • ddepth 参数:这个参数决定了输出图像的数据类型。通常情况下,使用 -1 表示输出图像与输入图像具有相同的 深度。但也可以选择其他深度,比如 cv2.CV_64F,这种情况下会得到一个 64 位浮点数的输出图像。选择不同的深度可能会影响输出图像的灰度范围和精度。

  • ksize 参数:这个参数指定了拉普拉斯算子的卷积核大小。通常选择 1、3、5 或 7 等奇数大小的核。核的大小 越大,边缘检测可能会更加粗略。

其以离散的形式应用于图像,它可以通过卷积来实现。该算子在实践中常常与高斯滤波等前处理步骤结合使用,以减少噪声对算 法的影响,并突出图像中的特征和边缘。

针对使用高斯滤波以及拉普拉斯算子后的应用效果可以参考本代码,在应用了高斯滤波 后可能存在部分图片模糊的情况,针对这类图片主要是因为高斯滤波本身的内核大小会影响。本身是属于正常的现象,针对其他可以 采用的滤波如下:

  • 高斯滤波器(Gaussian Blur): 适用于降低图像中的高斯噪声或其他类似的噪声。它通过降低图像的高频分量来实现平 滑,有助于去除噪声和细节。适合于噪声较多、需要平滑处理的图像。

  • 均值滤波器(Mean Blur): 将图像中的每个像素值替换为其周围区域像素的平均值。适用于去除轻度的噪声,但容易导 致图像细节的丢失。适合于噪声较轻、需要快速处理的情况。

  • 双边滤波器(Bilateral Filter): 能够平滑图像同时保留边缘信息。它考虑了像素之间的空间距离和像素值之间的差 异,保持图像的边缘清晰。适合于需要平滑处理但又需要保留细节和边缘的情况,尤其适用于去除噪声的同时保持图像细节。

Sobel算子

Sobel算子是一种常用于图像处理中的边缘检测算子,它可以检测图像中的水平和垂直边缘。Sobel算子利用了图像的空间梯度 信息,通过卷积运算来计算图像中像素值的变化程度。Sobel算子常用于边缘检测和图像梯度计算,它对噪声有一定的抵抗能 力,并且在计算速度上相对较快。但是,Sobel算子在处理细节和边缘连接处可能会产生断裂,这种情况下可以通过其他技术进 行改进。

该函数对应的参数使用说明如下(cv2.Sobel):

参数说明:

  • src:输入图像,一般为单通道的灰度图像。
  • ddepth:输出图像的深度,通常设置为 -1 表示与输入图像保持一致。
  • dx 和 dy:分别表示水平和垂直方向上的导数阶数,通常为 0 或 1。
  • ksize:Sobel算子的核大小,一般为 1、3、5 或 7。

除了基本用法外,可以通过指定参数 ddepth 来设置输出图像的深度。如果设置为 -1,输出图像的深度将与输入图像相 同。另外,dx 和 dy 参数用于指定导数的阶数,通常将其中一个设置为 0 表示在该方向上不计算导数。针对其实际的使用 可以参考本代码