圖像放大算法
http://www.cnblogs.com/celerychen/archive/2010/11/25/3588222.html
一、 圖像放大算法
圖像放大有許多算法,其關鍵在於對未知像素使用何種插值方式。以下我們將具體分析幾種常見的算法,然後從放大後的圖像是否存在色彩失真,圖像的細節是否得到較好的保存,放大過程所需時間是否分配合理等多方面來比較它們的優劣。
當把一個小圖像放大的時候,比如放大400%,我們可以首先依據原來的相鄰4個像素點的色彩值,按照放大倍數找到新的ABCD像素點的位置並進行對應的填充,但是它們之間存在的大量的像素點,比如p點的色彩值卻是不可知的,需要進行估算。
1、最臨近點插值算法(Nearest Neighbor)
最鄰近點插值算法是最簡單也是速度最快的一種算法,其做法是將放大後未知的像素點P,將其位置換算到原始影像上,與原始的鄰近的4周像素點A,B,C,D做比較,令P點的像素值等於最靠近的鄰近點像素值即可。如上圖中的P點,由於最接近D點,所以就直接取P=D。
這種方法會帶來明顯的失真。在A,B中點處的像素值會突然出現一個跳躍,這就是出現馬賽克和鋸齒等明顯走樣的原因。最臨近插值法唯一的優點就是速度快。
2、雙線性插值算法(Bilinear Interpolation)
其做法是將放大後未知的像素點P,將其位置換算到原始影像上,計算的四個像素點A,B,C,D對P點的影響(越靠近P點取值越大,表明影響也越大),其示意圖如下。
其具體的算法分三步:
第一步插值計算出AB兩點對P點的影響得到e點的值。
對線性插值的理解是這樣的,對於AB兩像素點之間的其它像素點的色彩值,認定為直線變化的,要求e點處的值,只需要找到對應位置直線上的點即可。換句話說,A,B間任意一點的值只跟A,B有關。
第二步,插值計算出CD兩點對P點的影響得到f點的值。
第三步,插值計算出ef兩點對P點的影響值。
雙線性插值算法由於插值的結果是連續的,所以視覺上會比最鄰近點插值算法要好一些,不過運算速度稍微要慢一點,如果講究速度,是一個不錯的折衷。
3、雙立方插值算法(Bicubic Interpolation)
雙立方插值算法與雙線性插值算法類似,對於放大後未知的像素點P,將對其影響的範圍擴大到鄰近的16個像素點,依據對P點的遠近影響進行插值計算,因P點的像素值信息來自16個鄰近點,所以可得到較細致的影像,不過速度比較慢。
不過雙立方插值算法與雙線性插值算法的本質區別不僅在於擴大了影響點的範圍,還采用高級的插值算法,如圖所示
要求A,B兩點之間e點的值,需要利用A,B周圍A-1,A,B,B 1四個點的像素值,通過某種非線性的計算,得到光滑的曲線,從而算出e點的值來。
所謂“雙”或者叫“二次”的意思就是在計算了橫向插值影響的基礎上,把上述運算拓展到二維空間,再計算縱向插值影響的意思。
雙立方插值算法能夠得到相對清晰的畫面質量,不過計算量也變大。該算法在現在的眾多圖像處理軟件中最為常用,比如Photoshop,After Effects,Avid,Final Cut Pro等。
為了得到更好的圖像質量,在以上的基礎上,許多新的算法不斷湧現,它們使用了更加復雜的改進的插值方式。譬如B樣條(B-SPline), 米切爾(Mitchell)等插值算法,它們的目的是使插值的曲線顯得更平滑,圖像邊緣的表現更加完美。
4、 自適應樣條插值極其增強技術( S-Spline & S-Spline XL)
與上述經典的插值方法最大的區別在於, S-Spline 采用了一種自適應技術,那些傳統的方法總是依據周圍的像素點來求未知點的色彩值,也就是說需要求解的色彩值僅僅依靠該像素點在圖像中的位置,而非實際的圖像的像素信息,而自適應樣條算法還會考慮實際圖像的像素信息。 實驗表明,經過 S-Spline 算法得到的圖像效果要優於雙立方插值算法。
現在 S-Spline 算法又出現了增強版 S-Spline XL,新版本的 S-Spline XL 算法較 S-Spline 而言畫面的銳度得到進一步增強,物體的輪廓更加清晰,邊緣的鋸齒現象大大減弱,圖像感受更加自然。
二、 圖像放大算法 實際測試
現在我們來對以上幾種插值算法進行實際測試,看看它們的效果。首先打開原始的圖像bird.jpg.這是一個分辨率為360×270的圖像。
我們采用 BenVista 公司著名的 PhotoZoom Pro 2 軟件,在pc電腦上進行測試,電腦的CPU配置為Inter Core 2 T5500 1.66GHz,分別采用以上5種插值方法把原始圖像放大8倍得到5個2880×2160的圖像
為了得到最好的圖像放大質量,在可選條件下,我們應該使用自適應樣條插值增強(S-S pline_ XL)技術來放大圖像。
對比以上各圖並結合實驗數據,我把效果參數列舉如下表。
插值類型 | 主觀感受 | 圖像輪廓 | 總體評價 | 處理耗時 |
最臨近點插值 N earrst_ N eighbour | 馬賽克現象嚴重 | 不清晰 | 最差 | 5秒 |
雙線性插值 B ilinear | 圖像模糊,不銳利 | 邊緣不清晰,有鋸齒現象 | 差 | 6秒 |
雙立方插值 B icubic | 圖像較模糊,較銳利 | 鋸齒現象有所改善 | 折中 | 8秒 |
自適應樣條插值 S-S pline | 圖像相對清晰,銳利 | 邊緣變得清晰,鋸齒現象消失 | 好 | 18秒 |
自適應樣條增強 S-S pline_ XL | 圖像清晰,銳利 | 邊緣銳利,清晰 | 最好 | 20秒 |
圖像放大算法