BGR2GRAY와 GRAY2BGR
BGR2GRAY 색 공간 변환 코드는 BGR 컬러 영상을 그레이스케일 영상으로 변환할 때 사용합니다. 컬러 영상을 그레이스케일 영상으로 변환하는 주된 이유는 연산 속도와 메모리 사용량을 줄이기 위함입니다. 기본적으로 컬러 영상은 그레이스케일 영상에 비해 3배 많은 메모리를 필요로 하고, 또한 세 개의 채널에 대해 연산을 수행해야 하기 때문에 더 많은 연산 시간이 필요하게 됩니다. 그러므로 입력 영상에서 색상 정보의 활용도가 그리 높지 않은 경우에는 입력 영상을 그레이스케일 영상으로 변환하여 처리하는 것이 효율적입니다.
BGR 3채널 컬러 영상을 그레이스케일 영상으로 변환할 때에는 다음 공식을 사용합니다.
앞의 공식에서 R, G, B는 각각 픽셀의 빨간색, 녹색, 파란색 성분의 값을 나타내며, Y는 해당 픽셀의 그레이스케일 성분 크기를 나타냅니다. BGR2GRAY 색 공간 변환 코드에 의해 만들어지는 결과 영상은 CV_8UC1 타입으로 설정됩니다.
반대로 GRAY2BGR 색 공간 변환 코드는 그레이스케일 영상을 BGR 컬러 영상으로 변환할 때 사용합니다. 이 경우 결과 영상은 CV_8UC3 타입으로 결정되고, 각 픽셀의 B, G, R 색상 성분 값은 다음과 같이 결정됩니다.
이 책에서는 주로 그레이스케일 영상 위에 색깔이 있는 선 또는 글씨를 나타내기 위해 미리 그레이스케일 영상을 BGR 컬러 영상으로 변환합니다. 기본적으로 그레이스케일 영상에는 색깔 있는 선 또는 글씨를 출력할 수 없기 때문입니다.