Re: [問題] 影像處理connected component labeling
※ 引述《zodiace (GP500)》之銘言:
不好意思, 忽然發現推文沒有把握可以畫齊畫對....
就直接回文佔一下版面了^^||
: 推 VictorTom:不確定你的code是不是就這樣, 是的話推給你一個模擬測資 06/08 17:35
: → VictorTom:你不對inx[]裡的等價idx做re-labeling的話就會有問題, 06/08 17:36
: → VictorTom:至少以目前僅有的code應該會有錯, 如下: 06/08 17:36
o o o o
\ / \ /
\ / \ /
o o
\ /
\ /
\ /
\ /
o
如果不對inx[]裡的id掃過重設一遍....
本例應該全部是同一個id的case您可能會label成....
1 2 3 4
o o o o
\ / \ /
\ / \ /
1 o o 3 // inx[2] = 1, inx[4] = 3
\ /
\ /
\ /
\ /
o // inx[3] = 1
1
注意紅色的那段會因為inx[4] = 3, 所以id 4被畫成id 3而不是1....
如果您有其他的code來處理這段的話, 就不曉得要再看看了@_@"
--
幸好沒有真的在推文裡嘗試畫圖, 鐵定又醜又畫錯....Orz
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.134.41.4
推
06/08 18:47, , 1F
06/08 18:47, 1F
→
06/08 18:49, , 2F
06/08 18:49, 2F
推
06/08 20:12, , 3F
06/08 20:12, 3F
→
06/08 20:13, , 4F
06/08 20:13, 4F
概念上這樣想, 假設每一個id都是某種tree的一個node....
- - - - - - - - - 接地, 或說指到NULL
^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | |
o o o o o o o o
1 2 3 4 5 6 7 8 - 每有一個新id, 就開個node, 或者該稱為一個node的tree
假如今天你發現某兩個id等價, 那就把大的接到小的....
Ex: 2 3 等價, 3 5 等價....
- - - - - - - 接地, 或說指到NULL
^ ^ ^ ^ ^ ^
| | | | | |
o o o o o o
1 2 4 6 7 8
^
|
o
3
^
|
o
5
Ex: 再發現 3 6 等價, 7 8 等價....
- - - - - 接地, 或說指到NULL
^ ^ ^ ^
| | | |
o o o o
1 2 4 7
^ ^
| |
o o
3 8
^
/ \
o o
5 6
Ex: 又發現 1 3 等價;
注意, 3已經接到2, 所以3先找到指到源頭(2), 再把2指到1....
- - -
^ ^ ^
| | |
o o o
1 4 7
^ ^
| |
o o
2 8
^
|
o
3
^
/ \
o o
5 6
假如找到源頭以後發現源頭(?)比另一邊還小, 就把對方指過來....
假如兩邊都是tree, 就找到各自的源頭(root), 把大的指到小的....
當然, 找root這種動作也可以嘗試在相接的時候就做簡(矮)化....
比如 2 3 接完又發現 3 5 等價時, 就把 5 直接接到 2 去....
接著 3 6 等價時, 也把 6 直接接到 2 去....
不過這樣在之後的 1 3 等價時, 想把 2 下面的node矮化接到 1 有困難....
只是就算接成 1
2
3 5 6 這樣, 基本上也不會影響結果就是了@_@"
所以矮化tree這個動作, 等tree建完再做也可以, 效能誰好要推一下....
比如最原始那三個tree, 對每個id跑一次執行矮化動作, 會像下面....
- - -
^ ^ ^
1 4 7
2 3 5 6 8
==
以此類推, 到最後就會完成像上面這樣的tree, 即本例該有3種label....
那你接著重新掃過一遍全圖的id, 把每個node都重設成自己tree的root....
就完成re-labeling了, 有心的話也可以重新分配label id, 方便下顏色....
==
概念上是像上面這樣子, 但是實際上做起來卻不必搞tree這麼麻煩....
只要對著你的inx[]跑兩層迴圈掃一下應該就行了, 給您自己想想看吧:)
--
※ 編輯: VictorTom 來自: 220.134.41.4 (06/08 20:47)
※ 編輯: VictorTom 來自: 220.134.41.4 (06/08 21:04)
※ 編輯: VictorTom 來自: 220.134.41.4 (06/08 21:05)
推
06/08 21:17, , 5F
06/08 21:17, 5F
→
06/08 22:57, , 6F
06/08 22:57, 6F
推
06/08 23:24, , 7F
06/08 23:24, 7F
→
06/08 23:32, , 8F
06/08 23:32, 8F
推
06/09 00:39, , 9F
06/09 00:39, 9F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):