# MATLAB – Ideal Highpass Filter in Image Processing

Last Updated : 22 Apr, 2020
In the field of Image Processing, Ideal Highpass Filter (IHPF) is used for image sharpening in the frequency domain. Image Sharpening is a technique to enhance the fine details and highlight the edges in a digital image. It removes low-frequency components from an image and preserves high-frequency components. This ideal highpass filter is the reverse operation of the ideal lowpass filter. It can be determined using the following relation- where, is the transfer function of the highpass filter and is the transfer function of the corresponding lowpass filter. The transfer function of the IHPF can be specified by the function- Where,
• is a positive constant. IHPF passes all the frequencies outside of a circle of radius from the origin without attenuation and cuts off all the frequencies within the circle.
• This is the transition point between H(u, v) = 1 and H(u, v) = 0, so this is termed as cutoff frequency.
• is the Euclidean Distance from any point (u, v) to the origin of the frequency plane, i.e,
Approach: Step 1: Input – Read an image Step 2: Saving the size of the input image in pixels Step 3: Get the Fourier Transform of the input_image Step 4: Assign the Cut-off Frequency Step 5: Designing filter: Ideal High Pass Filter Step 6: Convolution between the Fourier Transformed input image and the filtering mask Step 7: Take Inverse Fourier Transform of the convoluted image Step 8: Display the resultant image as output
Implementation in MATLAB:
 % MATLAB Code | Ideal High Pass Filter   % Reading input image : input_image  input_image = imread('[name of input image file].[file format]');   % Saving the size of the input_image in pixels- % M : no of rows (height of the image) % N : no of columns (width of the image) [M, N] = size(input_image);   % Getting Fourier Transform of the input_image % using MATLAB library function fft2 (2D fast fourier transform)   FT_img = fft2(double(input_image));   % Assign Cut-off Frequency   D0 = 10; % one can change this value accordingly   % Designing filter u = 0:(M-1); idx = find(u>M/2); u(idx) = u(idx)-M; v = 0:(N-1); idy = find(v>N/2); v(idy) = v(idy)-N;   % MATLAB library function meshgrid(v, u) returns 2D grid %  which contains the coordinates of vectors v and u.  % Matrix V with each row is a copy of v, and matrix U  % with each column is a copy of u [V, U] = meshgrid(v, u);   % Calculating Euclidean Distance D = sqrt(U.^2+V.^2);   % Comparing with the cut-off frequency and  % determining the filtering mask H = double(D > D0);   % Convolution between the Fourier Transformed image and the mask G = H.*FT_img;   % Getting the resultant image by Inverse Fourier Transform % of the convoluted image using MATLAB library function % ifft2 (2D inverse fast fourier transform)   output_image = real(ifft2(double(G)));   % Displaying Input Image and Output Image subplot(2, 1, 1), imshow(input_image), subplot(2, 1, 2), imshow(output_image, [ ]);

Input Image – Output: