1.算法仿真效果
matlab2022a仿真結(jié)果如下:
2.算法涉及理論知識(shí)概要
隨著信息處理技術(shù)和視覺通信技術(shù)的高速發(fā)展,人們獲取的知識(shí)量爆炸式增長(zhǎng),因此迫切的要求完善的信息處理技術(shù)為人們提供更加方便黍少、快捷服務(wù)行剂。數(shù)字圖像及及其相關(guān)技術(shù)是信息處理技術(shù)的重要內(nèi)容之一,對(duì)于數(shù)字圖像一般要求是高分辨圖像牍蜂,如:醫(yī)學(xué)圖像要求能夠顯示出那些人眼不能辨別出的細(xì)微病灶漾根;衛(wèi)星地面要求衛(wèi)星圖像至少能夠辨別出人的臉相甚至是證件;有些檢測(cè)識(shí)別控制裝置需要足夠高分辨率的圖像才能保證測(cè)量和控制的精度鲫竞,因此提高圖像分辨率是圖像獲取領(lǐng)域里追求的一個(gè)目標(biāo)辐怕。
1970年以來,CCD和CMOS圖像傳感器廣泛的被用來獲取數(shù)字圖像从绘,若要獲取高分辨圖像寄疏,最直接的方法就是提高成像裝置的分辨力是牢,由于受傳感器陣列排列密度的限制,提高傳感器的空間分辨率越來越難陕截,也會(huì)大幅度的增加數(shù)字?jǐn)z像機(jī)的價(jià)格驳棱。另外,像運(yùn)動(dòng)模糊农曲、系統(tǒng)的點(diǎn)擴(kuò)散函數(shù)模糊等不能夠通過改善成像裝置硬件的分辨力來解決社搅,所以,圖像的超分辨率重構(gòu)技術(shù)的研究有重大的意義乳规,不需要昂貴的圖像獲取設(shè)備形葬,只需要通過計(jì)算機(jī)軟件的處理就能獲得高分辨率的圖像。
超分辨率圖像重建是指從一序列具有互補(bǔ)信息的低分辨率圖像來重建一幅高分辨率的清晰圖像的復(fù)原技術(shù)暮的,同時(shí)還能夠消除加性噪聲以及由有限檢測(cè)器尺寸和光學(xué)元件產(chǎn)生的模糊笙以。超分辨率圖像重建的目的在于復(fù)原截止頻率之外的信息,以使圖像獲得更多的細(xì)節(jié)和信息冻辩。
圖像超分辨率重建技術(shù)通吃粗可以分為單幀和多幀圖像重建方法。單幀圖像重建也稱圖像放大微猖,最早由Harris和Goodman于60年代提出谈息,其思想主要是通過對(duì)低分辨率圖像靜態(tài)插值的方法來實(shí)現(xiàn)圖像分辨率的提高。因?yàn)閱蝹€(gè)圖像的利用不能去除由低分辨率圖像取樣時(shí)所具有的混淆和模糊凛剥,隨后有許多人研究提出了其他復(fù)原方法侠仇,如線性外推法。80年代末之后犁珠,人們?cè)诔直媛蕡D像復(fù)原方法研究上取得了突破性的進(jìn)展逻炊。Hunt等人提出和發(fā)展了許多有實(shí)用價(jià)值的方法,如能量連續(xù)降減法犁享、貝葉斯分析法余素;Tsai和Huang提出了在頻域中從互有位移的低分辨率圖像序列中插值產(chǎn)生一幀高分辨率圖像的概念,才從本質(zhì)上解決了圖像超分辨率無唯一解的問題炊昆;在此基礎(chǔ)上桨吊,Kim等人研究了混入噪聲和圖像有模糊退化情形下的模型,并給出了加權(quán)迭代和正則化迭代兩種解混疊方法凤巨;Bose等人則給出了一種解混疊的總體最小二乘方法视乐;進(jìn)一步發(fā)展中,人們?cè)诮y(tǒng)計(jì)先驗(yàn)知識(shí)的使用上也采用了新的方法敢茁,如Cheeseman等人使用了基于高斯平滑先驗(yàn)知識(shí)的估計(jì)器來增強(qiáng)衛(wèi)星遙感圖像佑淀,此外,Schultz和Stevenson彰檬,Tekalp等人伸刃,Keren和Pelegd等人以及Elad和Feuer研究了改善數(shù)字圖像空間分辨率的空域方法谎砾。
在凸集投影方法中定義約束集合(constraint sets)為限制SR重構(gòu)的一種靈活解空間。約束(constraints)被定義為表示包含所有可能SR重構(gòu)空間的凸集,而集合(sets)表示可行的解特征捧颅,如:非負(fù)性棺榔,能量綁定等,因此SR重構(gòu)問題的解空間即為這些凸集約束的交集隘道。凸集投影(POCS)是指給定空間矢量的任一點(diǎn)症歇,定位到滿足所有凸集約束的一點(diǎn)的迭代過程。在超分辨率圖像重建中, 首先要建立一個(gè)聯(lián)系原始高分辨率圖像和低分辨率觀測(cè)序列的圖像獲取模型, 一般的圖像獲取模型可示為:
由上面敘述可知雙線性插值會(huì)導(dǎo)致重建圖像的邊緣模糊谭梗,設(shè)計(jì)中采用梯度插值法忘晤,能夠很好的保持圖像的邊緣信息。
(2)邊緣振蕩效應(yīng)的抑制
POCS算法重建容易產(chǎn)生邊緣振蕩效應(yīng)激捏,邊緣振蕩是指在重建后的圖像邊緣處设塔,顏色深的一側(cè)像素顏色變得較淺,而顏色淺的一側(cè)像素顏色變得較深远舅,不能保持原始圖像的光滑邊緣闰蛔,呈現(xiàn)出振蕩的特性[11]。解決問題的途徑就是改變邊緣處像素的PSF函數(shù)图柏,減小其作用的范圍序六,所以采用Sobel [4] [8]算子來檢測(cè)高分辨率參考幀的邊緣,然后對(duì)邊緣處的像素使用修正的PSF函數(shù)蚤吹。
(3)噪聲的減少
高分辨率圖像在經(jīng)過圖像的運(yùn)動(dòng)估計(jì)和POCS 重建后會(huì)出現(xiàn)干擾噪聲例诀,這是由于當(dāng)前幀中的部分像素沒有出現(xiàn)在參考幀中,而這部分像素也參與了 POCS 超分辨率重建的過程裁着,則出現(xiàn)一些干擾噪聲[10]繁涂。在用塊匹配算法采用一種設(shè)置運(yùn)動(dòng)向量可信度區(qū)間的方法來減少噪聲的出現(xiàn),MAD 的大小間接反映出匹配的準(zhǔn)確度二驰,可以對(duì)每一個(gè)子塊的均值誤差 MAD 進(jìn)行排序扔罪,并且設(shè)置區(qū)間,假設(shè)估計(jì)的準(zhǔn)確的運(yùn)動(dòng)向量所占的比列為 99%桶雀,可認(rèn)為 MAD 值從小到大排序后的前 99%的對(duì)應(yīng)的運(yùn)動(dòng)向量是準(zhǔn)確的矿酵,即可設(shè)置區(qū)間為[0, 0.99],對(duì)在置信區(qū)間內(nèi)的子塊對(duì)應(yīng)的運(yùn)動(dòng)向量背犯,參與圖像的重建坏瘩,而不在置信區(qū)間內(nèi)的子塊對(duì)應(yīng)的運(yùn)動(dòng)向量盅抚,則不參與重建漠魏。
由前面的分析可知,圖像重建實(shí)際的操作過程如下妄均,為了更加清洗和詳細(xì)地表示該過程柱锹,這里用偽代碼來表示:
Step1: 確定圖像序列 LR 中的一幀作為參考幀哪自,并對(duì)其進(jìn)行梯度插值,作為高分辨率圖像的初始估計(jì);
Step2: 對(duì)低分辨率圖像序列(每幀圖像)與參考幀做運(yùn)動(dòng)估計(jì)(圖像配準(zhǔn))禁熏,得到低分辨率圖像相對(duì)于參考幀的偏移量壤巷,即運(yùn)動(dòng)向量場(chǎng)V(k ),并計(jì)算運(yùn)動(dòng)向量可信度瞧毙。
Step3: ??For ?i = 1 to q ?????????????????% q 為迭代次數(shù)
For k = 1to p ????????????????% p 為 LR 幀的個(gè)數(shù), 對(duì)每一幀進(jìn)行計(jì)算
For m = 1to M ????????????% M 為 LR 幀的行數(shù)
For n = 1to N ??????????% N 為 LR 幀的列數(shù)
3.1 判斷像素的運(yùn)動(dòng)向量可信度是否在置信區(qū)間內(nèi)胧华,是則繼續(xù),
根據(jù)運(yùn)動(dòng)向量場(chǎng)V ( k)宙彪,計(jì)算該像素在估計(jì)的 HR 圖像位置矩动;
3.2 若該像素為 Sobel 檢測(cè)到的邊緣,修改 PSF释漆;
3.3 計(jì)算 PSF 作用范圍內(nèi)的像素悲没;
3.4 模擬采樣過程,獲得模擬低分辨率像素估計(jì)值男图;
3.5計(jì)算實(shí)際圖像像素值與像素估計(jì)值之間的殘差示姿;
3.6根據(jù)殘差修正估計(jì)高分辨率圖像的像素值;
3.7對(duì)修正的高分辨率像素值執(zhí)行幅值約束逊笆;
Step4:迭代終止栈戳,得到最終的高分辨率圖像估。
3.MATLAB核心程序
%POCS
%POCS
%POCS
%POCS
if sel == 2
%降低圖像的分辨率
for j = 1:Numbers+1
pixel_low_tmp ???= func_lowfbl(pixel(:,:,j),Fenbl_sample);
pixel_low(:,:,j) = pixel_low_tmp;
end
addpath(genpath('b'));
figure;
%原POCS算法
for j = 1:K_frame
Image_tmp ????????= func_pocs_classic(j,pixel_low,min(30,Numbers)+j+1,Fenbl_sample);
Image_pocs(:,:,j) = Image_tmp;
[psnrs,mses] ?????= func_PSNR(pixel(:,:,j),Image_pocs(:,:,j));
PSNR_pocs(j) ?????= psnrs;
MSE_pocsr(j) ?????= mses;
end
subplot(121);imshow(Image_pocs(:,:,1),[]);title('通過原POCS算法得到的重構(gòu)圖');
clear Image_pocs ???
%改進(jìn)后的POCS算法
for j = 1:K_frame
Image_tmp ?????????= func_pocs(j,pixel_low,min(30,Numbers)+j+1,Fenbl_sample);
Image_pocs2(:,:,j) = Image_tmp;
[psnrs,mses] ??????= func_PSNR(pixel(:,:,j),Image_pocs2(:,:,j));
PSNR_pocs2(j) ?????= psnrs;
MSE_pocsr2(j) ?????= mses;
end
subplot(122);imshow(Image_pocs2(:,:,1),[]);title('通過改進(jìn)后的POCS算法得到的重構(gòu)圖');
clear Image_pocs2
figure;
plot(PSNR_pocs,'r-o');hold on;
plot(PSNR_pocs2,'b-o');hold on;
grid on;
legend('通過POCS算法得到的重構(gòu)圖','通過改進(jìn)POCS算法得到的重構(gòu)圖');
title('PSNR');
save result\dz.mat PSNR_pocs ?PSNR_pocs2
end