[問題] 影像處理connected component labeling

看板C_and_CPP作者 (GP500)時間15年前 (2010/06/08 05:37), 編輯推噓7(7011)
留言18則, 4人參與, 最新討論串1/2 (看更多)
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 目前小弟用C寫CONNECTED COMPONENT LABELING的程式, 但是在等價部份上有一點問題,想請板上的各位高手指點迷津。 演算法如下: 小弟的做法是這樣子的, 就是掃瞄整張圖, 如果發現有白色的點, 就更進一步去看其周圍左上、上、右上、左,這四個點, 如果這四個點只有一個是白色的就沿用它的id值, 如果是大於一個的狀況,就存下它們的id,然後進行sort看哪個最小, 接著存到一個陣列(inx[])來建表。 ex:如果讀到三個id值分別是 5 6 7 然下來存到一個大陣列 存法如下 inx[5] = 5 inx[6] =5 inx[7] =5 這樣到時候 再掃一次的時候就可以把 5 6 7都整合成一樣的了。 如果四周都沒有白色的點,就新增一個id給它。 然後最後再掃一次,看圖上的id是多少就將inx[圖上id]內所存的值再更新到圖上 不過還是有點問題@~@麻煩各位看一下了。 有問題的code: (請善用置底文標色功能) http://codepad.org/Vza2dqzq 補充說明: 下面兩個為輸入跟輸出~ http://www.badongo.com/pic/9562313 http://www.badongo.com/pic/9562314 http://www.badongo.com/pic/9562463 http://www.badongo.com/pic/9562465 上面第一組就有問題,可是第二組跑出來就OK 感覺好像特定方向的LABELING就會出錯0.0 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.126.194.178

06/08 09:28, , 1F
你的敘述 左上、上、右、左 程式看起來是 左上 上 右上
06/08 09:28, 1F

06/08 09:28, , 2F
和左
06/08 09:28, 2F

06/08 10:01, , 3F
推測是他typo, 因為上到下, 左到右循序掃的話, 程式參考
06/08 10:01, 3F

06/08 10:01, , 4F
的四個點比較合理一點:)
06/08 10:01, 4F

06/08 10:04, , 5F
沒有仔細看完不太確定, 但是index[4]如果遇到大一點的圖
06/08 10:04, 5F

06/08 10:04, , 6F
八成會不夠用喔; 另外, 有問題是什麼問題建議描述一下,
06/08 10:04, 6F

06/08 10:05, , 7F
有錯誤結果最好是可以直接抓張圖貼出來看一下:)
06/08 10:05, 7F

06/08 10:07, , 8F
啊, index[4]那個是小弟誤會了, 請別理我....Orz
06/08 10:07, 8F

06/08 13:39, , 9F
我以前建表是開一個二維陣列的~
06/08 13:39, 9F

06/08 14:00, , 10F
id表一維陣列應該就夠了吧?_? 長度差不多1/4個pixel數@@
06/08 14:00, 10F
※ 編輯: zodiace 來自: 120.126.194.178 (06/08 15:48)

06/08 15:48, , 11F
補圖了xd
06/08 15:48, 11F
※ 編輯: zodiace 來自: 120.126.194.178 (06/08 15:59) ※ 編輯: zodiace 來自: 120.126.194.178 (06/08 16:03)

06/08 17:19, , 12F
看起來就是等價的idx沒有重設對, 你重設idx table
06/08 17:19, 12F

06/08 17:21, , 13F
mapping的code在哪?? 光是只有 if(num>1) ~ if(num==0)
06/08 17:21, 13F

06/08 17:22, , 14F
這樣的處理是不夠的喔....@_@"
06/08 17:22, 14F

06/08 17:35, , 15F
不確定你的code是不是就這樣, 是的話推給你一個模擬測資
06/08 17:35, 15F

06/08 17:36, , 16F
你不對inx[]裡的等價idx做re-labeling的話就會有問題,
06/08 17:36, 16F

06/08 17:36, , 17F
至少以目前僅有的code應該會有錯, 如下:
06/08 17:36, 17F

06/08 17:52, , 18F
回文裡XD
06/08 17:52, 18F
文章代碼(AID): #1C3MQ51K (C_and_CPP)
文章代碼(AID): #1C3MQ51K (C_and_CPP)