How do you apply a 3x3 low pass filter on an image that is noisy (salt and pepper) , and what is it supposed to do?
Show older comments
is it supposed to be like
inpict = imread('Q1_noisy_image (1).tif');
A = imgaussfilt(inpict,[3 3]);
imshow(A)
Answers (1)
Image Analyst
on 2 Dec 2023
Basically the same as your other question where you used the median filter. So, borrowing from my answer there:
If inpict is a gray scale image, that would apply a median filter to ALL pixels in the image, not just the impulse/salt&pepper noise.
A gaussian filter is a low pass filter that smooths (blurs) noisy areas.
If you want a filter to operate on only salt and pepper noise, you have to
- First filter the whole image
- Get a mask of the salt and pepper noise, where values are either 0 or 255 or whatever values you want to use.
- Replace the original image with the filtered values but ONLY within the noise mask, not everywhere.
Something like
filteredImage = imgaussfilt(grayImage, [3,3]);
mask = (grayImage == 0) | (grayImage == 255);
grayImage(mask) = filteredImage(mask);
For a full demo, see my attached demos. For a color image, do it one color channel at a time.
Categories
Find more on Image Filtering in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!