Multimedia Programming 04: Point Processing Departments of Digital Contents Sang Il Park
Outline Review Image Processing –Brightness –Contrast
HelloCV #include "stdafx.h" #include int _tmain(int argc, _TCHAR* argv[]) { IplImage * img; img = cvLoadImage("d:\\test.jpg"); cvNamedWindow("HelloCV"); cvShowImage("HelloCV", img); cvWaitKey(); cvDestroyWindow("HelloCV"); cvReleaseImage(&img); return 0; } hellocv.cpp IplImage cvLoadImage cvReleaseImage cvNamedWindow cvShowImage cvDestroyWindow cvWaitKey
빈 이미지 생성하기 IplImage* cvCreateImage( CvSize size, int depth, int channels ); – 만들 빈 이미지의 크기, 허용 색상수를 설정하여 생성 – 컬러수 :color depth: 8 ( 각 채널당 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));
So far what you’ve learned: IplImage cvLoadImage (file_name) cvCreateImage (size, depth, channels) cvSaveImage (file_name, image) cvReleaseImage (image) cvNamedWindow (window_name) cvShowImage (window_name, image) cvDestroyWindow (window_name) cvWaitKey (delay) cvGet2D (image, y, x) cvSet2D (image, y, x, cvScalar)
For those who want more OpenCV Wiki-pages: For HighGUI: – For cxcore: – Supplied documentation: OpenCV/docs/index.htm, faq.htm A Korean Community:
Image Processing 1 Point processing Alexei Efros
이미지를 함수처럼 ? Alexei Efros
Image Processing image processing 이란 한 이미지 f 를 새로운 이미 지 g 로 만드는 과정 Image Processing 의 두가지 : – 이미지 f 의 색을 변경하는 것 – 이미지의 영역을 변경하는 것 What kinds of operations can each perform? Alexei Efros
Image Processing image filtering: 이미지의 색상 값을 변경 g(x) = h(f(x)) f x h f x f x h f x image warping: 이미지의 영역을 변경 g(x) = f(h(x)) Alexei Efros
Image Processing image filtering: 이미지의 색상 값을 변경 g(x) = h(f(x)) image warping: 이미지의 영역을 변경 g(x) = f(h(x)) h fg h f g Alexei Efros
Point Processing 가장 단순한 Image Filtering: – 이미지의 점의 위치 x,y 에 상관없이 일괄적인 변환 적 용 g = t(f) 무엇을 할 수 있을까 ? 변환 함수 t 는 어떤종류가 있을까 ? Important: 모든 이미지 점 하나하나가 독립적으 로 처리됨 – 점들의 상관관계 정보를 전혀 사용하 지 않음 Alexei Efros
Point Processing 이미지 각 Pixel 의 RGB 밝기정보 값의 범위 : 0~255 포인트 프로세싱의 정의 : g = t ( f ) 한 점의 밝기값 ( 칼라값 ): f 새로운 밝기값 ( 칼라값 ): g
Point Processing 변형함수 t 는 함수이다 : g = t ( f ) – 이미지의 칼라값 f 를 새로운 이미지의 칼라값 g 로 대응 변형함수의 모양 f g f 0 0 g f 0 0 올바르지 않은 변형함수의 예 : g
Basic Point Processing input output picture from g = Af + B A = 1 B = 0
Basic Point Processing input output Brightness + g = Af + B A = 1 B > 0
Basic Point Processing input output Brightness – g = Af + B A = 1 B < 0
Basic Point Processing input output Contrast + (brightness +) g = Af + B A > 1 B = 0
Basic Point Processing input output Contrast + g = Af + B A > 1 B < 0 Contrast + (brightness -)
Basic Point Processing input output Contrast – g = Af + B A < 1 B > 0
Basic Point Processing input output Contrast – (brightness +) g = Af + B A < 1 B > 0+++
코딩 연습 이미지를 하나 열고 밝기와 대비 값을 키보드를 누름으로써 조정한다 example)1 : brightness up(+10) 2: brightness down(-10) 3 : contrast up(+0.1)4: contrast down(-0.1) input output g = Af + B g = input color value f = output color value A = contrast value ( 초기값 = 1) B = brightness value ( 초기값 = 0)
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
Contrast Stretching
Image Processing 2 Histogram Equalization Alexei Efros
Image Histogram Histogram: –Counting the number of pixels with the same brightness imagehistogram
Image Histogram Histogram: –Counting the number of pixels with the same brightness
Image Histogram Example
Image Histogram Two images
Modify the image to have a well-distributed histogram Histogram Equalization
Cumulative Histogram Number of the pixels below the brightness imagehistogramCumulative histogram
Cumulative histogram Cumulative Histograms Why is it so important?
Why is it so important? Let’s focus on the first image input o u t p u t
Why is it so important? Using Cumulative histogram as a function input output input output
Histogram Equalization
Coding Practice Make your own code for histogram equalization For each color channel (R, G, B) –1. Compute the histogram –2. Compute the cumulative histogram –3. Set the maximum value as 255 –4. Using the cumulative histogram as a mapping function
A colorful underwater world!