简单来说就是对一幅双峰图像自动根据其直方图计算出一个阈值。(对于非双峰图像,这种方法得到的结果可能会不理想)。
这里用到到的函数还是 cv2.threshold(),但是需要多传入一个参数(flag):cv2.THRESH_OTSU。这时要把阈值设为 0。然后算法会找到最优阈值,这个最优阈值就是返回值 retVal。如果不使用 Otsu 二值化,返回的retVal 值与设定的阈值相等。
import cv2
import numpy as np
import matplotlib.pylab as plt
import scipy.misc as misc
img = cv2.imread('images/32.jpg',0)
# global thresholding
ret1,th1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
# Otsu's thresholding
ret2,th2 = cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
# Otsu's thresholding after Gaussian filtering
# ( 5,5 )为高斯核的大小,

Otsu's二值化是一种针对双峰图像的自动阈值计算方法,它通过分析图像直方图来找到最佳阈值。在OpenCV中,可以使用cv2.threshold()函数,配合cv2.THRESH_OTSU标志来实现。阈值设为0,算法将自动找到最优阈值并作为返回值retVal。这种方法对非双峰图像可能效果不佳。
最低0.47元/天 解锁文章
1630

被折叠的 条评论
为什么被折叠?



