# applying Butterworth filters on salt and paper image

9 visualizzazioni (ultimi 30 giorni)
Maitha Ahmad il 20 Apr 2021
Risposto: Hrishikesh Borate il 23 Apr 2021
Why we are not getting the filterd image? whats the error in the code?
figure(1);
original=imshow(I)
title('original image');
SP = imnoise(I,'salt & pepper',0.1);
figure(2);
imshow(SP)
title('salt & pepper noise');
% MATLAB Code | Butterworth Low Pass Filter
% 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(I);
% Getting Fourier Transform of the input_image
% using MATLAB library function fft2 (2D fast fourier transform)
FT_img = fft2(double(I));
% Assign the order value
n = 2; % one can change this value accordingly
% Assign Cut-off Frequency
D0 = 50; % one can change this value accordingly
% Designing filter
u = 0:(M-1);
v = 0:(N-1);
idx = find(u > M/2);
u(idx) = u(idx) - M;
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);
H = 1./(1 + (D./D0).^(2*n));
% Convolution between the Fourier Transformed
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
% Dispaly result
figure(3);
imshow(output_image);
title(' Result D0=50 ');
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Risposte (1)

Hrishikesh Borate il 23 Apr 2021
Hi,
It’s my understanding that you are trying to apply Butterworth filter on an image with salt and pepper noise, and you are unable to observe the desired output image.
This is because the output image is a gray scale image, it’s data type is double and as the display range is not defined, the default display range is used, which is [0,1].
One way to solve this, is to replace
imshow(output_image);
with
imshow(output_image,[]);
The empty matrix ([ ]) sets the default range parameter to [min(output_image(:)) max(output_image(:))].
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Categorie

Scopri di più su Image Filtering in Help Center e File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by