더북(TheBook)

그런데 그림 5-3의 밝기 변환 그래프를 살펴보면 dst 영상의 픽셀 값이 0보다 작아지거나 또는 255보다 커지는 부분에서 직선이 꺾여 있는 것을 볼 수 있습니다. 앞서 소개한 밝기 조절 수식을 그대로 적용하면 결과 영상의 픽셀 값이 255보다 커지거나 0보다 작아지는 경우가 발생할 수 있습니다. 예를 들어 입력 영상의 특정 픽셀 값이 210이고 밝기를 50만큼 증가시킨다면 결과 영상의 픽셀 값은 260으로 계산됩니다. 그러나 255보다 큰 값을 결과 영상의 픽셀 값으로 설정할 수 없기 때문에 이러한 경우에는 결과 영상의 픽셀 값을 그레이스케일 값의 최댓값인 255로 설정해야 합니다. 마찬가지로 영상의 밝기를 어둡게 하는 연산을 수행할 경우, 밝기 조절 계산 결과가 음수이면 결과 영상의 픽셀 값을 그레이스케일 범위의 최솟값인 0으로 설정합니다. 이처럼 행렬의 원소 값을 설정할 때, 원소 자료형이 가질 수 있는 값의 범위를 벗어나는 경우 해당 자료형의 최솟값 또는 최댓값으로 원소 값을 설정하는 연산을 OpenCV에서는 포화(saturate) 연산이라고 부릅니다. uchar 자료형을 사용하는 그레이스케일 영상에 대해 포화 연산을 수식으로 나타내면 다음과 같습니다.

그러므로 실제로 영상의 밝기 조절을 구현할 때에는 다음과 같이 포화 연산을 함께 고려한 수식을 사용해야 합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.