Multimedia Programming 07: Gamma Correction/ Neighborhood Processing Departments of Digital Contents Sang Il Park
Review: Image Processing image filtering: 이미지의 색상 값을 변경 g(x) = h(f(x)) f g h image warping: 이미지의 영역을 변경 g(x) = f(h(x)) f g h Alexei Efros
Review: Point Processing 가장 단순한 Image Filtering: 이미지의 점의 위치 x,y 에 상관없이 일괄적인 변환 적용 g = t(f) 무엇을 할 수 있을까? 변환 함수t 는 어떤종류가 있을까? Important: 모든 이미지 점 하나하나가 독립적으로 처리됨 – 점들의 위치나 점들간의 상관관계 정보를 전혀 사용하지 않음 Alexei Efros
Review: Point Processing 변형함수 t 는 함수이다: g = t ( f ) 이미지의 칼라값 f 를 새로운 이미지의 칼라값g 로 대응 변형함수의 모양 g f 255 올바르지 않은 변형함수의 예: g f 255 t
Review: 코딩 연습 이미지를 하나 열고 밝기와 대비 값을 키보드를 누름으로써 조정한다 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
Gamma Correction
More functions?
Power-law transformations
Image Enhancement
Example: Gamma Correction http://www.cs.cmu.edu/~efros/java/gamma/gamma.html
Contrast Stretching
Programming Assignment Hint How to compare R,G,B channels? No right answer Sum of Squared Differences (SSD):
Programming Assignment Hint 그림에서 가장 비슷한 색 찾기? Image 1 찾을 색 P I(x,y) 색의 차가 최소가 되는 u,v를 찾는다! Find u and v where |I(u,v)-P| gets minimal 또는 Find u and v where (I(u,v)-P)2 gets minimal
Programming Assignment Hint 그림에서 가장 비슷한 무늬 찾기? Image 1 찾을 무늬 P(x,y) I(x,y) 색의 차가 최소가 되는 u,v를 찾는다! 또는 Find u and v where (I(u+0,v+0)-P(0,0))2 +(I(u+1,v+0)-P(1,0))2 is minimal
Programming Assignment Hint 그림에서 가장 비슷한 무늬 찾기? Image 1 찾을 무늬 P(x,y) I(x,y) 색의 차가 최소가 되는 u,v를 찾는다! 또는 Find u and v where (I(u+0,v+0)-P(0,0))2 +(I(u+1,v+0)-P(1,0))2 +(I(u+0,v+1)-P(0,1))2 +(I(u+1,v+1)-P(1,1))2 is minimal
Neighborhood Processing (Filtering) Image Processing 1-2 Neighborhood Processing (Filtering) Alexei Efros
Salvador Dali, “Gala Contemplating the Mediterranean Sea, which at 30 meters becomes the portrait of Abraham Lincoln”, 1976 Render with scanalyze????
Filtering noise (노이즈 필터링) 이미지의 노이즈를 어떻게 하면 줄일 수 있을까? 90 100 130 110 120 90 80 ? Replace each pixel with the average of a kxk window around it 원본 이미지 손상된 이미지
Mean filtering (평균 필터) 노이즈가 있는 위치의 밝기 값의 오차를 주변 값과 비교하여 줄여보자 90 노이즈가 있는 위치의 밝기 값의 오차를 주변 값과 비교하여 줄여보자 Replace each pixel with the average of a kxk window around it
Mean filtering (평균 필터) 노이즈가 있는 위치의 밝기 값의 오차를 주변 값과 비교하여 줄여보자 90 노이즈가 있는 위치의 밝기 값의 오차를 주변 값과 비교하여 줄여보자 주변에 차이값을 나누어 준다 Replace each pixel with the average of a kxk window around it
Mean filtering (평균 필터) 즉, 빨간 테두리 안의 9개의 값들의 경향을 따르도록 중심 값을 변형해 본다. 90 즉, 빨간 테두리 안의 9개의 값들의 경향을 따르도록 중심 값을 변형해 본다. 테두리 안의 값의 평균을 구하여 이를 중심 값으로 대체 10 20 30 40 60 90 50 80 Replace each pixel with the average of a kxk window around it What happens if we use a larger filter window? 90 10
Mean filtering (평균 필터) 이를 수식으로 표현해 보자. 90 이를 수식으로 표현해 보자. 평균값을 구하는 범위는 한 pixel을 중심으로 상하좌우대각선으로 한 칸씩 늘린다. 총 3x3=9 개의 pixel 값을 살핌 (이를 윈도우라고 한다) 10 20 30 40 60 90 50 80 (x-1,y-1) (x,y-1) (x+1,y-1) (x-1,y) (x,y) (x+1,y) (x-1,y+1) (x,y+1) (x+1,y+1) (x,y)
Mean filtering (평균 필터) 이를 수식으로 표현해 보자. 90 이를 수식으로 표현해 보자. 평균값을 구하는 범위는 한 pixel을 중심으로 상하좌우대각선으로 한 칸씩 늘린다. 총 3x3=9 개의 pixel 값을 살핌 10 20 30 40 60 90 50 80
Mean filtering (평균 필터) 90 이를 간단하게 써보면: 10 20 30 40 60 90 50 80
좀더 일반적으로… 평균값을 구하는 윈도우의 크기가 (2k+1)x(2k+1)이라면:
Cross-correlation filtering (상호-상관 필터) 평균은 모든 점들마다 1/(2k+1)2의 값을 곱하는 것. 만약 점들마다 서로 다른 값을 곱한다면? 위와 같은 식을 상호상관 연산이라고 하며 다음과 같이 줄여 쓴다. H (각 점의 가중치)를 “filter,” “kernel,” 또는 “mask” 라고 부른다.
Mean kernel (평균 커널) 3x3 평균 필터의 커널은 무엇이 될까? u -1 1 v ones, divide by 9 1 v 90 ones, divide by 9
Mean kernel (평균 커널) 3x3 평균 필터의 커널은 무엇이 될까? u -1 1 v 1/9 1 v 90 1/9 ones, divide by 9
Mean kernel (평균 커널) 3x3 평균 필터의 커널은 무엇이 될까? 90 1 ones, divide by 9
Gaussian Filtering (가우시안 필터) 점이 중심에서 멀어 질수록 가중치를 줄인다면 더 좋은 성질을 얻을 수 있다. 90 1 2 4 ones, divide by 9
Gaussian Filtering (가우시안 필터) 점이 중심에서 멀어 질수록 가중치를 줄인다면 더 좋은 성질을 얻을 수 있다. 90 1 2 4 ones, divide by 9
Gaussian Filtering (가우시안 필터) Gaussian Filtering 이러한 커널은 밸(bell)모양을 한 가우시안 함수와 모양이 비슷하다. 1 2 4
Mean vs. Gaussian filtering