- 효과적인 명암비 조절 방법
- (128, 128)를 지나는 직선의 방정식으로 구성
- 직선의 기울기를 조절하는 것은 알파 값
- -1 < 알파 < 0 : 명암비가 낮아짐
- 알파 > 0 : 명암비가 높아짐
```
int main(int argc, char* argv[])
{
Mat src = imread("lenna.bmp", IMREAD_GRAYSCALE);
if (src.empty()) {
cerr << "Image load failed!" << endl;
return -1;
}
float alpha = 1.0f;
Mat dst = src + (src - 128) * alpha;
imshow("src", src);
imshow("dst", dst);
waitKey();
}
```
- lenna.bmp 처럼 평균 밝기가 128 근방일 경우 아주 좋은 형태의 결과를 만들어 낼 수 있음
- 하지만 너무 밝거나 너무 어두운 영상을 사용할 경우 좋은 결과를 만들기 어려움
- 평균 밝기를 고려한 명암비 코드
```
#include
#include "opencv2/opencv.hpp"
using namespace std;
using namespace cv;
int main(int argc, char* argv[])
{
Mat src = imread("lenna.bmp", IMREAD_GRAYSCALE);
if (src.empty()) {
cerr << "Image load failed!" << endl;
return -1;
}
#if 0
float alpha = 1.0f;
Mat dst = src + (src - 128) * alpha;
#else
float alpha = 1.0f;
int m = (int)mean(src)[0];
Mat dst = src + (src - m) * alpha; // 128 대신 주어진 영상의 평균값을 입력
cout << "mean : " << m << endl;
#endif
imshow("src", src);
imshow("dst", dst);
waitKey();
}
```
- 포화된 부분이 줄어든 것을 확인할 수 있음