胡明穎,陶 勝
(集美大學(xué)理學(xué)院,福建 廈門 361021)
傳統(tǒng)的非等比例縮放一般分為均值采樣和直接裁剪,簡單易操作,但是均值采樣會造成視覺內(nèi)容的變形,直接裁剪往往會丟失圖像的部分信息。Avidan等[1]開創(chuàng)性地提出基于內(nèi)容的圖像縮放方法——線裁剪(seam-carving,SC)方法,既能實現(xiàn)非等比例縮放,又能保留圖像的重要內(nèi)容。所有內(nèi)容感知圖像縮放方法的關(guān)鍵在于尋找適合于圖像的能量圖或者顯著圖。圖像的顯著圖即為圖像的顯著性區(qū)域,即圖像中特別能吸引人注意的區(qū)域。早期最經(jīng)典的顯著模型是由Itti等[2]提出的基于人類視覺和神經(jīng)科學(xué)自下而上的IT算法,之后,出現(xiàn)了多種顯著性檢測的算法[3-9],每種算法遵循不同的顯著性規(guī)律,得到的顯著圖各有特點。魏昱[10]提出加權(quán)多尺度頻率調(diào)諧與關(guān)鍵區(qū)域聚焦方法(簡稱FTK算法)和超像素全局對比度與關(guān)鍵區(qū)域聚焦方法(簡稱SPK算法),進一步提高了SC算法的視覺處理效果,使圖像的細節(jié)、形態(tài)能夠得到很好地保留。李晶[11]將基于內(nèi)容感知顯著性檢測的CA(context aware)算法[12]與SC算法相結(jié)合,采用CA顯著圖代替線裁剪方法中的能量圖對圖像進行縮放,更好地保護了顯著性目標且圖像扭曲較小。
縮放比例不大時,SC算法效果較好,但是基于動態(tài)規(guī)劃的計算使得算法復(fù)雜,運行時效不高,同時若縮放比例增大會使圖像出現(xiàn)局部扭曲變形。為提升圖像縮放效率,降低運行時間,本文引入主成分分析(principal component analysis,PCA)法進行圖像的顯著性檢測,并與相關(guān)分析法相結(jié)合完成圖像縮放,使縮放變化集中在非顯著性區(qū)域,同時盡量保持背景的平穩(wěn)光滑過渡,減少人工痕跡,讓圖像的整體性和可觀性得到較好的保護。
顯示器終端的圖像一般都是RGB顏色模型。本文采用更接近人類視覺系統(tǒng)的CIELab顏色模型,該模型在顯著性檢測中效果較好。因此,需將圖像由RGB顏色模型轉(zhuǎn)為CIELab顏色模型。分別在CIELab顏色模型的L、a、b三個分量通道中,以每點與其周圍3×3領(lǐng)域的均值為其特征維度。不失一般性,本文以通道L為例來闡述圖像像素的3×3領(lǐng)域構(gòu)造過程。
假設(shè)圖像有m行n列,可以用m×n階矩陣表示該數(shù)字圖像CIELab顏色模型中的L通道。設(shè)點p為位于坐標(x,y)處的一個像素[13],則p的四個水平和垂直相鄰像素的坐標為:(x+1,y),(x-1,y),(x,y+1),(x,y-1)。這4個像素組成p的4鄰域,用N4(p)表示,每個像素距(x,y)一個單位距離。像素p的4個對角鄰像素的坐標為:(x+1,y+1),(x+1,y-1),(x-1,y+1),(x-1,y-1)。該像素集用ND(p)表示,ND(p)和N4(p)合起來用N8(p)表示,點p與N8(p)構(gòu)成3×3領(lǐng)域。
將該列向量矩陣恢復(fù)為原圖像的m×n階矩陣S=(sij)m×n,sij表示點(i,j)的顯著得分,可得到基于PCA算法的顯著圖(如圖1所示)。
定義圖像行、列向量的顯著度
PCA算法的顯著性檢測使得:重要區(qū)域特別突出,且縮放產(chǎn)生的形變可以避免或者較少發(fā)生在主要物體上;得到的顯著圖有著很好的邊界信息,能夠更好地保持物體周圍的邊界和形狀;保留了一定的上下文信息,重要區(qū)域與周圍環(huán)境的顯著性有著平穩(wěn)過渡,減少人工痕跡的影響。
隨機變量的相關(guān)系數(shù)刻畫的是變量之間的線性相關(guān)程度。對于圖像,可以對其灰度圖像數(shù)字矩陣的各行各列進行相關(guān)分析,確定行、列的相近度,衡量它們的相近程度,并結(jié)合顯著圖行列的顯著度,加權(quán)得到行列的重要值,再對縮放行列進行散化處理,得到縮放圖像。
1.3.1 行、列的相近度
1.3.2 基于行、列重要值的圖像縮放
圖像行、列向量的顯著度Srow(i)和Scol(j)反映的是行列在圖像顏色、亮度、方向、強度等多方面的信息,顯著度越大,越容易被視覺神經(jīng)識別,即為顯著區(qū)域,也是在圖像縮放中應(yīng)該保護的重要部分?;叶葓D像行、列向量相近度Rrow(i)、Rcol(j)反映的是圖像行、列向量的相近程度,相近度越大,改變這些行列對圖像的影響越小,可依據(jù)縮放比例對其進行刪除或插入新向量。顯著度Srow(i)、Scol(j)和行列的重要性成正比,相近度Rrow(i)、Rcol(j)與之成反比。為此,引入加權(quán)函數(shù)定義行、列向量的重要值:Frow(i)=(1-μr)Srow(i)+μr(1-Rrow(i)),Fcol(j)=(1-μc)Scol(j)+μc(1-Rcol(j))。其中:顯著度權(quán)重比μr=(1-Rrow(i))/(1-Rrow(i)+Srow(i));相近度權(quán)重比μc=(1-Rcol(j))/(1-Rcol(j)+Scol(j))。
若圖像縮小為m′×n′,則根據(jù)行、列重要度Frow(i)和Fcol(j)的升序排列,刪除(m-m′)列Fcol(j)較小的列向量和(n-n′)行Frow(i)較小的行向量,即可得到縮小圖像。
本方法算法簡單,但是如果較小的行列重要值連續(xù),即刪除或者增加行、列出現(xiàn)連續(xù),得到的縮小圖會產(chǎn)生圖像扭曲和放大圖局部比例失調(diào)等問題。為此,需要對重要值進行調(diào)整,散化可能連續(xù)的形變行、列向量。調(diào)整第j列相鄰兩列的重要值為
第(j-1)、(j+1)列的重要值得到提高,可避免連續(xù)刪除,行向量同理散化。
為了方便對比,現(xiàn)將圖像縮放的行、列灰值設(shè)置為零,即將縮放行列標注線設(shè)為黑色,見圖2。
圖2原圖的分辨率為500 px×375 px,縮小為450 px×330 px的圖像,即刪除45行50列。為方便說明,同樣增加45行50列,放大尺寸為550 px×420 px。從散化前的圖2a可以看出,縮放行列均避開了顯著區(qū)域,使得縮小圖(圖2b)和放大圖(圖2c)的形變均發(fā)生在背景圖像上。但是,散化前圖2a縮放行列發(fā)生了連續(xù),縮小圖(圖2b)右側(cè)顯現(xiàn)不連續(xù)且下方信息丟失;放大圖(圖2c)右側(cè)和下方出現(xiàn)明顯的比例放大失調(diào)。而散化后的對比圖,對上述情況都做出了很好的調(diào)整,既保證了主體的完好又使得背景過渡平滑自然。
本實驗的軟件和硬件環(huán)境如下:處理器AMD Ryzen5 4600U,內(nèi)存16 GB,軟件版本Matlab2018。采用分辨率不同的三張圖像:5000 px×355 px,299 px×400 px,500 px×501 px。分別與傳統(tǒng)的均值采樣和直接剪裁比較縮放效果,與經(jīng)典的SC算法比較運行速度和大比例縮放性能。
圖3a分辨率為500 px×355 px,分別采用均值采樣法、直接裁剪法和本文方法將圖像縮小為355 px×355 px的正方形圖像。對比發(fā)現(xiàn),均值采樣因為沒有考慮顯著區(qū)域,所以刪除145列時造成了主體花朵的橫向變形嚴重;直接裁剪根據(jù)比例直接刪除了非顯著區(qū)域的145列,保留了花朵的完整部分,但是造成了圖像內(nèi)容的不完整,喪失了過多次要信息,容易造成圖像解讀錯誤;本文方法保留了顯著部分,結(jié)合相關(guān)分析,刪除了信息高度重疊的列向量,通過散化改進使縮小圖呈現(xiàn)基于內(nèi)容縮放的整體效果。
圖4a分辨率為299 px×400 px,現(xiàn)分別采用均值采樣法、直接裁剪法和本文方法將圖像放大為400 px×400 px的正方形圖像。均值采樣根據(jù)放大比例直接均勻插入了101列,很顯然,圖像的主體宮殿隨之發(fā)生橫向變形,比例失調(diào),破壞了整體結(jié)構(gòu);直接裁剪是無法實現(xiàn)放大圖像的;本文方法在重要值較低的兩側(cè)均勻增加了101列,既實現(xiàn)了放大的效果,又保證了主體的概貌特征和比例。
傳統(tǒng)的均值采樣(scaling)可以實現(xiàn)非等比例的縮小和放大,操作簡單但是易發(fā)生圖像變形;直接裁剪(cropping)只能實現(xiàn)非等比例的縮小,無法做到放大,而且很容易損失圖像信息,造成圖像的視覺誤解。本文方法既可以實現(xiàn)圖像非等比例的縮放,同時因為采用了顯著圖,又可以很好地保護顯著區(qū)域,散化重要度的改進使得縮放圖像整體概貌良好。由以上對比分析可知,有效的顯著區(qū)域檢測是內(nèi)容感知的圖像縮放的前提,只有將良好的顯著圖和縮放算法相結(jié)合才能得到效果較好的縮放圖像。
圖5a的分辨率為500 px×501 px,采用SC算法[1]和本文方法分別將圖像縮小為450 px×450 px。SC算法在能量圖(圖5b)中選擇水平能量線51條、垂直能量線50條進行裁剪,最終得到縮小圖圖5c。本文方法除了考慮顯著圖還結(jié)合相關(guān)分析,選出重要值最小又不連續(xù)的51行和50列直接刪除,得到圖5e。
兩種方法的縮小圖(圖5c、e)的效果無明顯差異,都較好地保護了主體內(nèi)容且背景過渡自然,沒有人工痕跡,但是本文算法的計算復(fù)雜性顯著降低,運行速度明顯提升。為了做出更多對比,將上文已出現(xiàn)的4幅圖像分別采用SC算法和本文算法,縮小兩種尺寸,第一組縮小30行30列,第二組縮小60行60列,結(jié)果見表1。
表1 運行時間對比圖
從兩種方法的運行時間可以看出,本文方法確實提高了運行時效。同時,通過兩組不同比例的縮小速度可以看到,當比例增大時,SC算法的速度下降明顯,而本文方法趨于平穩(wěn)??梢?,SC算法對于較小比例的縮放效果和本文方法相近,但是運算繁瑣。本文刪除和增加像素的方式與SC算法相似,但是本文采用顯著圖PCA算法和相關(guān)分析取代SC算法(能量圖),不僅計算簡單,運行高效,也有效改善了當縮放比例較大時,圖像會局部變形的問題。
本文提出一種將主成分分析的顯著性檢測引入基于內(nèi)容感知的圖像縮放算法。首先計算圖像行列的顯著度,再結(jié)合行列相近程度度量的相關(guān)系數(shù),定義各行各列的重要值并升序排列,刪除前若干行、列向量,或者在前若干行、列向量后增加相鄰均值向量,并通過散化連續(xù)縮放行列,得到縮放圖。實驗結(jié)果表明,與傳統(tǒng)縮放方法比較,本文算法既可以保護顯著區(qū)域又可以獲得良好的整體視覺效果;而與經(jīng)典的內(nèi)容感知圖像縮放SC算法相比,本算法更簡潔,運行更高速。