digiKam
Loading...
Searching...
No Matches
noise_detector.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 28/08/2021
7 * Description : Image Quality Parser - noise basic factor detection
8 *
9 * SPDX-FileCopyrightText: 2021-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 * SPDX-FileCopyrightText: 2021-2022 by Phuoc Khanh Le <phuockhanhnk94 at gmail dot com>
11 *
12 * SPDX-License-Identifier: GPL-2.0-or-later
13 *
14 * ============================================================ */
15
16#pragma once
17
18// Local includes
19
20#include "abstract_detector.h"
21
22namespace Digikam
23{
24
26{
27 Q_OBJECT
28
29public:
30
31 typedef QList<cv::Mat> Mat3D;
32
33public:
34
35 explicit NoiseDetector();
37
38 float detect(const cv::Mat& image) const override;
39
40public:
41
42 static const Mat3D filtersHaar;
43
44private:
45
46 Mat3D decompose_by_filter(const cv::Mat& image, const Mat3D& filters) const;
47 void calculate_variance_kurtosis(const Mat3D& channels,
48 cv::Mat& variance,
49 cv::Mat& kurtosis) const;
50 float noise_variance(const cv::Mat& variance, const cv::Mat& kurtosis) const;
51 float normalize(const float number) const;
52
53 cv::Mat raw_moment(const NoiseDetector::Mat3D& mat, int order) const;
54 cv::Mat pow_mat(const cv::Mat& mat, float ordre) const;
55 float mean_mat(const cv::Mat& mat) const;
56
57 // Disable
58 explicit NoiseDetector(QObject*);
59
60private:
61
62 class Private;
63 Private* const d = nullptr;
64};
65
66} // namespace Digikam
Definition abstract_detector.h:31
Definition noise_detector.h:26
QList< cv::Mat > Mat3D
Definition noise_detector.h:31
static const Mat3D filtersHaar
Definition noise_detector.h:42
NoiseDetector()
Definition noise_detector.cpp:89
float detect(const cv::Mat &image) const override
Definition noise_detector.cpp:100
~NoiseDetector()
Definition noise_detector.cpp:95
Definition datefolderview.cpp:34