컴공지식/컴퓨터비전
convertScaleAbs 함수
개강한 공대생
2024. 8. 31. 13:55
void convertScaleAbs(InputArray src, OutputArray dst, double);를 알아보자
이 함수는 OpenCV 라이브러리에 있는데, 이미지를 처리할 때 쓴다.
src라는 입력 이미지를 받아서 dst라는 출력 이미지로 변환해 준다.
함수 이름처럼 scale과 absolute 변환을 해 준다.
scale은 이미지의 픽셀 값을 어떤 숫자로 곱해주는 거고, absolute는 음수 값을 절대값으로 바꿔주는 거다.
결국, 이미지의 모든 픽셀 값들이 양수로 바뀐다.
그 후에 각 값을 0에서 255 사이의 값으로 변환해주는 거다.
convertScaleAbs 함수가 이 0에서 255 사이의 범위로 변환해주는 이유는,
만약 픽셀 값이 이 범위를 벗어나면(예: -50이나 300 같은 값), 그 값은 이미지에 제대로 표현되지 않거나 잘려서 나타난다.
예를 들어, 300이라는 값은 255로 잘려서 흰색으로 나타나고, -50이라는 값은 0으로 잘려서 검정색으로 나타나게된다.
대부분의 디스플레이 장치는 8비트로 픽셀 값을 표현하는데, 이 말인즉슨 한 채널당 256가지의 밝기 수준만 표현할 수 있다는 것이기 때문이다.
convertScaleAbs 함수가 중요한 이유는 바로 이 때문이다.
이미지 처리 중에 연산을 하다 보면 픽셀 값이 0보다 작거나 255보다 커질 수 있다. 이럴 때 모든 픽셀 값을 안전하게 0에서 255 사이로 변환해주는 게 중요한데, 그래야 이미지를 화면에 제대로 표시할 수 있다.