還是照着書上推了一遍,
反正寫一遍之后很好理解,
也許是只是這點算法比較簡單基礎。。。
講到底還是統計的知識,二維的最小二乘法,
讓均方差最小
放代碼:
I=imread('src.png'); I0=rgb2gray(I); subplot(151); imshow(I0); title('src'); H=fspecial('motion',30,45); %運動卷積的偏移矩陣 MotionBlur=imfilter(I0,H,0,'conv'); %卷積 MF=imfilter(I0,H,'circular','conv');%圖像大小通過將圖像看成是一個二維周期函數的一個周期來擴展 subplot(152); imshow(MotionBlur); title('MotionBlur') subplot(153); imshow(MF); title('MF') wnr=deconvwnr(MotionBlur,H); subplot(154); imshow(wnr) title('MotionBlur復原') wnr1=deconvwnr(MF,H); subplot(155); imshow(wnr1) title('MF復原')
有個問題就是imfilter的補充矩陣,里面的circular是按周期來補矩陣,這個復原效果比較好。
直接補0,是MotionBlur這個效果。
參考《MATLAB圖像處理超級學習手冊》