Priceless
[Vision] BMP 파일(비트맵 파일) 본문
비트맵(Bitmap)
정의
비트(픽셀)들의 집합
영상의 전체 크기에 해당하는 픽셀 정보를 그대로 저장한다
장점
표현이 직관적이다
데이터의 손실이 없다
단점
- 압축되지 않으므로 메모리 용량을 많이 차지한다
예) FHD 기준 BMP는 약 6MB인 반면 JPEG는 약 2MB 이다
- 영상이 확대되거나 축소될 때 화질 손상이 크다
종류
장치 의존 비트맵(Device Dependent Bitmaps)
출력 장치에 따라 다르게 표현되는 비트맵
장치 독립 비트맵(Device Independent Bitmaps)
출력 장치가 다르더라도 동일하게 출력되는 비트맵
BMP 파일은 Windows 환경에서 비트맵을 DIB 형태로 저장한 파일 포맷이다
BMP 파일의 구조
WORD는 2 byte, DWORD는 4 byte를 가진다
비트맵 파일 헤더
비트맵 파일에 대한 정보를 가진다
아래의 구조체를 가지고 있다
총 14 byte를 가지고 있다
- bfType: 비트맵 파일 여부를 16진수로 나타낸다
- bfSize: BMP 파일의 크기를 나타낸다
- bfReserved: 사용X
- bfOffBits: 비트맵 파일 헤더부터 픽셀 데이터까지의 오프셋을 나타낸다
비트맵 정보 헤더
- biSize: 비트맵 정보 헤더의 크기를 나타낸다
- biWidth: 비트맵 영상의 가로 크기
- biHeight: 비트맵 영상의 세로 크기
- biPlans: 1
- biBitCount: 한 픽셀의 컬러를 나타내기 위한 사용하는 비트 수
트루 컬러(RGB 채널)인 경우 256 x 3이므로 24, 그레이 스케일은 256색이므로 8을 가지고 있다
색상 테이블/팔레트
비트맵에 사용되는 색상 정보
- rgbquard 4byte로 rbg와 사용되지 않는 1byte
4의 배수로 맞춘다
RGB 값을 GBR 순으로 저장하고 있는 구조체가 있다
색상 테이블은 256컬러 이하(그레이 스케일 비트맵)에는 존재하고
트루컬러 비트맵에는 색상 테이블이 존재하지 않으며, 픽셀 데이터에 값을 그대로 저장하고 있다
그레이스케일 경우
(0,0,0,0), (1,1,1,0)~(255,255,255,0)의 비트맵을 가진다
크기는 256 x 4 = 1024byte이다
픽셀 데이터
그레이스케일 비트맵에서는 rgbquad 배열의 인덱스를 저장한
트루 컬러 비트맵은 BGR(RGB의 역순) 순서로 픽셀 값을 저장한다
일반적으로 상하가 뒤집힌 형태로 저장된다
효율적인 데이터 관리를 위해 영상의 가로 크기를 4의 배수로 저장한다
3의 배수인 경우 아래와 같이 저장된다
BMP 파일 분석
그레이 스케일 BMP 파일
gray_4x4.bmp
각 바이트 값을 출력하면
분홍색은 가질 수 있는 값 목록이고
파란색은 실제 값의 인덱스를 나타낸다
트루컬러 BMP 파일의 분석
color_4x4.bmp
트루컬러이기 때문에 16+8=24bit로 표현된다
트루컬러이기 때문에 색상 테이블은 없고 바로 색상 정보를 가지고 있다
비트맵 파일 열기(Visual Studio)
bmp파일을 Visual Studio에서 열기 위해서는
bmp 파일을선택하고 열 때 연결 프로그램을 선택하여
바이너리 편집기를 통해 열면 16진수의 문자로 확인할 수 있다
'ComputerVision > OpenCV' 카테고리의 다른 글
[OpenCV] Mat 클래스 (0) | 2023.10.23 |
---|---|
[OpenCV] Windows에서 OpenCV 설치, 설정 및 사용하기 (0) | 2023.10.22 |
[OpenCV]OpenCV 클래스 (0) | 2023.10.22 |
[OpenCV] OpenCV 모듈 (0) | 2023.10.22 |
[CV] Visual Studio를 통한 비트맵 출력 프로그램 생성 (0) | 2023.10.21 |