GNU Astronomy Utilities


Next: , Previous: , Up: Data analysis   [Contents][Index]


7.2 NoiseChisel

Once instrumental signatures are removed from the raw data (image) in the initial reduction process (see Data manipulation). You are naturally eager to start answering the scientific questions that motivated the data collection in the first place. However, the raw dataset/image is just an array of values/pixels, that is all! These raw values cannot directly be used to answer your scientific questions: for example “how many galaxies are there in the image?”.

The first high-level step in the analysis of your dataset will thus be to classify, or label, the dataset elements (pixels) into two classes: 1) Noise, where random effects are the major contributor to the value, and 2) Signal, where non-random factors (for example light from a distant galaxy) are present. This classification of the elements in a dataset is formally known as detection.

In an observational/experimental dataset, signal is always buried in noise: only mock/simulated datasets are free of noise. Therefore detection, or the process of separating signal from noise, determines the number of objects you study and the accuracy of any higher-level measurement you do on them. Detection is thus the most important step of any analysis and is not trivial. In particular, the most scientifically interesting astronomical targets are faint, can have a large variety of morphologies, along with a large distribution in brightness and size. Therefore when noise is significant, proper detection of your targets is a uniquely decisive step in your final scientific analysis/result.

NoiseChisel is Gnuastro’s program for detection of targets that don’t have a sharp border (almost all astronomical objects). When the targets have sharp edges/borders (for example cells in biological imaging), a simple threshold is enough to separate them from noise and each other (if they are not touching). To detect such sharp-edged targets, you can use Gnuastro’s Arithmetic program in a command like below (assuming the threshold is 100, see Arithmetic):

$ astarithmetic in.fits 100 gt 2 connected-components

Since almost no astronomical target has such sharp edges, we need a more advanced detection methodology. NoiseChisel uses a new noise-based paradigm for detection of very extended and diffuse targets that are drowned deeply in the ocean of noise. It was initially introduced in Akhlaghi and Ichikawa [2015] and improvements after the first four were published in Akhlaghi [2019]. Please take the time to go through these papers to most effectively use NoiseChisel.

The name of NoiseChisel is derived from the first thing it does after thresholding the dataset: to erode it. In mathematical morphology, erosion on pixels can be pictured as carving-off boundary pixels. Hence, what NoiseChisel does is similar to what a wood chisel or stone chisel do. It is just not a hardware, but a software. In fact, looking at it as a chisel and your dataset as a solid cube of rock will greatly help in effectively understanding and optimally using it: with NoiseChisel you literally carve your targets out of the noise. Try running it with the --checkdetection option, and open the temporary output as a multi-extension cube, to see each step of the carving process on your input dataset (see Viewing multiextension FITS images).

NoiseChisel’s primary output is a binary detection map with the same size as the input but its pixels only have two values: 0 (background) and 1 (foreground). Pixels that don’t harbor any detected signal (noise) are given a label (or value) of zero and those with a value of 1 have been identified as hosting signal.

Segmentation is the process of classifying the signal into higher-level constructs. For example if you have two separate galaxies in one image, NoiseChisel will give a value of 1 to the pixels of both (each forming an “island” of touching foreground pixels). After segmentation, the connected foreground pixels will get separate labels, enabling you to study them individually. NoiseChisel is only focused on detection (separating signal from noise), to segment the signal (into separate galaxies for example), Gnuastro has a separate specialized program Segment. NoiseChisel’s output can be directly/readily fed into Segment.

For more on NoiseChisel’s output format and its benefits (especially in conjunction with Segment and later MakeCatalog), please see Akhlaghi [2016]. Just note that when that paper was published, Segment was not yet spun-off into a separate program, and NoiseChisel done both detection and segmentation.

NoiseChisel’s output is designed to be generic enough to be easily used in any higher-level analysis. If your targets are not touching after running NoiseChisel and you aren’t interested in their sub-structure, you don’t need the Segment program at all. You can ask NoiseChisel to find the connected pixels in the output with the --label option. In this case, the output won’t be a binary image any more, the signal will have counters/labels starting from 1 for each connected group of pixels. You can then directly feed NoiseChisel’s output into MakeCatalog for measurements over the detections and the production of a catalog (see MakeCatalog).

Thanks to the published papers mentioned above, there is no need to provide a more complete introduction to NoiseChisel in this book. In Invoking NoiseChisel, the details of running NoiseChisel and its options are discussed.

As discussed above, detection is one of the most important steps for your scientific result. It is therefore very important to obtain a good understanding of NoiseChisel (and afterwards Segment and MakeCatalog). We strongly recommend reviewing two tutorials of General program usage tutorial and Detecting large extended targets. They are designed to show how to most effectively use NoiseChisel for the detection of small faint objects and large extended objects. In the meantime, they also show the modular principle behind Gnuastro’s programs and how they are built to complement, and build upon, each other.

General program usage tutorial culminates in using NoiseChisel to detect galaxies and use its outputs to find the galaxy colors. Defining colors is a very common process in most science-cases. Therefore it is also recommended to (patiently) complete that tutorial for optimal usage of NoiseChisel in conjunction with all the other Gnuastro programs. Detecting large extended targets shows you can optimize NoiseChisel’s settings for very extended objects to successfully carve out to signal-to-noise ratio levels of below 1/10. After going through those tutorials, play a little with the settings (in the order presented in the paper and Invoking NoiseChisel) on a dataset you are familiar with and inspect all the check images (options starting with --check) to see the effect of each parameter.

Below, in Invoking NoiseChisel, we will review NoiseChisel’s input, detection, and output options in NoiseChisel input, Detection options, and NoiseChisel output. If you have used NoiseChisel within your research, please run it with --cite to list the papers you should cite and how to acknowledge its funding sources.


Next: , Previous: , Up: Data analysis   [Contents][Index]