© Fu Xianjun. All Rights Reserved.
OpenCV使用cv2.threshold()函数进行阈值化处理。
语法格式为:ret, dst = cv2.threshold(src, thresh, maxval, type)
使用函数cv2.threshold()对图像进行二值化阈值处理。
编写代码如下(示例):
import cv2
img = cv2.imread(" ")
t , rst = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
cv2.imshow("img",img)
cv2.imshow("rst",rst)
cv2.waitKey(0)
cv2.destroyAllWindows()
OpenCV中,函数cv2.adaptiveThreshold()用来实现自适应阈值处理。
该语法格式为:
dst=cv.adaptiveThreshold (src, maxValue, adaptiveMethod, thresholdType, blockSize, C)
编写代码如下(示例):
img=cv2.imread(' ',0)
athdMEAN=cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,7,5)
athdGAUS=cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,5,3)
cv2.imshow("athMEAN",athdMEAN)
cv2.imshow("athGAUS",athdGAUS)
cv2.waitKey(0)
cv2.destroyAllWindows()
Otsu大津
语句函数cv2.threshold()采用Otsu方法进行阈值分割:
t,otsu=cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
与普通阈值分割的不同之处在于:
编写代码如下(示例):
img=cv2.imread(' ',0)
ret,otsu=cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
cv2.imshow("otsu",otsu)
cv2.waitKey(0)
cv2.destroyAllWindows()
编写代码如下(示例):
import cv2
img = cv2.imread(" ",0)
t1 , thd = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
t2, otsu=cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
cv2.imshow("img",img)
cv2.imshow("thd",thd)
cv2.imshow("otsu",otsu)
cv2.waitKey()
cv2.destroyAllWindows()
图像平滑处理的基本原理是,将噪声所在像素点的像素值处理为其周围临近像素点的值的近似值。取近似值的方式有:
其目标是去除图像内部噪声。
定义:指用当前像素点周围N*N个像素值的均值来代替当前像素值。
通常情况下,使用均值滤波函数时,对于锚点anchor和边界样式borderType,双边滤波直接采用其默认值即可。因此,函数cv2.blur()的一般形式为:dst=cv2.blur(src,ksize,)
定义:自由选择是否对均值滤波的结果进行归一化,即可以自由选择滤波结果是邻域像素值之和的平均值,还是邻域像素值之和。
通常情况下,函数cv2.boxFilter()的一般形式为:dst=cv2.boxFilter(src,ddepth,ksize)
定义:将中心点的权重值加大,远离中心点的权重值减小,在此基础上计算邻域内各个像素值不同权重的和。
在实际处理中,可以显式指定sigmaX和sigmaY为默认值0。因此,函数双边滤波cv2.GaussianBlur()的常用形式为:dst=cv2.GaussianBlur(src,ksize,0,0)
高斯滤波的作用 : 消除高斯噪声
定义:用邻域内所有像素值的中间值来替代当前像素点的像素值
语法形式为:dst=cv2.medianBlur(src,ksize)
该方法在去除脉冲噪声、椒盐噪声的同时又能保留图像边缘细节
定义:是综合考虑空间信息和色彩信息的滤波方式,在滤波过程中能够有效地保护图像内的边缘信息。
语法形式为:cv2.bilateralFilter(src,d,sigmaColor,sigmaSpace,borderType)
(参数borderType是可选参数,其余参数全部为必选参数)
定义:使用特定的卷积核实现卷积操作。
通常情况下,使用滤波函数cv2.filter2D()时,对于参数锚点anchor、修正值delta、边界样式borderType,直接采用其默认值即可。
函数cv2.filter2D()的常用形式为:dst=cv2.filter2D(src,ddepth,kernel)
–借助numpy库中的ones()函数,设计一个9·9大小的卷积核
编写代码如下(示例):
import cv2
import numpy as np
img = cv2.imread(" ")
kernel = np.ones((9,9),np.float32)/81
r = cv2.filter2D(img,-1,kernel)
cv2.imshow('img',img)
cv2.imshow('filter2D',r)
cv2.waitKey()
cv2.destroyAllWindows()
以上程序会将原始图像以9·9大小的领域进行均值滤波。