BlurrinessMetric.h
Go to the documentation of this file.
1/*
2 * This file is part of ArmarX.
3 *
4 * ArmarX is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 *
8 * ArmarX is distributed in the hope that it will be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * @package VisionX::ArmarXObjects::BlurrinessMetric
17 * @author David Sippel ( uddoe at student dot kit dot edu )
18 * @date 2017
19 * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20 * GNU General Public License
21 */
22
23#pragma once
24
25
26#include <mutex>
27
28#include <Eigen/Core>
29#include <Eigen/Geometry>
30
31#include <opencv2/opencv.hpp>
32
35
39
40#include <Image/IplImageAdaptor.h>
41
42namespace armarx
43{
44 /**
45 * @class BlurrinessMetricPropertyDefinitions
46 * @brief
47 */
49 {
50 public:
53 {
54 //defineRequiredProperty<std::string>("PropertyName", "Description");
55 //defineOptionalProperty<std::string>("PropertyName", "DefaultValue", "Description");
56 defineOptionalProperty<float>("Framerate", 30.0, "the framerate");
58 "ThresholdLaplaceBlur",
59 250.0,
60 "Threshold value below which the image is considered blurry");
62 "ThresholdPerceptualBlur",
63 0.97,
64 "Threshold value below which the image is considered blurry");
66 "providerName", "Armar3ImageProvider", "ImageProvider name");
67
68 defineOptionalProperty<std::string>("DebugObserverName",
69 "DebugObserver",
70 "Name of the topic the DebugObserver listens on");
71 }
72 };
73
74 /**
75 * @defgroup Component-BlurrinessMetric BlurrinessMetric
76 * @ingroup VisionX-Components
77 * A description of the component BlurrinessMetric.
78 *
79 * @class BlurrinessMetric
80 * @ingroup Component-BlurrinessMetric
81 * @brief Brief description of class BlurrinessMetric.
82 *
83 * Detailed description of class BlurrinessMetric.
84 */
86 {
87 public:
88 /**
89 * @see armarx::ManagedIceObject::getDefaultName()
90 */
91 static std::string
93 {
94 return "BlurrinessMetric";
95 }
96
97 std::string
98 getDefaultName() const override
99 {
100 return GetDefaultName();
101 }
102
103 /**
104 * @see PropertyUser::createPropertyDefinitions()
105 */
107
108 // ImageProcessor interface
109 protected:
110 void onInitImageProcessor() override;
111 void onConnectImageProcessor() override;
112 void onExitImageProcessor() override;
113 void process() override;
114
115 private:
116 CByteImage** cameraImages;
117 std::string providerName;
118 std::mutex imageMutex;
119
120 visionx::ImageProviderInterfacePrx imageProviderPrx;
121
122 DebugObserverInterfacePrx debugObserver;
123
124 visionx::FPSCounter fpsCounter;
125 float frameRate, thresholdLaplace, thresholdPerceptual;
126
127 size_t seq;
128
129
130 double laplaceVarianceBlurrinessMetric(cv::Mat& in);
131 double blurringPerceptual(const cv::Mat& src);
132 double blurringMarziliano(const cv::Mat& src);
133 };
134} // namespace armarx
Brief description of class BlurrinessMetric.
void onConnectImageProcessor() override
Implement this method in the ImageProcessor in order execute parts when the component is fully initia...
void onExitImageProcessor() override
Exit the ImapeProcessor component.
armarx::PropertyDefinitionsPtr createPropertyDefinitions() override
void process() override
Process the vision component.
void onInitImageProcessor() override
Setup the vision component.
static std::string GetDefaultName()
std::string getDefaultName() const override
Retrieve default name of component.
std::string prefix
Prefix of the properties such as namespace, domain, component name, etc.
PropertyDefinition< PropertyType > & defineOptionalProperty(const std::string &name, PropertyType defaultValue, const std::string &description="", PropertyDefinitionBase::PropertyConstness constness=PropertyDefinitionBase::eConstant)
The FPSCounter class provides methods for calculating the frames per second (FPS) count in periodic t...
Definition FPSCounter.h:37
ImageProcessorPropertyDefinitions(std::string prefix)
The ImageProcessor class provides an interface for access to ImageProviders via Ice and shared memory...
This file offers overloads of toIce() and fromIce() functions for STL container types.
::IceInternal::ProxyHandle<::IceProxy::armarx::DebugObserverInterface > DebugObserverInterfacePrx
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.
ArmarX headers.