區(qū)域生長(zhǎng)是一種串行區(qū)域分割的圖像分割方法。區(qū)域生長(zhǎng)是指從某個(gè)像素出發(fā),按照一定的準(zhǔn)則,逐步加入鄰近像素,當(dāng)滿足一定的條件時(shí),區(qū)域生長(zhǎng)終止。區(qū)域生長(zhǎng)的好壞決定于1.初始點(diǎn)(種子點(diǎn))的選取。2.生長(zhǎng)準(zhǔn)則。3.終止條件。區(qū)域生長(zhǎng)是從某個(gè)或者某些像素點(diǎn)出發(fā),最后得到整個(gè)區(qū)域,進(jìn)而實(shí)現(xiàn)目標(biāo)的提取。
區(qū)域生長(zhǎng)的原理
區(qū)域生長(zhǎng)的基本思想是將具有相似性質(zhì)的像素集合起來(lái)構(gòu)成區(qū)域。具體先對(duì)每個(gè)需要分割的區(qū)域找一個(gè)種子像素作為生長(zhǎng)起點(diǎn),然后將種子像素和周圍鄰域中與種子像素有相同或相似性質(zhì)的像素(根據(jù)某種事先確定的生長(zhǎng)或相似準(zhǔn)則來(lái)判定)合并到種子像素所在的區(qū)域中。將這些新像素當(dāng)作新的種子繼續(xù)上面的過(guò)程,直到?jīng)]有滿足條件的像素可被包括進(jìn)來(lái)。這樣一個(gè)區(qū)域就生長(zhǎng)成了。
區(qū)域生長(zhǎng)實(shí)現(xiàn)的步驟如下:
1. 對(duì)圖像順序掃描!找到第1個(gè)還沒(méi)有歸屬的像素, 設(shè)該像素為(x0, y0);
2. 以(x0, y0)為中心, 考慮(x0, y0)的4鄰域像素(x, y)如果(x0, y0)滿足生長(zhǎng)準(zhǔn)則, 將(x, y)與(x0, y0)合并(在同一區(qū)域內(nèi)), 同時(shí)將(x, y)壓入堆棧;
3. 從堆棧中取出一個(gè)像素, 把它當(dāng)作(x0, y0)返回到步驟2;
4. 當(dāng)堆棧為空時(shí)!返回到步驟1;
5. 重復(fù)步驟1 - 4直到圖像中的每個(gè)點(diǎn)都有歸屬時(shí)。生長(zhǎng)結(jié)束。
這個(gè)過(guò)程中有幾個(gè)關(guān)鍵的問(wèn)題:
a》 給定種子點(diǎn)(種子點(diǎn)如何選取?)
種子點(diǎn)的選取很多時(shí)候都采用人工交互的方法實(shí)現(xiàn),也有用其他方式的,比如尋找物體并提取物體內(nèi)部點(diǎn)作為種子點(diǎn)。
b》 確定在生長(zhǎng)過(guò)程中能將相鄰像素包括進(jìn)來(lái)的準(zhǔn)則
灰度圖像的差值;彩色圖像的顏色等等。都是關(guān)于像素與像素間的關(guān)系描述。
c》 生長(zhǎng)的停止條件
Python實(shí)現(xiàn)
灰度差值的區(qū)域生長(zhǎng)算法實(shí)現(xiàn)
算法實(shí)現(xiàn)的步驟:
a》 創(chuàng)建一個(gè)空白的圖像(全黑);
b》 將種子點(diǎn)存入vector中,vector中存儲(chǔ)待生長(zhǎng)的種子點(diǎn);
c》 依次彈出種子點(diǎn)并判斷種子點(diǎn)如周圍8領(lǐng)域的關(guān)系(生長(zhǎng)規(guī)則),相似的點(diǎn)則作為下次生長(zhǎng)的種子點(diǎn);
d》 vector中不存在種子點(diǎn)后就停止生長(zhǎng)。
貼圖看看使用該算法的圖像處理效果:
首先對(duì)原圖像進(jìn)行二值化:
得到種子點(diǎn)的方法這里就不用介紹了,這個(gè)不是該算法的重點(diǎn)。得到兩個(gè)種子點(diǎn)(左右肺),分別使用區(qū)域生長(zhǎng)算法得到左右肺區(qū),然后與原圖進(jìn)行與運(yùn)算,得到結(jié)果:
分水嶺算法原理
灰度圖像可以被看成拓?fù)淦矫妫叶戎蹈叩膮^(qū)域可以看出山峰,灰度值低的區(qū)域可以看成是山谷。向每一個(gè)山谷當(dāng)中灌不同顏色的水。水位升高,不同山谷的水會(huì)匯合,為防止不同山谷的水匯合,小在匯合處建立起堤壩。然后繼續(xù)灌水,然后再建立堤壩,直到山峰都掩模。構(gòu)建好的堤壩就是圖像的分割。
此方法通常會(huì)得到過(guò)渡分割的結(jié)果,因?yàn)閳D像中的噪聲以及其他因素。為了減少此影響,opencv使用基于標(biāo)記的分水嶺算法,此算法要設(shè)置哪些山谷中的匯合點(diǎn),哪些不是。這是一種交互式的圖像分割算法那。我們要給已知對(duì)象打上不同表情。如果某個(gè)區(qū)域肯定是前景或?qū)ο螅褪褂媚硞€(gè)顏色或灰度值標(biāo)簽標(biāo)記它。如果是背景那么使用其他顏色進(jìn)行標(biāo)記,其余不能確定的部分用0標(biāo)記。然后使用分水嶺算法,每次灌水,標(biāo)簽會(huì)被更新,當(dāng)兩個(gè)不同顏色的標(biāo)簽相遇就會(huì)構(gòu)建堤壩,知道所有山峰掩模,最后得到的邊界對(duì)象值是-1。
python 代碼:
對(duì)挨在一起的對(duì)象進(jìn)行分割。
要出去圖像中的白噪聲??梢允褂眯螒B(tài)學(xué)運(yùn)算,使用閉運(yùn)算去除對(duì)象中的空洞。
靠近對(duì)象中心的區(qū)域是前景,離對(duì)象遠(yuǎn)的區(qū)域是背景,不確定的區(qū)域是邊界。
首先提取硬幣區(qū)域,使用腐蝕操作去掉邊緣,剩下的就是硬幣。但硬幣沒(méi)有接觸時(shí),此方法有效,但是由于硬幣相互接觸,就要使用另外一種有效的方法:距離變換加上合適的閾值。
之后,要尋找不確定是否是硬幣的區(qū)域。這里需要膨脹操作。膨脹操作會(huì)將對(duì)象邊界延伸到背景當(dāng)中。由于邊界區(qū)域被去除,現(xiàn)在就能知道哪些區(qū)域是前景,哪些是背景。
余下的區(qū)域不知道如何區(qū)分,那么使用分水嶺算法。這些區(qū)域通常是前景與背景的交界處。從能否確認(rèn)是否是背景的區(qū)域中減去確定是前景的區(qū)域就得到了邊界。
(前景和背景)
使用作者的代碼后生產(chǎn)的結(jié)果,提取到了前景,為了演示一下不確定的區(qū)域,調(diào)了一下計(jì)算前景的距離變換的參數(shù),使得中間出現(xiàn)不確定的區(qū)域)
這里面使用個(gè)cv2.distanceTransform函數(shù)
該函數(shù)用于計(jì)算2值圖象中所有像素離其最近的值為0像素的近似距離。
參數(shù)為
完整代碼
現(xiàn)在知道了那些背景是硬幣,可以創(chuàng)建標(biāo)簽。(與原圖像大小相同,數(shù)據(jù)類型為int32的數(shù)組)。
對(duì)于已經(jīng)確定分類的區(qū)域,也就是背景和前景,使用整數(shù)標(biāo)記,不確定的區(qū)域是用0標(biāo)記??梢允褂胏v2.connectedComponents()函數(shù)來(lái)實(shí)現(xiàn)此功能。它會(huì)將背景標(biāo)記為0,其他標(biāo)記為位從1開(kāi)始的正整數(shù)。
但是,如果背景標(biāo)記為0,那么分水嶺算法會(huì)將其當(dāng)成位置區(qū)域,所以使用不同的整數(shù)進(jìn)行標(biāo)記,對(duì)于不確定的區(qū)域,函數(shù)標(biāo)記為0.
結(jié)果使用JET顏色地圖表示。深藍(lán)色未知區(qū)域,硬幣區(qū)域使用不同顏色。其余部分用淺藍(lán)色。
使用分水嶺算法
效果不錯(cuò)
編輯:jq
-
圖像處理
+關(guān)注
關(guān)注
27文章
1320瀏覽量
57547 -
圖像分割
+關(guān)注
關(guān)注
4文章
182瀏覽量
18212 -
python
+關(guān)注
關(guān)注
56文章
4822瀏覽量
85900
原文標(biāo)題:CV基礎(chǔ):區(qū)域生長(zhǎng)與分水嶺算法
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
TSSG法生長(zhǎng)SiC單晶的原理

AI Agent與Agentic AI的區(qū)別
8層是分水嶺?揭秘高難度PCB的核心標(biāo)準(zhǔn)
VirtualLab Fusion應(yīng)用:光波導(dǎo)的入射耦合和出射耦合區(qū)域
紅嶺礦業(yè)攜手中設(shè)智控共建綜合能源管理系統(tǒng)

應(yīng)力消除外延生長(zhǎng)裝置及外延生長(zhǎng)方法

微型逆變器小華MCU與上海貝嶺功率器件方案

芯片制造工藝:晶體生長(zhǎng)、成形

上海貝嶺亮相第五屆汽車電驅(qū)動(dòng)及關(guān)鍵技術(shù)大會(huì)

上海貝嶺榮獲年度功率半導(dǎo)體/驅(qū)動(dòng)器獎(jiǎng)項(xiàng)
華大半導(dǎo)體旗下上海貝嶺產(chǎn)品解析
使用TPS54331的簡(jiǎn)單CC/CV充電器

邊緣計(jì)算AI算法盒子在停放充電區(qū)域AI智慧監(jiān)控的應(yīng)用

華嶺申瓷正式竣工投產(chǎn)!
從原理聊JVM(一):染色標(biāo)記和垃圾回收算法

評(píng)論