Kstars

fitsgradientdetector.h
1 /*
2  SPDX-FileCopyrightText: 2004 Jasem Mutlaq
3  SPDX-FileCopyrightText: 2020 Eric Dejouhanet <[email protected]>
4 
5  SPDX-License-Identifier: GPL-2.0-or-later
6 
7  Some code fragments were adapted from Peter Kirchgessner's FITS plugin
8  SPDX-FileCopyrightText: Peter Kirchgessner <http://members.aol.com/pkirchg>
9 */
10 
11 #ifndef FITSGRADIENTDETECTOR_H
12 #define FITSGRADIENTDETECTOR_H
13 
14 #include "fitsstardetector.h"
15 
16 class FITSGradientDetector: public FITSStarDetector
17 {
18  Q_OBJECT
19 
20  public:
21  explicit FITSGradientDetector(FITSData * data): FITSStarDetector(data) {};
22 
23  public:
24  /** @brief Find sources in the parent FITS data file.
25  * @see FITSStarDetector::findSources().
26  */
27  QFuture<bool> findSources(QRect const &boundary = QRect()) override;
28 
29  protected:
30  /** @internal Find sources in the parent FITS data file, dependent of the pixel depth.
31  * @see FITSGradientDetector::findSources.
32  */
33  template <typename T>
34  bool findSources(const QRect &boundary);
35 
36  /** @internal Implementation of the Canny Edge detection (CannyEdgeDetector).
37  * @copyright 2015 Gonzalo Exequiel Pedone (https://github.com/hipersayanX/CannyDetector).
38  * @param data is the FITS data to run the detection onto.
39  * @param gradient is the vector storing the amount of change in pixel sequences.
40  * @param direction is the vector storing the four directions (horizontal, vertical and two diagonals) the changes stored in 'gradient' are detected in.
41  */
42  template <typename T>
43  void sobel(FITSData const * data, QVector<float> &gradient, QVector<float> &direction) const;
44 
45  /** @internal Identify gradient connections.
46  * @param width, height are the dimensions of the frame to work on.
47  * @param gradient is the vector holding the amount of change in pixel sequences.
48  * @param ids is the vector storing which gradient was identified for each pixel.
49  */
50  int partition(int width, int height, QVector<float> &gradient, QVector<int> &ids) const;
51 
52  /** @internal Trace gradient neighbors.
53  * @param width, height are the dimensions of the frame to work on.
54  * @param image is the image to work on, actually gradients extracted using the sobel algorithm.
55  * @param ids is the vector storing which gradient was identified for each pixel.
56  * @param x, y locate the pixel to trace from.
57  */
58  void trace(int width, int height, int id, QVector<float> &image, QVector<int> &ids, int x, int y) const;
59 };
60 
61 #endif // FITSGRADIENTDETECTOR_H
Q_OBJECTQ_OBJECT
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Thu Aug 11 2022 03:59:58 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.