img = imread( ('eight.tif') ); % read image, use gray-level images here.
A = imnoise(img,'Gaussian',0,1);IMG = fft2( img ); % Fourier of img
sz = size( img );G = fspecial('gaussian' ,[5,5]); % create a filter with std sigma same size as img
%# Filter it
h = imfilter(A,G,'same'); H = fft2( h ); % Fourier of filter
F = IMG.*H; % filter in Fourier space
f = ifft2( F ); % back to spatial domain.
figure, imagesc(f);title('Gaussian filter in Frequency Domain')figure,imshow(img),title('Original Image');figure,imshow(A),title('Noisy Image');imshow(f)% Calculate MSE, mean square error.
img =im2double(img);f =im2double(f);[M N] = size(img);error0 = img - f;Mean_Square_Error = sum(sum(error0 .* error0)) / (M * N)and the MSE must be less than one, but here greater than one ?
MATLAB: I have a question in image processing, this code shows how to add noise to the image and then retrieve it again … The problem when retrieving the image error occurs and show the image that was retrieved in white
fourier filteringimage processingImage Processing Toolbox
Best Answer
Hi Ahmed
I have applied some changes to your code but perhaps you would like to consider using a different filter.
attached test567.m
1.
reference image
2.
really contaminated image
.
.
.
.
Please note that min max values of the filter itself are really high, and the range between such min max is really narrow compared to the values of literally any pixel of the filter.
You may want a higher range.
.
.
.
apparently command immse suggested by Image Analyst yields an error assessment way larger than applying Ahmed's error formula.
either im2double() on unit8 type or the other way round, or uint8() on double type both ways get to same error figure.
.
Ahmed
if you find this answer useful would you please be so kind to consider marking my answer as Accepted Answer?
To any other reader, if you find this answer useful please consider clicking on the thumbs-up vote link
thanks in advance
John BG
jgb2012@sky.com