标签:style blog http io ar os sp for div
Two commonly used point processes are multiplication and addition with a constant:
The parameters and are often called the gain and bias parameters; sometimes these parameters are said to control contrast and brightness respectively.
You can think of as the source image pixels and as the output image pixels. Then, more conveniently we can write the expression as:
where and indicates that the pixel is located in the i-th row and j-th column.
亮度增强
#include "stdafx.h" #include <cv.h> #include <highgui.h> #include <iostream> using namespace cv; double alpha; /**< Simple contrast control */ int beta; /**< Simple brightness control */ int main( int argc, char** argv ) { /// Read image given by user Mat image = imread( "xue.jpg" ); Mat new_image = Mat::zeros( image.size(), image.type() ); /// Initialize values std::cout<<" Basic Linear Transforms "<<std::endl; std::cout<<"-------------------------"<<std::endl; std::cout<<"* Enter the alpha value [1.0-3.0]: ";std::cin>>alpha; std::cout<<"* Enter the beta value [0-100]: "; std::cin>>beta; /// Do the operation new_image(i,j) = alpha*image(i,j) + beta for( int y = 0; y < image.rows; y++ ) { for( int x = 0; x < image.cols; x++ ) { for( int c = 0; c < 3; c++ ) { new_image.at<Vec3b>(y,x)[c] = saturate_cast<uchar>( alpha*( image.at<Vec3b>(y,x)[c] ) + beta ); } } } /// Create Windows namedWindow("Original Image", 1); namedWindow("New Image", 1); /// Show stuff imshow("Original Image", image); imshow("New Image", new_image); /// Wait until user press some key waitKey(); return 0; }
new_image.at<Vec3b>(y,x)[c] = saturate_cast<uchar>( alpha*( image.at<Vec3b>(y,x)[c] ) + beta );
注意 : y,x
注意: image.at<Vec3b>(y,x)[c]
To access each pixel in the images we are using this syntax: image.at<Vec3b>(y,x)[c] where y is the row, x is the column and c is R, G or B (0, 1 or 2).
最后,这样的方法OpenCV有现成的
image.convertTo(new_image, -1, alpha, beta);
OpenCV Tutorials —— Changing the contrast and brightness of an image
标签:style blog http io ar os sp for div
原文地址:http://www.cnblogs.com/sprint1989/p/4101826.html