opencv
C ++でのコントラストと明るさ
サーチ…
構文
- void cv :: Mat :: convertTo(OutputArray m、int rtype、doubleアルファ= 1、ダブルベータ= 0)const
パラメーター
パラメータ | 詳細 |
---|---|
m | 出力行列;操作の前に適切なサイズまたはタイプがない場合は、再割り振りされます |
rtype | チャネルの数が入力と同じであるため、所望の出力行列タイプ、またはむしろ深さ。 rtypeが負の場合、出力行列は入力と同じ型になります |
アルファ | オプションのスケールファクタ。これにより、画像のコントラストが変更されます。 1より小さい値はコントラストを減少させ、1より大きい値はコントラストを増加させる |
ベータ | スケーリングされた値にオプションのデルタが追加されました。正の値は明るさを増やし、負の値は明るさを減少させます |
備考
コントラスト :
コントラストは、オブジェクト(またはイメージまたはディスプレイ内でのその表現)を区別可能にする輝度または色の違いです。ピクセルとその隣接ピクセルとの差が大きいほど、その領域のコントラストは高くなる。
明るさ :
言い換えれば、明るさは、視覚目標の輝度によって引き出される知覚である。ピクセルに関しては、ピクセルの値が高いほどそのピクセルは明るくなります。
コントラストと明るさの調整:
g(i、j)=α・f(i、j)+β
f(x)
を出力画像画素、 g(x)
を出力画像画素とする。
i
とj
は、画素がi行j列に位置していることを示す。
パラメータα > 0
およびβ
は、しばしば利得およびバイアスパラメータと呼ばれる。これらのパラメータは、それぞれ、 コントラストおよび輝度を制御すると言われることがある。
OpencvにはconvertTo()という関数があり、この関数はこれら2つの操作を適用できます。
ソース: 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
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;
}
プログラムの出力:
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow