영상의 밝기 조절
그레이스케일 영상 다루기
- 과거에 개발된 영상 처리 알고리즘이 주로 그레이스케일 영상을 대상으로 개발되었기 때문에, 특별히 컬러 정보를 이용해야 하는 경우가 아니면 컬러 영상도 그레이스케일 영상으로 변환해서 사용하는 경우가 많다.
- 컬러 영상은 3개 채널을 갖고 있기 때문에 그레이스케일 영상보다 3배 더 수행 시간이 길다.
영상의 밝기 조절
- 영상의 밝기(brightness) 조절이란 영상의 전체적인 밝기를 조절하여 좀 더 밝거나 어두운 영상을 만드는 작업으로, 영상의 밝기를 조절하려면 입력 영상의 모든 픽셀에 일정 값을 더하거나 빼는 작업을 수행한다.
- 영상의 밝기 조절 수식은 다음과 같다.
$dst(x, y) = src(x, y) + n$
- src는 입력 영상, dst는 출력 영상이다. n이 +면 밝기는 증가하고, -면 밝기는 감소한다.
https://drive.google.com/uc?id=1N3wHdVY5lYwaySG0cTm2OTzxsUoAfJ17
- 픽셀 값은 0-255 사이의 값을 갖기 때문에 255보다 큰 값이 나오면 255로 맞춰지고, 0보다 작은 값이 나오면 0으로 맞춰야한다. 이런 연산을 OpenCV에서는 포화(saturate) 연산이라고 한다.
$saturate(x) = \begin{cases} 0 & x < 0 \\ 255 & x > 255 \\ x & otherwise \end{cases}$
$dst(x, y) = saturate(src(x, y) + n)$
영상의 명암비 조절
기본적인 명암비 조절 방법
- 명암비란 영상에서 밝은 영역과 어두운 영역 사이에 드러나는 밝기 차이의 강도를 의미하고, 명암 대비 또는 큰트라스트(contrast)라고 한다.
- 영상이 전반적으로 어둡거나 전반적으로 밝은 픽셀로만 구성된 경우 명암비가 낮다고 하고 밝은 영역과 어두운 영역이 골고루 섞인 경우 명암비가 높다고 한다.
- 밝기 조절이 영상의 모든 픽셀에 대해 덧셈 연산을 하는 것에 비해 명암비 조절은 곱셈 연산을 사용하여 구현한다.
$dst(x, y) = saturate(s \cdot src(x, y))$
- src는 입력 영상, dst는 출력 영상이다. s는 0보다 큰 양의 실수로 s가 1보다 작은 경우 명암비가 낮아지고 1보다 큰 경우 명암비가 높아지는 효과가 있다.
https://drive.google.com/uc?id=1Zram3CHBG-gs2iqW9jwU9w4z0dw53Vr6
효과적인 명암비 조절 방법