电子商务网站建设与维护课件,小程序搭建是什么工作,梧州住房和建设局网站,创意设计之都什么是图像平滑处理? 图像平滑处理#xff08;Image Smoothing#xff09;是一种图像处理技术#xff0c;旨在减少图像中的噪声、去除细节并平滑图像的过渡部分。这种处理常用于预处理图像#xff0c;以便在后续图像处理任务中获得更好的结果。 常用的图像平滑处理方法包括…什么是图像平滑处理? 图像平滑处理Image Smoothing是一种图像处理技术旨在减少图像中的噪声、去除细节并平滑图像的过渡部分。这种处理常用于预处理图像以便在后续图像处理任务中获得更好的结果。 常用的图像平滑处理方法包括
均值滤波Mean Filtering用图像中像素周围区域的平均值来代替每个像素的值从而平滑图像。均值滤波对去除高斯噪声等简单噪声类型效果较好。
高斯滤波Gaussian Filtering使用高斯核来对图像进行滤波高斯滤波在平滑图像的同时能够较好地保留图像的边缘信息。
中值滤波Median Filtering用像素周围区域像素值的中值来代替每个像素的值适用于去除椒盐噪声等脉冲型噪声。
双边滤波Bilateral Filtering结合空间域和灰度值域的信息能够保持图像的边缘特征同时对图像进行平滑处理。
图像平滑处理应用场景
图像平滑处理在图像处理中有广泛的应用场景主要用于去除图像中的噪声、减少细节、平滑图像的过渡部分从而提升后续图像处理任务的效果。
以下是图像平滑处理的一些常见应用场景
去噪声图像中可能存在不同类型的噪声如高斯噪声、椒盐噪声等。使用图像平滑处理方法可以有效地减少这些噪声提高图像质量。
在尽量保留图像原有信息的情况下过滤掉图像内部的噪声这一过程称为对图像的平滑 处理所得的图像称为平滑图像。例如下图是含有噪声的图像在图像内存在噪声信息 我们通常会通过图像平滑处理等方式去除这些噪声信息。 通过图像平滑处理可以有效地过滤掉图像内的噪声信息。再看下面得图 所示是对上面图 进行图像平滑处理的结果可以看到原有图像内含有的噪声信息被有效地过滤掉了。 图像降噪在低光条件下或者高ISO值下拍摄的图像可能会有较多的噪点。通过图像平滑处理可以降低噪点的影响使图像看起来更加干净和清晰。
图像模糊在某些情况下我们可能希望减少图像中的细节使图像变得模糊以达到某种特定的效果。图像平滑处理可以实现这个目标。
图像缩放当对图像进行缩放操作时可能会引入锯齿效应或马赛克现象。通过图像平滑处理可以减少这些不平滑的现象得到更平滑的缩放图像。
边缘检测在进行边缘检测等图像处理任务时图像平滑处理可以帮助去除细节使边缘更加清晰和明显。
目标检测和识别在某些情况下图像中的细节和噪声可能会干扰目标检测和识别算法。通过图像平滑处理可以消除这些干扰提高目标检测和识别的准确性。 总的来说图像平滑处理是图像预处理的重要步骤它能够改善图像质量、减少噪声和细节为后续图像处理任务提供更好的输入。不过需要注意过度的平滑处理可能会导致图像失真和信息丢失因此在应用图像平滑处理时需要权衡处理效果和影响。 均值滤波
定义: 均值滤波是指用当前像素点周围 N·N 个像素值的均值来代替当前像素值。使用该方法遍历处理图像内的每一个像素点即可完成整幅图像的均值滤波。 例如希望对图 下图 中位于第 5 行第 5 列的像素点进行均值滤波。 在进行均值滤波时首先要考虑需要对周围多少个像素点取平均值。通常情况下我们会 以当前像素点为中心对行数和列数相等的一块区域内的所有像素点的像素值求平均。例如 在上图 中可以以当前 226 像素点为中心对周围 3×3 区域内所有像素点的像素值求平均也可以对周围 5×5 区域内所有像素点的像素值求平均。
当前像素点的位置为第 5 行第 5 列我们对其周围 5×5 区域内的像素值求平均计算方法为
新值[(19725106156159)
(14940107571)
(163198226223156)
(2223768193157)
(42722504175)]/25
126计算完成后得到 126我们将 126 作为当前像素点均值滤波后的像素值。我们针对上图 中的每一个像素点计算其周围 5×5 区域内的像素值均值并将其作为当前像素点的新值即可 得到当前图像的均值滤波结果。
当然图像的边界点并不存在 5×5 邻域区域。例如左上角第 1 行第 1 列上的像素点其像素值为 23如果以其为中心点取周围 5×5 邻域则 5×5 邻域中的部分区域位于图像外部。 图像外部是没有像素点和像素值的显然是无法计算该点的 5×5 邻域均值的。 针对边缘像素点可以只取图像内存在的周围邻域点的像素值均值。
如图 7-8 所示计算 左上角的均值滤波结果时仅取图中灰色背景的 3×3 邻域内的像素值的平均值。 在图 7-8 中对于左上角第 1 行第 1 列的像素点我们取第 1~3 列与第 1~3 行交汇处 所包含的 3×3 邻域内的像素点的像素值均值。因此当前像素点的均值滤波计算方法为
新值[(23158140)
(238067)
(19919725)]/9
116计算完成后得到 116将该值作为该点的滤波结果即可
除此以外还可以扩展当前图像的周围像素点。例如将当前 9×7 大小的图像扩展为 13×11大小的图像如图 7-9 所示。 完成图像边缘扩展后可以在新增的行列内填充不同的像素值。在此基础上再针对 9×7的原始图像计算其 5×5 邻域内像素点的像素值均值。OpenCV 提供了多种边界处理方式我们可以根据实际需要选用不同的边界处理模式。
针对图像中第 5 行第 5 列的像素点其运算过程相当于与一个内部值都是 1/25 的 5×5 矩阵进行相乘计算从而得到均值滤波的结果 126其对应的关系如图 7-10 所示 根据上述运算针对每一个像素点都是与一个内部值均为 1/25 的 5×5 矩阵相乘得到均值滤波的计算结果如图 7-11 所示。 将使用的 5×5 矩阵一般化可以得到如图 7-12 所示的结果。 OpenCV 中图 7-12 右侧的矩阵被称为卷积核其一般形式为 式中M 和 N 分别对应高度和宽度。一般情况下M 和 N 是相等的例如比较常用的 3×3、5×5、 7×7 等。如果 M 和 N 的值越大参与运算的像素点数量就越多图像失真越严重。
函数语法
OpenCV 中实现均值滤波的函数是 cv2.blur()其语法格式为 dst cv2.blur( src, ksize, anchor, borderType ) 式中
dst 是返回值表示进行均值滤波后得到的处理结果。
src 是需要处理的图像即原始图像。它可以有任意数量的通道并能对各个通道独立处理。图像深度应该是 CV_8U、CV_16U、CV_16S、CV_32F 或者 CV_64F 中的一种。
ksize 是滤波核的大小。滤波核大小是指在均值处理过程中其邻域图像的高度和宽度。
例如其值可以为(5, 5)表示以 5×5 大小的邻域均值作为图像均值滤波处理的结果 如下式所示。 anchor 是锚点其默认值是(-1, -1)表示当前计算均值的点位于核的中心点位置。该值使用默认值即可在特殊情况下可以指定不同的点作为锚点。 borderType 是边界样式该值决定了以何种方式处理边界其值如表 7-1 所示。一般情 况下不需要考虑该值的取值直接采用默认值即可。 通常情况下使用均值滤波函数时对于锚点 anchor 和边界样式 borderType直接采用其 默认值即可。因此函数 cv2.blur()的一般形式为 dst cv2.blur( src, ksize,) 实验: 读取一幅噪声图像使用函数 cv2.blur()对图像进行均值滤波处理得到去噪图像并显示原始图像和去噪图像
实验原图 import cv2
ocv2.imread(lenaNoise.png) #读取待处理图像
#使用 blur 函数处理图像
rcv2.blur(o,(5,5))
cv2.imshow(original,o)
cv2.imshow(result,r)
cv2.waitKey()
cv2.destroyAllWindows()运行上述程序后会分别显示噪声图像左图和去噪图像右图 实验2:针对噪声图像使用不同大小的卷积核对其进行均值滤波并显示均值滤波的情况。
调整设置函数 cv2.blur()中的 ksize 参数,示例代码如下
代码如下:
import cv2
ocv2.imread(lenaNoise.png) #读取待处理图像
#使用 blur 函数处理图像
r3cv2.blur(o,(3,3))
r5cv2.blur(o,(5,5))
r7cv2.blur(o,(7,7))
cv2.imshow(original,o)
cv2.imshow(result3,r3)
cv2.imshow(result5,r5)
cv2.imshow(result7,r7)
cv2.waitKey()
cv2.destroyAllWindows()从结果图中可以看出,卷积核越来,图片会越模糊.