1 / 99

1 장 . 디지털 영상처리의 개념 (2)

1 장 . 디지털 영상처리의 개념 (2). 임은경. 차례 및 목적. 차례 영상처리의 개념 영상처리에 대한 이야기 영상 데이터에 대한 이해 영상처리의 응용분야 영상처리의 전망. 차례 및 목적. 차례 오픈소스 CxImage 로 영상다루기 영상처리 프로그래밍 패턴 CxImage 소개 CxImage 라이브러리 만들기 CxImage 와 연계를 위한 프로그램 뼈대 만들기 CxImage 라이브러리 연동하기 영상 읽기 영상 보기 영상 저장

Download Presentation

1 장 . 디지털 영상처리의 개념 (2)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 1장. 디지털 영상처리의 개념(2) 임은경 2주차 - 디지털영상처리의개념

  2. 차례 및 목적 • 차례 • 영상처리의 개념 • 영상처리에 대한 이야기 • 영상 데이터에 대한 이해 • 영상처리의 응용분야 • 영상처리의 전망 2주차 - 디지털영상처리의개념

  3. 차례 및 목적 • 차례 • 오픈소스 CxImage로 영상다루기 • 영상처리 프로그래밍 패턴 • CxImage 소개 • CxImage 라이브러리 만들기 • CxImage와 연계를 위한 프로그램 뼈대 만들기 • CxImage 라이브러리 연동하기 • 영상 읽기 • 영상 보기 • 영상 저장 • CxImage 기반 영상 처리 프로그램 작성 – 지터 효과(jittereffect) • CxImage 기반 visualGS 라이브러리 작성과 지터 효과 프로그램 작성 • 수행시간 측정하기 • CxImage 제공 함수 목록 2주차 - 디지털영상처리의개념

  4. CxImage로 영상다루기 • 영상 포맷 • RAW • JPEG • BMP • PNG • GIF • 다양한 포맷이 나온 이유? • 영상의 대용량 처리 • 압축 기술에 차이 • 압축 기술은 영상의 특성을 잘 반영하여 표현 2주차 - 디지털영상처리의개념

  5. CxImage로 영상다루기 HEAD HEAD 없음 영상 데이터 영상 데이터 BMP, JPG, GIF, 등의 헤드가 있는 파일들 RAW 파일(헤드가 없음) * 헤드 내에는 영상의 크기, 컬러의 수, 팔레트 등의 다양한 정보가 들어 있음 * RAW 파일은 헤드 정보가 없으며 파일을 읽기 위해서는 영상의 크기를 미리 알고 있어야 함. • 영상 포맷의 차이 • BMP, RAW 비교 2주차 - 디지털영상처리의개념

  6. CxImage로 영상다루기 • BMP, GIF, JPEG 헤더 정보 비교 • 그림 1.22를통해서 헤더 정보의 내용 차이를 알수 있음 2주차 - 디지털영상처리의개념

  7. CxImage 라이브러리 만들기 • CxImage 의 최신 버전과 최근 버전을 다운로드 • http://www.xdp.it • 강의 홈페이지를 통해서 다운 가능 • CxImage599c_full.zip 다운로드 받기 • 압축 풀기 • 영상처리 프로젝트를 개발할 폴더와 같은 위치에 압축 풀기 • d:\dip\cximage599c_full\ • 라이브러리 생성하기 • 압축푼 폴더 내에 CxImageLib.dsw를 마우스로 더블클릭하여 실행 2주차 - 디지털영상처리의개념

  8. CxImage 라이브러리 만들기 • Workspace 창의 [File View]탭을 클릭하기 • CxImage file ~ demoDll File 까지정적 링크 라이브러리를 생성하기 위해 빌드함 • 생성되는 정적 링크 라이브러리 • CxImage.Lib • CxImageCrtDll.Lib • cximaged.dll • Demod.exe • Demoddll.exe • Demod.exe 실행하기 2주차 - 디지털영상처리의개념

  9. 프로그램 뼈대 만들기 • 프로그램 뼈대 만들기 • 비주얼 c++ 실행하기 • 메뉴 File – New 를 선택 • 프로젝트생성 창에 프로젝트 탭을 선택하고, MFC AppWizard(exe) 를선택 • 프로젝트 폴더 : d:\dip\ • 확인버튼 클릭하여 다음단계로 넘어감 • 프로젝트 생성 6단계 창에서… • Baseclass를 CScrallView로 선택하고 마침 버튼 클릭 • 프로젝트 생성 후, 실행하기 2주차 - 디지털영상처리의개념

  10. 프로그램 뼈대 만들기 • 윈도우 프로그램 작성 • Visual C++에서는 윈도우 프로그램 작성을 도와주는 마법사를 제공 • 몇 가지 선택 사항을 입력하면 자동으로 기본적인 윈도우 프로그램이 생성됨 • 생성된 윈도우 프로그램을 확장하여 개별적인 응용 프로그램을 작성할 수 있도록 해주는 기능이 제공됨 4주차 - MFC를 이용한 영상처리 프로그래밍

  11. 프로그램 뼈대 만들기 • Visual C++ 프로그램 실행한 다음 [File] 메뉴에서 [New] 항목 선택 4주차 - MFC를 이용한 영상처리 프로그래밍

  12. 프로그램 뼈대 만들기 2. [Projects] 탭을 선택한 다음 “MFC AppWizard(exe)”를 선택. Project name 상자에 프로그램 이름 “Hello”를입력. Location 상자에서 폴터 위치 지정 4주차 - MFC를 이용한 영상처리 프로그래밍

  13. 프로그램 뼈대 만들기 3. 1단계 부터 6단계 까지의 선택 사양 설정을 해야 하는데, 여기에서는 기본 설정을 사용해도 되므로 1단계에서 바로 [Finish] 버튼 선택해도 상관없다. 4주차 - MFC를 이용한 영상처리 프로그래밍

  14. 프로그램 뼈대 만들기 • 옵션에 따른 프로그램 타입의 종류 Single Document Multiple Document Dialog based 타입 4주차 - MFC를 이용한 영상처리 프로그래밍

  15. 프로그램 뼈대 만들기 4. 2단계 – database 기능을 추가할 것인지 아닌지를 설정하는 단계를 나타냄 4주차 - MFC를 이용한 영상처리 프로그래밍

  16. 프로그램 뼈대 만들기 5. 3단계 – OLE와 관련된 선택 사항들을 설정하는 단계 4주차 - MFC를 이용한 영상처리 프로그래밍

  17. 프로그램 뼈대 만들기 6. 4단계 –툴바, 상태바, 프린트기능 등을 부여할 것인지 여부를 설정하는 단계 4주차 - MFC를 이용한 영상처리 프로그래밍

  18. 프로그램 뼈대 만들기 앞의 대화상자에서 [Advanced…]를 클릭하면, 4주차 - MFC를 이용한 영상처리 프로그래밍

  19. 프로그램 뼈대 만들기 앞의 대화상자에 존재하는 옵션과 설명… 4주차 - MFC를 이용한 영상처리 프로그래밍

  20. 프로그램 뼈대 만들기 7. 5단계 –실행될 프로그램의 스타일과 설명문(주석문)을 자동으로 삽입할 것인지 여부, MFC 라이브러리를 어떤 방식으로 사용할 것인지 여부 등을 설정함 4주차 - MFC를 이용한 영상처리 프로그래밍

  21. 프로그램 뼈대 만들기 8. 6단계 4주차 - MFC를 이용한 영상처리 프로그래밍

  22. 프로그램 뼈대 만들기 8. 마지막 단계 –생성될 프로젝트의 정보를 나타냄 4주차 - MFC를 이용한 영상처리 프로그래밍

  23. 애플리케이션 마법사를 이용한 MFC 프로젝트의 작성 9. 생성된 프로젝트의 모습 4주차 - MFC를 이용한 영상처리 프로그래밍

  24. 프로그램 뼈대 만들기 10. 실행결과 4주차 - MFC를 이용한 영상처리 프로그래밍

  25. 프로그램 뼈대 만들기 • 탭의 전환에 따른 workspace 정보들 • 탭에 대한 설명 4주차 - MFC를 이용한 영상처리 프로그래밍

  26. 프로그램 뼈대 만들기 • MFC프로그램의 구성요소 세가지 • 메인프레임 윈도우 • 윈도우 내부의 오픈된 창 부분을 제외한 나머지 부분을 가리킴 • 메뉴, 툴바, 상태바 등의 프로그램을 뼈대를 가짐 • 문서객체 • 데이터의 저장, 변환, 처리, 삭제 등을 담당하는 객체 • 눈에 보이지 않음 • 뷰객체 • 문서객체의 데이터를 화면(열린창)에 출력하는 역할을 담당하는 객체 • MFC 프로그래밍  데이터의 처리와 데이터의 출력을 분리된 두개의 다른 클래스에서 담당 4주차 - MFC를 이용한 영상처리 프로그래밍

  27. 프로그램 뼈대 만들기 • View 클래스의 OnDraw() 함수 • 데이터를 화면에 출력하는 기능을 담당하는 함수 4주차 - MFC를 이용한 영상처리 프로그래밍

  28. 프로그램 뼈대 만들기 • 객체들간의 메시지 통신 • 세가지 객체들은 서로 통신되어야 함 • HOW? • 객체들 사이에서 데이터나 함수의 상호참조를 위해 유용한 함수를 제공함 4주차 - MFC를 이용한 영상처리 프로그래밍

  29. 프로그램 뼈대 만들기 • Document 클래스(CtestDoc)에 마우스를 두고 오른쪽 버튼을 누르면 메뉴가 나타남 • 이 메뉴상에서 <Add Member Variable…>을 선택 • 클래스에 새로운 멤버변수를 추가하고자 할 경우에 사용함 4주차 - MFC를 이용한 영상처리 프로그래밍

  30. 프로그램 뼈대 만들기 • 입력대화상자가 나타나고, 각 변수 타입과 변수이름, 접근 방법을 물어본다. • 다음과 같이 설정하라. 4주차 - MFC를 이용한 영상처리 프로그래밍

  31. 프로그램 뼈대 만들기 • 다음과 같이 나타남 4주차 - MFC를 이용한 영상처리 프로그래밍

  32. 프로그램 뼈대 만들기 • 프로그램 타입 • Single Document • SDI • 하나의 프로그램에 하나의 창만 존재하는 구조 • Internet Explorer는 대표적인 SDI 구조 • Multiple Document • MDI • PaintShop과 같이 프로그램 내에 여러 개의 창이나 문서를 열 수 있는 구조 • 많은 응용 프로그램들이 이 구조를 사용함 • Dialog based 타입의 Document • 메시지 박스나 이와 같은 구조를 사용하는 프로그램 4주차 - MFC를 이용한 영상처리 프로그래밍

  33. CxImage 라이브러리 연동하기 • 헤더 파일 복사하기 • FirstCxImage 프로젝트의 폴더 공간에 include 폴더를 만듬 • Cximage599c_full/CxImage의 모든 헤더파일(*.h)를앞의 include 폴더로복사하기 2주차 - 디지털영상처리의개념

  34. CxImage 라이브러리 연동하기 헤더 파일 디렉토리를 프로젝트 설정에 포함하기 2주차 - 디지털영상처리의개념

  35. CxImage 라이브러리 연동하기 StdAfx.h에 CxImage의 헤더 파일인 xImage.h 추가하기 2주차 - 디지털영상처리의개념

  36. CxImage 라이브러리 연동하기 • CxImage 정적링크 라이브러리 연동하기 • CxImage 정적 라이브러리와 연동할 영상 포맷 관련 라이브러리 복사하기 • 윈도우 검색 메뉴를 이용하여, Cximage599c_full 폴더에서 제공된 *.lib 를 찾아보자 • 여러 개의 파일 중 영상 포맷 관련 라이브러리를 복사하자 • 파일들… • J2k.lib , Jasper.lib , Jbig.lib , Jpeg.lib , Png.lib , Tiff.lib , Zlib.lib • 자신이 생성한 프로젝트 FirstCxImage 폴더 안에 lib 폴더를 만들고 그 안에 복사하여 붙여 넣자. 2주차 - 디지털영상처리의개념

  37. CxImage 라이브러리 연동하기 • CxImage 정적링크 라이브러리 복사하기 • Cximage599c_full 폴더 내에 있는 CxImage 폴더 내에 있는 debug 폴더 내에 • Cximage.lib 를복사하기 • FirstCxImage 폴더 내에 debug 폴더 안에 • 복사한 CxImage.lib 를붙여넣기 2주차 - 디지털영상처리의개념

  38. CxImage 라이브러리 연동하기 • CxImage 정적링크 파이브러리명과 영상 포맷 관련 라이브러리 명을 프로젝트에 설정하기 • Object/library modules 밑의 입력 창에 다음을 입력 • Debug/cximage.lib ./lib/png.lib ./lib/Jpeg.lib ./lib/zlib.lib ./lib/Tiff.lib ./lib/j2k.lib ./lib/jbig.lib ./lib/jasper.lib 2주차 - 디지털영상처리의개념

  39. CxImage 라이브러리 연동하기 • FirstCxImage 재빌드시키고 실행하기 2주차 - 디지털영상처리의개념

  40. 영상 읽기 • MFC 구현 • 영상을 읽고 저장할때 필요한 변수를 관리하는 곳…? • 수행은…? • 읽은 영상 데이터를 우리 눈에 보여주는 곳…? • 수행은…? • View와 Document 클래스 • Document 클래스 • 데이터의 저장, 변환, 처리를 위한 역할 • View 클래스 • 도큐먼트 클래스의 데이터를 화면에 출력하는 역할 2주차 - 디지털영상처리의개념

  41. 영상 읽기 • 도큐먼트 클래스에 멤버 변수 추가 • CFirstCxImageDoc 선택 후, 오른쪽 마우스 버튼을 누르면 팝업 메뉴가 나타남 • Add Member Variable…을 선택 • 입력 대화창에 변수 이름과 데이터형을 입력한다. • 데이터형 : CxImage* • 변수 이름 : m_pImage • 확인버튼클릭하면, workspace창이나 소스의 헤더 파일에 추가됨. • 추가된 m_Image를 초기화하기 • FirstCxImageDoc.cpp의 생성자 파일 CFirstCxImageDoc()에서 초기화하기 • m_pImage = NULL; 2주차 - 디지털영상처리의개념

  42. 영상 읽기 • 영상파일을 읽어 오는 함수 재정의 • 읽거나 저장하는 방법 • Serialize 멤버변수를 사용하는 것 • MFC 클래스 내 데이터를 직접 읽거나 저장하는 가장 손쉬운 방식 • OnOpenDocument 함수를재정의(overriding)하는것 • 가상 함수를 추가 • 영상 데이터의 파일 포맷별 고유 특징 때문에 OnOpenDocument(), OnSaveDocument()함수를재정의한 후, 파일명을 넘겨 받아 처리하는 루틴 추가 • OnOpenDocument() 함수를추가 • CFirstCxImageDoc.cpp 문서에 팝업 메뉴에서 [Add Virtual Funtion]을선택하기 • OnOpenDocument를 선택하고 OnNewDocument를선택하여 [Add & Edit] 버튼을 클릭 2주차 - 디지털영상처리의개념

  43. 영상 읽기 • 함수 내에 다음을 추가하기 • m_pImage = new CxImage; • m_pImage->Load(lpszPathName, 0); • 앞에서메모리 할당 받음… 삭제해주는 Virtual 함수도추가해야 함.. 2주차 - 디지털영상처리의개념

  44. 영상 읽기 • DeleteDocuments 함수추가 • CFirstCxImageDoc.cpp 문서에 팝업 메뉴에서 [Add Virtual Funtion]을선택하기 • DeleteDocuments를 선택하고 OnNewDocument를선택하여 [Add & Edit] 버튼을 클릭 • 함수 내에 다음을 추가하기 • if(m_pImage ) delete m_pImage; 2주차 - 디지털영상처리의개념

  45. 영상 읽기 • 파일 열기 함수 OnFileOpen() 재정의 • 다양한 확장자를 갖는 영상 파일을 지원하기 위해 OnFileOpen() 즉 메뉴의 열기를 지원하기 • 프레임 윈도우(framewindow) 클래스 • 메뉴, 툴바, 상태바 등 프로그램을 구성하는 부분을 담당하는 클래스 • CFirstCxImageApp 클래스를의미함 • 메뉴에 프로그램 추가하기 • Workspace 창의 Resource View의메뉴 중 IDC_MAINFRAME을 선택하기 • [파일]-[열기]를 선택하고 오른쪽 마우스를 클릭 • 메뉴 중 [class wizard]를선택 • 다음과 같이 셋팅하기 2주차 - 디지털영상처리의개념

  46. 영상 읽기 • Add Function을클릭하면 • [OK]버튼 클릭하면 member functions에 함수가 추가됨 • Edit Code를클릭하면 소스 작성 창으로 접근 2주차 - 디지털영상처리의개념

  47. 영상 읽기 • 다음과 같이 작성하기 • char szFilter[] = "지원 영상 파일(*.bmp, *.jpg, *.gif, *png, *.tif)|*.bmp;*.jpg;*.gif;*.png;*.tif||"; 2주차 - 디지털영상처리의개념

  48. 영상 읽기 • 영상 보기 • 도큐먼트 클래스에서 넘어온 입력 파일에서 읽어 들인 영상 데이터는 m_pImage에 저장됨 • 이를 보여주기 위해 뷰 클래스 사용함 • OnDraw 멤버함수를 호출하여 프로그램 작성하기 • OnDraw () • 화면에결과를 출력하는 Cview 클래스의 대부분 역할을 담당하는 멤버 함수 • 영상 출력하기 • 뷰클래스(CFirstCxImageView) 내의 OnDraw()함수선택 • 소스 다음과 같이 코딩하기 2주차 - 디지털영상처리의개념

  49. 영상 읽기 • 실행해보기 2주차 - 디지털영상처리의개념

  50. 영상 읽기 2주차 - 디지털영상처리의개념

More Related