5.1.1 그레이스케일 영상 다루기
이 장부터 본격적으로 다양한 영상 처리 알고리즘에 대해 알아보겠습니다. 먼저 영상의 밝기와 명암비 조절 방법부터 알아볼 예정인데요. 그 전에 한 가지 기억해야 할 사항이 있습니다. 앞으로 설명할 대부분의 영상 처리 알고리즘은 컬러 영상이 아니라 그레이스케일 영상을 대상으로 한다는 점입니다. 이는 과거에 개발되었던 많은 영상 처리 알고리즘이 주로 그레이스케일 영상을 대상으로 개발되었기 때문입니다. 일반적으로 컬러 영상은 빨간색(R), 녹색(G), 파란색(B) 세 개의 색상 채널을 가지고 있기 때문에 컬러 영상을 다루는 작업은 1채널 그레이스케일 영상을 다루는 것보다 3배 많은 메모리와 연산 시간을 필요로 합니다. 그렇기 때문에 특별히 컬러 정보를 이용해야 하는 경우가 아니라면 컬러 영상도 그레이스케일 영상으로 변환해서 사용하는 경우가 많습니다. 컬러 영상을 처리하는 방법은 10장에서 따로 설명할 것이며, 그 외의 경우에는 모두 그레이스케일 영상을 대상으로 하는 영상 처리 방법을 설명합니다. 그러므로 여기서는 그레이스케일 영상을 만드는 몇 가지 방법에 대해 알아보겠습니다.
OpenCV에서 영상 파일을 그레이스케일 형태로 불러오려면 imread() 함수의 두 번째 인자에 IMREAD_GRAYSCALE 플래그를 설정해야 합니다. 예를 들어 lenna.bmp 파일로부터 레나 영상을 그레이스케일 영상 형태로 불러오려면 다음과 같이 코드를 작성합니다.
Mat img1 = imread("lenna.bmp", IMREAD_GRAYSCALE);
이 소스 코드에서 사용된 lenna.bmp 파일에는 원래 트루컬러 비트맵 영상이 저장되어 있지만, imread() 함수 두 번째 인자에 IMREAD_GRAYSCALE을 지정했기 때문에 그레이스케일 형식으로 변환된 레나 영상이 img1 변수에 저장됩니다.