假設您獲得了vector<vector<bool>>
(方形區域),其中1對應於「填充」框。有沒有方法可以在O(n)時間內找到整個區域?例如,該載體將具有兩個完整區域:查找圖像中的不同部分
0 0 1 1 1 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0
0 1 0 0 1 0 0 0
0 0 1 0 1 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0
假設您獲得了vector<vector<bool>>
(方形區域),其中1對應於「填充」框。有沒有方法可以在O(n)時間內找到整個區域?例如,該載體將具有兩個完整區域:查找圖像中的不同部分
0 0 1 1 1 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0
0 1 0 0 1 0 0 0
0 0 1 0 1 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0
這稱爲8連接region growing。這是圖像處理中的標準技術,您可以選擇種子像素並「增長」。這可以用BFS在線性時間內完成在像素數:
區域列表包含一個區域,將其設置爲零。找到另一顆種子並再次運行,直到找不到種子。
這種情況下的初始種子是什麼?它只是任何像素(可能是第一個)? – 2013-04-10 07:07:05
找到1的第一個位置。 – carlosdc 2013-04-10 07:08:05
什麼是邊緣? – 2013-04-10 07:11:17
你的例子中的「整個地區」是什麼?什麼是n?像素數量? – 2013-04-10 05:39:05
是的。在這種情況下n是64,因爲矩陣是8×8。整個區域是包含1的區域。由於1在2個不同的地方連接,所以有2個地區(即你可以對角連接)。 – 2013-04-10 05:41:43