分水嶺演算法流程:
經典的風水嶺演算法,分為 一下幾步:
1 按畫素值分層,即影象可分為256層,對影象畫素排序
2 對每個畫素層,首先將所有同一畫素層標記設為-2 ,然後對該層畫素點的鄰域判斷,若鄰域內有被標記過的畫素點,則將該畫素點入棧,否則對該層畫素點判斷,若標記為-2,且8鄰域內有畫素點標記也為-2,則將該點和該鄰域內的畫素點設為同一標記,且該鄰域點如棧,如此迴圈取得所有相鄰的點都可標記為同一區域標記。
3. 對下一畫素層進行畫素點判斷,同樣判斷該畫素點的鄰域內是否有被標記的點,若有,則該點入棧,否則執行1處理
4.對棧內畫素物件進行判斷,取該畫素物件的鄰域,若鄰域內只有乙個已被標記的畫素點(不為分水嶺),則該點被標記為已標記的點值,若乙個標記點為分水嶺,則該點也標記為分水嶺。若有兩個以上的被不同標記的點,則該點作為分水嶺。
5 若棧內畫素物件的鄰域內,有一點同樣為同層畫素值的點,則將該點距離標記值加1,改點入棧。
**難點 curdist
這個距離引數,並沒看懂他實際的意義。
mser演算法詳見達叔 mser演算法
首先影象資料預處理,將8位單通道灰度圖轉為32位單通道圖。其中最高位記錄是否被發現,17-19位記錄方向。
heap 水坑邊界陣列,當前位置畫素高於鄰域畫素,入棧當前畫素,作為邊界
comp,記錄水坑資料堆疊,包括畫素灰度值,面積(畫素個數和畫素位置)等
當水位下降時新入棧,水位提高時出棧並可能與之前的合併
history,記錄水位抬高的歷史,就是乙個小坑抬高水位後一點點變成大坑的歷史。遍歷時:
history主要是記錄用來判斷最大穩定極值區域的資料,沒有遍歷的作用。主要記錄時刻有兩種:提高水位到邊界heap中的最小高度,提高水位到comp中上一項的高度。要記錄灰度值,畫素數,快捷指標,孩子指標,穩定時的畫素數。
總結: 首先資料預處理,然後去畫素點,作為水坑開始掃瞄鄰域,若鄰域畫素高,則入棧水坑邊界,否則當前點入棧水坑邊界,鄰域點入棧水坑,
首先將當前畫素作為水坑,得到邊界,然後鄰域遍歷完後,出棧邊界,作為當前畫素,並尋找鄰域,如此反覆,
在水坑水位有抬高或者降低時,記錄到歷史水位陣列中。
分水嶺演算法
分水嶺變換是一種流行的影象處理演算法,用於快速將影象分割成多個同質區域。分水嶺演算法的思想是 把影象看成乙個拓撲地貌,那麼同類區域就相當於陡峭邊緣內相對平坦的盆地。分水嶺演算法通過逐步增加水位,把地貌分割成多個部分 目前比較著名的有模擬泛洪和降水 降水 水先是匯集到海拔低的地區,慢慢填充這每乙個盆地...
分水嶺演算法
在許多實際應用中,我們需要分割影象,但無法從背景影象中獲得有用資訊。分水嶺演算法在這方面往往是非常有效的。此演算法可以將影象中的邊緣轉化成 山脈 將均勻區域轉化為 山谷 這樣有助於分割目標。分水嶺演算法,是一種基於拓撲理論的數學形態學的分割方法,其基本思想是把影象看作是測地學上的拓撲地貌,影象中每一...
分水嶺分割演算法
如果影象中的目標物體是連在一起的,則分割起來會更困難,分水嶺演算法經常用於處理這類問題,通常會取得比較好的效果。分水嶺分割演算法把影象看成一副 地形圖 其中亮度比較強的地區畫素值較大,而比較暗的地區畫素比較小,通過尋找 匯水盆地 和 分水嶺界限 對影象進行分割。步驟 1.讀取影象 2.求取影象的邊界...