Image Smoothing not working
Show older comments
I have this image..
To detect it as a circle i tried smoothing on it,and tried to remove extra noise but it isn't working..
I = imread('x.jpg');
I = I(:,:,3);
myfilter = fspecial('gaussian',[3 3], 0.5);
myfilteredimage = imfilter(I, myfilter, 'replicate');
imshow(myfilteredimage)
and, i got the same result..
.......................................................................
So, which new method can be applied.?
1 Comment
Jan
on 29 Nov 2012
Formatted code looks nicer.
Answers (1)
Image Analyst
on 29 Nov 2012
Edited: Image Analyst
on 29 Nov 2012
Your filter is so tiny and narrow that it's essentially almost a delta function. So you won't see a very noticeable effect. Try making the window larger than 3 by 3 and the spread of the Gaussian more than half a pixel. See this demo:
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
workspace; % Make sure the workspace panel is showing.
format longg;
format compact;
fontSize = 20;
grayImage = imread('circles.png');
[rows columns numberOfColorChannels] = size(grayImage);
if numberOfColorChannels > 1
grayImage = rgb2gray(grayImage);
end
% Display the original gray scale image.
subplot(2, 3, 1);
imshow(grayImage, []);
title('Original Grayscale Image', 'FontSize', fontSize);
% Enlarge figure to full screen.
set(gcf, 'units','normalized','outerposition',[0 0 1 1]);
% 3x3 filter
filterWidth = 3;
gaussianSpread = 0.5;
myfilter = fspecial('gaussian', [filterWidth filterWidth], gaussianSpread);
% Display the original gray scale image.
subplot(2, 3, 2);
imshow(myfilter, []);
title('The Filter Kernel', 'FontSize', fontSize);
myfilteredimage = imfilter(grayImage, myfilter, 'replicate');
% Display the original gray scale image.
subplot(2, 3, 3);
imshow(myfilteredimage, []);
title('Filtered Grayscale Image', 'FontSize', fontSize);
% 13x13 filter
filterWidth = 13;
gaussianSpread = 5;
myfilter2 = fspecial('gaussian', [filterWidth filterWidth], gaussianSpread);
% Display the original gray scale image.
subplot(2, 3, 5);
imshow(myfilter2, []);
title('The Filter Kernel', 'FontSize', fontSize);
myfilteredimage2 = imfilter(grayImage, myfilter2, 'replicate');
% Display the original gray scale image.
subplot(2, 3, 6);
imshow(myfilteredimage2, []);
title('Filtered Grayscale Image', 'FontSize', fontSize);
Categories
Find more on Image Category Classification 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!