Interferogram phase unwrapping by Takeda's method

36 次查看(过去 30 天)
I have .mat file which contains five multiplexed interferograms. This means five fringe patterns have been captured simultaneously, i.e., I = I1 + I2 + I3 + I4 + I5. I need to estimate the phase of each interferogram. How do I do that?
The spectrum of I is in the given image:

回答(1 个)

Ayush Anand
Ayush Anand 2023-12-14
Hi Araf,
You can use Takeda's method for phase extraction from a single fringe pattern in interferometry if you know the carrier frequency. As you have multiplexed interferograms, you would need to extend this method to handle the superposition of multiple fringe patterns. The process would involve separating the individual fringe patterns before applying Takeda's method to each one. Here’s a brief overview of the steps involved:
  1. Apply Fourier Transform: Perform a Fourier transform on the composite interferogram.
  2. Filtering: Design and apply bandpass filters in the frequency domain to isolate each individual interferogram's frequency components. This step assumes you know the carrier frequencies for the individual interferograms.
  3. Inverse Fourier Transform: Apply the inverse Fourier transform to the filtered spectrum to get a complex image that contains phase information.
  4. Extract Phase Information: Use the angle of the complex image to obtain the phase.
  5. Unwrap Phase: The extracted phase will be wrapped within the range [-π, π], so you'll need to perform phase unwrapping.
Here is an example of how you could implement this in code:
load('yourfile.mat'); %Load the file
% Perform Fourier Transform
I_fft = fftshift(fft2(I)); % I is the composite interferogram variable; fftshift rearranges a %Fourier transform X by shifting the zero-frequency component to the center of the array.
filter_I1 = ...; % Design a filter for the first interferogram, this would require knowing the %carrier frequencies for each interferogram
I1_fft_filtered = I_fft .* filter_I1;
%Inverse Fourier Transform with ifftshift to undo the result of fftshift.
I1_complex = ifft2(ifftshift(I1_fft_filtered));
%Extract phase
phase_I1 = angle(I1_complex);
phase_I1_unwrapped = unwrap(phase_I1); %unwrap corrects the discontinuities in %the phase angle data that are a result of the angle wrapping
You can refer to the following for more information:
  1. https://www.mathworks.com/matlabcentral/fileexchange/24852-windowed-fourier-transform-for-fringe-pattern-analysis(MATLAB File on Windowed Fourier transform for fringe pattern analysis)
  2. https://www.mathworks.com/help/matlab/ref/fftshift.html(Official documentation for “fftshift” function in MATLAB)
  3. https://www.mathworks.com/help/matlab/ref/unwrap.html(Offiical documentation for “unwrap” function in MATLAB)
I hope this helps!

Community Treasure Hunt

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

Start Hunting!

Translated by