圖像閾值化可以理解為一個(gè)簡(jiǎn)單的圖像分割操作,閾值又稱(chēng)為臨界值,它的目的是確定出一個(gè)范圍,然后這個(gè)范圍內(nèi)的像素點(diǎn)使用同一種方法處理,而閾值之外的部分則使用另一種處理方法或保持原樣。
閾值處理有2種方式,一種是固定閾值方式,又包括多種處理模式,另一種是非固定閾值,由程序根據(jù)算法以及給出的最大閾值計(jì)算圖像合適的閾值,再用這個(gè)閾值進(jìn)行二值化處理
1.固定閾值方式(threshold)
Opencv API:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-425483.html
ret, dst = cv2.threshold(src, thresh, maxval, type)
輸入:1.src:輸入的圖像(只能為單通道圖像,例如灰度圖);2.thresh:閾值。通過(guò)閾值水平的像素被接受,不通過(guò)的則不接受,閾值判斷時(shí),是以小于等于閾值和大于閾值作為分界條件;3.maxVal:maxval是閾值化后的最大值;4.type:二值化操作的類(lèi)型,包含以下5種類(lèi)型
函數(shù)返回值:ret表示實(shí)際使用的閾值即threshold,dst表示輸出圖像
類(lèi)型 | 說(shuō)明 |
---|---|
cv2.THRESH_BINARY | 超過(guò)閾值部分取maxval(最大值),否則取0 |
cv2.THRESH_BINARY_INV | 不超過(guò)閾值的像素設(shè)置為maxVal,超過(guò)的設(shè)置為0 上一種的反轉(zhuǎn) |
cv2.THRESH_TRUNC | 大于閾值部分設(shè)為閾值,否則不變 trunc截?cái)?即用閾值來(lái)截?cái)?/td> |
cv2.THRESH_TOZERO | 小于或等于閥值的設(shè)為0,其余部分不變 |
cv2.THRESH_TOZERO_INV | THRESH_TOZERO的反轉(zhuǎn) |
2.自適應(yīng)閾值方式(adaptiveThreshold)
根據(jù)圖像上的每一個(gè)小區(qū)域,計(jì)算與其對(duì)應(yīng)的閾值,從而使得同一幅圖像上的不同區(qū)域采用不同的閾值,在亮度不同的情況下得到更好的結(jié)果。該函數(shù)用來(lái)對(duì)灰度圖應(yīng)用自適應(yīng)閾值,取決于傳遞給它的自適應(yīng)方法。需要傳遞幾個(gè)參數(shù),包括最大閾值,塊大?。梢允?、5、7等)以及一個(gè)將從計(jì)算得到的塊均值中減去的常量值,該值可以為0。
Opencv API:
dst = cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C)
src: 需要處理的源圖像。
maxValue: 當(dāng)像素值超過(guò)閾值時(shí),所賦的最大值。
adaptiveMethod: 自適應(yīng)閾值算法的類(lèi)型,目前支持ADAPTIVE_THRESH_MEAN_C 和 ADAPTIVE_THRESH_GAUSSIAN_C兩種類(lèi)型。
thresholdType: 閾值的類(lèi)型,目前支持THRESH_BINARY 和 THRESH_BINARY_INV兩種類(lèi)型。
blockSize: 自適應(yīng)閾值算法使用的塊大小,必須是一個(gè)奇數(shù)。
C: 從均值或加權(quán)均值中減去的常量,用于調(diào)節(jié)閾值。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-425483.html
到了這里,關(guān)于Opencv+Python筆記(五)圖像閾值化處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!