Difference: LoopRecognition (r18 vs. r17)

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

Unknown file formatfits1m051998.fits r1 manage 2064.4 K 2005-02-14 - 16:50MikeSmith Automated Loop Recognition - Magnetogram (FITS)
Unknown file formatfits1t051998.fits r1 manage 2056.0 K 2005-02-14 - 16:51MikeSmith Automated Loop Recognition - Trace (FITS)
PNGpng8504_1600_31-MAR-99_c.png r1 manage 43.1 K 2005-01-24 - 16:32ElizabethAuden Trace 1.6 MK img for AR 8504 31 March 1999
PNGpng8504_171_31-MAR-99_c.png r1 manage 35.2 K 2005-01-24 - 16:35ElizabethAuden Trace 171 img for AR 8504 31 March 1999
PNGpng8504_MDI_31-MAR-99_c.png r1 manage 43.2 K 2005-01-24 - 16:42ElizabethAuden Trace MDI img for AR 8504 31 March 1999
Unknown file formatpn8504_MDI_NoWl1600_3-APR-99_c.pn r1 manage 43.9 K 2005-01-24 - 16:34ElizabethAuden Trace MDI img for AR 8504 3 April 1999
PNGpng8504_SXT_31-MAR-99_c.png r1 manage 40.8 K 2005-01-24 - 16:36ElizabethAuden Yohkoh SXT img for AR 8504 31 March 1999
Unknown file formatpn8504_SXT_NoWl1600_3-APR-99_c.pn r1 manage 30.0 K 2005-01-24 - 16:36ElizabethAuden Yohkoh SXT img for AR 8504 3 April 1999
PNGpng8504_WL_31-MAR-99_c.png r1 manage 44.2 K 2005-01-24 - 16:37ElizabethAuden White light img for AR 8504 31 March 1999
PNGpng8595_171_22-JUN-99_c.png r1 manage 37.1 K 2005-01-24 - 16:37ElizabethAuden Trace 171 img for AR 8595 22 June 1999
PNGpng8595_171_24-JUN-99_c.png r1 manage 35.9 K 2005-01-24 - 16:38ElizabethAuden Trace 171 img for AR 8595 24 June 1999
PNGpng8595_MDI_22-JUN-99_c.png r1 manage 44.2 K 2005-01-24 - 16:40ElizabethAuden Trace MDI img of AR 8595 22 June 1999
PNGpng8595_MDI_24-JUN-99_c.png r1 manage 44.7 K 2005-01-24 - 16:40ElizabethAuden Trace MDI img for AR 8595 24 June 1999
PNGpng8595_SXT_22-JUN-99_c.png r1 manage 40.0 K 2005-01-24 - 16:39ElizabethAuden Yohkoh SXT img for AR 8595 22 June 1999
PNGpng8595_SXT_24-JUN-99_c.png r1 manage 35.9 K 2005-01-24 - 16:41ElizabethAuden Yohkoh SXT img for AR 8595 24 June 1999
TexttxtAboutImgProcessingHelp.txt r1 manage 2.5 K 2005-02-14 - 16:54MikeSmith Automated Loop Recognition - Text file 1
TexttxtAboutOCMHelp.txt r1 manage 5.2 K 2005-02-14 - 16:55MikeSmith Automated Loop Recognition - Text file 2
TexttxtAboutSWHelp.txt r1 manage 4.3 K 2005-02-14 - 16:57MikeSmith Automated Loop Recognition - Text file 4
TexttxtAboutSemiManualHelp.txt r1 manage 2.1 K 2005-02-14 - 16:56MikeSmith Automated Loop Recognition - Text file 3
Unknown file formatsavCoronaImgAnalysis_BetaV1.sav r1 manage 97.2 K 2005-02-14 - 16:45MikeSmith Automatic Loop Recognition code (IDL .sav) Lee et al
PostscriptpsLeeNewmanGary.ps r1 manage 6690.9 K 2005-02-14 - 16:47MikeSmith Automated Loop Recognition abstract (Lee et al)
PDFpdfMSthesis.pdf r1 manage 735.2 K 2005-08-03 - 13:12MikeSmith "Curve Tracing and Curve Detection in Images" - MSc thesis by Karthik Raghupathy.
PNGpngsnapshot2.png r1 manage 30.2 K 2005-08-01 - 17:17MikeSmith Result of Steger's curve tracing algorithm on lt051998.fits
Texttxttrace_sdo.txt r1 manage 2.0 K 2005-01-24 - 16:53ElizabethAuden Comments from Chris Goff on reducing Trace data
Unknown file formatfitstraceloops1.fits r1 manage 434.7 K 2005-08-01 - 17:11ElizabethAuden test TRACE image with coronal loops
PNGpngtraceloops1.png r1 manage 86.4 K 2005-08-02 - 16:33MikeSmith traceloops1 after Steger processing
Unknown file formatfitstraceloops2.fits r1 manage 387.1 K 2005-08-01 - 17:12ElizabethAuden test TRACE image with coronal loops
PNGpngtraceloops2.png r1 manage 37.0 K 2005-08-02 - 16:34MikeSmith traceloops2 after Steger processing
Unknown file formatfitstraceloops3.fits r1 manage 251.9 K 2005-08-01 - 17:12ElizabethAuden test TRACE image with coronal loops
PNGpngtraceloops3.png r1 manage 10.5 K 2005-08-02 - 16:35MikeSmith traceloops3 after Steger processing
Unknown file formatfitstraceloops4.fits r1 manage 571.3 K 2005-08-01 - 17:12ElizabethAuden test TRACE image with coronal loops
PNGpngtraceloops4.png r1 manage 34.2 K 2005-08-02 - 16:35MikeSmith traceloops4 after Steger processing
Unknown file formatfitstraceloops5.fits r1 manage 225.8 K 2005-08-01 - 17:12ElizabethAuden test TRACE image with coronal loops
PNGpngtraceloops5.png r1 manage 21.5 K 2005-08-02 - 16:36MikeSmith traceloops5 after Steger processing
Unknown file formatfitstraceloops6.fits r1 manage 762.7 K 2005-08-01 - 17:13ElizabethAuden test TRACE image with coronal loops
PNGpngtraceloops6.png r1 manage 18.4 K 2005-08-02 - 16:37MikeSmith traceloops6 after Steger processing

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