<< unfollow SIP - Scilab Image Processing Toolbox unwrapp >>

SIP - Scilab Image Processing Toolbox >> SIP - Scilab Image Processing Toolbox > unwrapl


Unwraps phased images linearly

Calling Sequence

[unwrapped_phase, phase_jumps] = unwrapl(image[,threshold,step,direction])


is a matrix containing the unwrapped phase. Its values are not in 0-1 range, but depend of the number of phase jumps which were made You have to normalize it to 0-1 if you want to visualize it.
is a matrix containing the jumps of phase. It contains positive and negative values.
The gray-level image containing the wrapped phase.
If the difference between the value of two succesive pixels is higher than the threshold, we consider that there's a jump of phase in the image. Default=0.5
Try to be a little noise immune by not allowing another jump in the phase if the distance from the previous is less than the value of step. Default=0.
"h" to scan the image row by row, "v" to scan columnwise. Default="h"


Phased images are obtained in various interferometry domains. The phase (coded in gray levels) is represented as the altitude of each pixel. Because the phase is modulo (2*pi or 1 when working with gray levels), the absolute altitude is not known.

This function unwraps a phased image (gray levels) in the simplest manner: linearly. It works this way:

Very simple and quite fast algorithm. But very noise sensitive. Images to treat should be of excellent quality.

For those not familiar with phase unwrapping, I tried to write a very detailed example.


stacksize(1e7); // images are memory-expensive

pw=gray_imread(SIPDIR+'images/photonics/pyramide_wrapped.jpg'); //phase wrapped

xset("window",0); //create a 1st window to display the original image
xtitle("original wrapped phase")

//we try to show the object in 3D:
//because of phase jumps, it's not very good
xset("window",1);//the best of all: in a 3rd window, show the object in 3D
//we take 1 point on 4 to draw the object (faster and more beautifull than
//drawing all the points)
xtitle("original wrapped phase in 3D")

//now we unwrap the phase linearly:
//In this example we don't need any additionnal parameters
//because the image is of good quality.
//be a little patient for this operation
puw=unwrapl(pw);//phase unwrapped

//and we show the result
xset("window",2);//show the unwrapped phase in 2D: we have to put it in the 0-1 range
//to display it properly
xtitle("unwrapped phase");

xset("window",3);//we can now show the original object in 3D
// Again, we take 1 point on 4 to draw the object
xtitle("unwrapped phase in 3D");


An easy introduction to these problems can be found in "Methods for 2-D phase unwrapping in Matlab" by Jiri Novak.

A more complete one: "Phase unwrapping algorithms for radar interferometry: residue-cut, least-squares, and synthesis algorithms" by Zebker and Lu (Journal of Optical Society America, vol 15, n3, march 98)



The latest version of the Scilab Image Processing toolbox can be found at


See Also

<< unfollow SIP - Scilab Image Processing Toolbox unwrapp >>