더북(TheBook)

산술 및 논리 연산 대화 상자에서 사용자가 라디오 버튼을 통해서 선택한 연산의 종류는 CArithmeticLogicalDlg 클래스의 멤버 변수인 m_nFunction에 저장되어 있다. 이 변수는 덧셈, 뺄셈, 평균, 차이, AND, OR 연산에 대하여 차례대로 0부터 5까지의 값을 갖는다. 그러므로 switch 구문을 이용하여 사용자가 선택한 형태의 연산 함수를 호출하도록 하였다.

switch 구문 안에서 수행된 산술 및 논리 연산 함수의 결과 영상은 img3에 저장되어 있다. 이 영상은 CONVERT_IMAGE_TO_DIB 매크로 함수를 이용하여 다시 IppDib 타입으로 변환되고, AfxNewBitmap 함수를 이용하여 새 창으로 나타나게 된다. 만약 사용자가 선택한 두 영상의 크기가 동일하지 않아서 각 연산 함수들이 false 값을 반환한 경우에는 AfxMessageBox 함수를 이용하여 그림 7-15와 같은 경고 메시지를 출력하도록 하였다.

그림 7-15 영상의 크기가 다를 경우 경고 메시지 출력

그림 7-16은 ImageTool 프로그램에서 두 입력 영상에 대하여 산술 및 논리 연산을 실행한 결과 화면을 보여준다. 8개의 영상 중에서 좌측 상단의 두 개 영상이 입력 영상인 lenna.bmp 파일과 square.bmp 파일이다. square.bmp 파일은 가운데 사각형 영역은 완전한 흰색(그레이스케일 값 255)이고 주변부는 검정색(그레이스케일 값 0)으로 이루어진 영상이다. 윗줄 3번째부터 아랫줄 맨 마지막 영상까지는 차례대로 덧셈, 뺄셈, 평균, 차이, AND, OR 연산을 수행한 결과 영상이다. 각각의 연산 결과가 여러분이 머릿속으로 가늠한 결과와 같은지 확인해보기 바란다.

그림 7-16 ImageTool 프로그램에서 산술 및 논리 연산 실행 예제
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.