Thursday, March 12, 2009

Frequency-Domain Laplacian Filter

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Title : Laplacian Filter %
% Domain: Frequency %
% Author: S.Ganesh Babu %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all; close all ;clc;
f = im2double(imread('pout.tif'));
figure,imshow(f),title('Original Image');
PQ = paddedsize(size(f)); % Get the size of the Image
% Pad the image with Zeros
%---------------------------------------------

h=[0,1,0;1,-4,1;0,1,0]; % Laplacian Mask
H=ifftshift(freqz2(h,PQ(1),PQ(2))); % Frequency respones of h (Filter)

%--------------------------------------------
F = fft2(f, size(H, 1), size(H, 2)); % Fourier version of Image
g = real(ifft2(H.*F)); %| Multiplying filter Co-efficient with Image
%| then takes the Inverse Fourier of Real Part
g = g(1:size(f,1), 1:size(f,2)); % Make the image in Original Size
%--------------------------------------------
figure, imshow(g),title('Laplacian Filtered');
%--------------------------------------------
g1= f-g; %| High-boost filtering
%| Highpass = 1-Lowpass;
%| Enhanced Image = bluredImage - Laplacianfiltered Image;
%--------------------------------------------
figure,imshow(g1),title('Enhanced Image');

function PQ = paddedsize(AB, CD, PARAM)
if nargin == 1
PQ = 2*AB;
elseif nargin == 2 & ~ischar(CD)
PQ =AB + CD - 1;
PQ = 2 * ceil(PQ / 2);
elseif nargin == 2
m = max(AB);
p = 2^nextpow2(2*m);
PQ = [p, p];
elseif nargin == 3
m = max([AB CD]);
p = 2^nextpow2(2*m);
PQ = [p, p];
else
error('Wrong number of inputs.');
end

No comments: