2011-02-02 75 views
0

我正在爲我正在進行的項目實施洪水填充算法。我正在使用它來進行正常的圖像編輯。我對基本算法沒有問題,但我想要更好看的填充。那裏有什麼樣的模糊洪水填充算法?

在很多情況下,我的圖像區域的區域大多都是一種顏色,但是它們的邊界是稍微更亮或更暗的像素。我想知道一個「模糊」洪水填充算法,不會離開這些邊界像素。我試圖填補所有像素withn兩個不同的,簡單的,距離原點像素的指標:

  1. 曼哈頓距離上的所有3樓顏色組成:紅,綠,藍
  2. 最大的距離在顏色組件之間。

這些都沒有辦法訣竅,往往會離開邊界,偶爾會填補鄰近地區的視覺上不同但「密切」的顏色。

我不認爲有一個神奇的子彈來解決我的問題,但我會有興趣知道任何算法,我可能會嘗試獲得更好的結果,甚至在我可能會有用地尋找這樣的算法。環顧網絡,我找到了所謂的「模糊洪水填充平均移位算法」的參考,但我不確定這是甚至相同的事情。

+0

您是否嘗試使用alpha'd邊框,以便類似的像素不會更改爲填充顏色,而是更改爲其現有顏色,區域以前的顏色和填充顏色之間的加權平均值? – 2011-02-02 22:53:21

回答

0

使用的實際距離看起來很自然:d = SQRT(R^2 + G^2 + B^2)

然後定義用於指定從原始像素(在顏色空間)的最大距離的公差參數測試像素可以。如果它大於該值,則不要從該像素向外溢出。

調整從0到Sqrt(255^2 + 255^2 + 255^2)的公差,直到看到所需的效果。

0

也許你可以嘗試使用本地像素的質量而不是原點像素。你可以做很像一個各向異性擴散濾波器的效果。如果當前像素(在填充中)和相鄰像素之間的梯度足夠低,則排隊鄰居。

0

你應該設置寬容不是一個單一的數字,而是一個範圍。比如,從20%到50%意味着當色差爲20%時,您完全改變了這個像素的顏色。當它大於50%時,不填充該像素。當差值在20%到50%的範圍內時,將舊的顏色與新的顏色混合,比例爲(d-t_min)/(t_max-t_min),其中d是色差,t_max和t_min是您的公差範圍(以0 ... 1表示)。 我從來沒有見過這樣的算法曾經實現過;也許我只是發明了它。