圖像縮放,在數(shù)字圖像處理甚至日常生活中再平常不過(guò),特別是隨著Photoshop、ACDSee 一類(lèi)專(zhuān)業(yè)圖像處理軟件的普及,任何一個(gè)瀏覽過(guò)網(wǎng)頁(yè)的人即使沒(méi)有操作圖像縮放,但一定看過(guò)縮放后的圖像。圖像縮放雖然如此平常,在一些專(zhuān)業(yè)軟件的操作中又是非常的簡(jiǎn)單,但它真的如你所想那么簡(jiǎn)單嗎?
我們看一個(gè)例子:圖1 和圖2 分別是512*512 的Lena 和Baboon 標(biāo)準(zhǔn)圖,圖3(下載地址:http://www.truemark.cn/download/LenaBaboon.bmp)是圖1 和圖2 通過(guò)軟件合成的結(jié)果。合成方法是將圖1 的所有奇數(shù)行和奇數(shù)列數(shù)據(jù)用圖2 對(duì)應(yīng)的行與列數(shù)據(jù)替換,文件存儲(chǔ)為BMP格式。在Photoshop中打開(kāi)圖3,將圖像大小調(diào)整為256*256 像素,重定圖像像素方法選擇“鄰近”(見(jiàn)圖4),我們竟然得
到了如圖1 所示的效果。
如果我們將圖3 的大小分別調(diào)整為253*253、254*254、255*255 和257*257、258*258、259*259 將得到如圖5 至圖10 的效果(打開(kāi)上述下載網(wǎng)址,用鼠標(biāo)調(diào)整網(wǎng)頁(yè)大小,亦可觀察到相似效果)。結(jié)果是否有點(diǎn)匪夷所思?那我們接下來(lái)就從圖像的縮放原理講起,介紹常見(jiàn)的自適應(yīng)和非自適用插值方法。
圖像縮放原理
圖像縮放就是源圖像到目標(biāo)圖像的空間變換,在大多數(shù)應(yīng)用中,要求保持圖像中曲線型特征的連續(xù)性和各物體的連通性,一個(gè)約束較少的空間變換算法很可能會(huì)弄斷直線和打碎圖像,從而使圖像內(nèi)容“支離破碎”。圖像的幾何運(yùn)算可采用如下兩種方法[1] :
把幾何運(yùn)算想象成將輸入圖像的像素(指像素的灰度值或者顏色值,以下同)一個(gè)一個(gè)地轉(zhuǎn)移到輸出圖像中,如果一個(gè)輸入像素被映射到四個(gè)輸出像素之間的位置,則其值就按插值算法在四個(gè)輸出像素之間進(jìn)行分配。我們稱(chēng)之為像素移交(Pixel Carry-over) 或稱(chēng)為向前映射(如圖11)。
另一個(gè)方法是將輸出像素一次一個(gè)地映射回輸入圖像中,如果一個(gè)輸出像素被映射到四個(gè)輸入像素之間則其值就按插值算法確定。此方法稱(chēng)之為像素填充(Pixel Filling)或者向后映射或者逆向映射(如圖12)。
由于許多輸入像素可能映射到輸出圖像的邊界之外,故向前映射算法有些浪費(fèi),并且每個(gè)輸出像素的值可能要由許多輸入像素的值來(lái)決定,因而要涉及多次計(jì)算。而向后映射算法是逐像素、逐行地生成輸出圖像,每個(gè)像素的值由四個(gè)像素參與的插值所唯一確定。當(dāng)然,輸入圖像必須允許按空間變換所定義的方式隨機(jī)訪問(wèn),因而可能有些復(fù)雜,雖然如此,該方法對(duì)一般的應(yīng)用更為切實(shí)可行。
插值方法
輸出像素通常被映射到輸入圖像中的非整數(shù)位置,即位于四個(gè)輸入像素之間。因此,為了決定與該位置相對(duì)應(yīng)的像素值,必須進(jìn)行插值運(yùn)算。根據(jù)是否平等對(duì)待每一個(gè)像素可分為兩類(lèi)插值方法:一類(lèi)是如Photoshop、ACDSee 等通用軟件采用的非自適應(yīng)插值方法;另一類(lèi)是如Genuine Fractals 等專(zhuān)業(yè)軟件使用的自適應(yīng)插值方法,根據(jù)所要插值的內(nèi)容和像素的顏色分布,使有些地方強(qiáng)化結(jié)構(gòu)處理,有些地方模糊處理,其目的在于放大輸出照片時(shí)最大限度顯示細(xì)節(jié)。
非自適應(yīng)插值算法
最近鄰插值 (Nearest Neighbor) :最簡(jiǎn)單的插值方法,輸出像素的值等于離它所映射到的位置最近的輸入像素的值。其計(jì)算十分簡(jiǎn)單,在許多情況下其結(jié)果也可令人接受。由于這種簡(jiǎn)單的方法不能產(chǎn)生抗模糊的效果,因此會(huì)產(chǎn)生鋸齒現(xiàn)象。本文引言中的例子就是最近鄰插值算法的一個(gè)特例。
雙線性插值 (Bilinear) :或稱(chēng)之為兩次線性插值,根據(jù)輸出像素所映射到的最近的4個(gè)輸入像素的值作線性插值計(jì)算,在大多數(shù)情況下其準(zhǔn)確度要高于最近鄰法,效果也要好得多,最明顯的就是在放大時(shí)圖像邊緣的鋸齒比最近鄰法小許多。
雙三次插值 (Bicubic) :亦稱(chēng)之為兩次立方插值,是一種更加復(fù)雜的插值方式,它能創(chuàng)造出比雙線性插值更平滑的圖像邊緣,每個(gè)輸出像素的值由映射的像素附近的4x4 個(gè)像素值推算得來(lái),因此精確度較高。
雙三次插值方法通常運(yùn)用在圖像處理軟件、打印機(jī)驅(qū)動(dòng)程序和數(shù)碼相機(jī)中,對(duì)原圖像或原圖像的某些區(qū)域進(jìn)行放大。Photoshop 還為用戶提供了兩種不同的雙三次插值方法:雙三次插值平滑化(Bicubic Smoother) 和雙三次插值銳化(Bicubic Sharper),一般建議放大使用平滑化,縮小使用銳化。
高階插值 (High Order) :雙線性插值的平滑作用可能會(huì)使圖像的細(xì)節(jié)產(chǎn)生退化,尤其是在進(jìn)行放大處理時(shí),另外在有些應(yīng)用中,雙線性插值的斜率不連續(xù)會(huì)產(chǎn)生不希望得到的結(jié)果。這兩種情況都可以通過(guò)高階插值得到修正,當(dāng)然這需要增加計(jì)算量。使用高階插值的方法有:Spline(S 樣條)、Legendre 中心函數(shù)和Sinc 函數(shù)等插值方法。
與Photoshop 相比,ACDSee( 本文使用的版本為8.1)提供了更多的插值方法,主要有Box、Triangle、Bicubic、Bell、B-Spline、Lanczos、Mitchell、ClearIQZ 等方法。其中Mitchell 在放大自然圖像時(shí)能提供一個(gè)比較平滑的過(guò)渡,它能在振鈴效應(yīng)(ringing effect)和模糊效應(yīng)(blurring effect) 之間取得一個(gè)比較好的折衷;ClearIQZ 要比Bicubic 和Lanczos 慢,但它能提供最好的效果。
至于Photoshop 與ACDSee 縮放操作哪個(gè)效果更理想,沒(méi)有一個(gè)絕對(duì)的標(biāo)準(zhǔn)。一方面要考慮圖像的內(nèi)容,另一方面還要考慮圖像處理的場(chǎng)合和最終用途, 如果只是簡(jiǎn)單瀏覽一下縮放的效果就用ACDSee(Photoshop 還沒(méi)啟動(dòng)完成ACDSee 就已經(jīng)收工了?。绻糜谟∷⒊霭孀詈眠€是用Photoshop。
從感覺(jué)上講2 的冪次方倍(2n)數(shù)縮小可以每隔n-1 個(gè)點(diǎn)取一個(gè)像素值而不必內(nèi)插有利于保持質(zhì)量,放大則可保持原來(lái)像素值不變也有利于保持質(zhì)量。但實(shí)際并非如此,因?yàn)橐环矫娆F(xiàn)實(shí)應(yīng)用中不一定恰巧2n 倍數(shù)縮放,另一方面Photoshop、ACDSee 等軟件亦非如此處理:同樣縮小一半,在Photoshop中使用最近鄰和雙線性、在ACDSee 中使用Triangle、Bicubic、Bell 時(shí)才是如此,其它情況如縮小四分之一或者放大一倍均非如此。
自適應(yīng)插值算法
自適應(yīng)插值算法不是平等地對(duì)待所有的像素,而是基于圖像的內(nèi)容進(jìn)行插值,從而使得圖像的邊緣部分更加平滑[3]。采用自適用插值的圖像處理軟件有:
Genuine Fractals (http://www.onlinedown.net/soft/6436.htm):最流行的印前插值軟件,它首先將圖像轉(zhuǎn)化成矢量編碼,再根據(jù)編碼不斷的改變計(jì)算規(guī)則,這種方法在理論上講基本無(wú)損。
Shortcut PhotoZoom Pro (http://www.newhua.com/soft/20473.htm) :一款新穎的、技術(shù)上具有革命性的對(duì)數(shù)碼圖片進(jìn)行放大的工具。通過(guò)使用S-Spline 技術(shù)盡可能地提高放大圖片的品質(zhì),其最大特色是可以對(duì)圖片進(jìn)行放大而沒(méi)有鋸齒。
SizeFixer (http://www.fixerlabs.com/EN/upsize/sizefixer/sizefixer_home.htm) : 第一款使用Super-Resolution 技術(shù)的商業(yè)軟件,可能是目前最好的用于打印輸出的插值軟件。其界面直觀簡(jiǎn)單,提供多級(jí)圖像銳化工具可使圖像保持清晰銳利。
使用上述不同插值方法放大圖13 中的小旗,效果分別如圖14 至17 所示[2]。