我試圖編寫livewire算法,但我有點卡住了,因爲在文章「智能剪刀圖像組成」中解釋的算法是有點混亂,我不'瞭解完成如何應用某些東西,例如:如何計算當地的成本地圖和其他東西。Livewire算法(智能剪刀)一步一步
那麼請任何人都可以舉手,用簡單的詞語一步一步地解釋它嗎?
我會apreciate任何幫助
謝謝。
我試圖編寫livewire算法,但我有點卡住了,因爲在文章「智能剪刀圖像組成」中解釋的算法是有點混亂,我不'瞭解完成如何應用某些東西,例如:如何計算當地的成本地圖和其他東西。Livewire算法(智能剪刀)一步一步
那麼請任何人都可以舉手,用簡單的詞語一步一步地解釋它嗎?
我會apreciate任何幫助
謝謝。
您應該閱讀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
具有局部成本,這是本地成本的線性組合(由距離p
和q
之間調整以考慮對角線像素):
f_Z(q)
f_G(q)
f_D(p,q)
f_P(q)
f_I(q)
f_O(q)
一些當地費用都是靜態的,可以離線計算。 f_Z
和f_G
以不同尺度(意味着具有不同尺寸的內核)來計算以更好地表示邊緣像素q
。 f_G
,f_P
,f_I
,f_O
動態地(或具有動態分量,如f_G
的情況那樣)計算用於實時訓練。
2)在即時訓練
爲了防止捕捉到與比當前更低的成本不同的邊緣被跟蹤,該算法使用上即時訓練分配一個較低的成本到沿着當前邊緣「看起來像」過去像素的相鄰像素。
這是通過沿着最後的64或128個邊緣像素構建圖像值特徵的直方圖來完成的。圖像值特徵通過縮放和四捨五入f'_G
(其中f_G = 1 - f'_G
),f_P
,f_I
和f_O
具有在[0 255]
或[0 1023]
中的整數值,其可用於對直方圖進行索引。
將直方圖反轉並縮放以計算動態成本圖m_G
,m_P
,m_I
和m_O
。這個想法是,一個低成本的鄰居q
應該適合先前看到的64或128像素的直方圖。
本文給出了假代碼,顯示如何計算這些動態成本給定的路徑上先前選擇的像素列表。
3)圖搜索
靜態和動態成本一起結合成一個單一的成本從像素p
移動到其鄰居8 q
之一。通過基本上使用具有最小優先級隊列的Dijkstra算法來實現從種子像素到目標像素的最低成本路徑。該論文給出了僞代碼。
感謝您的回覆我會嘗試應用它,任何疑問我可以再問你一次嗎? –