這裡示範如何使用 Caire 這個圖形函式庫,在圖片拉長或縮短後,以 Seam Carving 演算法自動修正圖形中的物體,保持完美的比例。

在電腦上設計一些美工文宣品或是網站版面時,找尋適合的圖片是很重要的,有時候雖然找到的素材圖片風格非常棒,但若解析度不足、或是長寬比例不對的話,也不太能使用。


Caire 這套圖形函式庫應用了 Shai Avidan 與 Ariel Shamir 所提出 Seam Carving 圖像演算法(可參考原始論文),它可以自動分析圖片,區分出主體與不重要的背景,讓圖片在拉長或縮短的過程中,還是可以保持重點區域的比例以及完整性。

安裝 Caire

首先安裝 Go 這個程式語言的套件,在 Ubuntu Linux 中可以使用 apt 安裝 golang-go 套件:

sudo apt-get install golang-go

設定 GOPATHPATH 環境變數:

export GOPATH="$HOME/go"
export PATH="$PATH:$GOPATH/bin"

接著從 GitHub 下載 Caire 工具:

# 下載 Caire 工具
go get -u -f github.com/esimov/caire/cmd/caire

這樣就完成安裝了。

調整圖片比例

使用 Caire 調整圖片大小的使用方式為:

# 將圖片大小調整為 640x360
caire -in image.jpg -out output.jpg -width=640 -height=360

以下我隨意拿幾張照片進行測試,首先測試縮短圖片。下面這張圖在縮短之後,表現很不錯,看起來都很自然。

原始圖片

縮短後圖片

下面這張測試垂直方向的壓縮圖片,縮短之後大部分的物體都很自然,不過路上的機車被壓扁了。

原始圖片

縮短後圖片

接下來測試拉長圖片,這張照片被拉開之後,感覺還不錯(點選圖片可查看原圖)。

原始圖片

拉長後圖片

而這一張圖在拉長之後,右邊有出現橫條文。

原始圖片

拉長後圖片

經過實際測試之後,我發現 Caire 這個工具在微調圖片比例時,都還處理的不錯,但是如果比例調整的太多,很容易就會露出馬腳,而且圖檔的解析度若比較高時,要算很久(640×640 左右的圖,在我的筆電上大概就要算個一分鐘),對於實際應用幫助有限。

參考資料:TechNews