維納濾波和編碼曝光PSF去除運動模糊【matlab】


編碼曝光知識 - ostartech - 博客園 https://www.cnblogs.com/wxl845235800/p/8276362.html

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%% 作者:WWC %%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 維納濾波
clc; clear; close all; %% 讀取圖片 I=imread('飛機.png'); I2=imfilter(I,[0 0 0 0 0 0 0 0 5/25 4/25 4/25 3/25 3/25 2/25 2/25 1/25 1/25]); I2=imnoise(I2,'gaussian',0,0.001); I1=imfilter(I2,[1/9 1/9 1/9;1/9 1/9 1/9;1/9 1/9 1/9;]); I_hsv=rgb2hsv(I1); I=I_hsv(:,:,3)*255; %% 頻譜 估計運動模糊方向(光斑的角度與真實圖像運動模糊距離垂直) img_fft=fftshift(fft2(I)); N=abs(img_fft); P=(N-min(min(N)))/(max(max(N))-min(min(N)))*225; figure;imshow(P); %% 估計運動模糊長度(兩個最小點之間的距離為近似運動模糊距離) h=fspecial('sobel'); img_double=double(I); J=conv2(img_double,h,'same'); IP=abs(fft2(J)); S=fftshift(real(ifft2(IP))); figure;plot(S); %% 進行維納濾波 f = im2double(I); PSF = fspecial('motion',9,180);% 分別填寫上述估計的運動模糊距離和運動模糊方向 為普通相機PSF %PSF=[0 0 0 0 0 0 0 0 1/25 1/25 2/25 2/25 3/25 3/25 4/25 4/25 5/25];% 編碼相機的PSF frest1 = deconvwnr(f,PSF,0.02); frest2=cat(3,I_hsv(:,:,1),I_hsv(:,:,2),frest1/255); frest2=hsv2rgb(frest2); figure,imshow(I2); title('原圖像'); figure,imshow(frest2); title('維納濾波處理后圖像'); imwrite(I2,'原圖.jpg'); imwrite(frest2,'普通曝光后濾波.jpg');

 假設曝光時間0.2s,在曝光時間內走過的像素點數為為25,均勻分成9份,分別走過的像素點為1 1 2 2 3 3 4 4 5,

 則設計36位編碼為100010001010101011011011111111111111。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM