在當今數位時代,圖片的顯示格式不斷演變,從手機到大屏幕,每一種媒介都需要適合的圖片比例。然而,如何在不影響圖片質量的情況下,靈活地改變圖片的尺寸卻成了一個大挑戰。為了解決這一問題,Shai Avidan 和 Ariel Shamir 在 2007 年發明的 seam carving
技術顯示了其獨特的智慧與魅力。
Seam carving 是一種內容感知圖像縮放的演算法,透過建立圖像中的“縫”(無形的路徑),自動移除或插入這些縫以調整大小。
這項技術的核心在於其如何評估圖像中的每個像素重要性。通過計算每個像素的能量值(重要性),seam carving 能夠決定哪些像素應被移除,以保持圖片的整體結構和重要細節。值得一提的是,seams 既可以是垂直的,也可以是水平的,這取決於最終希望達到的效果。
在計算縫的過程中,演算法尋找一條從圖片一端到另一端的最小能量路徑。這項工作可以通過許多計算方法實現,例如 Dijkstra 算法、動態規劃或貪婪算法等。這裡,我們將重點介紹動態規劃的應用。
動態規劃是一種通過存儲子計算結果來簡化複雜結果計算的編程方法。
在計算縱向縫的過程中,對於每一行的每個像素,將其能量與三個上方像素的能量進行比較。這樣的計算不僅能夠有效地得出最佳縫,還能透過多線程實現高效的並行處理。
盡管 seam carving 有著眾多優點,但也存在著一定的挑戰。某些情況下,算法需要用戶提供的資訊以減少錯誤。例如,用戶可以標記需要保存的區域,特別是在涉及人臉的圖片時,更是可以利用人臉檢測技術來實現更好的效果。
算法在移除低能量縫時,可能會導致新的高能量縫的出現。為了解決這個問題,需模擬縫的移除,然後檢查能量變化。
Adobe 在其 Photoshop CS4 中引入了這項技術,將其稱為“內容感知縮放”。由於這個技術的授權為非獨占性,因此其他許多圖形應用程序也開始實施此項技術,包括 GIMP、ImageMagick 等。這些實現不僅推動了圖像處理技術的進步,也使得普通用戶能夠輕易使用這項先進的技術。
該演算法的改進和擴展包括更好的能量函數、對視頻的應用,以及通過神經變形場來擴展到 3D 場景。
回顧來看,seam carving 作為一項重要的圖像重定向技術,儘管在某些評比中排名較低,但卻能成為高排名算法中的一部分,顯示出它在多操作結合上的潛力。
如今,seam carving 不僅在靜態圖像處理中發揮著作用,也被逐漸應用於視頻處理及甚至是 3D 場景的改進之中。而在未來,我們又將如何應用這些無形的“縫”,來重新定義我們對圖像的理解和使用呢?