2009-08-28 57 views
3

如果你想解決一個圖片混亂,你會使一臺計算機使用什麼算法?解決圖片混亂!

你總是可以在算法的效率方面爭論不休,但在這裏我真的在考慮採取什麼方法。

謝謝

+2

是「畫面混亂」像拼圖? – user49117 2009-08-28 02:15:22

+1

拼圖遊戲或滑動拼圖遊戲? – 2009-08-28 02:15:47

+0

這是一個拼圖遊戲 – Lazer 2009-08-28 03:45:25

回答

6

你需要做的是爲一個拼圖的每個面定義一個索引詞彙,這樣右邊的邊的索引可以告訴你相應的左邊的索引是什麼(例如,一個簡單的詞彙:「凸」和「凹」,在面上「凸」,意味着在匹配的相對面上「凹」),然後根據索引詞彙對每個片段進行分類。詞彙越精細,面孔匹配越明顯,你的算法越快,但是你實現它。 (例如,你可能有「平邊,直邊,左邊,直邊,右邊,右邊,凹形,凸形,旋鈕,旋鈕孔......)我們假設索引方案抽象實際的邊緣形狀,並且有一個謂詞「精確地擬合(piece1,edge1,piece2,edge2)」,只有當邊緣完全匹配時纔是真實的。我們進一步假設一個片段至多有一個完全匹配具有特定的邊緣

目標是生長一組區域,例如一組連接的片段,直到不再可能擴大區域爲止。我們首先用獨特的區域名稱標記所有片段,每片1個,並且所有的邊都是不匹配的,然後我們按任意順序枚舉這些條邊,對於每個具有邊E的枚舉的條P,使用索引方案來選擇可能匹配的條/邊對,檢查完全擬合的謂詞;最多一個Q,邊緣F,完全匹配將P和Q區域合併爲一個大區域。重複。我認爲這解決了這個難題。

+0

這是一個很好的開始。謝謝! – Lazer 2009-08-31 18:04:59

0

解決拼圖遊戲基本上可以減少到匹配像邊緣喜歡邊緣。在一個真正的拼圖遊戲中,只有一對棋子可以沿着特定的邊緣正確地互鎖,並且每個棋子都會有角落,這樣您就可以知道某個特定邊的開始和結束位置。

因此,只需找到每個邊的端點並選擇幾個控制點即可。然後遍歷所有具有未綁定邊的棋子,直到找到合適的棋子。當沒有更多的未綁定邊緣時,你已經解決了這個難題。

0

爲了詳細說明Ira Baxter的回答,將問題概念化的另一種方式是將拼圖遊戲想象成一個圖形,其中每個圖塊都是一個節點,每個圖塊與另一個圖塊都是邊緣。例如,如果你正在設計一個益智遊戲,以這種方式存儲「答案」會使得「檢查這個是否合適」代碼快得多,因爲它可以簡化爲某種散列查找。

0

.1找到2x2克使得所有四條邊都適合。然後,評估圖像內容相互匹配程度。

 
    P1 <--> P2 
^ ^
    |  | 
    v  v 
    P3 <--> P4 

0.2標籤方向(手動或試探),但只使用其中啓發式得分(排名爲),而不是最終的搜索條件。

0.3 形狀上下文