디지털영상처리3

Similar documents
디지털영상처리3

슬라이드 1

BMP 파일 처리

교육지원 IT시스템 선진화

PowerPoint 프레젠테이션

Microsoft PowerPoint - multi-3.ppt


11장 포인터

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - chap11-포인터의활용.pptx

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

단계 소요 시간 요소 교수 활동 형태 자료 1 동기유발 활동 도입 5분 20분 동기유발 목표 제시 활동1 청기, 백기 게임을 시청하고 청기 백기 게임을 해보기 - 학생들을 두 팀으로 나누어 청기, 백기로 정하기 게임을 해본다. 두 가지 상태로 표현할 수 있는 것이 어떤

Microsoft PowerPoint - ch07 - 포인터 pm0415

슬라이드 1

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

DioPen 6.0 사용 설명서

KNK_C_05_Pointers_Arrays_structures_summary_v02

K&R2 Reference Manual 번역본

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

Microsoft PowerPoint - a10.ppt [호환 모드]

설계란 무엇인가?

1

PowerPoint 프레젠테이션

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

K_R9000PRO_101.pdf

PowerPoint Presentation

02장.배열과 클래스

UI TASK & KEY EVENT

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

untitled

untitled

PowerPoint Presentation

PowerPoint 프레젠테이션

MFC 프로그래밍

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt

Microsoft PowerPoint - chap10-함수의활용.pptx

PowerPoint 프레젠테이션

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

C# Programming Guide - Types

쉽게 풀어쓴 C 프로그래밍

슬라이드 1

adfasdfasfdasfasfadf

Microsoft PowerPoint - 07-Data Manipulation.pptx

GDI 와 DC GDI (Graphics Device Iterface) 응용프로그램이하드웨어를제어할수있도록윈도우 OS 가제공하는모든기능 윈도우가출력장치에대한정보를스스로판단하고분석하여, 실제로사용할드라이버를불러옴 이를이용할경우, 하드웨어독립적인프로그래밍을할수있음 Widw

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

105È£4fš

AVN2100Kor_Ç¥Áö110818F

Structure and Interpretation of Computer Programs: Assignment 3 Seung-Hoon Na October 4, George (아래 3개의 문제에 대한 구현이 모두 포함된 george.rkt파일을 제출하시오.

Open GL

1217 WebTrafMon II

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

rmi_박준용_final.PDF

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조


JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

PowerPoint 프레젠테이션

6 강남구 청담지구 청담동 46, 삼성동 52 일대 46,592-46,592 7 강남구 대치지구 대치동 922번지 일대 58,440-58,440 8 강남구 개포지구 개포동 157일대 20,070-20,070 9 강남구 개포지구중심 포이동 238 일대 25,070-25,

27집최종10.22

황룡사 복원 기본계획 Ⅵ. 사역 및 주변 정비계획 가. 사역주변 정비구상 문화유적지구 조성 1. 정비방향의 설정 황룡사 복원과 함께 주변 임해전지(안압지) 海殿址(雁鴨池)와 분황사 등의 문화유적과 네트워크로 연계되는 종합적 정비계획안을 수립한다. 주차장과 광장 등 주변

설계란 무엇인가?

SRC PLUS 제어기 MANUAL

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

슬라이드 1

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

(JBE Vol. 21, No. 1, January 2016) (Regular Paper) 21 1, (JBE Vol. 21, No. 1, January 2016) ISSN 228

Microsoft PowerPoint - Chapter_09.pptx

3D Game Programming Note

Chap 6: Graphs

쉽게 풀어쓴 C 프로그래밍

untitled

초보자를 위한 C# 21일 완성

히스토그램구하기 사전준비 : 히스토그램을저장할메모리가필요함 필요한메모리개수 à 전체영상의픽셀은그값이 0 ~ 255이므로 256 개의메모리필요함 영상을구성하는픽셀의개수는매우크므로메모리형식은 unsigned long으로해야함 ( unsigned 란 +/- 를고려하지않는다는

Week3

Microsoft PowerPoint - IP11.pptx

11장 포인터

03_queue

Microsoft PowerPoint - 11주차.pptx

4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열

PowerPoint Template

컴파일러

슬라이드 1

Embeddedsystem(8).PDF

Microsoft PowerPoint - 05-chap03-ArrayAndPointer.ppt

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

chap 5: Trees

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

윤성우의 열혈 TCP/IP 소켓 프로그래밍

<B9CCB5F0BEEE20C1A4BAB8C3B3B8AE2E687770>

Microsoft PowerPoint - o8.pptx

Microsoft PowerPoint - 제11장 포인터

VZ94-한글매뉴얼

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

쉽게 풀어쓴 C 프로그래밍

슬라이드 1

PowerPoint 프레젠테이션

Chapter #01 Subject

Transcription:

비트맵 BMP 파일의 실제 BMP 파일의 BMP 파일을 화면에 개요 이해 분석 출력

} 비트맵 (bitmap) 윈도우즈에서영상을표현하기위해사용되는윈도우즈 GDI(Graphic Device Interface) 오브젝트의하나 } 벡터그래픽 (vector graphics) 점, 선, 면등의기본적인그리기도구를이용하여그림을그리는방식 } 윈도우즈 GDI(Graphic Device Interface) 윈도우즈에서화면및프린터출력을위해사용되는도구들 (pen, brush, bitmap, font, region, etc) 2

} 장치의존비트맵 (Device Dependent Bitmap) 출력장치 ( 화면, 프린터등 ) 의설정에따라출력이다르게나타나는형태 } 장치독립비트맵 (Device Independent Bitmap) 출력장치가달라지더라도항상정상적인형태로출력되는비트맵 BMP 파일은윈도우즈환경에서비트맵을 DIB 의형태로저장한파일포맷 3

} 일반적으로비트맵이란 픽셀값들을나타낸 2 차원어레이 4

} BMP 파일의전체구조 BITMAPFILEHEADER 비트맵파일에대한정보 BITMAPINFOHEADER 비트맵자체에대한정보 BMP 파일구조 RGBQUAD 배열 색상테이블 DIB 구조 color/index 배열 픽셀데이터 5

} BITMAPFILEHEADER 구조체 typedef struct tagbitmapfileheader { WORD bftype; DWORD bfsize; WORD bfreserved1; WORD bfreserved2; DWORD bfoffbits; } BITMAPFILEHEADER, *PBITMAPFILEHEADER; ( 참고 ) 여러가지영상파일포맷 BMP : 마이크로소프트윈도우즈기본영상포맷 ( 비압축 ) JPG : 주로 24비트포맷의트루컬러영상을손실압축형태로저장 GIF : 256 색상이하의영상을무손실압축 6

} BITMAP FILE HEADER Name Size Semantics Type 2 Byte BMP 파일임을나타내는태그. 0x42 0x4D (BM) for BMP BA: OS/2 Bitmap Array CI: OS/2 Color Icon CP: OS/2 Color Pointer IC: OS/2 Icon PT: OS/2 Pointer Size 4 Byte BMP 파일의크기 (in byte) Reserved 1 2 Byte 특정 application 등의용도를위하여비워놓은자리. 일반적으로 0 Reserved 2 2 Byte 특정 application 등의용도를위하여비워놓은자리. 일반적으로 0 Offset 4 Byte 실제픽셀정보 (bitmap data) 가시작되는위치 (in byte) 7

} BITMAPINFOHEADER 구조체 typedef struct tagbitmapinfoheader{ DWORD bisize; LONG biwidth; LONG biheight; WORD biplanes; WORD bibitcount; DWORD bicompression; DWORD bisizeimage; LONG bixpelspermeter; LONG biypelspermeter; DWORD biclrused; DWORD biclrimportant; } BITMAPINFOHEADER, *PBITMAPINFOHEADER; 8

} BITMAP INFO HEADER (DIB Header) Name Size Semantics Size 4 Byte The size of the header (in byte, default 40) Width 4 Byte Bitmap width in number of pixels Height 4 Byte Bitmap height in number of pixels Plane 2 Byte Number of color planes used. Always 1. BitCount 2 Byte Number of bits per pixel. (also color depth. 1, 4, 8, 16, 24, 32) Compression 4 Byte Compression Method used. 0 for no compression. ImageSize 4 Byte Image size for raw bitmap data in byte. XPelsPerMeter 4 Byte Horizontal resolution. Pixels per meter. YPelsPerMeter 4 Byte Vertical Resolution. Pixels per meter NumColors 4 Byte Number of colors in the palette. 0 이면 BitCount 에서지정한 color 수모두사용. 아닌경우는 RGBQUAD 구조체의크기를의미 NumImportant 4 Byte Number of important colors. 0 인경우모두색상이중요. 일반적으로 0 이며무시한다. 9

} Values for BITMAP INFO HEADER (DIB Header) Field Semantics Size 12: OS/2 V1 (OS/2, Win 3.0) 64: OS/2 V2 40: Win V3 (Win 3.0), default 108: Win V4 (Win 95/NT4) 128: Win V5 (Win 98/20) Compression 0: no compression. Most common. 1: Run length encoding for 8 bit/pixel 2: Run length encoding for 4 bit/pixel 3: Bit field. 16 or 32 bit/pixel 4: JPEG 5: PNG 10

} RGBQUAD 구조체의배열 typedef struct tagrgbquad { BYTE rgbblue; BYTE rgbgreen; BYTE rgbred; BYTE rgbreserved; } RGBQUAD; RGBQUAD 구조체의배열은트루컬러비트맵에서는존재하지않음 그레이스케일비트맵의경우, (0, 0, 0, 0)~(255, 255, 255, 0) 이차례대로저장됨 11

} 픽셀데이터 그레이스케일비트맵 : RGBQUAD 배열의인덱스저장 트루컬러비트맵 : (B, G, R) 순서로픽셀값저장 } 상하가뒤집힌상태로저장 (bottomup) 12

} Bitmap data 는 4 바이트단위로정렬 3 4 3 3 } Row_Size 4 é ColorDepth ê 32 PictureWidth ù ú 13

} 트루컬러 BMP 파일의분석 [B G R] = [ ] [ ] [ ] [80 80 80] 42 4D 66 36 28 04 04 01 18 30 13 0B 13 0B 80 80 80 80 80 80 80 80 80 80 80 80 14

} 그레이스케일 BMP 파일의분석 40 40 C0 40 40 C0 80 80 80 80 C0 C0 42 4D 46 04 36 04 28 04 04 01 08 10 23 0B 23 0B 01 01 01 01 01 02 02 02 03 03 03 04 04 04 05 05 05 06 06 FE C0 C0 C0 C0 40 40 80 80 40 40 80 80 15

} SetDIBitsToDevice 함수 int SetDIBitsToDevice( HDC hdc, int XDest, int YDest, DWORD dwwidth, DWORD dwheight, int XSrc, int YSrc, UINT ustartscan, UINT cscanlines, CONST VOID *lpvbits, CONST BITMAPINFO *lpbmi, UINT fucoloruse ); // 출력대상의 DC 핸들 // 출력대상의좌상귀 x 좌표 // 출력대상의좌상귀 y 좌표 // DIB 원본사각형너비 // DIB 원본사각형높이 // DIB 원본의좌상귀 x 좌표 // DIB 원본의좌상귀 y 좌표 // 첫번째스캔라인 // 출력할스캔라인의개수 // 픽셀데이터시작주소 // BITMAPINFOHEADER 시작주소 // RGB 또는팔레트인덱스 16

} StretchDIBits 함수 int StretchDIBits( HDC hdc, // 출력대상의 DC 핸들 int XDest, // 출력대상의좌상귀 x 좌표 int YDest, // 출력대상의좌상귀 y 좌표 int ndestwidth, // 출력대상의사각형너비 int ndestheight, // 출력대상의사각형높이 int XSrc, // DIB 원본의좌상귀 x 좌표 int YSrc, // DIB 원본의좌상귀 y 좌표 int nsrcwidth, / DIB 원본사각형너비 int nsrcheight, // DIB 원본사각형높이 CONST VOID *lpbits, // 픽셀데이터시작주소 CONST BITMAPINFO *lpbitsinfo, // BITMAPINFOHEADER 시작주소 UINT iusage, // RGB 또는팔레트인덱스 DWORD dwrop // 래스터연산코드 ); 17

} lenna.bmp 파일로부터 DIB 구조읽기 CFile file; BITMAPFILEHEADER bmfh; DWORD dwfilesize, dwdibsize; BYTE* pdib = NULL; file.open(_t("lenna.bmp"), CFile::modeRead CFile::shareDenyWrite, NULL); dwfilesize = (DWORD)file.GetLength(); dwdibsize = dwfilesize sizeof(bitmapfileheader); pdib = new BYTE[dwDibSize]; file.read(&bmfh, sizeof(bitmapfileheader)); file.read(pdib, dwdibsize); file.close(); 18

} 읽어들인 DIB 를화면에출력 BITMAPINFOHEADER* lpbmih = (BITMAPINFOHEADER*)pDib; int w = lpbmih>biwidth; int h = lpbmih>biheight; int c = lpbmih>bibitcount; // 비트맵정보시작위치를계산 BYTE* lpvbits; if( c == 24 ) lpvbits = (BYTE*)pDib + sizeof(bitmapinfoheader); else lpvbits = (BYTE*)pDib + sizeof(bitmapinfoheader) + sizeof(rgbquad)*(1<<c); CClientDC dc(this); ::SetDIBitsToDevice(dc.m_hDC, point.x, point.y, w, h, 0, 0, 0, h, lpvbits, (BITMAPINFO*)pDib, DIB_RGB_COLORS); delete [] pdib; // 동적할당한메모리를해제 19

} BmpShow 프로그램실행화면 20