資源簡介
迭代反投影法實現程序,可以用于超分辨率復原。

代碼片段和文件信息
function?[I?frames]?=?iteratedbackprojection(s?delta_est)
%?ITERATEDBACKPROJECTION?-?iterated?back?projection?SR?algorithm
%????s:?images?in?cell?array?(s{1}?s{2}...)
%????factor:?gives?size?of?reconstructed?image
if?nargout?>?1
????outputframes?=?true;
else
????outputframes?=?false;
end
%%?Initialization
lambda?=?0.1;?%?define?the?step?size?for?the?iterative?gradient?method
dI1=imread(‘E:\matlab\IBP2\ref.jpg‘);
srcDir=uigetdir(‘E:\matlab\IBP2\ibp11‘);????????????????????????????????????%獲得選擇的文件夾
cd(srcDir);
allnames=struct2cell(dir(‘*.jpg‘));?????????????????????????????????????????%只處理jpg文件
[klen]=size(allnames);?????????????????????????????????????????????????????%獲得jpg文件的個數
for?ii=1:len
name=allnames{1ii};
??s{ii}=imread(name);????????????????????????????????????????????????????????%讀取文件
end?
%%?Movie?variables
movieCounter?=?1;
imOrigBig?=?imresize(dI1?2?‘nearest‘);
if(outputframes)
????figure;
end
%?--?End?of?Movie?Variables
%?Start?with?an?estimate?of?our?HR?image:?we?use?an?upsampled?version?of
%?the?first?LR?image?as?an?initial?estimate.
X?=?imOrigBig;
X_prev?=?X;
%imshow(X);
%PSF?=?generatePSF([1?0?0]?[1?2?1]?X);
blur?=?[0?1?0;...
????????1?2?1;...
????????0?1?0];
blur?=?blur?/?sum(blur(:));
sharpen?=?[0?-0.25?0;...
??????????-0.25?2?-0.25;...
???????????0?-0.25?0];
???????
%%?Main?loop
????%?---?Save?each?movie?frame?---
????if(outputframes)
????????imshow(X);
????????frames(movieCounter)?=?getframe;
????????movieCounter?=?movieCounter?+?1;
????end
????%?-----------------------------
????G?=?uint8(zeros(size(X)));
????for?ii=2:5??????????????????????????????????????????????????????????????????????????????????????????%delta_est矩陣中取2到5行
???????????temp?=?circshift(X?-[round(2?*?delta_est(ii1))?round(2?*?delta_est(ii2))]);??????????????????%參考幀偏移
???????????????????%temp?=?PSF?*?temp;
???????????temp?=?imfilter(temp?blur?‘symmetric‘);
???????????temp?=?temp(1:2:end?1:2:end);??????????????????????????????????????????????????????????????????????????%降采樣???????????????????????
???????????temp?=?temp?-?s{ii};?????????????????????????????????????????????????????????????????????????????????????%圖像相減
???????????????????%temp?=?PSF‘?*?temp;
???????????temp?=?imfilter(temp?sharpen?‘symmetric‘);
???????????temp?=?imresize(temp?2?‘nearest‘);????????????????????????????????????????????????????????????????????%插值
???????????
??????????P?=?circshift(temp?[round(2?*?delta_est(ii1))?round(2?*?delta_est(ii2))]);
?????????%?disp(class(P));
?????????%?disp(class(G));
?????????%disp(size(P));
?????????%disp(size(G));
?????????%?G?=?plus(PG);
?????????%?G?=?G+P;
?????????G?=?G?+?circshift(temp?[round(2?*?delta_est(ii1))?round(2?*?delta_est(ii2))]);??????????????
????end
????%?Now?that?we?have?the?gradient?we?will?go?in?its?direction?with?a?step
????%?size?of?lambda
????X?=?X?+?(lambda)?*?G;
????%figure;
????%imshow(X);
????I?=?X;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????3030??2013-12-09?14:36??iteratedbackprojection.m
- 上一篇:仿VS編輯界面,控件拖拽,屬性框
- 下一篇:導線平差計算EXCEL
評論
共有 條評論