해당 포스트는 "열혈강의 영상처리 프로그래밍" 책의 내용을 요약한 것이다.



영상 데이터 클래스

 

영상 데이터 클래스는 멤버 변수로 영상의 픽셀 데이터와 영상 규격 정보(영상의 가로/세로 크기, 색상 채널 수, 픽셀 당 비트 수 등)이 있고 멤버 함수로는 영상의 생성/복사, 픽셀 값 설정, 파일 입출력 등 영상을 다루는 데 필요한 가장 기초적인 기능들이 있다. OpenCV와 같은 라이브러리에 영상 데이터 클래스가 잘 구현되어 있기 때문에 실제로 구현하는 일은 거의 없다.

 

- 영상 데이터 클래스 목적

: 편리한 영상 데이터 저장과 영상 처리 함수의 손쉬운 사용

 

<예제를 통해서 볼 예정>

 

*일단 win32 콘솔 응용 프로그램으로 프로젝트 만든다.

 

ex1) CMyImage 클래스를 템플릿으로 정의한다.

 

- 픽셀 데이터 : 일반적으로 픽셀 데이터는 unsigned char(BYTE : windef.h 헤더파일에 typedef로 정의되어 있음)형을 가진다. 따라서 회색조 영상에서 각 픽셀은 0~255, 컬러 영상에서는 rgb 방식으로 채널마다 1byte 씩 할당하여 각 픽셀은 255*255*255가지의 색상 표현이 가능하다. 하지만 픽셀 데이터가 항상 BYTE형이 아니라 실수 값도 가질 수 있다. 따라서 CMyImage 클래스를 작성할 때 여러 데이터 형식을 편리하게 사용할 수 있도록 템플릿으로 정의한다.

 

//CMyImage.h #pragma once #include <windows.h>

template <typename T> class CMyImage { public: CMyImage(void) {} ~CMyImage(void) {} protected: T* m_pImageData; //영상의 픽셀 데이터가 저장되는 배열 }; //타입형을 일일이 쓰면 번거로워 typedef 예약어를 이용해 클래스형 선언 typedef CMyImage<BYTE> CByteImage; typedef CMyImage<int> CInteImage; typedef CMyImage<float> CFloatImage; typedef CMyImage<double> CDoubleImage;

 

+ Recent posts