bmp 파일 처리 -...

13
BMP 파일 이해 김성영교수 금오공과대학교 컴퓨터공학과

Upload: others

Post on 22-Oct-2019

25 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: BMP 파일 처리 - elearning.kocw.netelearning.kocw.net/KOCW/document/2012/kumoh/kimseongyeong/03.pdf · 3. BMP . 파일의구조. File Header (BITMAPFILEHEADER) Bitmap Info. Header

BMP 파일 이해

김성영교수

금오공과대학교

컴퓨터공학과

Page 2: BMP 파일 처리 - elearning.kocw.netelearning.kocw.net/KOCW/document/2012/kumoh/kimseongyeong/03.pdf · 3. BMP . 파일의구조. File Header (BITMAPFILEHEADER) Bitmap Info. Header

2

학습 내용

BMP 파일의구조

BMP 파일의특징

Page 3: BMP 파일 처리 - elearning.kocw.netelearning.kocw.net/KOCW/document/2012/kumoh/kimseongyeong/03.pdf · 3. BMP . 파일의구조. File Header (BITMAPFILEHEADER) Bitmap Info. Header

3

BMP 파일의 구조

File Header (BITMAPFILEHEADER)

Bitmap Info. Header (BITMAPINFOHEADER)

LUT (RGBQUAD [])

Headers of BMP

Image Data

Page 4: BMP 파일 처리 - elearning.kocw.netelearning.kocw.net/KOCW/document/2012/kumoh/kimseongyeong/03.pdf · 3. BMP . 파일의구조. File Header (BITMAPFILEHEADER) Bitmap Info. Header

444

typedef struct tagBITMAPFILEHEADER{WORD bfType; // Specifies the file type

// It must be "BM" (4D42)

DWORD bfSize; // 파일의크기 (byte)

WORD bfReserved1; // reserved (항상 0)

WORD bfReserved2; // reserved (항상 0)

DWORD bfOffBits; // 픽셀데이터의시작오프셋

} BITMAPFILEHEADER;

Page 5: BMP 파일 처리 - elearning.kocw.netelearning.kocw.net/KOCW/document/2012/kumoh/kimseongyeong/03.pdf · 3. BMP . 파일의구조. File Header (BITMAPFILEHEADER) Bitmap Info. Header

555

typedef struct tagBITMAPINFOHEADER {DWORD biSize; // 구조체의크기 (bytes)

LONG biWidth; // 비트맵의가로 길이 (pixels)

LONG biHeight; // 비트맵의세로 길이 (pixels)

WORD biPlanes; // 비트플레인수 (항상 1)

WORD biBitCount; // 픽셀당비트수 (1,4,8,16,24,32)

DWORD biCompression; // 압축유형 (BI_RGB)

DWORD biSizeImage; // 비트맵데이터의크기 (bytes)

LONG biXPelsPerMeter; // 수평해상도 (pixels/meter)

LONG biYPelsPerMeter; // 수직해상도 (pixels/meter)

DWORD biClrUsed; // LUT에포함된칼라 인덱스의개수

DWORD biClrImportant; // 비트맵을화면에출력하기위해

// 사용된칼라인덱스의개수

} BITMAPINFOHEADER;

Page 6: BMP 파일 처리 - elearning.kocw.netelearning.kocw.net/KOCW/document/2012/kumoh/kimseongyeong/03.pdf · 3. BMP . 파일의구조. File Header (BITMAPFILEHEADER) Bitmap Info. Header

666

typedef struct tagRGBQUAD

{

BYTE rgbBlue; // B component

BYTE rgbGreen; // G component

BYTE rgbRed; // R component

BYTE rgbReserved1; // reserved

} RGBQUAD;

Page 7: BMP 파일 처리 - elearning.kocw.netelearning.kocw.net/KOCW/document/2012/kumoh/kimseongyeong/03.pdf · 3. BMP . 파일의구조. File Header (BITMAPFILEHEADER) Bitmap Info. Header

777

gray-scale image

true color image

bfOffBits: 0x36

biWith: 0x96(150)

biHeight: 0x64(100)

biBitCount: 0x18(24)

biClrUsed: 0x00(0)

bfOffBits: 0x436

biWith: 0x96(150)

biHeight: 0x64(100)

biBitCount: 0x08(8)

biClrUsed: 0x00(0)

Page 8: BMP 파일 처리 - elearning.kocw.netelearning.kocw.net/KOCW/document/2012/kumoh/kimseongyeong/03.pdf · 3. BMP . 파일의구조. File Header (BITMAPFILEHEADER) Bitmap Info. Header

888

Page 9: BMP 파일 처리 - elearning.kocw.netelearning.kocw.net/KOCW/document/2012/kumoh/kimseongyeong/03.pdf · 3. BMP . 파일의구조. File Header (BITMAPFILEHEADER) Bitmap Info. Header

9

BMP 파일의 특징

A ···

1차원배열: data

A ⇒ data[12]

A

8

2차원배열: data

A ⇒ data[1][2]

10

[1*10+2]

(x, y) [width*y + x]

Page 10: BMP 파일 처리 - elearning.kocw.netelearning.kocw.net/KOCW/document/2012/kumoh/kimseongyeong/03.pdf · 3. BMP . 파일의구조. File Header (BITMAPFILEHEADER) Bitmap Info. Header

101010

150 x 50 8bit gray-scale image (x, y) = (2, 1) ?

0149

150 303 304 455 456 7447 7448 7599∙∙∙152151

∙∙∙

(2, 1)

154

0 149 150 299 300 449 450 7349 7350 7499∙∙∙

∙∙∙

(2, 1)

152

[152] = [150*1 + 2]

각 행의 데이터는 4byte의 배수로 저장

(x, y) = (2, 1) [154] = [152*1 + 2]

(x, y) [widthStep*y + x]

Page 11: BMP 파일 처리 - elearning.kocw.netelearning.kocw.net/KOCW/document/2012/kumoh/kimseongyeong/03.pdf · 3. BMP . 파일의구조. File Header (BITMAPFILEHEADER) Bitmap Info. Header

111111

widthStep

width widthStep = ((width + 3) / 4) * 4

(x, y) [widthStep*y + x]

width가 150인 8bit gray-scale image의경우

widthStep = ((150+3) / 4) * 4 = 38 * 4 = 152

Page 12: BMP 파일 처리 - elearning.kocw.netelearning.kocw.net/KOCW/document/2012/kumoh/kimseongyeong/03.pdf · 3. BMP . 파일의구조. File Header (BITMAPFILEHEADER) Bitmap Info. Header

121212

Vertical Flip

(x, y) [widthStep*(height-y-1) + x]

0

height - 1

Page 13: BMP 파일 처리 - elearning.kocw.netelearning.kocw.net/KOCW/document/2012/kumoh/kimseongyeong/03.pdf · 3. BMP . 파일의구조. File Header (BITMAPFILEHEADER) Bitmap Info. Header

13

요약

BMP 파일의구조

Headers of BMP → File Header, Bitmap Info. Header, LUT

Image Data

BMP 파일의특징

한행의데이터는 4바이트의배수

상하반전된데이터

(x, y) [widthStep*(height-y-1) + x]