공부/영상 처리

영상처리 - 3 (BMP 포맷)

이건나이스가아니야 2024. 3. 19. 12:50

BMP 파일 구조

- 파일헤더 : 14byte

- 이미지 정보 헤더: 40byte

- 팔레트 크기

- 파일 데이터부( body, RGB가 아닌 BGR으로 되어있음)

 

비트맵 파일헤더

typedef struct tagBITMAPFILEHEADER {
               WORD      bfType;        // "BM"이라는 문자로 나 비트맵임 ㅇㅋ? 확인용
               DWORD     bfSize;        // 파일의 크기 (바이트)
               WORD      bfReserved1;   // 예약 변수1
               WORD      bfReserved2;   // 예약 변수2
               DWORD     bfOffBits;     // Body 시작 위치(14+40+팔레트크기)
} BITMAPFILEHEADER

 

예시

비트맵 정보헤더

typedef struct tagBITMAPINFOHEADER {
               DWORD       biSize;             // 이 구조체 크기 (40byte)
               LONG        biWidth;            // 가로 크기(픽셀 단위)
               LONG        biHeight;           // 세로 크기
               WORD        biPlanes;           // 평면 수(보통 1)
               WORD        biBitCount;         // 픽셀 1개당 표현하는 비트수
               DWORD       biCompression;      // 압축 플래그(보통 0)
               DWORD       biSizeImage;        // 파일 크기(가로크기는 4byte의 배수)
               LONG        biXPelsPerMeter;    // 가로 해상도(보통 화면 해상도 72dpi)
               LONG        biYPelsPerMeter;    // 세로 해상도
               DWORD       biClrUsed;          // 실제 사용 색상 수
               DWORD       biClrImportant;     // 중요하게 사용된 색상 수(?)
} BITMAPINFOHEADER

예시

 

팔레트 (물감같은거임 물감색깔이 다른게 있을수도있으니 ㅇㅇ)

typedef struct tagRGBQUAD {
              BYTE rgbBlue;        
              BYTE rgbGreen;       
              BYTE rgbRed;         
              BYTE rgbReserved;		// 예약값
} RGBQUAD;

 

예시

 

참고로 행에 대해서만 역순이다.

'공부 > 영상 처리' 카테고리의 다른 글

영상처리 - 6 (영상 분할)  (0) 2024.03.19
영상처리 - 5 (특징 추출)  (0) 2024.03.19
영상처리 - 4 (영상 향상)  (0) 2024.03.19
영상처리 - 2 (영상 파일)  (0) 2024.03.19
영상처리 - 1  (0) 2024.03.19