Multimedia Programming 05: Point Processing Departments of Digital Contents Sang Il Park
Outline Review Point Processing 1
Review OpenCV 익숙해 지기 선 면
빈 이미지 생성하기 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, CV_RGB(255,255,255));
Coding Practice: Line Drawing Make your own function for Horizontal line drawing: 예) void DrawHLine (IplImage * img, int y, int st, int ed, CvScalar color) image
Coding Practice: Line Drawing2 Make your own function for Vertical line drawing: 예) void DrawVLine (IplImage * img, int x, int st, int ed, CvScalar color) image
Coding Practice: Line Drawing 3 시작점과 끝점을 잇는 라인?: 예) void DrawLine (IplImage * img, int x1, int y1, int x2, int y2, CvScalar color)
Coding Practice: Line Drawing 3 시작점과 끝점을 잇는 라인?: 예) void DrawLine (IplImage * img, int x1, int y1, int x2, int y2, CvScalar color)
Do more! 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
For those who want more OpenCV Wiki-pages: http://opencvlibrary.sourceforge.net For OpenCV Reference Manual: http://opencv.willowgarage.com/documentation/index.html Supplied documentation: OpenCV/docs/index.htm, faq.htm A Korean Community: http://www.opencv.co.kr/
Image Processing 1 Point processing Alexei Efros
이미지를 함수처럼? Render with scanalyze???? Alexei Efros
Image Processing image processing 이란 한 이미지 f 를 새로운 이미지 g 로 만드는 과정 이미지의 영역을 변경하는 것 What kinds of operations can each perform? Use photoshop to make something grayscale Alexei Efros
Image Processing image filtering: 이미지의 색상 값을 변경 g(x) = h(f(x)) image warping: 이미지의 영역을 변경 g(x) = f(h(x)) f x f x h Alexei Efros
Image Processing image filtering: 이미지의 색상 값을 변경 g(x) = h(f(x)) image warping: 이미지의 영역을 변경 g(x) = f(h(x)) f g h Alexei Efros
Point Processing 가장 단순한 Image Filtering: g = t(f) 무엇을 할 수 있을까? 이미지의 점의 위치 x,y 에 상관없이 일괄적인 변환 적용 g = t(f) 무엇을 할 수 있을까? 변환 함수t 는 어떤종류가 있을까? Important: 모든 이미지 점 하나하나가 독립적으로 처리됨 – 점들의 상관관계 정보를 전혀 사용하지 않음 Alexei Efros
Point Processing g f t 이미지 각 Pixel의 RGB 밝기정보 값의 범위 : 0~255 포인트 프로세싱의 정의: g = t ( f ) g f t t 새로운 밝기값(칼라값): g 한 점의 밝기값(칼라값): f
Point Processing 변형함수 t 는 함수이다: g = t ( f ) 변형함수의 모양 이미지의 칼라값 f 를 새로운 이미지의 칼라값g 로 대응 변형함수의 모양 g f 255 올바르지 않은 변형함수의 예: g f 255 t
Basic Point Processing output input g = Af + B A = 1 B = 0 picture from http://girlsgeneration.iple.com/
Basic Point Processing output input g = Af + B A = 1 B > 0 Brightness +
Basic Point Processing output input g = Af + B A = 1 B < 0 Brightness –
Basic Point Processing input output g = Af + B A > 1 B = 0 Contrast + (brightness +)
Basic Point Processing output input g = Af + B A > 1 B < 0 Contrast + (brightness -) Contrast +
Basic Point Processing output input g = Af + B A < 1 B > 0 Contrast –
Basic Point Processing output input g = Af + B A < 1 B > 0+++ Contrast – (brightness +)
코딩 연습 이미지를 하나 열고 밝기와 대비 값을 키보드를 누름으로써 조정한다 example) 1 : brightness up(+10) 2: brightness down(-10) 3 : contrast up(+0.1) 4: contrast down(-0.1) g = Af + B g = input color value f = output color value A = contrast value (초기값 = 1) B = brightness value (초기값 = 0) output input
Hint for the exercise 키보드 입력 받는 법: int cvWaitKey( int delay=0 ) waits for a pressed key. After waiting for the given delay, it proceeds. Zero delay means waiting forever until user input. Delay in milliseconds.
More functions?
Power-law transformations
Image Enhancement
Example: Gamma Correction http://www.cs.cmu.edu/~efros/java/gamma/gamma.html
Contrast Stretching
Programming Assignment #1 How to compare R,G,B channels? No right answer Sum of Squared Differences (SSD):