Skip to content

Commit

Permalink
add CalcHist, CompareHist example, rewrited from #104
Browse files Browse the repository at this point in the history
  • Loading branch information
k-okada committed Feb 14, 2022
1 parent 5c2b225 commit b9a0355
Show file tree
Hide file tree
Showing 8 changed files with 433 additions and 231 deletions.
5 changes: 3 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ generate_dynamic_reconfigure_options(
cfg/GoodfeatureTrack.cfg
cfg/CornerHarris.cfg
#
cfg/CompareHistogram.cfg
cfg/EqualizeHistogram.cfg
cfg/CamShift.cfg
cfg/FBackFlow.cfg
Expand Down Expand Up @@ -169,7 +170,7 @@ opencv_apps_add_nodelet(discrete_fourier_transform src/nodelet/discrete_fourier_
# ./tutorial_code/Histograms_Matching/calcBackProject_Demo1.cpp
# ./tutorial_code/Histograms_Matching/calcBackProject_Demo2.cpp
# ./tutorial_code/Histograms_Matching/calcHist_Demo.cpp
# ./tutorial_code/Histograms_Matching/compareHist_Demo.cpp
opencv_apps_add_nodelet(compare_histogram src/nodelet/compare_histogram_nodelet.cpp) # ./tutorial_code/Histograms_Matching/compareHist_Demo.cpp
opencv_apps_add_nodelet(equalize_histogram src/nodelet/equalize_histogram_nodelet.cpp) # ./tutorial_code/Histograms_Matching/EqualizeHist_Demo.cpp
# ./tutorial_code/Histograms_Matching/MatchTemplate_Demo.cpp

Expand Down Expand Up @@ -263,7 +264,7 @@ opencv_apps_add_nodelet(camshift src/nodelet/camshift_nodelet.cpp) # ./camshiftd
# ./create_mask.cpp
# ./dbt_face_detection.cpp
# ./delaunay2.cpp
opencv_apps_add_nodelet(intensity_histogram src/nodelet/intensity_histogram.cpp) # ./demhist.cpp
# ./demhist.cpp
# ./detect_blob.cpp
# ./detect_mser.cpp
# ./dft.cpp
Expand Down
53 changes: 53 additions & 0 deletions cfg/CompareHistogram.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#! /usr/bin/env python
# Software License Agreement (BSD License)
#
# Copyright (c) 2022, Kei Okada
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials provided
# with the distribution.
# * Neither the name of Kei Okada nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.


PACKAGE = "opencv_apps"

from dynamic_reconfigure.parameter_generator_catkin import *

gen = ParameterGenerator()
gen.add("use_camera_info", bool_t, 0, "Indicates that the camera_info topic should be subscribed to to get the default input_frame_id. Otherwise the frame from the image message will be used.", False)

histogram_comparison_type = gen.enum([ gen.const("Correlation", int_t, 0, "Correlation"),
gen.const("Chi_Square", int_t, 1, "Chi-Square"),
gen.const("Intersection", int_t, 2, "Intersection"),
gen.const("Bhattacharyya", int_t, 3, "Bhattacharyya distance")],
"Histogram Comparison method")
gen.add("histogram_comparison_type", int_t, 1, "Histogram Comparison method", 0, 0, 3, edit_method=histogram_comparison_type)

gen.add("histogram_size", int_t, 2, "Array of histogram sizes in each dimension", 256, 1, 1024)
gen.add("uniform", bool_t, 3, "Flag indicating whether the histogram is uniform or not", True)
gen.add("accumulate", bool_t, 4, "Accumulation flag. If it is set, the histogram is not cleared in the beginning when it is allocated", False)

exit(gen.generate(PACKAGE, "compare_histogram", "CompareHistogram"))
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,18 @@

<arg name="debug_view" default="true" doc="Specify whether the node displays a window to show edge image" />
<arg name="queue_size" default="3" doc="Specigy queue_size of input image subscribers" />
<arg name="histogram_size" default="64" doc="number of bins" />
<arg name="reference_histogram" default="" doc="reference of histogram comparison" />


<!-- intensity_histogram.cpp -->
<node name="$(arg node_name)" pkg="opencv_apps" type="intensity_histogram" >
<node name="$(arg node_name)" pkg="opencv_apps" type="compare_histogram" >
<remap from="image" to="$(arg image)" />
<param name="debug_view" value="$(arg debug_view)" />
<param name="queue_size" value="$(arg queue_size)" />
<param name="histogram_size" value="$(arg histogram_size)" />
<rosparam param="reference_histogram" subst_value="true">
$(arg reference_histogram)
</rosparam>
</node>
</launch>
8 changes: 4 additions & 4 deletions nodelet_plugins.xml
Original file line number Diff line number Diff line change
Expand Up @@ -123,12 +123,12 @@
<description>Nodelet to demonstrate the famous watershed segmentation algorithm in OpenCV: watershed()</description>
</class>

<class name="opencv_apps/equalize_histogram" type="opencv_apps::EqualizeHistogramNodelet" base_class_type="nodelet::Nodelet">
<description>Nodelet for histogram equalization</description>
<class name="opencv_apps/compare_histogram" type="opencv_apps::CompareHistogramNodelet" base_class_type="nodelet::Nodelet">
<description>Nodelet of compare histogram</description>
</class>

<class name="opencv_apps/intensity_histogram" type="opencv_apps::IntensityHistogramNodelet" base_class_type="nodelet::Nodelet">
<description>Nodelet of intensity histogram</description>
<class name="opencv_apps/equalize_histogram" type="opencv_apps::EqualizeHistogramNodelet" base_class_type="nodelet::Nodelet">
<description>Nodelet for histogram equalization</description>
</class>

<!--
Expand Down
Loading

0 comments on commit b9a0355

Please sign in to comment.