(c2) Stereoscopic 3D reconstruction of a curvi-linear feature
Now we are getting into real stereoscopy, the reconstruction of the 3D geometry
of a curvi-linear feature that is visible in a pair or coaligned STEREO images.
What we mean with a curvi-linear feature is a one-dimensional structure with
arbitrary curvature. It does not neet to be a strictly 1D (and thus unresolved)
structure in the mathematical sense, as long as a 1D structure can be uniquely
localized in both images, either by an edge or by its cross-sectional
centroid. In practice, such curvi-linear futures could be coronal loops or
filaments, either directly detectable in the EUV images or in their highpass-filtered
versions. The IDL procedure EUVI_STEREO.PRO will use a highpass-filter (defined
by the variable NSM=3 [or 5, 7, ...] which defines the smoothing variable of the
subtracted smoothed image) to enhance curvi-linear features. The routine then
allows a manual input of some spline points of a curve in image A, performs
a spline interpolation and transforms its coordinates to image B for an altitude
of h=0 and hmax (e.g. = 0.1 solar radii). This visualizes the parallax effect in
image B for this height range h=[0,hmax]. The actual coordinates of the loop
have then also to be input in image B, usually inside the physical solution range
h=[0,hmax]. From the measured offset, the 3D loop coordinates are then
computed and stored in the file LOOPFILE. The procedure can be repeated for
an arbitrary number of loops, and the 3D coordinates will be appended in the
file LOOPFILE. Erroneous entries can also be edited out in the LOOPFILE.
Let us assume you have already done the image coalignment (a2) and tested
its accuracy (b2), so that the data in IMAGE_PAIR and PARA can be restored from
the savefile.
IDL>
savefile='loop_A.sav'
loopfile ='loop_A.dat'
;output filename where 3D coordinates of loops are stored
nsm =3
;nsm=3, 5, ..., smoothing boxcar for highpass filtering
fov =[640,820,800,980]
;i1,j1,i2,j2 coordinates of field-of-view
poly =2
;poly=2, degree of polynom for fitting heights h(s)
hmax =0.1
;e.g. hmax=0.1 or 0.5 solar radii (maximum height range)
filter =1
;0=no filter, 1=highpass filter
window =0
;IDL display window
ct =1
;IDL color table
wave ='171'
;wavelength '171', '195',' 284', '304'
gamma =1.
;slope of color scale
inv =0
;0=straight color scale, -1=invert IDL color table
restore,savefile
;restore saved data from step (2a)
euvi_stereo,image_pair,para,nsm,fov,poly,hmax,loopfile,filter,window,ct,wave,gamma,inv
The program prompts you now to narrow down the optimum field-of-view that
encompasses an individual loop for stereoscopical triangulation.
Click on the bottom-left and top-right corner of the desired enlarged
field-of-view.
You selected a snug area around a central loop, which is now displayed
enlarged for both the spacecraft A and B image. You are now prompted
to click a number of say 5-8 loop positions in image A (right).
You end the sequence by clicking onto the empty field above image A.
The progam switches now to image B and displays the projected
coordinates of the loop (red) at a lower height of h=0 and a maximum height
of h=hmax (e.g., 0.1 solar radii). The projected height range of every
loop position is high-lighted with a black-white bar and you click the
corresponding height position for each loop position in image B.
After finishing all points of a loop you are asked whether you want to
save these loop coordinates. If you are happy you answer with yes and
the spline point coordinates are stored in the file loop_A.dat, or
discarded else. You can now repeat the whole procedure for every loop
and should always get an updated display of the previously traced
loops. You can interrupt or resume additional tracing of loops ad
infinitum. If you have some stored some bad choices of loop coordinates
in the file loop_A.dat, you can edit them out manually.
Once you save the loop coordinates, they will be written into the outputfile
"loop_A.dat". The content of the file will look like this, containing 6 lines
for each of the 6 loop spline points, where the columns contain:
(1) loop identification number, (2) x-pixel (in image A), (3) y-pixel (in image A),
(4) z-coordinate (in pixels), (5) the polygon-fitted height (in pixels),
(6) the raw values of the stereoscopically correlated height (in pixels),
(7) the error of the stereoscopic height measurement (in pixels),
(8) the smoothing constant NSM, (9) the degree of the polygon POLY,
(10) the chi-square of the polygon height fit, (11) the quality factor of
loop A (fraction of pixels along the loop that have a peak at the tracing ridge),
and (12) the quality factor of loop B:
You can now repeat the loop tracing by repeated calling of the routine
EUVI_STEREO.PRO and the 3D coordinates will be appended each time into
your datafile loop_A.dat. Whenever you trace a new loop in the same image pair,
the program first overplots the old loops for your orientation. For example,
after 30 traced loops the display may look like this:
The 3D coordinates of the loop spline points are interpolated with higher
resolution with the routine EUVI_LOOPFILE.PRO and listed in the file "loop_A2.dat",
with [x,y,z] in units of solar radii with respect to Sun center:
tablefile='table2.dat'
;(output for Table 2 in paper Aschwanden et al. 2008 given below)
loopfile2='loop_A2.dat'
;file with interpolated loop 3D coordinates
euvi_loopfile,savefile,loopfile,tablefile,loopfile2
The output file "loop_2A.dat" has 7 columns, containing: (1) loop identification
number, (2) loop point position number i, (3) x_i coordinate, (4) y_i coordinate,
and (5) z_i coordinate (in solar radii with respect from Sun center),
(6) loop length coordinate s_i (in units of Mm), and (7) altitude h_i.
The output for the first loop is:
For a full documentation of this example see the publication:
Aschwanden,M.J., Wuelser,J.P., Nitta,N., and Lemen,J. 2008, (ApJ)
URL1="../../eprints/2008_stereo.pdf"
First 3D reconstruction of coronal loops with the STEREO A+B spacecraft:
I. Geometry