remove fringes in the backround

조회 수: 13 (최근 30일)
xsfeng
xsfeng 2012년 3월 13일
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!

답변 (2개)

Image Analyst
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);
Here's the demo image http://i44.tinypic.com/mi30ur.jpg
  댓글 수: 1
xsfeng
xsfeng 2012년 3월 21일
I have tried this, first use the lowpass filter which helps getting rid of the noise, but for the highpass filter, no change about the tilted stripes caused by the grating diffraction in the experiment.
I also did fourier transformation but didn't see the spike of the fringes frequency,maybe the fringes' frequency is so close to the images.

댓글을 달려면 로그인하십시오.


Paul
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.
  댓글 수: 2
xsfeng
xsfeng 2012년 3월 21일
Thank you for your information, Paul. I tried to adjust the dynamic range and suppress the visibility, it dose remove some of the noise, but for the fringes still there.
Image Analyst
Image Analyst 2012년 3월 21일
Where did you upload your image(s) to?

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Image Processing Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by