OpenCV 二值化
一、簡述
圖像二值化(Image Binarization)就是將圖像上的像素點的灰度值設置為0或255,也就是將整個圖像呈現出明顯的黑白效果的過程。在數字圖像處理中,二值圖像占有非常重要的地位,圖像的二值化使圖像中數據量大為減少,從而能凸顯出目標的輪廓。
二、原理
將256個亮度等級的灰度圖像通過適當的閾值選取而獲得仍然可以反映圖像整體和局部特征的二值化圖像。首先,圖像的二值化有利于圖像的進一步處理,使圖像變得簡單,而且數據量減小,能凸顯出感興趣的目標的輪廓。其次,要進行二值圖像的處理與分析,首先要把灰度圖像二值化,得到二值化圖像。
為了得到理想的二值圖像,一般采用封閉、連通的邊界定義不交疊的區域。所有灰度大于或等于閾值的像素被判定為屬于特定物體,其灰度值為255表示,否則這些像素點被排除在物體區域以外,灰度值為0,表示背景或者例外的物體區域。
三、二值化在OpenCV中的實現
1、固定閾值操作法
double threshold( InputArray src,OutputArray dst,double threshold,double maxval,int type );其中第五個參數type(閾值類型)使用CV_THRESH_BINARY、CV_THRESH_BINARY_INV、CV_THRESH_TRUNC、CV_THRESH_TOZERO、CV_THRESH_TOZERO_INV其中的一種。具體含義如下圖:
2、自適應閾值操作法
(1)使用 1 中的threshold()方法,但是第五個參數type(閾值類型)使用CV_THRESH_OTSU(大津法)或CV_THRESH_TRIANGLE(三角形算法),這樣該函數就會使用大律法OTSU或三角形算法得到的全局自適應閾值來進行二值化圖片,而第三個參數threshold不再起作用。THRESH_OTSU最適用于雙波峰,THRESH_TRIANGLE最適用于單個波峰,最開始用于醫學分割細胞等。
且這兩種閾值類型常與其他閾值類型配合使用。比如:
threshold( dst, dst, 300 , 255, CV_THRESH_OTSU | CV_THRESH_BINARY_INV);這種方法對于灰度直方圖呈現二峰特征的圖片處理起來效果很好
(2)使用adaptiveThreshold()方法
void adaptiveThreshold(InputArray src, OutputArray dst, double maxValue, int adaptiveMethod,int thresholdType, int blockSize, double C)三、二值圖像形態學操作
包括腐蝕、膨脹、開運算、閉運算、形態學梯度、頂帽、黑帽等操作。
?
關于圖像二值化的介紹,這里有篇博客介紹的也挺好,以供參考:鏈接
總結
以上是生活随笔為你收集整理的OpenCV 二值化的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: php给数据库添加记录,数据表操作之添加
- 下一篇: 64位oracle plsql deve
