字圖像縮放技術(shù):從插值核到改進(jìn)算法的MATLAB實(shí)現(xiàn)與性能對(duì)比)
簡(jiǎn)介這是一份面向電子信息工程、計(jì)算機(jī)視覺(jué)等專業(yè)本科生的數(shù)字圖像處理畢業(yè)論文資料以數(shù)字圖像縮放技術(shù)為核心研究主題適合正在準(zhǔn)備畢業(yè)設(shè)計(jì)或需要參考圖像插值算法實(shí)現(xiàn)思路的學(xué)生與研究人員。壓縮包內(nèi)僅含1個(gè)doc文檔約2.05MB內(nèi)容為完整的本科畢業(yè)設(shè)計(jì)論文涵蓋任務(wù)書(shū)、摘要、目錄及正文各章節(jié)重點(diǎn)討論最近鄰域插值、雙線性插值、雙三次插值等經(jīng)典算法的原理與MATLAB實(shí)現(xiàn)并對(duì)比其性能與運(yùn)算量。論文還涉及數(shù)字電視視頻格式、圖像采集存儲(chǔ)處理分析等基礎(chǔ)理論以及MATLAB仿真環(huán)境的編程應(yīng)用。目前已有907人學(xué)習(xí)下載可作為選題參考、算法實(shí)現(xiàn)模板與論文寫(xiě)作范本幫助讀者快速理解圖像縮放技術(shù)的研究框架與實(shí)驗(yàn)方法。1. 數(shù)字圖像縮放為什么放大一張圖會(huì)糊而縮小反而可能更清楚把一張 200×200 的圖硬拉到 800×800多數(shù)人第一反應(yīng)是變模糊了。但真正反直覺(jué)的是放大和縮小在數(shù)學(xué)上根本不是同一類問(wèn)題。放大是已知稀疏采樣點(diǎn)去猜中間缺失的值本質(zhì)是插值縮小是已知密集采樣點(diǎn)要丟掉一部分信息本質(zhì)是重采樣加抗混疊。很多人把兩者當(dāng)成一個(gè)函數(shù)的正反調(diào)用結(jié)果放大糊、縮小出摩爾紋兩頭翻車。這份本科畢業(yè)設(shè)計(jì)論文《數(shù)字圖像縮放技術(shù)研究》恰好把這條分界線講透了。它從數(shù)字電視的視頻格式切入——1080i、720P、1080P 這些分辨率各異的信號(hào)最終都要在固有分辨率固定的顯示設(shè)備上統(tǒng)一呈現(xiàn)縮放是繞不開(kāi)的一環(huán)。論文用 MATLAB 把最近鄰、雙線性、雙三次三種經(jīng)典插值算法以及四種改進(jìn)算法全部實(shí)現(xiàn)并做了性能與運(yùn)算量對(duì)比。搞懂它你就搞懂了像素之間到底發(fā)生了什么。2. 插值核一張圖糊不糊全看這個(gè)函數(shù)長(zhǎng)什么樣2.1 從數(shù)學(xué)插值到圖像插值節(jié)點(diǎn)、插值條件與余項(xiàng)論文第二章先把數(shù)學(xué)上的插值問(wèn)題講清楚了。給定區(qū)間 [a,b] 上互異的 n1 個(gè)點(diǎn)及其函數(shù)值找一個(gè)簡(jiǎn)單函數(shù) φ(x) 使得 φ(x?)y?這就是插值。φ 叫插值函數(shù)x? 叫插值節(jié)點(diǎn)條件 φ(x?)y? 叫插值條件。如果 φ 是代數(shù)多項(xiàng)式就是代數(shù)插值——數(shù)字圖像縮放用的全是這一類。關(guān)鍵概念是插值余項(xiàng)也就是截?cái)嗾`差R(x) f(x) - φ(x)它衡量用 φ 近似 f 的誤差。節(jié)點(diǎn)上 R0節(jié)點(diǎn)之間 R 一般不為零。圖像縮放里像素網(wǎng)格就是插值節(jié)點(diǎn)新圖的每個(gè)像素位置落在舊圖節(jié)點(diǎn)之間誤差就體現(xiàn)在這里。余項(xiàng)越小近似越好——但余項(xiàng)小不等于視覺(jué)好這是后面所有算法取舍的根源。論文還提到數(shù)學(xué)上常見(jiàn)的插值類型拉格朗日插值、牛頓插值、埃爾米特插值、分段低次插值與三次樣條插值。圖像縮放之所以不用高階全局插值是因?yàn)楦唠A多項(xiàng)式在節(jié)點(diǎn)間會(huì)劇烈振蕩龍格現(xiàn)象一張圖放大后邊緣會(huì)出現(xiàn)詭異的波紋。所以工程上全部走分段低次路線這就是三種經(jīng)典算法的共同前提。2.2 最近鄰、雙線性、雙三次三種插值核的數(shù)學(xué)形態(tài)差異論文第三章把三種傳統(tǒng)算法逐一拆開(kāi)核心差異在插值核函數(shù)。最近鄰插值的核最簡(jiǎn)單新像素直接取離它最近的舊像素值。數(shù)學(xué)上等價(jià)于用一個(gè)矩形核做卷積。優(yōu)點(diǎn)是運(yùn)算量極小每個(gè)輸出像素只需一次取整和一次尋址缺點(diǎn)是放大后邊緣呈明顯鋸齒因?yàn)橄袼刂翟谡麎K區(qū)域內(nèi)是常數(shù)沒(méi)有過(guò)渡。雙線性插值用周圍 2×2 共 4 個(gè)像素做加權(quán)平均權(quán)重由距離決定。核函數(shù)是三角形函數(shù)在頻域上對(duì)應(yīng) sinc2 的近似。它把鋸齒抹平了但代價(jià)是邊緣變軟——因?yàn)槿切魏说牡屯ㄌ匦员染匦魏烁鼜?qiáng)高頻細(xì)節(jié)被削掉更多。雙三次插值用周圍 4×4 共 16 個(gè)像素核函數(shù)是三次多項(xiàng)式常見(jiàn)的是 Keys 提出的 a-0.5 版本W(wǎng)(x) (a2)|x|3 - (a3)|x|2 1, 0 ≤ |x| 1 W(x) a|x|3 - 5a|x|2 8a|x| - 4a, 1 ≤ |x| 2 W(x) 0, |x| ≥ 2這個(gè)核在 |x|1 和 |x|2 處連續(xù)且一階可導(dǎo)所以插值結(jié)果比雙線性平滑得多邊緣保持也更好。代價(jià)是每個(gè)輸出像素要算 16 次乘加運(yùn)算量約為雙線性的 4 倍。論文特別強(qiáng)調(diào)從數(shù)學(xué)形態(tài)上分析核函數(shù)引起的計(jì)算量和處理效果差異——這句話是整篇的題眼。核的支撐區(qū)間越大、階數(shù)越高低通特性越強(qiáng)圖像越平滑但高頻損失越多、運(yùn)算量越大。三種算法本質(zhì)上是同一條曲線上的三個(gè)采樣點(diǎn)不是三個(gè)孤立方案。2.3 用 MATLAB 驗(yàn)證核函數(shù)為什么雙三次的邊緣更貴但更值論文用 MATLAB 對(duì)三種算法做了實(shí)現(xiàn)和實(shí)驗(yàn)。MATLAB 圖像處理工具箱支持索引圖像、灰度圖像、二進(jìn)制圖像、RGB 圖像四種基本類型縮放實(shí)驗(yàn)通常在灰度或 RGB 上做。核心實(shí)現(xiàn)思路是構(gòu)造插值核矩陣對(duì)每個(gè)輸出坐標(biāo)反算輸入坐標(biāo)再做加權(quán)求和。以雙三次為例常見(jiàn)的實(shí)現(xiàn)思路是分離核先在水平方向?qū)?4 個(gè)點(diǎn)做一維三次插值再在垂直方向?qū)?4 個(gè)結(jié)果做一次把 16 次二維運(yùn)算拆成 8 次一維運(yùn)算。這不是論文原文的代碼但屬于這個(gè)領(lǐng)域合格實(shí)現(xiàn)的標(biāo)準(zhǔn)做法% 雙三次插值的一維核函數(shù)Keys, a -0.5 function w cubic_kernel(x) a -0.5; x abs(x); w zeros(size(x)); idx1 x 1; idx2 x 1 x 2; w(idx1) (a2)*x(idx1).^3 - (a3)*x(idx1).^2 1; w(idx2) a*x(idx2).^3 - 5*a*x(idx2).^2 8*a*x(idx2) - 4*a; end這段代碼里a控制核的銳度a 越接近 -1核越銳邊緣保持越好但可能過(guò)沖出現(xiàn)振鈴a 越接近 0核越平圖像越軟。論文選 a-0.5 是經(jīng)典折中值。idx1和idx2分別對(duì)應(yīng)支撐區(qū)間的兩段超出 |x|≥2 的部分直接置零——這就是支撐區(qū)間的物理含義距離超過(guò) 2 個(gè)像素的舊點(diǎn)對(duì)新點(diǎn)沒(méi)有貢獻(xiàn)。理解了這個(gè)核就能理解為什么雙三次放大后邊緣更清晰它的頻域響應(yīng)更接近理想低通通帶內(nèi)更平坦阻帶衰減更快。代價(jià)就是那 16 次乘加。論文第五章的對(duì)比實(shí)驗(yàn)正是圍繞這個(gè)性能 vs 運(yùn)算量的權(quán)衡展開(kāi)的。3. 改進(jìn)算法傳統(tǒng)插值搞不定的邊緣后來(lái)者怎么補(bǔ)3.1 縮小為什么要先取平均混疊是怎么產(chǎn)生的論文第四章第一節(jié)講了一個(gè)容易被忽略的問(wèn)題圖像縮小不能直接抽樣。如果原圖 800×800 縮到 200×200直接每 4 個(gè)像素取 1 個(gè)高頻信息會(huì)折疊到低頻產(chǎn)生摩爾紋和虛假紋理——這就是混疊。論文給出的方案是基于近鄰插值與鄰域取平均的圖像縮小算法先把每個(gè)輸出像素對(duì)應(yīng)的 4×4 輸入鄰域做平均再賦值。平均相當(dāng)于一個(gè)低通濾波器把高于新采樣率一半的頻率成分先濾掉再抽樣就不會(huì)混疊。這跟音頻重采樣前必須加抗混疊濾波器是同一個(gè)道理。常見(jiàn)的實(shí)現(xiàn)思路是對(duì)每個(gè)輸出像素 (i,j)映射回輸入坐標(biāo)后取一個(gè)矩形鄰域鄰域大小等于縮放因子的倒數(shù)做算術(shù)平均??s放因子越大鄰域越大低通越強(qiáng)圖像越軟但越干凈。論文對(duì)這個(gè)算法做了評(píng)價(jià)指出它在縮小場(chǎng)景下運(yùn)算量可控效果明顯優(yōu)于直接抽樣。3.2 Ferguson 曲面插值把圖像當(dāng)成曲面來(lái)擬合論文第四章第二節(jié)引入 Ferguson 曲面插值。傳統(tǒng)雙三次是在規(guī)則網(wǎng)格上做插值而 Ferguson 曲面用參數(shù)化方法描述曲面片每個(gè)曲面片由四個(gè)角點(diǎn)的位置和切矢定義。用在圖像縮放上就是把局部圖像塊當(dāng)成一個(gè)曲面片來(lái)擬合插值時(shí)不僅匹配像素值還匹配梯度。這個(gè)思路的價(jià)值在于雙三次插值只保證函數(shù)值連續(xù)不保證導(dǎo)數(shù)連續(xù)所以在強(qiáng)邊緣處會(huì)出現(xiàn)方向性模糊。Ferguson 曲面插值通過(guò)引入切矢約束讓插值結(jié)果在邊緣兩側(cè)的梯度更接近真實(shí)邊緣更銳。代價(jià)是每個(gè)曲面片要估計(jì)切矢運(yùn)算量比雙三次更高且切矢估計(jì)不準(zhǔn)時(shí)會(huì)產(chǎn)生過(guò)沖。論文對(duì)它的評(píng)價(jià)是在邊緣豐富的圖像上優(yōu)勢(shì)明顯在平坦區(qū)域與雙三次差異不大。這符合改進(jìn)算法都是針對(duì)特定退化場(chǎng)景的規(guī)律。3.3 帶系數(shù)自適應(yīng)插值讓核隨局部?jī)?nèi)容變論文第四章第三節(jié)講帶系數(shù)自適應(yīng)插值算法及其改進(jìn)。核心思想是固定核的雙三次對(duì)所有區(qū)域一視同仁但圖像不同區(qū)域的頻率特性差異巨大。平坦區(qū)域適合強(qiáng)低通更平滑邊緣區(qū)域適合弱低通更銳。自適應(yīng)插值的做法是先估計(jì)局部梯度或方差再根據(jù)這個(gè)統(tǒng)計(jì)量動(dòng)態(tài)調(diào)整插值核的系數(shù)。梯度大邊緣時(shí)減小核的平滑力度梯度小平坦時(shí)加大平滑力度。論文給出了數(shù)學(xué)推導(dǎo)和算法實(shí)現(xiàn)本質(zhì)是把一個(gè)固定核變成一組隨位置變化的核。常見(jiàn)的實(shí)現(xiàn)思路是用一個(gè)控制參數(shù) α 在雙線性核和雙三次核之間插值α0 退化為雙線性α1 退化為雙三次中間值根據(jù)局部梯度選取。這樣既保留了雙三次的邊緣保持能力又在平坦區(qū)域避免了不必要的運(yùn)算和過(guò)沖。3.4 邊緣定向插值沿著邊緣走而不是橫穿邊緣論文第四章第四節(jié)講基于數(shù)字圖像邊緣提取的插值算法。這是所有改進(jìn)算法里思路最直觀的一個(gè)插值應(yīng)該沿著邊緣方向進(jìn)行而不是橫穿邊緣。傳統(tǒng)插值在邊緣處橫穿會(huì)把邊緣兩側(cè)的像素混在一起導(dǎo)致邊緣模糊。定向插值先估計(jì)邊緣方向然后沿這個(gè)方向找最近的同側(cè)像素做插值。論文給出了圖像定向插值的一般實(shí)現(xiàn)方法和簡(jiǎn)化算法。一般方法要對(duì)每個(gè)像素做方向估計(jì)運(yùn)算量大簡(jiǎn)化算法用固定方向集比如 0°、45°、90°、135°做匹配選最匹配的方向插值。論文對(duì)它的評(píng)價(jià)是在強(qiáng)邊緣圖像上效果顯著但方向估計(jì)錯(cuò)誤時(shí)會(huì)產(chǎn)生偽影且運(yùn)算量隨方向數(shù)增加而上升。3.5 多幀融合單幀搞不定的分辨率靠時(shí)間換空間論文第四章第五節(jié)講基于多幀圖像融合的提高圖像分辨率的方法。前面所有算法都是單幀處理信息量上限就是原圖的信息量。多幀融合的思路是如果有多幀同一場(chǎng)景的低分辨率圖像且它們之間存在亞像素位移就可以把這些信息融合起來(lái)重建高分辨率圖像。論文提到基于共軛梯度算法的圖像融合用共軛梯度法求解一個(gè)優(yōu)化問(wèn)題找一個(gè)高分辨率圖像使得它經(jīng)過(guò)降采樣和位移后與所有低分辨率觀測(cè)幀的誤差最小。這是超分辨率重建的經(jīng)典框架。這個(gè)方法的代價(jià)是需要多幀輸入和迭代求解運(yùn)算量遠(yuǎn)高于單幀插值但理論上能突破單幀的信息上限。論文把它作為當(dāng)今主流技術(shù)的一部分說(shuō)明縮放問(wèn)題在工程上早已不局限于單幀插值。4. 避坑與排查縮放實(shí)驗(yàn)里最容易翻車的幾個(gè)點(diǎn)4.1 現(xiàn)象放大后圖像整體偏暗或偏亮原因MATLAB 中灰度圖像有 double 型值域 [0,1]和 uint8 型值域 [0,255]兩種。插值計(jì)算時(shí)如果類型混用比如對(duì) uint8 做加權(quán)平均后直接賦值會(huì)因整數(shù)截?cái)鄟G失精度或者 double 結(jié)果沒(méi)做 clamp超出 [0,1] 的值被截?cái)唷=鉀Q插值前統(tǒng)一轉(zhuǎn) double 并歸一化到 [0,1]插值后再按需轉(zhuǎn)回 uint8。論文第二章專門(mén)提醒過(guò)0 為白還是 0 為黑取決于輸入方法和處理觀點(diǎn)編程時(shí)要特別注意。4.2 現(xiàn)象縮小后出現(xiàn)規(guī)律性條紋或摩爾紋原因直接抽樣沒(méi)有做抗混疊低通。高頻信息折疊到低頻形成虛假紋理。解決縮小前先做鄰域平均或高斯低通鄰域大小與縮放因子匹配。論文第四章第一節(jié)的算法就是干這個(gè)的。4.3 現(xiàn)象雙三次插值后邊緣出現(xiàn)白色或黑色鑲邊原因三次核在邊緣處會(huì)產(chǎn)生過(guò)沖overshoot像素值超出原圖動(dòng)態(tài)范圍。a 參數(shù)越接近 -1過(guò)沖越明顯。解決插值后做 clamp把結(jié)果限制在原圖值域內(nèi)或把 a 調(diào)到 -0.5 到 -0.75 之間。論文選 a-0.5 就是這個(gè)原因。4.4 現(xiàn)象自適應(yīng)插值在某些圖上出現(xiàn)塊狀偽影原因局部梯度估計(jì)窗口太小噪聲被當(dāng)成邊緣導(dǎo)致核系數(shù)在相鄰像素間跳變。解決梯度估計(jì)前先做輕微平滑或增大估計(jì)窗口。論文在算法評(píng)價(jià)里提到過(guò)自適應(yīng)算法的穩(wěn)定性問(wèn)題。4.5 現(xiàn)象多幀融合迭代不收斂或收斂到錯(cuò)誤結(jié)果原因幀間位移估計(jì)不準(zhǔn)或共軛梯度法的初始值離真值太遠(yuǎn)。解決先用互相關(guān)做亞像素位移粗估計(jì)再迭代精修共軛梯度法設(shè)置最大迭代次數(shù)和殘差閾值避免無(wú)謂運(yùn)算。論文第四章第五節(jié)提到提高分辨率圖像融合的關(guān)鍵技術(shù)位移估計(jì)就是其中之一。5. 運(yùn)算量與效果的權(quán)衡沒(méi)有免費(fèi)的高清論文第五章把三種傳統(tǒng)算法和四種改進(jìn)算法放在一起做了性能和運(yùn)算量對(duì)比。這個(gè)對(duì)比的價(jià)值不在于得出哪個(gè)最好而在于揭示一條規(guī)律圖像縮放里效果和運(yùn)算量幾乎總是正相關(guān)的改進(jìn)算法都是在特定場(chǎng)景下用額外運(yùn)算換特定維度的提升。最近鄰運(yùn)算量最低適合實(shí)時(shí)性要求極高、對(duì)畫(huà)質(zhì)不敏感的場(chǎng)景雙線性是通用折中雙三次在畫(huà)質(zhì)和運(yùn)算量之間取得較好平衡是很多圖像軟件的默認(rèn)選項(xiàng)。Ferguson 曲面插值和邊緣定向插值在邊緣豐富圖像上優(yōu)勢(shì)明顯但運(yùn)算量高且對(duì)參數(shù)敏感自適應(yīng)插值靈活但實(shí)現(xiàn)復(fù)雜多幀融合理論最強(qiáng)但需要多幀輸入和迭代求解。我一般會(huì)這么理解這套算法的選型邏輯先問(wèn)三個(gè)問(wèn)題——輸入是單幀還是多幀實(shí)時(shí)性要求多高圖像內(nèi)容是自然場(chǎng)景還是人造邊緣三個(gè)問(wèn)題的答案基本就鎖定了算法區(qū)間。論文沒(méi)有給出一個(gè)萬(wàn)能算法這恰恰是它誠(chéng)實(shí)的地方。這份畢業(yè)設(shè)計(jì)論文的完整價(jià)值在于它不只是列了算法而是把每個(gè)算法的數(shù)學(xué)推導(dǎo)、MATLAB 實(shí)現(xiàn)、性能評(píng)價(jià)串成了一條線。從插值核的數(shù)學(xué)形態(tài)到運(yùn)算量的量化對(duì)比再到改進(jìn)算法的適用邊界形成了一套可復(fù)現(xiàn)的分析框架。對(duì)于想搞懂像素之間到底發(fā)生了什么的開(kāi)發(fā)者這套框架比任何單一算法都更有用。從那以后我每次做縮放相關(guān)的實(shí)驗(yàn)都強(qiáng)制先跑一遍核函數(shù)可視化確認(rèn)支撐區(qū)間和頻域響應(yīng)符合預(yù)期再動(dòng)手調(diào)參。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取