門檻值過濾算是最簡單的影像切割方法,OpenCV提供兩個APIcv::threshold和cv::adaptiveThreshold讓開發者使用,threshold這個API必須自己設定門檻值,而adaptiveThreshold可以自動判斷適合的門檻值,依個人需求而決定使用哪一個。
src輸入影像dst輸出影像thresh門檻值maxval滿足條件給予該像素點的值type計算後輸出影像的呈現型態,型態如下:
cv::Mat grayImg;
cv::cvtColor(srcImg, grayImg, cv::COLOR_BGR2GRAY);
cv::Mat binImg, binInvImg, truncImg, tozeroImg, tozeroInvImg, otsuImg, trianImg;
double th = 127, maxVal = 255;
cv::threshold( grayImg, binImg, th, maxVal, cv::THRESH_BINARY );
cv::threshold( grayImg, binInvImg, th, maxVal, cv::THRESH_BINARY_INV );
cv::threshold( grayImg, truncImg, th, maxVal, cv::THRESH_TRUNC );
cv::threshold( grayImg, tozeroImg, th, maxVal, cv::THRESH_TOZERO );
cv::threshold( grayImg, tozeroInvImg, th, maxVal, cv::THRESH_TOZERO_INV );
cv::threshold( grayImg, trianImg, th, maxVal, cv::THRESH_TRIANGLE );
cv::threshold( grayImg, otsuImg, 0, maxVal, cv::THRESH_BINARY+cv::THRESH_OTSU );
詳細Sample Code請參考GitHub
void adaptiveThreshold(InputArray src, OutputArray dst, double maxValue, int adaptiveMethod, int thresholdType, int blockSize, double C)
-
src輸入影像(灰階) -
dst輸出影像 -
maxValue滿足條件給予該像素點的值 -
adaptiveMethod自動篩選門檻值的方法- ADAPTIVE_THRESH_MEAN_C 平均加權
- ADAPTIVE_THRESH_GAUSSIAN_C 高斯函數
-
thresholdType計算後輸出影像的呈現型態,型態如下: -
blockSize鄰近像素需要加入參考的大小 -
C
cv::Mat grayImg;
cv::cvtColor(srcImg, grayImg, cv::COLOR_BGR2GRAY);
cv::Mat adapMaenImg, adapGaussianImg;
double maxVal = 255;
cv::adaptiveThreshold( grayImg, adapMaenImg, maxVal, cv::ADAPTIVE_THRESH_MEAN_C, cv::THRESH_BINARY, 11, 2 );
cv::adaptiveThreshold( grayImg, adapGaussianImg, maxVal, cv::ADAPTIVE_THRESH_GAUSSIAN_C, cv::THRESH_BINARY, 11, 2 );詳細Sample Code請參考GitHub






