% ============================================================================= % Math 336 - Image Processing - Laboratory 3 % % A Matlab script for applying the 'motion' filter to the lena image. % % Marty Kandes % Department of Physics % San Diego State University % Fall 2008 % ----------------------------------------------------------------------------- clear all; close all; clc; f = imread('lena.jpg'); f = mat2gray(f); F = fft2(f); F = fftshift(F); imwrite(mat2gray(log(1+abs(F))),'lenaFFT.jpg','jpg'); h = fspecial('motion',20,45); g = imfilter(f,h,'replicate','conv'); G = fft2(g); G = fftshift(G); imwrite(mat2gray(log(1+abs(G))),'lenablurFFT.jpg','jpg'); H = fft2(h); H = 1./H; h = ifft2(H); h = mat2gray(abs(h)); r = imfilter(g,h,'replicate','conv'); r = mat2gray(r); R = fft2(r); R = fftshift(R); imwrite(mat2gray(log(1+abs(R))),'lenarecoverFFT.jpg','jpg'); %r = deconvblind(g,h); imwrite(g,'lenablur.jpg','jpg'); imwrite(r,'lenarecover.jpg','jpg'); clear all; close all; clc; f = imread('lena.jpg'); f = mat2gray(f); f = imnoise(f,'gaussian'); F = fft2(f); F = fftshift(F); imwrite(mat2gray(log(1+abs(F))),'lenanoisyFFT.jpg','jpg'); h = fspecial('motion',20,45); g = imfilter(f,h,'replicate','conv'); G = fft2(g); G = fftshift(G); imwrite(mat2gray(log(1+abs(G))),'lenanoisyblurFFT.jpg','jpg'); H = fft2(h); H = 1./H; h = ifft2(H); h = mat2gray(abs(h)); r = imfilter(g,h,'replicate','conv'); r = mat2gray(r); R = fft2(r); R = fftshift(R); imwrite(mat2gray(log(1+abs(R))),'lenarecoverFFT.jpg','jpg'); %r = deconvblind(g,h); imwrite(f,'lenanoisy.jpg','jpg'); imwrite(g,'lenanoisyblur.jpg','jpg'); imwrite(r,'lenanoisyrecover.jpg','jpg');