remove fringes in the backround
13 次查看(过去 30 天)
显示 更早的评论
Hey,
I am a beginner of Matlab,now I have an phantom images that I want to remove the fringes and then smooth the images for next step. But I have tried high pass filter and also low pass filter, but in vain. I have tried to make masks but the fringes still here. Or should I use the fft to find the corresponding frequency of the fringes and then cut it out, then use ifft to get the images, can anyone tell me the details about solving this probelem!
Your kind help will be highly appreciated!
0 个评论
回答(2 个)
Image Analyst
2012-3-21
You could get fringes from a variety of ways. It could be a Moire pattern (aliasing), it could be noise (hum or voltage line frequency noise), it could be Gibbs noise due to filtering, it could be some artifact of your reconstruction of image processing methods, etc. If the fringes are periodic they would show up as spikes in your Fourier Transform. You could then zero them out and inverse transform. You could try a bandstop filter with median filters, like this demo:
% Program to remove annoying ripples in an image by a band stop filter.
% by ImageAnalyst
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
imtool close all; % Close all imtool figures.
clear; % Erase all existing variables.
workspace; % Make sure the workspace panel is showing.
fontSize = 20;
% Change the current folder to the folder of this m-file.
% (The line of code below is from Brett Shoelson of The Mathworks.)
if(~isdeployed)
cd(fileparts(which(mfilename)));
end
originalGrayImage = im2double(imread('whitehouse.tif'));
subplot(2,2,1);
imshow(originalGrayImage);
title('Original Grayscale Image', 'FontSize', fontSize);
set(gcf, 'Position', get(0,'Screensize')); % Enlarge figure to full screen.
lowPassWindowWidth = 21;
highPassWindowWidth = 7;
Idm = medfilt2(originalGrayImage, [lowPassWindowWidth lowPassWindowWidth]);
subplot(2,2,2);
imshow(Idm);
title('Lowpass Image', 'FontSize', fontSize);
Ide = originalGrayImage - medfilt2(originalGrayImage, [highPassWindowWidth highPassWindowWidth]);
subplot(2,2,3);
imshow(Ide);
title('Highpass Image', 'FontSize', fontSize);
finalFilteredGrayImage = Idm + Ide;
subplot(2,2,4);
imshow(finalFilteredGrayImage);
caption = sprintf('Final Filtered Image =\nLow Pass Image + High Pass Image');
title(caption, 'FontSize', fontSize);
Paul
2012-3-20
Fringes are a product of filtering. You may not be able filter your way out of this situation. The fringes may have been introduced after aquisition as as a by-product of the discretization process. You may be able to adjust the dynamic range of your image to supress their visibility.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Image Processing Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!