opencv
Kontrast och ljusstyrka i C ++
Sök…
Syntax
- void cv :: Mat :: convertTo (OutputArray m, int rtype, double alpha = 1, double beta = 0) const
parametrar
Parameter | detaljer |
---|---|
m | utgångsmatris; om den inte har rätt storlek eller typ före operationen omfördelas den |
R · Type | önskad utgångsmatristyp eller snarare djupet eftersom antalet kanaler är samma som ingången har; om rtype är negativt kommer utgångsmatrisen att ha samma typ som ingången |
alfa | valfri skalfaktor. Detta ändrar en bilds kontrast. Värden under 1 minskar kontrasten och över en ökar kontrasten |
beta | valfritt delta läggs till i skalade värden. Positiva värden ökar ljusstyrkan och negativa värden minskar ljusstyrkan |
Anmärkningar
Kontrast :
Kontrast är skillnaden i luminans eller färg som gör att ett objekt (eller dess representation i en bild eller bildskärm) kan urskiljas. Ju högre skillnaden mellan en pixel och dess grannar desto högre är kontrasten i det området.
Ljusstyrka :
Med andra ord är ljusstyrka den uppfattning som framkallas av ljuset hos ett visuellt mål. När det gäller pixlar, desto högre är värdet på en pixel desto ljusare den pixeln är.
Justeringar av kontrast och ljusstyrka:
g (i, j) = a.f (i, j) + p
f(x)
som källbildspixel och g(x)
som utgångsbildpixel.
i
och j
indikerar att pixeln är belägen i den i: e raden och den j: e kolumnen.
Parametrarna α > 0
och β
kallas ofta förstärknings- och biasparametrarna; ibland sägs dessa parametrar styra kontrast respektive ljusstyrka .
Opencv har en funktion som heter convertTo () som kan tillämpa dessa två operationer.
Källor: 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
Justera ljusstyrka och kontrast för en bild i 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;
}
Utgång av programmet: