Multimedia Programming 04: 점, 선, 면

Slides:



Advertisements
Similar presentations
1/ 편집 기능 사용하기 – 실습 1 글자 모양을 바꾸고 싶은 곳을 블록 설정 [ 글자 모양 ] 대화 상자에서 [ 글꼴 ] ‘ 궁서체 ’, [ 글자 색 ] ‘ 토마토색 ’ 으로 선택 → [ 설정 ] 클릭 → 글자 모양 변경.
Advertisements

Chapter 12. 배열. 배열  동일한 항목들이 동일한 크기로 연속적으로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조.
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
Timer Department of Digital Contents Sang Il Park.
Ubiquitous Computing Practice (Photo Resistor) Youn-Hee Han, In-Seok Kang {yhhan, Laboratory of Intelligent Networks Advanced Technology.
Department of Digital Contents Sang Il Park
Multimedia Programming 07: Gamma Correction/ Neighborhood Processing
재료수치해석 HW # 박재혁.
Intelligent Data Systems Lab. Department of Computer Science & Engineering Practices 컴퓨터의 개념 및 실습 4 월 4 일.
Chapter04 캔버스(2) HTML5 Programming.
Multimedia Programming 04: Point Processing Departments of Digital Contents Sang Il Park.
Canvas 2D Basics.
1. OpenCV 2.0 소개 및 설치 1.
Multimedia Programming 05: Point Processing
축산 인식개선을 위한 농협의 추진 사례 ( ) 농협중앙회 축산지원단장 박인희.
02장 ㅎㅎ 디지털 영상 빛과 색, 시각 컬러 모델 디지털 영상의 생성 디지털 영상의 종류 한빛미디어(주)
제 9 장 구조체와 공용체.
11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
Multimedia Programming 05: Point Processing
Multimedia Programming 11: Histogram Equalization/ Image Halftoning
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
Red Color Detection Course ChanYoung Kim
Multimedia Programming 9: Text, Mouse Callback and Drawing
Multimedia Programming 25: Playing with Video
Multimedia Programming 11: Point Processing 6
Multimedia Programming 06: Point Processing3
Red Color Detection Course ChanYoung Kim
Multimedia Programming 03: 점, 선, 면
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
Raster 애니메이션은 GIF Animator로 만들면 쉽다
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Multimedia Programming 10: Point Processing 5
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
멀티미디어 시스템 (아날로그 이미지,신호를 디지털로 변환 방법) 이름 : 김대진 학번 :
23장. 구조체와 사용자 정의 자료형 2.
Multimedia Programming 02: Play with Images
홈페이지용 그림 활용법 그림 삽입 태그 <IMG> 배경 그림 다루기 그림과 문자열의 어울림
6장. printf와 scanf 함수에 대한 고찰
Multimedia Programming 06: Point Processing 2
11장. 1차원 배열.
Multimedia Programming 08: Point Processing4
Multimedia Programming 13: Image Halftoning
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
Multimedia Programming 10: Unsharp Masking/ Histogram Equalization
Chapter03 캔버스(1) HTML5 Programming.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
Chapter07 CSS3 글꼴과 문자 HTML5 Programming.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Red Color Detection Course ChanYoung Kim
연산자 (Operator).
SEOUL NATIONAL UNIVERSITY OF SCIENCE & TECHNOLOGY
박정식 심규동 OpenCV 기초 박정식 심규동
ITQ 정보기술자격 국가공인 Excel 2007 Ⅱ 함수- 11회차 강사 : 박영민.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
14장. 필터 효과와 CSS 활용하기 포토샵을 대신하는 필터 효과 CSS 활용하기.
SEOUL NATIONAL UNIVERSITY OF SCIENCE & TECHNOLOGY
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
MATLAB Image Processing Toolbox
선 그리기.
제 15 강 문자와 코드 shcho.pe.kr.
그래픽 메소드.
윤 홍 란 제 2 장 데이터와 식-3 그래픽 윤 홍 란
1. 접선의 방정식 2010년 설악산.
2일차 영상처리 교육.
문서 작성에 사용되는 기본태그 HR, PRE, B, I, U, S.
컴퓨터 프로그래밍 기초 - 11th : 파일 입출력 및 구조체 -
Summary of Pointers and Arrays
2장. 페인트샵을 이용한 영상처리 맛보기 신라대학교 임은경 2주차 - 페인트샵을 이용한 영상처리 맛보기.
실습과제 1번 /* 1. 멤버 변수로 반경 radius를 갖고, 그 값을 모니터에 출력하는
Presentation transcript:

Multimedia Programming 04: 점, 선, 면 Departments of Digital Contents Sang Il Park

Pixel: Picture Element

픽셀(Pixel: Picture Element) 이미지: 색이 다른 점들의 2차원 집합 비트맵(Bitmap)

Pixel의 값 = (위치, 색) x y 위치 : 각 픽셀의 2D 좌표 (Image Coordinate System) 색 : CvScalar (색을 저장하는 구조체) x y (0,0) (8,2)

색 표현 3원색을 통한 색의 정의: 한 점을 표현하는 적색(Red), 녹색(Green), 청색(Blue) 램프의 각각의 밝기로 표현 컬러의 수: 각 램프의 밝기 조절 레벨의 수  또는 픽셀 당 비트 수

색을 저장하는 변수형: CvScalar 4 개 이하의 숫자를 저장할 수 있도록 만든 구조체 val[0]은 blue, val[1]은 green, val[2]는 red 값을 저장 일반적인 값의 범위는 0~255 사이 ( 0~(28-1): 8 bit) (0: 가장 어두움, 255: 가장 밝음) Example) CvScalar s; s.val[0] = 200; (Blue) s.val[1] = 11; (Green) s.val[2] = 123; (Red) struct CvScalar { double val[4]; };

색을 저장하는 변수형: CvScalar 값을 입력해주도록 도와주는 함수: cvScalar(b,g,r) 주의: 대소문자 구별! CvScalar color; color.val[0] = 100; color.val[1] = 200; color.val[2] = 50; ---------------------또는 ------------------- CvScalar color = cvScalar(100,200,50); 주의: 대소문자 구별! 대문자로 시작: 자료형 소문자로 시작: 함수

위치를 저장하는 변수형: CvPoint 2차원 좌표를 저장할 수 있도록 만든 구조체 Example) CvPoint pt; // (100,200) pt.x = 100; pt.y = 200; 값을 입력하게 도와주는 함수: cvPoint (x,y) struct CvPoint { int x; int y; }; CvPoint pt=cvPoint(100,200);

참고: 크기를 저장하는 변수형: CvSize 그림 크기를 저장할 수 있도록 만든 구조체 값을 입력해주도록 도와주는 함수: cvSize(w,h) IplImage 로부터 크기를 얻어오는 함수: cvGetSize struct CvSize { int width; int height; }; CvSize size =cvSize(100,200); CvSize size = cvGetSize(img);

이미지에서 Pixel값으로의 접근 CvScalar cvGet2D (IplImage*, y, x) (x,y)에서의 칼라 값 얻기. Example) CvScalar s; s = cvGet2D(img, 30, 40); void cvSet2D (IplImage*, y, x, CvScalar) (x,y)에서의 칼라 값 변경 Example) CvScalar s = cvScalar(100,0,0); cvSet2D(img, 30, 40, s); 또는 cvSet2D(img, 30, 40, cvScalar(100,0,0)); 주의: 반드시 x,y는 이미지 범위 내부에 있어야함! (image의 width와 height를 정보를 참조할것)

코딩연습 이미지의 일부를 Gray-scale image로 만들기 더 생각해 볼 문제: Gray 이미지: 각 픽셀마다 R, G, B 값이 모두 같은 이미지 칼라 이미지의 각 pixel의 R, G, B 값으로부터 대표값(=평균값)을 얻는다 더 생각해 볼 문제: 이미지의 일부를 흑백 이미지로 만들기

생각해 보기: Sepia image 만들기

새로운 그림을 그릴 순 없을까?

빈 이미지 생성 IplImage* cvCreateImage( CvSize size, int depth, int channels ); 만들 빈 이미지의 크기, 허용 색상수를 설정하여 생성 컬러수: color depth: IPL_DEPTH_8U (각 채널당 8bit) channels: 1,2,3,4 (1=grey, 3=color) Example) IplImage * img; img = cvCreateImage(cvSize(200,100), 8,3); cvSet(image, CvScalar) 이미지를 주어진 색으로 가득 칠한다 Example) cvSet(img, cvScalar(255,255,255));

원본과 같은 크기의 그림을 만들어 이를 변형해 새롭게 만들어 보자 원본과 같은 크기의 그림을 만들어 이를 변형해 새롭게 만들어 보자 원본 이미지: (lena.png) 변형된 이미지 (집에서 풀어볼 것: 제작년 기출문제)

선, 면 (line and face)

Coding Practice: Line Drawing1 Make your own function for drawing a horizontal line: 예) void DrawHLine (IplImage * img, int y, int st, int ed, CvScalar color) (st, y) (ed, y) image

Coding Practice: Line Drawing2 Make your own function for drawing a vertical line: 예) void DrawVLine (IplImage * img, int x, int st, int ed, CvScalar color) (x, st) image (x, ed)

Coding Practice: Line Drawing 3 집에서 생각해 볼 것: 시작점과 끝점을 잇는 라인?: 예) void DrawLine (IplImage * img, int x1, int y1, int x2, int y2, CvScalar color)

Coding Practice: Line Drawing 3 Hint: 직선의 방정식: y = m x + b m: 기울기 b: y 절편

면 (face) Design a function that draws a rectangle (x,y) w Design a function that draws a rectangle 예) void DrawRectangle (IplImage * img, int x, int y, int w, int h, CvScalar color) Don’t forget to make sure a pixel is inside the image 0 <= max_x <= img->width 0 <= max_y <= img->height If done, try to draw 50 random boxes with random colors! h

Do more: Drawing or Painting a circle! radius center

For those who want more OpenCV Official page: http://opencvlibrary.sourceforge.net OpenCV WiKi pape: http://opencv.willowgarage.com/wiki/ A Korean Community: http://www.opencv.co.kr/