• 9~10행 영상의 비트 단위 논리 연산 입력으로 사용할 영상을 그레이스케일 형식으로 불러와서 src1과 src2 변수에 저장합니다.
• 22~25행 src1과 src2 영상을 이용하여 논리곱, 논리합, 배타적 논리합, (src1 영상의) 부정을 구하고, 그 결과를 각각 dst1, dst2, dst3, dst4 영상에 저장합니다.
• 27~30행 논리곱, 논리합, 배타적 논리합, (src1 영상의) 부정 연산의 결과 영상을 각각 새 창으로 나타내고, 키 입력이 있으면 프로그램을 종료합니다.
코드 6-2의 논리 연산 예제 프로그램 실행 결과를 그림 6-6에 나타냈습니다. 그림 6-6에서 src1 창에 나타난 영상은 256×256 크기의 lenna256.bmp 파일이고, src2 창 영상은 같은 크기의 square.bmp 파일입니다. square.bmp 영상에서 가운데 사각형 영역의 픽셀 값은 255이고, 이를 이진수로 표현하면 모든 비트가 1로 설정된 11111111(2)입니다. square.bmp 영상에서 사각형 바깥 영역의 픽셀 값은 0이고, 이를 이진수로 표현하면 00000000(2)입니다. 이 두 개의 영상에 대한 비트 단위 논리곱, 비트 단위 논리합, 비트 단위 배타적 논리합, 비트 단위 부정 연산을 수행한 결과 영상을 각각 dst1, dst2, dst3, dst4 창에 표시했습니다. square.bmp 영상의 픽셀 값 비트 구성에 따라 각각의 논리 연산 결과가 부합되게 나타나는지 확인해 보기 바랍니다.
▲ 그림 6-6 영상의 논리 연산 예제 프로그램 실행 화면