阿洲的程式教學
關於Qt、OpenCV、影像處理演算法
自適應閾值(threshold、CV_THRESH_OTSU)
所謂的二值化是將影像進行區分,分成我們感興趣的部分(前景),以及不感興趣的部分
(背景),通常將某個強度當作分割的標準,這個強度稱作閾值(threshold),通常以強度
超過閾值的像素當作前景,反之則為背景。
閾值的算法主要分兩類:
固定閾值:程式或使用者直接給定一個灰階值當閾值,再用這個閾值進行二值化。
自適應閾值:輸入影像,程式依這影像計算出較合適的閾值,再用這個閾值進行二
值化。
這邊介紹一種自適應閾值的算法Otsu,以及在OpenCV如何用這個方式找閾值後進行
二值化。
Otsu流程:
先計算影像的直方圖
把直方圖強度大於閾值的像素分成一組,把小於閾值的像素分成另一組。
分別計算這兩組的組內變異數,並把兩個組內變異數相加。
將0~255依序當作閾值來計算組內變異數和,總和值最小的就是結果閾值。
OpenCV自適應閾值二值化
一樣是用threshold()函式,使用方式也一樣,只是最後一個參數增加
CV_THRESH_OTSU,目前otsu只能使用在8位元圖。
double threshold(InputArray src, OutputArray dst, double thresh, double
maxval, int type)
src:輸入圖,只能輸入單通道,8位元或32位元浮點數影像。
评论0