opencv
Contraste et luminosité en C ++
Recherche…
Syntaxe
- void cv :: Mat :: convertTo (OutputArray m, int rtype, double alpha = 1, double beta = 0) const
Paramètres
Paramètre | Détails |
---|---|
m | matrice de sortie; s'il n'a pas une taille ou un type correct avant l'opération, il est réaffecté |
type | le type de matrice de sortie souhaité ou plutôt la profondeur puisque le nombre de canaux est identique à celui de l'entrée; si rtype est négatif, la matrice de sortie aura le même type que l'entrée |
alpha | facteur d'échelle facultatif. Cela change le contraste d'une image. Les valeurs inférieures à 1 diminuent le contraste et au dessus on augmente le contraste |
bêta | delta facultatif ajouté aux valeurs mises à l'échelle. Les valeurs positives augmentent la luminosité et les valeurs négatives les diminuent |
Remarques
Contraste :
Le contraste est la différence de luminance ou de couleur qui permet de distinguer un objet (ou sa représentation dans une image ou un affichage). Plus la différence entre un pixel et ses voisins est élevée, plus le contraste est élevé dans cette zone.
Luminosité :
En d'autres termes, la luminosité est la perception provoquée par la luminance d'une cible visuelle. En termes de pixels, plus la valeur d'un pixel est élevée, plus le pixel est lumineux.
Réglages du contraste et de la luminosité:
g (i, j) = α.f (i, j) + β
f(x)
comme image source pixels et g(x)
comme image de sortie pixels.
i
et j
indiquent que le pixel est situé dans la i-ème ligne et la j-ième colonne.
Les paramètres α > 0
et β
sont souvent appelés paramètres de gain et de biais; On dit parfois que ces paramètres contrôlent respectivement le contraste et la luminosité .
Opencv a une fonction appelée convertTo () qui peut appliquer ces deux opérations.
Sources: http://docs.opencv.org/trunk/d3/d63/classcv_1_1Mat.html#adf88c60c5b4980e05bb556080916978b http://opencv-srf.blogspot.ca/2013/07/change-contrast-of-image-or-video .html http://opencv-srf.blogspot.ca/2013/07/change-brightness.html
Réglage de la luminosité et du contraste d'une image en c ++
// main.cpp : Defines the entry point for the console application.
//
#include "opencv2/highgui/highgui.hpp"
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, const char** argv)
{
Mat img = imread("lena30.jpg", CV_LOAD_IMAGE_COLOR); //open and read the image
if (img.empty())
{
cout << "Image cannot be loaded..!!" << endl;
return -1;
}
Mat img_higher_contrast;
img.convertTo(img_higher_contrast, -1, 2, 0); //increase the contrast (double)
Mat img_lower_contrast;
img.convertTo(img_lower_contrast, -1, 0.5, 0); //decrease the contrast (halve)
Mat img_higher_brightness;
img.convertTo(img_higher_brightness, -1, 1, 20); //increase the brightness by 20 for each pixel
Mat img_lower_brightness;
img.convertTo(img_lower_brightness, -1, 1, -20); //decrease the brightness by 20 for each pixel
//create windows
namedWindow("Original Image", CV_WINDOW_AUTOSIZE);
namedWindow("High Contrast", CV_WINDOW_AUTOSIZE);
namedWindow("Low Contrast", CV_WINDOW_AUTOSIZE);
namedWindow("High Brightness", CV_WINDOW_AUTOSIZE);
namedWindow("Low Brightness", CV_WINDOW_AUTOSIZE);
//show the image
imshow("Original Image", img);
imshow("High Contrast", img_higher_contrast);
imshow("Low Contrast", img_lower_contrast);
imshow("High Brightness", img_higher_brightness);
imshow("Low Brightness", img_lower_brightness);
waitKey(0); //wait for key press
destroyAllWindows(); //destroy all open windows
return 0;
}
Sortie du programme: