Professional Documents
Culture Documents
clear;
close all;
%% Upload Image
A=imread(HW3_2_1)
A=double(A);
subplot(121)
imshow(A),title('Original Image')
for i=1:size(big_image,1)-(m-1)
for j=1:size(big_image,2)-(n-1)
matrix=big_image(i:i+(m-1),j:j+(n-1),:);
mat_sort = sort(matrix(:));%tmp(:) converts 2D
matrix to 1D matrix
output(i,j) = mat_sort(med_indx);
end
end
inverse_filt = InverseFilter(NoiseImage1);
% call InverseFilter function
weiner_filt = WienerFilter(inverse_filt);
% call WienerFilter function
subplot(1,2,2); imshow(weiner_filt); title('Restored
Image');
%% InverseFilter Function
function InversFilterImage = InverseFilter(x)
x=double(x);
[rowSize,columnSize] = size(x);
k = 3;
row = 2*rowSize;
column = 2*columnSize;
zeros1 = zeros((row),(column));
zeros2 = zeros((row),(column));
%%%% padding %%%%
for i=1:rowSize
for j=1:columnSize
zeros1(i,j)=x(i,j);
end
end
%%%% center the transform %%%%
for i=1:rowSize
for j=1:columnSize
zeros2(i,j)=zeros1(i,j)*((-1)^(i+j));
end
end
%%% Fourier Transform %%%
fftZeros2=fft2(zeros2);
[x,y] = freqspace(column,'meshgrid');
z = zeros(row,column);
for i = 1:row
for j = 1:column
z(i,j) = exp(-k*((x(i,j).^2 + y(i,j).^2)^(5)));
end
end
filter = fftZeros2.*z;
%%%% Inverse Forier Transform %%%%
ifftFilter=ifft2(filter);
for i=1:row
for j=1:column
ifftFilter(i,j)=ifftFilter(i,j)*((-1)^(i+j));
end
end
%% WienerFilter Function %%
function WienerFilterImage=WienerFilter(y)
WienerFilterImage= wiener2(y,[5 5]);
end