comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: Phase Unwrapping Algorithms?
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
Re: Phase Unwrapping Algorithms? [message #7450] Wed, 20 November 1996 00:00
Christian Soeller is currently offline  Christian Soeller
Messages: 46
Registered: August 1996
Member
wsryu@fas.harvard.edu (William Ryu) writes:

> I am interesting in phase unwrapping algorithms which can handle noisy
> data. I understand this to be a common procedure when doing FFT analysis
> of interference patterns, and was wondering if anyone has implemented such
> routines in IDL.

First of all, it is definitely a non-trivial problem in the presence of noise.
When I was doing phase shift interferometry I came across a very clever
paper on the subject in which the authors makes use of the (again
clever) observation that the phase unwrapping problem can be
formulated in a way that is formally similiar to the digitized poisson
equation. It can therfore be solved with the same methods used for
numerically solving the poisson equation. A colleague of mine
implemented the algorithm in C and found it to work well with noisy
data.

The reference is (in Bibtex format):
@Article{Ghiglia94,
author = {D. C. Ghiglia and L. A. Romero},
title = {Robust two-dimensional weighted and unweighted phase
unwrapping that uses fast transforms and iterative methods},
journal = {J. Opt. Soc. Am. A},
year = 1994,
volume = 11,
pages = {107-117}
}
I am not aware of an IDL implementation but it should be worthwile implementing
as it uses FFTs and similiar stuff that is easily done within IDL.

There are many more articles on the subject which is important in the automated
analysis of phase shift interferograms, etc. Journals of special interest are
JOSA and Applied Optics. Another reference is:
@Article{Huntley89,
author = {J. M. Huntley},
title = {Noise-immune phase unwrapping algorithm},
journal = aop,
year = 1989,
volume = 28,
number = 15,
pages = {3268-3270}
}

Hope this get's you started,

Christian

------------------------------------------------------------ --------
Christian Soeller mailto: csoelle@sghms.ac.uk
St. Georges Hospital Medical School Dept. of Pharmacology
Cranmer Terrace London SW17 0RE
Re: Phase Unwrapping Algorithms? [message #7451 is a reply to message #7450] Wed, 20 November 1996 00:00 Go to previous message
Sergei Senin is currently offline  Sergei Senin
Messages: 23
Registered: February 1996
Junior Member
William Ryu wrote:
> Let's say we have a 2D matrix of complex data a+bi and would like to
> extract the phase value. A simple way would be to take arctan (b/a) but a
> problem exists because arctan is modulo 2PI. The data often gets
> "wrapped."

Time domain phase unwrapping:
K.W.Wan, J. Austin, E. Vilar, "A Novel Approach to the Simultaneous
Measurement
of Phase and Amplitude Noise of Oscillators', 44th Ann. Symp. on Freq.
Control,
Baltimore, USA, May 1990, 5p."

For fractional phase calculations (Sorry, the programs are not exactly
very well written)
;----------------------------------------------------------- ----
;fract_phas.pro
;----------------------------------------------------------- ----
;+
; NAME: fract_phas
; PURPOSE: Calculates fractional phase (phase difference between i and
i+1
; samples) for the input IQ array
; CATEGORY: Signal Processing
; CALLING SEQUENCE: y=fract_phas(x)
; INPUTS: x- two dimensional array, x(0,*) - I signal , x(1,*) - Q
signal
; MODIFICATION HISTORY:
; ss@.ee.port.ac.uk on Wed Mar 6 09:58:10 GMT 1996 , UoP, MT&SPRG
;-
;----------------------------------------------------------- ----
; fract_phas.pro start line
;----------------------------------------------------------- ----
function fract_phas, x
y=imaginary(alog((complex(x(0,*), x(1,*)))* $
(shift(complex(x(0,*), -x(1,*)), 0, 1))))
nn=n_elements(y)
y=reform(y,nn)
y=double(y)
;y(0)=0.0d
return, y
end
;----------------------------------------------------------- ----
; fract_phas.pro stop line
;----------------------------------------------------------- ----

For phase curve:
;----------------------------------------------------------- -----------
;phas_sum.pro
;----------------------------------------------------------- -----------
;+
; NAME: phas_sum
; CATEGORY: Signal Processing
; CALLING SEQUENCE:c6 = phas_sum(c5)
; INPUTS: c5 - output from fract_phas
; OUTPUTS: c6 - phase curve with trend
; MODIFICATION HISTORY:
; ss@.ee.port.ac.uk on Mon Apr 15 12:34:26 BST 1996
;-
;----------------------------------------------------------- -----------
;phas_sum.pro start line
;----------------------------------------------------------- -----------
function phas_sum, c5, c6
c6=fltarr(n_elements(c5))
c6(0) = c5(0)
for i = 1L, n_elements(c5)-1L do begin
c6(i) = c6(i-1) + c5(i)
endfor
return, c6
end
;----------------------------------------------------------- -----------
;phas_sum.pro stop line
;----------------------------------------------------------- -----------



Cheers

Sergei
http://www.ee.port.ac.uk:80/~ss-www/WAVE/index.html
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Bug in IDL {alpha OSF unix 4.0.1} SMOOTH()
Next Topic: MAP_CONTINENTS procedure

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Wed Oct 08 13:43:34 PDT 2025

Total time taken to generate the page: 0.00670 seconds