How to turn code into a class?

3 views (last 30 days)
Matthew Worker
Matthew Worker on 17 Oct 2021
Edited: John Kelly on 8 Dec 2021
I coded the program below for frequency domain filtering and functions well.
I have to use it repeatedly to apply different filters so i made it into a function or class. I tried to learn what a class is, but i get the error illegal use
How can I do this?
%% 4. Perform frequency domain filtering by Convolution Theorem
%a) Step1: Given an input image im of size R x C, obtain the pading dimensions
imm=imread('skull.jpg');
im=imresize(imm,[226 187]);
im_double = im2double(im);% Converting the image class into "double" (currently uint8)
[R,C] = size(im_double);% reading the image size
imz = zeros(2*R,2*C);% creating a zero matrix
[r,c] = size(imz);% reading the size of the zero matrix
% Step 2:created a padded image
for i = 1:r
for j = 1:c
if i <= R && j<= C
imz(i,j) = im_double(i,j);
else
imz(i,j) = 0;
end
end
end
figure;
imshow(mat2gray(log(1+abs(imz))));
title('padded image fp');
% Step 3: creating another null array of same size
s = zeros(r,c);
% Multiplying the padded image with (-1)^(x+y)
for i = 1:r
for j = 1:c
s(i,j) = imz(i,j).*(-1).^(i + j);
end
end
figure;
imshow(s);
title('pre processed image(-1)^x+y*fp');
% Step 4: Computing the 2D DFT
IMZ = fft2(s);
figure;
imshow(mat2gray(log(1+abs(IMZ))));
title('2D DFT of the pre processed image Fp');
% Step 5: Generating the Real, Symmetric Filter Function using fregspace
[x,y] = freqspace(r,'meshgrid');
z = zeros(r,c);
for i = 1:r
for j = 1:c
z(i,j) = sqrt(x(i,j).^2 + y(i,j).^2);
end
end
% Choosing the Cut off Frequency and hence defining the low pass filter mask
H = zeros(r,c);
for i = 1:r
for j = 1:c
if z(i,j) <= 0.39 % cut-off frequency
H(i,j) = 1;
else
H(i,j) = 0;
end
end
end
figure;
imshow(mat2gray(log(1+abs(H))));
title('Low Pass Filter Mask, H');
% Step 6:Form the product using array multiplication
Hfp = IMZ.*H;
figure;
imshow(mat2gray(log(1+abs(Hfp))));
title('Low passed output, HFp');
% Step 7: gp(x,y) = {real{inverse DFT[G(u,v)]}(-1)^(x+y)
% calculation of inverse 2D DFT of the "out"
Hfp_inverse = ifft2(Hfp,'symmetric');
figure;
imshow(abs(Hfp_inverse));
title('inverse 2D DFT');
% post process operation
gp = zeros(r,c);
for i = 1:r
for j = 1:c
gp(i,j) = Hfp_inverse(i,j).*((-1).^(i+j));
end
end
figure;
imshow(gp);
title('inverse 2D DFT*(-1)^x+y, gp');
% Step 8: Obtain the final processed result g(x,y) by extracting the M X N region from the top, left quadrant of gp(x,y)
% let the smoothed image (or low pass filtered image) be "out"
g = zeros(R,C);
for i = 1:R
for j = 1:C
g(i,j) = gp(i,j);
end
end
figure;
subplot(2,1,1);
imshow(im_double);
title('input image f');
subplot(2,1,2);
imshow(g);
title('output image g');

Answers (1)

Steven Lord
Steven Lord on 17 Oct 2021
A function accepts input arguments and returns output arguments. What do you want your function to accept as inputs and what do you want it to return? Once you've decided that, follow the instructions on this documentation page to create your function file starting with the function definition line. Then fill in the guts of the function (modifying what you have above) so it computes the outputs from the inputs.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!