1. 程式人生 > >OpenCV程式設計:最大熵閾值分割演算法實現(程式碼可執行)

OpenCV程式設計:最大熵閾值分割演算法實現(程式碼可執行)

        將資訊理論中的 shannon 熵概念用於影象分割, 其依據是使得影象中目標與背景分佈的資訊量最大,即通過測量影象灰度直方圖的熵,找出最佳閾值。根據 shannon 熵的概念,對於灰度範圍為 0,1,2,…,L-1 的影象,其直方圖的熵定義為(僅僅是定義) :

其中pi為畫素值為 i 的畫素佔整個影象的概率。

       設閾值 t 將影象劃分為目標 O 和背景 B 兩類,他們的概率分佈分別為:


       最佳閾值 T 為使得影象的總熵取得最大值:T=argmax(H(t))
此方法不需要先驗知識, 而且對於非理想雙峰直方圖的影象也可以進行較好的分割。 缺點:運算速度較慢不適合實時處理。 僅僅考慮了畫素點的灰度資訊, 沒有考慮到畫素點的空間資訊,所以當影象的信噪比較低時分割效果不理想。

     本人在自己的執行過程中,根據錯誤提示進行相應修改,分別用OpenCV1和

OpenCV2實現最大熵閾值分割。我的開發環境是VS2012+OpenCV2.4.10。

程式執行結果如下所示:

  原始圖


輸出結果:


如果需要程式碼可以下載,地址:

OpenCV2版本:http://download.csdn.net/detail/lanmeng_smile/9306673

OpenCV1版本:http://download.csdn.net/detail/lanmeng_smile/9307113