opencv
Contraste y brillo en C ++
Buscar..
Sintaxis
- void cv :: Mat :: convertTo (OutputArray m, int rtype, double alpha = 1, double beta = 0) const
Parámetros
Parámetro | Detalles |
---|---|
metro | matriz de salida; Si no tiene un tamaño o tipo adecuado antes de la operación, se reasigna |
rtype | tipo de matriz de salida deseada o, más bien, la profundidad, ya que la cantidad de canales es la misma que la entrada; si rtype es negativo, la matriz de salida tendrá el mismo tipo que la entrada |
alfa | Factor de escala opcional. Esto cambia el contraste de una imagen. Los valores por debajo de 1 disminuyen el contraste y por encima de uno aumentan el contraste |
beta | Delta opcional agregado a los valores escalados. Los valores positivos aumentan el brillo y los valores negativos disminuyen el brillo. |
Observaciones
Contraste :
El contraste es la diferencia de luminancia o color que hace que un objeto (o su representación en una imagen o visualización) sea distinguible. Cuanto mayor sea la diferencia entre un píxel y sus vecinos, mayor será el contraste en esa área.
Brillo :
En otras palabras, el brillo es la percepción provocada por la luminancia de un objetivo visual. En términos de píxeles, cuanto más alto es el valor de un píxel, más brillante es ese píxel.
Ajustes de contraste y brillo:
g (i, j) = α.f (i, j) + β
f(x)
como píxeles de la imagen de origen y g(x)
como píxeles de la imagen de salida.
i
y j
indican que el píxel está ubicado en la fila i-th y en la columna j-th.
Los parámetros α > 0
y β
menudo se denominan parámetros de ganancia y sesgo; a veces se dice que estos parámetros controlan el contraste y el brillo respectivamente.
Opencv tiene una función llamada convertTo () que puede aplicar estas dos operaciones.
Fuentes: 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
Ajuste de brillo y contraste de una imagen 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;
}
Salida del programa: