Loop Recognition


  • Inputs: image of corona taken in one of 10 temperature filters on AIA

  • Outputs: list of endpoints (area defined by circle or polygon of solar coordinates) and time plus image with cool and hot loops highlighted

  • Problem: The loop recognition algorithm will start with an image taken in one of the 10 channels on AIA that can image the corona in a range of temperatures between 100,000 K and 20 MK. The loop recognition should identify the following types of loops in the image:
    • Loops stretching across the field of view
    • Loops that stretch perpendicular to the field of view (and appear to be almost 1 dimensional)
    • Individual loops tangled up in a bundle of loops (like “spaghetti”)
    • Cool loops with a sharp, thin appearance (“vermicelli”)
    • Hot loops with a fuzzy, thick appearance (“fettucine”)

The algorithm will identify a loop by highlighting it on the input image and creating a list of times and solar endpoints associated with the loop. The endpoints will be given as an area defined by solar coordinates (circular or polygonal area rather than a single point).

Ideally, identification of loops should extend from warmer to cooler parts of the corona. (Should this be an overlay of images, or an association of loops in different images, ie. A table of probable associated loops within a given solar area and time window?) Loops will most likely be identified in sets of “hot” and “cold”. If necessary, further subsets will be defined by temperature. All loops within a subset of temperatures will be identified with a false colour unique to that temperature; otherwise loops will be identified by one colour as “hot” and by a second colour as “cold”.

The loops identified in LoopRecognition will be associated with magnetic field lines found in MagneticFieldExtrapolation during the HelicityComputation analysis. In addition, electric current will be calculated on a pixel-by-pixel basis from the HMI magnetogram. The electric current values will be added to the pixel goodness weighting matrix that determines whether a pixel should be classified with a loop.

Literature Search

Related Topics:

Routines and Libraries

  • Strous loop pixel labelling algorithm, referred to by Lee, Newman and Gary
  • Oriented Connectivity Method, by Lee, Newman and Gary
  • Add electric current to pixel weighting in OCM method - ECA, 20/04/05
  • Carsten Steger's curve tracing routines (part of the 'GRASP' download) available at: http://www.lsc-group.phys.uwm.edu/~ballen/grasp-distribution/GRASP/src/timefreq/
  • Karthik Raghupathy's 'Improved Curve Tracing' MATLAB source code.

Test Data

TRACE images can be used for loop recognition testing. Wavelet, curvelet, and ridgelet algorithms can be investigated for loop recognition; curvelets are recommended for low-contrast loops. Cristina Mandrini has fortran code for solar loop wavelet analysis.


David Williams of MSSL (Solar & Stellar Physics Group) has suggested the 'Curvelet transform' as a possible starting point for the Loop Recognition algorithm to be deployed on the eSDO project. The transform offers improved image noise reduction and enhanced image contrast over the more well-established Wavelet transform technique, especially with anisotropic images such as coronal loops.

I have so far discovered two websites offering software add-ons for the Curvelet transform, one supporting MATLAB, the other IDL (see 'useful links' below). MATLAB support is provided by the BEAMLAB 200 library and is available as a free download. Unfortunately the installation is a mixture of readable MATLAB sources (.m files) and binaries, making it impossible to fully inspect the implementation of the algorithms. IDL support is provided by Multiresolution.com, a commercial installation consisting of IDL sources (.pro files) and binaries. -- MikeSmith

The paper on "Automated Detection of Solar Loops" by Lee, Newman, and Gary looks extremely useful. I have extracted out the algorithm steps for their oriented connectivity method at LoopRecognitionOCMsteps. --Main.ElizabethAuden

Coronal Loop Recognition experiments in ‘C’


After several weeks trawling through literature dealing with a variety of curve detection methods, I settled upon the ‘Improved Curve Tracing in Images’ work of Karthik Rangupathy as a starting point for own experiments into Coronal Loop Recognition. The point of such an experiment is to find and write in ‘C’ a fast, effective alternative to OCM, i.e. one that doesn’t rely on magnetogram data as an input.

Rangupathy’s work - which was the basis of his Masters degree at Cornell University - distinguishes between the problems of curve detection and curve tracing. There are several good techniques available for detecting curves, but more often than not these don’t identify a curve as a human observer would, that is they fail to follow a curve as it crosses other curves, fades out and reappears. Curve tracing techniques, on the other hand, attempt to deal with these hurdles and identify a curve as a person would. Coronal Loop recognition is essentially a curve tracing problem, thus making Rangupathy’s work an attractive starting point.

Rangupathy’s work is current (his thesis was published in August 2004), so other contemporary curve detection processes have been considered. This includes the curvelet, which though excellent for curve detection in noisy images isn’t deemed a suitable curve tracing technique. Another advantage of Rangupathy’s method is that the detection process can filter on line width (in pixels). As the line thickness of coronal loops varies with temperature, the filter could be used to extract loops of a user-specified thermal range.

Rangupathy’s sees the problem of curve tracing as a 2-fold process: a local process and a global process. The local process identifies pixels in small (‘local’) neighbourhoods that belong to the same curve, while the global process serves to identify disconnected curve segments as part of a larger curve.

Rangupathy’s local solution uses an improved version of the technique developed by Carsten Steger in the mid-1990’s, while the global solution uses the well-established RADON transform.


Clearly some kind of simple GUI is required to display original/processed images and I decided to create my own using the ‘C’ GTK widget library. However, I found that converting a TRACE FITS input file to a format that GTK could cope with (‘XPM’, for example) required a third-party graphics tool, such as ‘GIMP’ or ‘xv’. Invariably this leads to the loss of some greyscale information and means introducing a manual step into the algorithm process.

I switched to ‘XFITSViewer’ as my GUI for reading in a ‘FITS’ file and displaying the unmodified and processed images. ‘XFITSviewer’ is similar to ‘fv’ in that it is available as open-source code, but is more compact and written exclusively in ‘C’ (much of ‘fv’ is in Tcl/Tk).

I obtained Carsten Steger’s curve tracing code (which is subject to the usual GNU licensing rules) from the open-source download of GRASP, a gravitational wave detection data analysis package.

After some initial scaling problems I managed to successfully integrate Carsten Steger’s code with XFITSviewer and obtained the result shown in Figure 1. I chose lt051998.fits as my input file - the same FITS file provided with the Jake Lee’s OCM IDL .sav bundle. Although there are discontinuities and spurious fragments in the output image, the result looks encouraging. The image is computed instantaneously (on the msslxx server) and doesn’t differ greatly from the output obtained from OCM.

Karthik Raghupathy has kindly agreed to let MSSL have copies of his Masters thesis and the MATLAB source code (with permission of his project supervisor Prof. Thomas Parks) used to demonstrate his ‘Improved Curve Tracing’ method. I hope to extract from these the refinements made to Carsten Steger’s algorithm and the RADON transform and port these to our ‘C’ code. These should help remove many of the anomalies and discontinuities in the current image with little effect on overall processing time.

  • Figure 1 - Result of Steger's curve tracing algorithm on lt051998.fits:
    Result of Steger's curve tracing algorithm on lt051998.fits


• Redraw is slow when re-sizing the GUI display window. Frame buffering should take care of this.

• Clicking on GUI causes a core dump.

• Need to overlay results on original image.

• Need to add improvements to Carsten Steger’s curve tracing method and RADON Transform.

• Add buttons to allow options, e.g. sigma, high/low values, to be modified.

-- MikeSmith - 01 Aug 2005

Useful links:

See also:

  • Ridgelet transform
  • Wavelet transform

-- ElizabethAuden - 11 Jan 2005

-- MikeSmith - 12 Jan 2005

-- ElizabethAuden - 24 Jan 2005, after meeting meeting on 10 Jan 2005 with MikeSmith, Len Culhane, and Lidia van Driel-Geszteyli.

-- ElizabethAuden 18 Feb 2005

Topic attachments
I Attachment History Action Size Date Who Comment
Unknown file formatfits 1m051998.fits r1 manage 2064.4 K 2005-02-14 - 16:50 MikeSmith Automated Loop Recognition - Magnetogram (FITS)
Unknown file formatfits 1t051998.fits r1 manage 2056.0 K 2005-02-14 - 16:51 MikeSmith Automated Loop Recognition - Trace (FITS)
PNGpng 8504_1600_31-MAR-99_c.png r1 manage 43.1 K 2005-01-24 - 16:32 ElizabethAuden Trace 1.6 MK img for AR 8504 31 March 1999
PNGpng 8504_171_31-MAR-99_c.png r1 manage 35.2 K 2005-01-24 - 16:35 ElizabethAuden Trace 171 img for AR 8504 31 March 1999
PNGpng 8504_MDI_31-MAR-99_c.png r1 manage 43.2 K 2005-01-24 - 16:42 ElizabethAuden Trace MDI img for AR 8504 31 March 1999
Unknown file formatpn 8504_MDI_NoWl1600_3-APR-99_c.pn r1 manage 43.9 K 2005-01-24 - 16:34 ElizabethAuden Trace MDI img for AR 8504 3 April 1999
PNGpng 8504_SXT_31-MAR-99_c.png r1 manage 40.8 K 2005-01-24 - 16:36 ElizabethAuden Yohkoh SXT img for AR 8504 31 March 1999
Unknown file formatpn 8504_SXT_NoWl1600_3-APR-99_c.pn r1 manage 30.0 K 2005-01-24 - 16:36 ElizabethAuden Yohkoh SXT img for AR 8504 3 April 1999
PNGpng 8504_WL_31-MAR-99_c.png r1 manage 44.2 K 2005-01-24 - 16:37 ElizabethAuden White light img for AR 8504 31 March 1999
PNGpng 8595_171_22-JUN-99_c.png r1 manage 37.1 K 2005-01-24 - 16:37 ElizabethAuden Trace 171 img for AR 8595 22 June 1999
PNGpng 8595_171_24-JUN-99_c.png r1 manage 35.9 K 2005-01-24 - 16:38 ElizabethAuden Trace 171 img for AR 8595 24 June 1999
PNGpng 8595_MDI_22-JUN-99_c.png r1 manage 44.2 K 2005-01-24 - 16:40 ElizabethAuden Trace MDI img of AR 8595 22 June 1999
PNGpng 8595_MDI_24-JUN-99_c.png r1 manage 44.7 K 2005-01-24 - 16:40 ElizabethAuden Trace MDI img for AR 8595 24 June 1999
PNGpng 8595_SXT_22-JUN-99_c.png r1 manage 40.0 K 2005-01-24 - 16:39 ElizabethAuden Yohkoh SXT img for AR 8595 22 June 1999
PNGpng 8595_SXT_24-JUN-99_c.png r1 manage 35.9 K 2005-01-24 - 16:41 ElizabethAuden Yohkoh SXT img for AR 8595 24 June 1999
Texttxt AboutImgProcessingHelp.txt r1 manage 2.5 K 2005-02-14 - 16:54 MikeSmith Automated Loop Recognition - Text file 1
Texttxt AboutOCMHelp.txt r1 manage 5.2 K 2005-02-14 - 16:55 MikeSmith Automated Loop Recognition - Text file 2
Texttxt AboutSWHelp.txt r1 manage 4.3 K 2005-02-14 - 16:57 MikeSmith Automated Loop Recognition - Text file 4
Texttxt AboutSemiManualHelp.txt r1 manage 2.1 K 2005-02-14 - 16:56 MikeSmith Automated Loop Recognition - Text file 3
Unknown file formatsav CoronaImgAnalysis_BetaV1.sav r1 manage 97.2 K 2005-02-14 - 16:45 MikeSmith Automatic Loop Recognition code (IDL .sav) Lee et al
Postscriptps LeeNewmanGary.ps r1 manage 6690.9 K 2005-02-14 - 16:47 MikeSmith Automated Loop Recognition abstract (Lee et al)
PDFpdf MSthesis.pdf r1 manage 735.2 K 2005-08-03 - 13:12 MikeSmith "Curve Tracing and Curve Detection in Images" - MSc thesis by Karthik Raghupathy.
PNGpng snapshot2.png r1 manage 30.2 K 2005-08-01 - 17:17 MikeSmith Result of Steger's curve tracing algorithm on lt051998.fits
Texttxt trace_sdo.txt r1 manage 2.0 K 2005-01-24 - 16:53 ElizabethAuden Comments from Chris Goff on reducing Trace data
Unknown file formatfits traceloops1.fits r1 manage 434.7 K 2005-08-01 - 17:11 ElizabethAuden test TRACE image with coronal loops
PNGpng traceloops1.png r1 manage 86.4 K 2005-08-02 - 16:33 MikeSmith traceloops1 after Steger processing
Unknown file formatfits traceloops2.fits r1 manage 387.1 K 2005-08-01 - 17:12 ElizabethAuden test TRACE image with coronal loops
PNGpng traceloops2.png r1 manage 37.0 K 2005-08-02 - 16:34 MikeSmith traceloops2 after Steger processing
Unknown file formatfits traceloops3.fits r1 manage 251.9 K 2005-08-01 - 17:12 ElizabethAuden test TRACE image with coronal loops
PNGpng traceloops3.png r1 manage 10.5 K 2005-08-02 - 16:35 MikeSmith traceloops3 after Steger processing
Unknown file formatfits traceloops4.fits r1 manage 571.3 K 2005-08-01 - 17:12 ElizabethAuden test TRACE image with coronal loops
PNGpng traceloops4.png r1 manage 34.2 K 2005-08-02 - 16:35 MikeSmith traceloops4 after Steger processing
Unknown file formatfits traceloops5.fits r1 manage 225.8 K 2005-08-01 - 17:12 ElizabethAuden test TRACE image with coronal loops
PNGpng traceloops5.png r1 manage 21.5 K 2005-08-02 - 16:36 MikeSmith traceloops5 after Steger processing
Unknown file formatfits traceloops6.fits r1 manage 762.7 K 2005-08-01 - 17:13 ElizabethAuden test TRACE image with coronal loops
PNGpng traceloops6.png r1 manage 18.4 K 2005-08-02 - 16:37 MikeSmith traceloops6 after Steger processing
Edit | Attach | Watch | Print version | History: r21 | r19 < r18 < r17 < r16 | Backlinks | Raw View | More topic actions...
Topic revision: r17 - 2005-08-12 - MikeSmith
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback