本人郵箱:sylvester0510@163.com,歡迎交流討論,
歡迎轉載,轉載請註明網址http://blog.csdn.net/u010128736/
閾值化分割(一)雙峰法 一、雙峰法介紹
長條圖雙峰法(2-Mode method),如下圖所示,即如果映像灰階長條圖呈明顯的雙峰狀,則選取雙峰間的最低穀出作為映像分割的閾值所在。即下圖中,以Zt為閾值進行二值化分割,可以將目標和背景分割開。
但當映像的長條圖出現波峰間的波穀平坦、各地區長條圖的波形重疊等情況時,用雙峰法就很找到合適的閾值。 二、python源碼
下面給出python原始碼。
#coding:utf-8import cv2import numpy as npfrom matplotlib import pyplot as pltimage = cv2.imread("E:/python/cv/2ModeMethod/test.jpg")gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)plt.subplot(131), plt.imshow(image, "gray")plt.title("source image"), plt.xticks([]), plt.yticks([])plt.subplot(132), plt.hist(image.ravel(), 256)plt.title("Histogram"), plt.xticks([]), plt.yticks([])ret1, th1 = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)plt.subplot(133), plt.imshow(th1, "gray")plt.title("2-Mode Method"), plt.xticks([]), plt.yticks([])plt.show()
這裡為了方便,之間選取127作為分隔閾值,網上能找到一些自動選擇閾值的演算法,後面也會介紹一些演算法,大家感興趣可以自行尋找。結果如下所示: