Visual Servoing Platform version 3.7.0
Loading...
Searching...
No Matches
vpImgproc.h
1/*
2 * ViSP, open source Visual Servoing Platform software.
3 * Copyright (C) 2005 - 2024 by Inria. All rights reserved.
4 *
5 * This software is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 * See the file LICENSE.txt at the root directory of this source
10 * distribution for additional information about the GNU GPL.
11 *
12 * For using ViSP with software that can not be combined with the GNU
13 * GPL, please contact Inria about acquiring a ViSP Professional
14 * Edition License.
15 *
16 * See https://visp.inria.fr for more information.
17 *
18 * This software was developed at:
19 * Inria Rennes - Bretagne Atlantique
20 * Campus Universitaire de Beaulieu
21 * 35042 Rennes Cedex
22 * France
23 *
24 * If you have questions regarding the use of this file, please contact
25 * Inria at visp@inria.fr
26 *
27 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
28 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
29 *
30 * Description:
31 * Static functions for basic image processing functions.
32 */
33
38
39#ifndef VP_IMGPROC_H
40#define VP_IMGPROC_H
41
42#include <visp3/core/vpConfig.h>
43#include <visp3/core/vpImage.h>
44#include <visp3/core/vpImageMorphology.h>
45#include <visp3/imgproc/vpContours.h>
46
47namespace VISP_NAMESPACE_NAME
48{
49#define USE_OLD_FILL_HOLE 0
50
61
93
115
124VISP_EXPORT std::string vpGammaMethodList(const std::string &pref = "<", const std::string &sep = " , ",
125 const std::string &suf = ">");
126
133VISP_EXPORT std::string vpGammaMethodToString(const vpGammaMethod &type);
134
141VISP_EXPORT vpGammaMethod vpGammaMethodFromString(const std::string &name);
142
153
162VISP_EXPORT std::string vpGammaColorHandlingList(const std::string &pref = "<", const std::string &sep = " , ",
163 const std::string &suf = ">");
164
171VISP_EXPORT std::string vpGammaColorHandlingToString(const vpGammaColorHandling &type);
172
179VISP_EXPORT vpGammaColorHandling vpGammaColorHandlingFromString(const std::string &name);
180
191VISP_EXPORT void adjust(VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &I, double alpha, double beta);
192
204VISP_EXPORT void adjust(const VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &I1, VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &I2, double alpha, double beta);
205
216VISP_EXPORT void adjust(VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I, const double alpha, double beta);
217
229VISP_EXPORT void adjust(const VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I1, VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I2, double alpha, double beta);
230
260VISP_EXPORT void clahe(const VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &I1, VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &I2, int blockRadius = 150,
261 int bins = 256, float slope = 3.0f, bool fast = true);
262
290VISP_EXPORT void clahe(const VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I1, VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I2, int blockRadius = 150, int bins = 256,
291 float slope = 3.0f, bool fast = true);
292
303VISP_EXPORT void equalizeHistogram(VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &I, const VISP_NAMESPACE_ADDRESSING vpImage<bool> *p_mask = nullptr);
304
316VISP_EXPORT void equalizeHistogram(const VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &I1, VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &I2,
317 const VISP_NAMESPACE_ADDRESSING vpImage<bool> *p_mask = nullptr);
318
332VISP_EXPORT void equalizeHistogram(VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I, bool useHSV = false);
333
348VISP_EXPORT void equalizeHistogram(const VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I1, VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I2, bool useHSV = false);
349
365VISP_EXPORT void gammaCorrection(VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &I, const float &gamma, const vpGammaMethod &method = GAMMA_MANUAL,
366 const VISP_NAMESPACE_ADDRESSING vpImage<bool> *p_mask = nullptr);
367
384VISP_EXPORT void gammaCorrection(const VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &I1, VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &I2, const float &gamma,
385 const vpGammaMethod &method = GAMMA_MANUAL, const VISP_NAMESPACE_ADDRESSING vpImage<bool> *p_mask = nullptr);
386
400VISP_EXPORT void gammaCorrection(VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I, const float &gamma, const vpGammaColorHandling &colorHandling = GAMMA_RGB,
401 const vpGammaMethod &method = GAMMA_MANUAL, const VISP_NAMESPACE_ADDRESSING vpImage<bool> *p_mask = nullptr);
402
417VISP_EXPORT void gammaCorrection(const VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I1, VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I2, const float &gamma,
418 const vpGammaColorHandling &colorHandling = GAMMA_RGB,
419 const vpGammaMethod &method = GAMMA_MANUAL, const VISP_NAMESPACE_ADDRESSING vpImage<bool> *p_mask = nullptr);
420
442VISP_EXPORT void retinex(VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I, int scale = 240, int scaleDiv = 3, int level = RETINEX_UNIFORM,
443 double dynamic = 1.2, int kernelSize = -1);
444
467VISP_EXPORT void retinex(const VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I1, VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I2, int scale = 240, int scaleDiv = 3,
468 int level = RETINEX_UNIFORM, double dynamic = 1.2, int kernelSize = -1);
469
477VISP_EXPORT void stretchContrast(VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &I);
478
487VISP_EXPORT void stretchContrast(const VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &I1, VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &I2);
488
496VISP_EXPORT void stretchContrast(VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I);
497
506VISP_EXPORT void stretchContrast(const VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I1, VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I2);
507
516VISP_EXPORT void stretchContrastHSV(VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I);
517
527VISP_EXPORT void stretchContrastHSV(const VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I1, VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I2);
528
538VISP_EXPORT void unsharpMask(VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &I, float sigma, double weight = 0.6);
539
550VISP_EXPORT void unsharpMask(const VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &I, VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &Ires, float sigma,
551 double weight = 0.6);
552
562VISP_EXPORT void unsharpMask(VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I, float sigma, double weight = 0.6);
563
574VISP_EXPORT void unsharpMask(const VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &I, VISP_NAMESPACE_ADDRESSING vpImage<VISP_NAMESPACE_ADDRESSING vpRGBa> &Ires, float sigma, double weight = 0.6);
575
586VISP_EXPORT void connectedComponents(const VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &I, VISP_NAMESPACE_ADDRESSING vpImage<int> &labels, int &nbComponents,
587 const VISP_NAMESPACE_ADDRESSING vpImageMorphology::vpConnexityType &connexity = VISP_NAMESPACE_ADDRESSING vpImageMorphology::CONNEXITY_4);
588
596VISP_EXPORT void fillHoles(VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &I
597#if USE_OLD_FILL_HOLE
598 ,
599 const VISP_NAMESPACE_ADDRESSING vpImageMorphology::vpConnexityType &connexity = VISP_NAMESPACE_ADDRESSING vpImageMorphology::CONNEXITY_4
600#endif
601);
602
614VISP_EXPORT void floodFill(VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &I, const VISP_NAMESPACE_ADDRESSING vpImagePoint &seedPoint, const unsigned char oldValue,
615 const unsigned char newValue,
616 const VISP_NAMESPACE_ADDRESSING vpImageMorphology::vpConnexityType &connexity = VISP_NAMESPACE_ADDRESSING vpImageMorphology::CONNEXITY_4);
617
636VISP_EXPORT void reconstruct(const VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &marker, const VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &mask,
637 VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &h_kp1 /*alias I */,
638 const VISP_NAMESPACE_ADDRESSING vpImageMorphology::vpConnexityType &connexity = VISP_NAMESPACE_ADDRESSING vpImageMorphology::CONNEXITY_4);
639
650VISP_EXPORT unsigned char autoThreshold(VISP_NAMESPACE_ADDRESSING vpImage<unsigned char> &I, const vpAutoThresholdMethod &method,
651 const unsigned char backgroundValue = 0,
652 const unsigned char foregroundValue = 255);
653} // namespace
654
655#endif
Class that defines a 2D point in an image. This class is useful for image processing and stores only ...
Definition of the vpImage class member functions.
Definition vpImage.h:131
VISP_EXPORT void adjust(VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &I, double alpha, double beta)
VISP_EXPORT void clahe(const VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &I1, VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &I2, int blockRadius=150, int bins=256, float slope=3.0f, bool fast=true)
VISP_EXPORT void floodFill(VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &I, const VISP_NAMESPACE_ADDRESSING vpImagePoint &seedPoint, const unsigned char oldValue, const unsigned char newValue, const VISP_NAMESPACE_ADDRESSING vpImageMorphology::vpConnexityType &connexity=VISP_NAMESPACE_ADDRESSING vpImageMorphology::CONNEXITY_4)
VISP_EXPORT void connectedComponents(const VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &I, VISP_NAMESPACE_ADDRESSING vpImage< int > &labels, int &nbComponents, const VISP_NAMESPACE_ADDRESSING vpImageMorphology::vpConnexityType &connexity=VISP_NAMESPACE_ADDRESSING vpImageMorphology::CONNEXITY_4)
VISP_EXPORT void stretchContrast(VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &I)
VISP_EXPORT void stretchContrastHSV(VISP_NAMESPACE_ADDRESSING vpImage< VISP_NAMESPACE_ADDRESSING vpRGBa > &I)
VISP_EXPORT void gammaCorrection(VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &I, const float &gamma, const vpGammaMethod &method=GAMMA_MANUAL, const VISP_NAMESPACE_ADDRESSING vpImage< bool > *p_mask=nullptr)
VISP_EXPORT void equalizeHistogram(VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &I, const VISP_NAMESPACE_ADDRESSING vpImage< bool > *p_mask=nullptr)
VISP_EXPORT void fillHoles(VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &I)
VISP_EXPORT void reconstruct(const VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &marker, const VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &mask, VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &h_kp1, const VISP_NAMESPACE_ADDRESSING vpImageMorphology::vpConnexityType &connexity=VISP_NAMESPACE_ADDRESSING vpImageMorphology::CONNEXITY_4)
VISP_EXPORT void retinex(VISP_NAMESPACE_ADDRESSING vpImage< VISP_NAMESPACE_ADDRESSING vpRGBa > &I, int scale=240, int scaleDiv=3, int level=RETINEX_UNIFORM, double dynamic=1.2, int kernelSize=-1)
VISP_EXPORT void unsharpMask(VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &I, float sigma, double weight=0.6)
VISP_EXPORT unsigned char autoThreshold(VISP_NAMESPACE_ADDRESSING vpImage< unsigned char > &I, const vpAutoThresholdMethod &method, const unsigned char backgroundValue=0, const unsigned char foregroundValue=255)
VISP_EXPORT vpGammaMethod vpGammaMethodFromString(const std::string &name)
Cast a string into a vpGammaMethod.
VISP_EXPORT vpGammaColorHandling vpGammaColorHandlingFromString(const std::string &name)
Cast a string into a vpGammaColorHandling.
vpGammaColorHandling
How to handle color images when applying Gamma Correction.
Definition vpImgproc.h:147
VISP_EXPORT std::string vpGammaColorHandlingToString(const vpGammaColorHandling &type)
Cast a vpGammaColorHandling into a string, to know its name.
VISP_EXPORT std::string vpGammaMethodList(const std::string &pref="<", const std::string &sep=" , ", const std::string &suf=">")
Get the list of available vpGammaMethod.
Definition vpImgproc.cpp:73
VISP_EXPORT std::string vpGammaColorHandlingList(const std::string &pref="<", const std::string &sep=" , ", const std::string &suf=">")
Get the list of available vpGammaColorHandling.
@ RETINEX_HIGH
Enhances the bright regions of the image.
Definition vpImgproc.h:59
@ RETINEX_LOW
Enhances dark regions of the image.
Definition vpImgproc.h:58
@ RETINEX_UNIFORM
Tends to treat all image intensities similarly.
Definition vpImgproc.h:57
vpGammaMethod
Gamma Correction automatic methods.
Definition vpImgproc.h:98
VISP_EXPORT std::string vpGammaMethodToString(const vpGammaMethod &type)
Cast a vpGammaMethod into a string, to know its name.
Definition vpImgproc.cpp:87