더북(TheBook)

다음으로 IppImage 클래스에 대해 알아보자. 앞서 설명한 IppDib 클래스는 주로 화면 출력 기능을 담당할 뿐이며 자체적으로 픽셀 데이터를 처리하는 기능은 가지고 있지 않다. 물론 프로그래밍 기법을 이용하여 IppDib 클래스에도 픽셀 데이터를 처리하는 기능을 추가할 수도 있다. 그러나 DIB 구조에서 픽셀 데이터는 기본적으로 영상이 뒤집어져서 저장되어 있고, 가로 크기를 4의 배수 단위로 조정하여 저장하고 있기 때문에 곧바로 영상 처리에서 사용할 경우 신경 써야 하는 것들이 많아서 불편하다. 그러므로 여기서는 간편하게 사용할 수 있는, 직관적인 형태의 영상 클래스를 새로 정의하여 사용할 것이다. IppImage 클래스에서 제공할 기본적인 기능들은 다음과 같다.

① 다양한 자료형 지원(템플릿 클래스)

② 영상 생성과 소멸

③ 픽셀 값 접근 기능

④ 기타 유용한 기능(연산자 재정의, 영상 정보 제공 등)

IppDib 클래스와 비교했을 때 가장 큰 차이점은 IppImage 클래스에는 영상의 픽셀 값에 접근할 수 있는 기능이 있다는 점이다. 즉, IppImage는 영상의 픽셀 값을 읽거나 수정할 수 있는 쉬운 인터페이스를 제공한다. 반면에 영상을 화면에 출력하는 기능은 가지고 있지 않아서, 만약 IppImage 클래스의 영상을 화면에 보여주고 싶을 때는 IppDib 클래스의 도움을 받아야 한다. 그리고 IppImage 클래스는 C++의 템플릿 클래스 형태로 설계하여 다양한 자료형(BYTE, int, float, double, RGBBYTE 등)을 쉽게 지원할 수 있도록 할 것이다.

이 장에서는 IppDib 클래스와 IppImage 클래스 외에 추가로 RGBBYTE라는 이름의 클래스를 새로 만들 것이다. RGBBYTE는 트루컬러 비트맵에서 픽셀의 색상을 표현하기 위한 클래스로써 R, G, B 색상을 한꺼번에 표현하기 위한 자료형의 역할을 할 것이다. RGBBYTE 클래스에 대해서는 4.3절 뒷부분에서 자세히 설명하도록 하겠다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.