헤더 파싱 ( Header Parsing ).

Slides:



Advertisements
Similar presentations
1/15 16 기 장영일 Ext File System. 2/15 처음에 Minix 가 사용되었다 ( 제약사항 ) 최대로 저장할 수 있는 파일의 크기 – 64M : 16bit 정수로 블록 주소 지정 -> 1024( 블록 기본 사이즈 ) * (2^16) = 64M.
Advertisements

HTML.  Hyper Text Markup Language  Hyper Text : Link  Markup :  전용 브라우저 (IE, Netscape, Opera..)  프로그램 + 실행 환경 ( 실행기 )
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
1 TCP/IP 소켓 프로그래밍 (C Version) 제 3 장 메시지 구성하기 김 도 형.
1 멀티미디어 데이터 : 그래픽 & 이미지 Lecture #3. 2 그래픽 & 이미지 (1) n 특 징 u 많은 정보를 함축적으로 표현하고 사용자에게 직관적인 느낌을 줄 수 있어 정보 전달이 용이하다 cf) 텍스트 (Text) u 많은 저장 공간 비용이 필요하다 u 멀티미디어.
디자인과 컴퓨터그래픽 컴퓨터 산업디자인. 디자인 도구로서의 컴퓨터그래픽스 1. 컴퓨터 그래픽스의 기능 컴퓨터그래픽스는 하드웨어와 소프트웨어로 이루어져 있다. 이 두 가지 가 서로 연결되어 하나의 시스템으로 디자인 결과물을 만든다. 2. 컴퓨터그래픽스 하드웨어 장치 >
한국산업기술대학교 온라인 기술교육 교재 개발 차세대 모바일 디지털 컨텐츠 15. WML 개발 - I 이번 시간에는... 지난 시간에는 WAP 의 WTA 프로토콜의 기능과 구성, 서비스 예에 대해서 학습하고, WAP 보안을 위한 WTLS 와 WAP 애플리케이션 레이어 보안,
프로그래밍1 및 실습 (C언어) - 3장 기본자료형 (3.6부터 끝까지) -
제 3 장 변수와 자료형.
03장 영상처리를 위한 Visual C++ 디지털 영상 파일 포맷 MFC 응용 프로그램 마법사를 이용한 MFC 프로젝트 작성
제12장 표준 입출력과 파일 입출력.
C++ Espresso 제1장 기초 사항.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
네트워크 프로그래밍 <네트워크 주문 프로그램 V1.00 >
정보이론 PARSONS/OJA 데이터의 표현 1.
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
4장: 자료형과 수식.
구조체 struct 구조체와 함수 구조체의 배열, sizeof 연산자 열거형 enum 형 정의 typedef
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
Red Color Detection Course ChanYoung Kim
Premiere 정태영 임정호.
S3c6410을 이용한 리눅스 비디오 드라이버 포팅 가이드 – - Linux Video Driver Porting Guide Using s3c6410 – 박영만
Java Programming Language (4)
제 18 강 데이터 타입 타입, 변환, 캐스팅 shcho.pe.kr.
Red Color Detection Course ChanYoung Kim
Chapter 1 디지털 영상처리의 개념.
Socket Address Structure and Byte Ordering Functions
Socket Address Structure and Byte Ordering Functions
제 2 장 변수와 상수.
BMP(Bit Map).
14주차.
2007년 1학기 전산학개론 성신여자대학교 컴퓨터정보학부
임베디드 시스템을 위한 C프로그래밍 기법 3.7 ~ 4.5 장 Raphael.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
노출영역 노출영역의 해당 배너들 클릭 시 실제 기획전 페이지로 이동됩니다..
4주차: Data Types and Functions
5장. 상수와 기본 자료형. 5장. 상수와 기본 자료형 5-1 C 언어가 제공하는 기본 자료형 자료형(data type) 기본 자료형 사용자 정의 자료형 int val; "선언할 변수의 특징을 나타내기 위한 키워드" 기본 자료형 기본적으로 제공이 되는 자료형 사용자.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
버퍼 (Buffer).
충북대학교 데이터베이스 & 정보시스템 연구실 정 태 성
제10장 파일 시스템 인터페이스(File System Interface)
DataScience Lab. 박사과정 김희찬 (월)
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
4. 도표 다루기.
School of Electronics and Information. Kyung Hee University.
제 3 장 연산자 (Operators).
Red Color Detection Course ChanYoung Kim
키타노카시쇼쿠닌(北の菓子職人) - 「오호츠크의 소금 맛」
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 05. 상수와 기본 자료형.
Chapter 04 자료 유형.
Chapter 04. 데이터의 표현과 연산(Ⅱ).
4장 자료형.
Byte Alignment ㈜ 웰컴정보시스템 김 정 은.
파일 구조의 이해 PE Format 안녕하십니까
학습목표 Chapter 2-1. 변수와 포인터 변수의 선언과 변수에 대한 메모리 할당을 살펴본다.
C 프로그래밍 기초.
2 배열과 구조.
nauten Compiler – Report Ver.3 Mini-C (주간)
박성진 컴퓨터 프로그래밍 기초 [04] 연산자 박성진
자바 5.0 프로그래밍.
구조체 (Structure).
C언어 프로그래밍의 이해 Ch03. 기본 자료형, 변수와 상수.
문서 작성에 사용되는 기본태그 HR, PRE, B, I, U, S.
컴퓨터 프로그래밍 기초 - 11th : 파일 입출력 및 구조체 -
게임과 1학년 Flipping - 파일을 읽어서 출력하는 프로그램
성공적인 입사지원서 작성법 제이비커리어 교육수석 소 은 선.
‘e-posteel’ 매뉴얼[고객사]
3주차: Control Flow and Others
소켓의 생성과 프로토콜의 설정 School of Electronics and Information.
printf("Global Korea\n");
Presentation transcript:

헤더 파싱 ( Header Parsing )

헤더 파싱이란? 헤더 (Header) 헤더 파싱 데이터를 정해진 표준 포맷(Format)으로 저장하여 상대방이 데이터를 처리할 수 있도록 하는데, 이때 핵심 데이터(core data) 앞 단에 붙여놓은 이를 해석할 수 있는 정보를 헤더라고 한다. 헤더 파싱 표준 포맷으로 만들어진 파일에서 핵심 데이터를 뽑아내기 위해 헤더에서 정보를 읽고 분석하는 과정.

헤더의 필요성 Raw 영상 데이터 파일 헤더가 포함된 표준 포맷 파일 파일의 시작부터 끝까지 영상 픽셀(Pixel) 데이터 파일만으로는 가로, 세로 크기를 알 수 없어 화면 표시 불가능. 헤더가 포함된 표준 포맷 파일 헤더에 영상의 가로, 세로 크기 등 화면 표시에 필요한 정보를 포함하여 표준 포맷을 알고 있는 사용자는 누구든 분석해서 볼 수 있다. 표준 포맷에 따라 BMP, JPEG 등 여러 파일 포맷 존재

BMP 파일의 구조 File Header (전체 파일 정보) Image Info Header (영상 관련 정보) Optional Palette (선택적으로 포함됨) Image Data (핵심 데이터)

헤더 파싱 환경 실험 bmp 영상 htc.bmp 480x540 Syntax 설명 시 가정 logo.bmp 305x249 Syntax 설명 시 가정 : short : 2B , int : 4B

File Header Syntax struct BITMAPFILEHEADER { unsigned char bfType[2]; unsigned int bfSize; // 파일의 크기 unsigned short bfReserved1; unsigned short bfReserved2; unsigned int bfOffBits; }; // 크기: 14B ( 구조체 Byte Align 무시한 실제 크기 )

File Header semantics bfType : type field bfSize : file size field 가장 처음의 두 바이트는 매직넘버로, B와 M에 해당하는 ASCII값인 0x42, 0x4D가 된다. BMP 파일인지 간단히 확인. bfSize : file size field 그 다음부터 4바이트는 파일의 크기이다. 다만, 리틀 엔디안(little Endian)으로 저장되어 있으므로 0x5ee, 즉 1,518B가 된다.

File Header semantics bfOffBits : offset field 픽셀 데이터의 시작 위치 이다. Offset = 파일 헤더 크기 + Image 정보 헤더 크기 + 팔레트 크기 팔레트가 없는 경우, 파일 헤더의 크기 14바이트와 Image 정보 40바이트의 총 54바이트 다음인 0x36번지부터 픽셀 데이터가 시작된다. 예를 들어, htc.bmp는 리얼 컬러로(픽셀당 비트가 24bit) 팔레트가 필요 없어 offset은 54B가 된다. 예를 들어, logo.bmp는 팔레트 데이터의 크기가 1024B (픽셀당 비트가 8bit로 2ⁿ(n=8) 크기의 팔레트가 필요하여, 256 x 4B = 1024B) 이므로 offset은 54 + 1024 = 1,078B가 된다.

Image Info Header Syntax struct BITMAPINFOHEADER { unsigned int biSize; int biWidth; // 영상의 가로크기 int biHeight; // 영상의 세로크기 unsigned short biPlanes; unsigned short biBitsPixel; ... (next page)

Image Info Header Syntax (cont.) unsigned int biCompression; unsigned int biSizeImage; int biXPelsPerMeter; int biYpelsperMeter; unsigned int biColorUsed; unsigned int biColorImportant; };

Image Info. Header semantics biSize : image info. header size field image info. Header의 크기 : 40B (0x28) biBitsPixel : bits per pixel field 한 화소(Pixel)에 들어가는 비트 수이며, 영상의 색 깊이를 뜻한다. 보통 값은 1, 4, 8, 24이다. 이 파일의 경우는 0x18 = 24비트이다. biCompression : compression type field 압축 방식. 비트맵도 압축 방식이 가능하지만 거의 사용하지 않으며, 값은 0이다.

Image Info. Header semantics biSizeImage : image size field 영상의 크기. 압축되지 않은 비트맵 영상 데이터의 크기로, 파일 크기에서 헤더들을 제외한 크기가 된다. htc.bmp의 경우, 777,600B인데 파일의 크기는 777,654이므로, 54B의 헤더를 제외한 만큼 차이가 난다. biSizeImage = width x height x (픽셀당 비트수/8) 예: 100x100 24bit  100x100x(24/8) = 30000B 단, Image의 가로 크기는 4B단위로 그룹화 (Byte Align) 예: 99x100 24bit 99*3는 297로 4B단위로 나누어지지 않으므로 3B 패딩 즉, 100x100과 SizeImage가 같다.

Optional Palette Syntax struct RGBQUAD { unsigned char rgbBlue; unsigned char rgbGreen; unsigned char rgbRed; unsigned char rgbReserved; }; // 4B

팔레트 정보 팔레트란? 팔레트 크기 및 팔레트 데이터 크기 픽셀당 비트 수가 24bit의 리얼 컬러가 아닌 1, 4, 8bit의 경우, 한정된 색상을 지정해 놓은 색상 테이블(color table)이다. 예를 들어, 1bit인 경우 검정과 흰색 2가지에 대한 테이블이 존재하며, 8bit인 경우 256가지 색상 테이블이 존재한다. 팔레트의 각 색상은 4B로 표현된다. 팔레트 크기 및 팔레트 데이터 크기 예를 들어, logo.bmp의 팔레트 크기는 256 (2ⁿ : 픽셀당 비트 n = 8bit) 이다. 또한, 팔레트 데이터의 크기는 256 x 4B = 1024B가 된다.

영상 데이터 biBitsPixel = 24인 경우 리얼 컬러로 한 픽셀을 표현하기 위해 R, G, B 3바이트가 필요하므로, 3바이트씩 한 픽셀을 표현한다. 다만, 리틀 인디언이므로 BGR의 순으로 저장되어 있다. 또한, BMP파일은 DIB방식에 의거 영상의 상하를 반대로 저장하므로 첫 픽셀의 정보는 그림의 가장 아랫줄 첫 번째 픽셀이 된다.

Byte Order 바이트 순서란 Big-Endian 시스템이 데이터를 메모리 번지에 저장하는 순서로, Big-Endian과 Little-Endian방식이 있다. Intel x86계열의 CPU가 Little-Endian을 사용하고, 나머지 대부분의 CPU가 Big-Endian방식을 사용한다. Big-Endian 상위 바이트 값(0x0A)이 번지 수가 작은 메모리 (메모리 번지 : a) 상에 먼저 저장되는 방식.

Byte Order Little-Endian N/W Byte Order 상위 바이트 값(0x0A)이 번지 수가 먼저 저장되는 방식. N/W Byte Order Byte Order의 차이는 서로 다른 CPU의 호스트간에 통신으로 데이터를 주고 받을 때 보낸 데이터가 뒤집히는 문제가 발생할 수 있다. 이 문제를 해결하기 위해, N/W을 통해 데이터를 전송할 때는 Big-Endian방식으로 통일하기로 약속하였고, 이를 N/W Byte Order라고 한다.

Byte Align 구조체에서 아래 구조체와 같이 char a, int b 순으로 선언되면, b는 1B이지만, 그 다음에 3B에 0으로 더 채워진 후 d가 시작된다. (padding) 왜냐하면 int형은 4의 배수 (int 가 32bit 일 경우) 지점에서 시작하도록 되어 있으며, 이를 Byte Align 이라고 한다. ( double형은 8B이고, 8의 배수지점에서 시작 struct balign { char a; int b; } ;

Byte Align 왜? Byte Align 변경 #pragma pack(1) : 1B단위로 Byte Align 실습: sizeof( )로 Byte Align이 바뀌었을 때 구조체의 크기 관찰?

실 습 Wav파일의 헤더를 파싱한다. Wav파일을 준비한다. Wav파일의 포맷 구조 및 Syntax, Semantics를 이해한다. Wav파일 포맷의 필드(field)중 Sample Rate와 Bits per Sample을 출력한다.

End