영상 처리의 세 가지 기본 연산
점 연산
- 주변을 고려하지 않고 오직 자신의 명암값에 따라 새로운 값을 결정
- fout(j,i)=t(f(j,i))
- 선형 연산의 예시
- fout(j,i)=⎩⎪⎪⎨⎪⎪⎧min(f(j,i)+a,L−1),max(f(j,i)+a,0),(L−1)−f(j,i),(brighter)(darker)(reversal)
- threshold를 이용한 binarization
- 비선형 연산의 예시
- 감마 수정(모니터나 프린터 색상 조절에 사용)
- Histogram Equlization
- 디졸브
- fout(j,i)=αf1(j,i)+(1−α)f2(j,i)
영역 연산
- 필터를 통해 이웃 화소의 명암값에 따라 새로운 값 결정
- 영상 평면에서의 연산
- Filter: 숫자 격자에서 수학적인 연산
- smoothing, sharpening, measuring texture 등에 활용된다.
- Enhance images: 잡음 제거, resize, 대조
- Extract information: 질감, 에지, 특징점 등
- Detect patterns: template matching
- 영역의 평균을 계산하는 box filter, gaussian filter 등이 존재한다.
- Image filtering: 각 위치에서 이웃 간의 연산
- 상관(correlation)
- 원시적인 매칭 연산
- 필터(윈도우)와 가장 유사한 영역이 어디인지 계산한다.
- 윈도우와 element-wise로 곱했을 때 가장 값이 큰 위치에서 윈도우와 동일한 물체가 검출된다.
- 이때 값이 가장 크다고 해서 무조건 유사한 것은 아니므로 대략적인 방편으로만 이해해야 한다.
- Signal and System 관점에서 미분 가능하지 않은 함수를 미분 가능하게 만들기 위해 사용되는 방법으로, 영상처리에서는 특징을 강조하기 위해 필터로 활용한다.
- Convolution
- 윈도우를 뒤집은 후 상관 적용
- 윈도우를 뒤집어 적용하기 때문에 1인 영역에서 뒤집히기 전의 윈도우 형태가 그대로 출력된다.
- 윈도우의 특성을 더 잘 반영한다.
- impulse 반응
- Convolutional Neural Network
- 여러 데이터를 통해 가장 적절한 filter를 구해내는 것
- Convolution: 지역 특징을 찾기 위한 과정으로 hierarchical 구조이다.
- 필터의 각 셀의 파라미터화
- 각 layer에서는 여러 필터를 공유한다.
- convolution을 거치면 dimension은 축소되나 영역의 특성은 유지된다.
- Padding, Step(stride), Pooling(영역별 대푯값 추출) 등이 필요하다.
- Convolution 예제
- 박스와 가우시안은 smoothing 효과
- Box filter는 각 픽셀을 이웃간의 평균 값으로 변환한다.
- 샤프닝은 명암 대비 강조 효과
- Sharpening filter는 이웃 픽셀 값을 뺄셈하여 이웃간의 차이를 극대화한다.
- 수평 에지와 수직 에지는 에지 검출 효과가 있다.
- 컨볼루션은 선형 연산이다.
- Linearity: filter(f1+f2)=filter(f1)+filter(f2)
- Shift invariance: filter(shift(f))=shift(filter(f))
- 선현 연산의 각종 속성이 convolution 연산에 적용된다.
- 대표적인 filter: Gaussian
- 가우시안 분포의 핵심인 sigma
- 2차원 필터에서 중앙으로 갈수록 값이 커진다.
- 박스 필터는 격자무늬가 눈에 띄는 반면, 가우시안 필터는 격자무늬가 거의 보이지 않는다.
- 가우시안 필터는 이미지에서 high-frequency 요소를 제거한다.(low-pass filter)
- 가우시안의 컨볼루션은 또다른 가우시안이다.
- 따라서 폭 좁은 커널을 반복하면 폭 넓은 커널을 거친 것과 동일한 결과를 얻을 수 있다.
- 비선형 연산의 예시
- 메디안 필터: 솔트페퍼(흑백) 잡음에 효과적이며 가우시안보다 에지 보존 효과가 뛰어나다.
- 각 영역의 값을 정렬한 뒤 중앙값을 사용하는 것
- 주어진 영상의 특성을 고려해서 filter를 선택해야 한다.
기하 연산
- 일정한 기하 연산으로 결정된 화소의 명암값에 따라 새로운 값 결정
- Scaling: 각 element에 스칼라 값을 곱하는 것,
D.O.F=2
- Uniform Scaling: 비율을 유지한 채 크기를 바꾸는 것으로 모든 스칼라 값이 동일한 것
[x′y′]=[a00b][xy]
- 2-D Rotation: 어느 픽셀을 중심으로 회전,
D.O.F=1
[x′y′]=[cosθsinθ−sinθcosθ][xy]
- Rotation matrix R−1=RT
- Rigid(Euclidean): 이동과 회전,
D.O.F=3
[x′y′]=[cosθsinθ−sinθcosθtxty]⎣⎢⎡xy1⎦⎥⎤
- Affine
- Translation: 이동,
D.O.F=2
[x′y′]=[1001txty]⎣⎢⎡xy1⎦⎥⎤
- Shear: 평행과 위치만 유지,
D.O.F=2
[x′y′]=[1αyαx1][xy]
- x 방향으로 αx만큼 기울이고 y 방향으로 αy만큼 기울인다.
- Affine: 평행 유지,
D.O.F=6
[x′y′]=[adbecf]⎣⎢⎡xy1⎦⎥⎤
- a,b,d,e는 scaling, rotation, shear를 의미한다.
- c,f는 translation을 의미한다.
- Projective: Affine transformation과 projective warp의 병합,
D.O.F=8
⎣⎢⎡x′y′1⎦⎥⎤=⎣⎢⎡adgbehcf1⎦⎥⎤⎣⎢⎡xy1⎦⎥⎤
- Aliasing 현상
- 전방 변환을 적용하면 좌표를 정수로 변환하는 과정에서 빈 픽셀이 발생한다.
- 주위 화소 값을 이용한 보간으로 Anti-Aliasing을 적용해야 한다.
- 후방 변환을 적용하면 Anti-Aliasing 현상이 발생하여 여러 값들의 평균값을 적용해야 한다.
- 양선형 보간: f(x′)=(1−α)f(x)+αf(x+1)
- 이웃 픽셀의 거리를 가중치 합하여 보간하는 방법