BMP(Bit Map).

Slides:



Advertisements
Similar presentations
자료의 표현 1. 문자 자료의 표현 2. 멀티미디어 자료의 표현. 컴퓨터일반자료의 표현 학습 목표 ◆ 컴퓨터에서 사용하는 문자 데이터의 표현 방법을 이해할 수 있다. ◆ 컴퓨터에서 사용하는 멀티미디어 데 이터의 표현 방법을 설명할 수 있다.
Advertisements

1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1 멀티미디어 데이터 : 그래픽 & 이미지 Lecture #3. 2 그래픽 & 이미지 (1) n 특 징 u 많은 정보를 함축적으로 표현하고 사용자에게 직관적인 느낌을 줄 수 있어 정보 전달이 용이하다 cf) 텍스트 (Text) u 많은 저장 공간 비용이 필요하다 u 멀티미디어.
출석수업 과제 – 총 5문제, 10월 25일 제출 정보통계학과 장영재 교수.
재료수치해석 HW # 박재혁.
4장 영상 입출력 프로그램 만들기 비트맵 파일, MDI를 이용한 입출력 프로그램 (THU)
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
Image & Video processing
신호처리 실험 (Signal Processing Lab)
제 9 장 구조체와 공용체.
컴퓨터 프로그래밍 기초 [Final] 기말고사
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
임베디드 시스템 개론 크로스 플랫폼 설치 2일차 강의 자료 Embedded System Lab.
5장. 참조 타입.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
DSP Lab. Week 3 My image Doug Young Suh Media Lab. Rm401
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
멀티미디어 시스템 (아날로그 이미지,신호를 디지털로 변환 방법) 이름 : 김대진 학번 :
DK-128 ADC 실습 아이티즌 기술연구소
23장. 구조체와 사용자 정의 자료형 2.
홈페이지용 그림 활용법 그림 삽입 태그 <IMG> 배경 그림 다루기 그림과 문자열의 어울림
11장. 1차원 배열.
Chapter 04 영상 처리.
헤더 파싱 ( Header Parsing ).
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
27장. 모듈화 프로그래밍.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
24장. 파일 입출력.
2 보안 1 도구 윈도우 XP > 온밀크 프로그램 설치 장애 (보안 설정) / 품목추가 깨질 때 장애증상
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
27강 JAVA Collections - II - Map계열 컬렉션 클래스 살펴보기 - Set계열 컬렉션 클래스 살펴보기
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
Microsoft Word 2002 제4장 그리기와 그림 삽입하기.
2장. 변수와 타입.
2강_첫번째 안드로이드 프로젝트 에뮬레이터(AVD) 만들기 처음 만들어 보는 프로젝트 전체적인 구성 살펴보기
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
9강. 클래스 실전 학사 관리 프로그램 만들기 프로그래밍이란 결국 데이터를 효율적으로 관리하기 위한 공구
법령안편집기 연결버튼 표시가 안 될 경우 정부입법지원센터( 입안 및 심사안을 진행시
14강. 세션 세션이란? 세션 문법 Lecturer Kim Myoung-Ho Nickname 블스
Canary value 스택 가드(Stack Guard).
데이터 동적 할당 Collection class.
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
헤드라인 헤드라인 헤드라인 헤드라인 헤드라인 헤드라인 헤드라인 헤드라인 헤드라인 헤드라인 헤드라인 헤드라인 텍스트 샘플 텍스트
자료관리 : 현 화면에서 인쇄할 자료를 입력하여 발행하는 화면 입니다.
에어 PHP 입문.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
Linux 9.X 기초에서 활용까지 Chapter 06 VI 편집기.
가장 많이 사용 Accelerator 최상위 WM_COMMAND, OLE 메시지 관련 이벤트 처리만 가능 이 클래스를 상속받아서 다른 이벤트 처리 이벤트 처리 관련 윈도우(창) 최상위 클래스 멀티 테스킹(모듈) CFrameWnd, Cview,
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
구조체(struct)와 공용체(union)
Summary of Pointers and Arrays
게임과 1학년 Flipping - 파일을 읽어서 출력하는 프로그램
바이트 순서 변환 함수 주소 변환 함수 바이트 조작 함수 원격지 호스트 정보를 얻는 함수
2장. 페인트샵을 이용한 영상처리 맛보기 신라대학교 임은경 2주차 - 페인트샵을 이용한 영상처리 맛보기.
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
제 4 장 Record.
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
6 객체.
Chapter 11. 문서 인쇄 및 파일 형식.
BoardGame 보드게임 따라가기.
Ch 4. 선택 위젯의 사용과 커스텀뷰 만들기 Assignment #1 04 – 1, 2) 08학번 정보과학과 유재윤
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

BMP(Bit Map)

1. BMP 디바이스에 독립적인 영상파일을 저장하는 표준규격 JPEG, GIF, BMP, TIFF, PCX, PGM 등이 존재 보통 영상데이터는 정보량이 크기 때문에 압축을 통해 작은 크기로 변환하여 저장한다. BMP파일 포맷은 압축을 수행하지 않으며 헤드가 있는 여러 형식의 파일 중에서 구조가 가장 간단하다.

2. Bitmap데이터 형식 Window환경에서 프로그래밍을 하는 경우 다른 환경에서 프로그래밍을 하는 경우 windows.h 헤더파일에 정의 다른 환경에서 프로그래밍을 하는 경우 다음과 같이 헤더파일에 직접 정의

(1) File Header (비트맵 파일에 대한 정보) 파일 헤더 BITMAPFILEHEAER라는 구조체에 정의 사용자는 단지 구조체 변수를 선언해서 사용만 하면 된다. 현재의 파일 포맷이 정말 BMP인지에 대한 정보 BMP파일의 확장자 : *.BMP로 정의 다른 파일이 XX.BMP라고 썼을 수 있으므로, BMP디코더가 이를 분석 세가지 분석방법이 존재.

(1) File Header (비트맵 파일에 대한 정보) typedef struct tagBITMAPFILEHEADER {                        WORD     bfType;  DWORD     bfSize;  WORD     bfReserved1;  WORD     bfReserved2; DWORD   bfOffBits; } BITMAPFILEHEADER; WORD는 2바이트, DWORD는 4바이트

(1) File Header (비트맵 파일에 대한 정보) 변수 각각의 기능을 살펴보면 다음과 같다. bfType : 비트맵 파일인지 아닌지를 확인하기 위한 변수 BM이라는 캐릭터 형이 저장되어있습니다. bfSize : 바이트단위로 전체파일 크기 파일의 전체 크기를 표시합니다. bfReserved1, bfReserved2 : 사용하지 않습니다. 0값. bfOffBits : 실질 데이터(pixel)의 시작좌표를 나타냅니다.

(1) File Header (비트맵 파일에 대한 정보) 1. 파일의 첫 2바이트가 BM으로 시작하는가. 2. 바이트 단위의 정확한 파일크기와 헤더내의 bfSize가 있어야할 값과 일치하는가. 3. bfReserved1과 bfReserved2가 있어야 할 위치에 0값이 있는가. 세가지를 모두 체크, bmp파일 여부를 판명 디코더의 크기를 줄이기 위해, 첫 번째것만 체크하는 경우 파일의 헤더의 역할 포맷의 명확성을 표시 파일 내에 있어서 실질 데이터(pixel data)의 주소값을 나타내줍니다. 다시말해, 실질데이터의 파일내 위치를 정의해 주는 역할 bfOffBits에서 설정되어있음

(2) Image Header ("영상자체"에 대한 정보) 비트맵 영상에 대한 크기나 흑백/컬러정보, 팔레트 크기정보 등을 저장하기 위하여 파일헤드 바로 다음에 위치하는 구조체 변수 역할 이미지의 비트 수와 크기, 차원, 그리고 압축여부를 알려주는 역할 즉, 이미지 자체의 정보를 갖고 있다.

typedef struct tagBITMAPINFOHEADER {        DWORD  biSize;             // 이 구조체의 크기       LONG     biWidth;           // 픽셀단위로 영상의 폭       LONG     biHeitht;           // 영상의 높이       WORD    biplanes;          // 비트 플레인 수(항상 1)        WORD    biBitCount;     //픽셀당 비트 수(컬러, 흑백 구별)       DWORD  biCompression;       // 압축유무       DWORD  biSizeImage;            // 영상의 크기(바이트단위)       LONG     biXPelsPerMeter;     // 가로해상도       LONG     biYPelsPerMeter;     // 세로해상도       DWORD  biClrUsed;    //실제 사용 색상수(팔레트의 크기)       DWORD  biClrImportant;          // 주로 사용되는 컬러 수 }  BITMAPINFOHEADER;

(3) Pallete 팔레트는 인덱스에 의한 컬러값을 저장하기 위한 구조체. 이 구조체를 사용하여 팔레트의 수 만큼 배열을 할당하여 저장. 256컬러모드의 영상은 팔레트의배열 크기가 256개 16비트 컬러영상은 팔레트 크기가 2의 16승개이다. biClrUsed변수를 참조하면 된다.

(3) Pallete tydef struct tagRGBQUAD { BYTE rgbBlue; //파란색 값       BYTE     rgbGreen; //녹색 값       BYTE     rgbRed; //빨간색 값       BYTE     rgbReserved; //항상 0 }RGBQUAD;

3. 주의 사항 (1) 이미지는 거꾸로 저장됨 실제로 비트맵 영상이 저장될 때는 이미지가 거꾸로 저장 윈도우 : 좌표 (0,0)은 좌측 상단의 처음을 의미 BITMAP : 좌표 (0,0)은 좌측 상단이 아닌 좌측 하단의 처음 이미지 데이터가 위에서 아래가 아닌 아래에서 위로 즉 뒤집혀서 저장

3. 주의 사항 (1) 이미지는 거꾸로 저장됨 따라서, 비트맵에서 영상데이터를 나중에 영상처리를 위해 사용할 배열로 다시 저장할 때는 거꾸로 반전시켜 저장       

3. 주의 사항 (2) 영상 가로길이는 4바이트의 배수 비트맵은 메모리 저장시, 가로줄의 크기는 항상 4바이트의 배수가 되어야 한다. 이유 비디오 메모리는 4의 배수의 체계 그림이란 것이 우리가 눈으로 보는 것처럼 가로(width), 세로(height)의 큰 사각형처럼 저장되어 있는 것이 아님 선형 즉 연속적인 데이터로 저장되어 있어서 이것을 화면에 출력해 주기 위해서는 가로(width) 크기에 맞게 끊어서 출력

3. 주의 사항 (2) 영상 가로길이는 4바이트의 배수 원본 그림(가로 15바이트)

3. 주의 사항 (2) 영상 가로길이는 4바이트의 배수 그림출력(4의 배수 미적용 ) 비디오 메모리는 4의 배수 체계 때문에 15바이트가 아니라 16바이트 먼저 15바이트의 빨간색을 출력한 후에 다음 라인으로 이동해서 노란색을 출력해야 하지만, 가로(width) 총 바이트 수는 15바이트뿐 이기 때문에 잘못된 위치에 출력

3. 주의 사항 (2) 영상 가로길이는 4바이트의 배수 그림 출력(4의 배수 적용) 4의 배수를 적용해 가로(width)의 총 바이트 크기를 15가 아닌 16바이트로 해 주었기 때문에 화면에 제대로 된 그림이 출력

3. 주의 사항 (2) 영상 가로길이는 4바이트의 배수 24비트 BMP 저장(Save) 4의 배수 미적용 4의 배수 적용

3. 주의 사항 (2) 영상 가로길이는 4바이트의 배수 24비트 BMP 로드(Load) 4의 배수 적용 4의 배수 미적용

3. 주의 사항 (2) 영상 가로길이는 4바이트의 배수 BMP로 저장할 영상 데이터의 실제크기 78 * 60 가로픽셀 78은 4의 배수가 아니므로 80으로 만든다. 실제 저장되는 메모리는 80*60픽셀의 크기가 된다.