文章素材来源 Fu Xianjun. All Rights Reserved.
知识定义:阈值处理,指剔除图像内像素值高于一定值或者低于一定值的像素点
例如,设定阈值为127,然后
将图像内所有像素值大于180的像素点的值设为255。
将图像内所有像素值小于或等于180的像素点的值设为0。
import cv2
img = cv2.imread("peppa.jpg",0)
h,w = img.shape
for i in range(h):
for j in range(w):
if img[i,j]<180:
img[i,j]=0
else:
img[i,j]=255
cv2.imshow("binary",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
这是一只佩奇
当她被阈值处理之后,她就成了这样
像素值大于180的像素上调为255---白色
像素值小于180的像素下调为0------黑色
这种阈值处理也叫二值化
除了二值化处理之外,还有几种处理
这是他们的处理结果
OpenCV提供了函数cv2.threshold()--(阈值处理函数)和cv2.adaptiveThreshold()--(自适应阈值处理函数), 用于实现阈值处理。
阈值处理还有一种用法叫自适应阈值处理
定义:使用变化的阈值完成对图像的阈值处理。
通过计算每个像素点周围临近区域的加权平均值获得阈值,并使用该阈值对当前像素点进行处理。
知识定义:平滑处理
平滑处理又分为很多种
均值滤波--定义:是指用当前像素点周围N*N个像素值的均值来代替当前像素值。
dst=cv2.blur(src,ksize,anchor,borderType)
ksize:滤波核的大小。滤波核大小是指在均值处理过程中,其邻域图像的高度和宽度。
anchor:锚点,其默认值是(-1,-1),表示当前计算均值的点位于核的中心点位置。
borderType:边界样式,该值决定了以何种方式处理边界。
通常情况下,使用均值滤波函数时,对于锚点anchor和边界样式borderType,直接采用其默认值即可。因此,函数cv2.blur()的一般形式为:
dst=cv2.blur(src,ksize,)。缺点在于它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。
方框滤波--定义:自由选择是否对均值滤波的结果进行归一化,即可以自由选择滤波结果是邻域像素值之和的平均值,还是邻域像素值之和
cv2.boxFilter(src,ddepth,ksize,anchor,normalize,borderType)
ddepth是处理结果图像的图像深度,一般使用-1表示与原始图像使用相同的图像深度。
normalize 表示在滤波时是否进行归一化(这里指将计算结果规范化为当前像素值范围内 的值)处理,该参数是一个逻辑值,可能为真(值为1)或假(值为0)。
通常情况下,函数cv2.boxFilter()的一般形式为:
dst=cv2.boxFilter(src,ddepth,ksize)
高斯滤波--定义:将中心点的权重值加大,远离中心点的权重值减小,在此基础上计算邻域内各个像素值不同权重的和。
dst=cv2.GaussianBlur(src,ksize,sigmaX,sigmaY,borderType)
sigmaX 是卷积核在水平方向上(X 轴方向)的标准差,其控制的是权重比例。
sigmaY是卷积核在垂直方向上(Y轴方向)的标准差。
在实际处理中,可以显式指定sigmaX和sigmaY为默认值0。因此,函数cv2.GaussianBlur()的常用形式为:
dst=cv2.GaussianBlur(src,ksize,0,0),高斯滤波的作用是消除高斯噪声(抑制服从正态分布的噪声)
中值滤波--定义:用邻域内所有像素值的中间值来替代当前像素点的像素值。
dst=cv2.medianBlur(src,ksize)
该方法在去除脉冲噪声、椒盐噪声的同时又能保留图像边缘细节
双边滤波--定义:是综合考虑空间信息和色彩信息的滤波方式,在滤波过程中能够有效地保护图像内的边缘信息。
cv2.bilateralFilter(src,d,sigmaColor,sigmaSpace,borderType)
d:在滤波时选取的空间距离参数,这里表示以当前像素点为中心点的直径。如果该值为 非正数,则会自动从参数 sigmaSpace 计算得到。
sigmaColor:滤波处理时选取的颜色差值范围,该值决定了周围哪些像素点能够参与到 滤波中来。
sigmaSpace:坐标空间中的sigma值。
在函数cv2.bilateralFilter()中,参数borderType是可选参数,其余参数全部为必选参数。
cv2.bilateralFilter(src,d,sigmaColor,sigmaSpace)
2D卷积--定义:使用特定的卷积核实现卷积操作。
dst=cv2.filter2D(src,ddepth,kernel,anchor,delta,borderType)
delta :修正值,它是可选项。如果该值存在,会在基础滤波的结果上加上该值作为最终 的滤波处理结果。
在通常情况下,使用滤波函数cv2.filter2D()时,对于参数锚点anchor、修正值delta、边界样式borderType,直接采用其默认值即可。因此,函数cv2.filter2D()的常用形式为:
dst=cv2.filter2D(src,ddepth,kernel)