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