2017-03-15 817 views
0

我試圖編寫livewire算法,但我有點卡住了,因爲在文章「智能剪刀圖像組成」中解釋的算法是有點混亂,我不'瞭解完成如何應用某些東西,例如:如何計算當地的成本地圖和其他東西。Livewire算法(智能剪刀)一步一步

那麼請任何人都可以舉手,用簡單的詞語一步一步地解釋它嗎?

我會apreciate任何幫助

謝謝。

回答

0

您應該閱讀Mortensen, Eric N., and William A. Barrett. "Interactive segmentation with intelligent scissors." Graphical models and image processing 60.5 (1998): 349-384.,其中包含有關算法的更多詳細信息,而不是較短的「用於圖像合成的智能剪刀」。

這裏是一個高度概括:

智能剪刀算法使用Dijkstra的圖形搜索算法的一種變型以找到一個目標像素(將鼠標光標的期間的位置從種子像素的最小成本路徑交互式分割)。

1)本地成本

從像素p每個邊緣的像素q具有局部成本,這是本地成本的線性組合(由距離pq之間調整以考慮對角線像素):

  • 拉普拉斯零交叉f_Z(q)
  • 梯度幅值f_G(q)
  • 梯度方向f_D(p,q)
  • 邊緣的像素值f_P(q)
  • 內的像素值f_I(q)
  • 外的像素值f_O(q)

一些當地費用都是靜態的,可以離線計算。 f_Zf_G以不同尺度(意味着具有不同尺寸的內核)來計算以更好地表示邊緣像素qf_G,f_P,f_I,f_O動態地(或具有動態分量,如f_G的情況那樣)計算用於實時訓練。

2)在即時訓練

爲了防止捕捉到與比當前更低的成本不同的邊緣被跟蹤,該算法使用上即時訓練分配一個較低的成本到沿着當前邊緣「看起來像」過去像素的相鄰像素。

這是通過沿着最後的64或128個邊緣像素構建圖像值特徵的直方圖來完成的。圖像值特徵通過縮放和四捨五入f'_G(其中f_G = 1 - f'_G),f_P,f_If_O具有在[0 255][0 1023]中的整數值,其可用於對直方圖進行索引。

將直方圖反轉並縮放以計算動態成本圖m_G,m_P,m_Im_O。這個想法是,一個低成本的鄰居q應該適合先前看到的64或128像素的直方圖。

本文給出了假代碼,顯示如何計算這些動態成本給定的路徑上先前選擇的像素列表。

3)圖搜索

靜態和動態成本一起結合成一個單一的成本從像素p移動到其鄰居8 q之一。通過基本上使用具有最小優先級隊列的Dijkstra算法來實現從種子像素到目標像素的最低成本路徑。該論文給出了僞代碼。

+0

感謝您的回覆我會嘗試應用它,任何疑問我可以再問你一次嗎? –