OpenCV學習之閾值化


OpenCV中圖像閾值處理有兩個函數,cvThreshold和cvAdaptiveThreshold。圖像處理中可能最重要的一步就是圖像的二值化處理,既然需要將圖像二之化,那么就不得不使用這兩個函數。

 

1. cvThreshold

函數原型如下:

double cvThreshold( const void* srcarr, void* dstarr, double thresh, double maxval, int type );

srcarr源數組,dstarr為目標數組,thresh為閾值,maxval為欲設最大值,type為閾值處理的類型,有如下幾種:

CV_THRESH_BINARY,表示dsti=(srci>T)?M:0。

CV_THRESH_BINARY_INV,表示dsti=(srci>T)?0:M。

CV_THRESH_TRUNC,表示dsti=(srci>T)?M:srci。

CV_THRESH_TOZERO_INV,表示dsti=(srci>T)?0:srci。

CV_THRESH_TOZERO,表示dsti=(srci>T)?srci:0。

可能這樣還是不能直觀的看出我們實際使用中到底選擇哪一種類型,不要着急:

最上面的一個圖是將要被閾值處理值和閾值圖,下面5個就是前面的閾值處理的類型。

 

2. cvAdaptiveThreshold

函數原型如下:

void cvAdaptiveThreshold( const void *srcIm, void *dstIm, double maxValue, int method, int type, int blockSize, double delta );

這個函數同上面那個函數不同的是,上面那個函數需要給出閾值,而這個函數的閾值是不要指定的,它是通過一定計算得來的,稱之為自適應閾值處理。

前兩個參數同cvThreshold的前兩個參數一樣,你甚至可以看到OpenCV中絕大多數函數的前兩個參數都是這樣的,第一個為源,第二個為目標。

第三個參數含義也和cvThreshold中的一樣。

第四個參數有兩種取值:ADAPTIVE_THRESH_MEAN_C和ADAPTIVE_THRESH_GAUSSIAN_C,分別表示對區域內像素采用均值處理和高斯加權處理。

第五個參數也和cvThreshold中的一樣。

第六個參數表示區域大小。

最后一個參數是一個定值。

自適應閾值它是計算區域內的一個值減去一個定值作為閾值,所以說它的閾值是動態計算的。

 

轉載地址:http://blog.csdn.net/mcgrady_tracy/article/details/7482673

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM