Computer Vision - 기본 연산

‍이세현·2024년 10월 3일
1

영상 처리의 세 가지 기본 연산

점 연산

  • 주변을 고려하지 않고 오직 자신의 명암값에 따라 새로운 값을 결정
  • fout(j,i)=t(f(j,i))f_\text{out}(j,i)=t(f(j,i))
  • 선형 연산의 예시
    • fout(j,i)={min(f(j,i)+a,L1),(brighter)max(f(j,i)+a,0),(darker)(L1)f(j,i),(reversal)f_\text{out}(j,i)=\begin{cases} \min(f(j,i)+a, L-1), & (\text{brighter}) \\ \max(f(j,i)+a, 0), & (\text{darker}) \\ (L-1)-f(j,i), & (\text{reversal}) \end{cases}
    • threshold를 이용한 binarization
  • 비선형 연산의 예시
    • 감마 수정(모니터나 프린터 색상 조절에 사용)
    • Histogram Equlization
  • 디졸브
    • fout(j,i)=αf1(j,i)+(1α)f2(j,i)f_\text{out}(j,i)=\alpha f_1(j,i)+(1-\alpha)f_2(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)\text{filter}(f_1+f_2)=\text{filter}(f_1)+\text{filter}(f_2)
      • Shift invariance: filter(shift(f))=shift(filter(f))\text{filter}(\text{shift}(f))=\text{shift}(\text{filter}(f))
      • 선현 연산의 각종 속성이 convolution 연산에 적용된다.
  • 대표적인 filter: Gaussian
    • 가우시안 분포의 핵심인 sigma
    • 2차원 필터에서 중앙으로 갈수록 값이 커진다.
    • 박스 필터는 격자무늬가 눈에 띄는 반면, 가우시안 필터는 격자무늬가 거의 보이지 않는다.
    • 가우시안 필터는 이미지에서 high-frequency 요소를 제거한다.(low-pass filter)
      • 이미지가 부드러워진다.
    • 가우시안의 컨볼루션은 또다른 가우시안이다.
      • 따라서 폭 좁은 커널을 반복하면 폭 넓은 커널을 거친 것과 동일한 결과를 얻을 수 있다.
  • 비선형 연산의 예시
    • 메디안 필터: 솔트페퍼(흑백) 잡음에 효과적이며 가우시안보다 에지 보존 효과가 뛰어나다.
      • 각 영역의 값을 정렬한 뒤 중앙값을 사용하는 것
    • 주어진 영상의 특성을 고려해서 filter를 선택해야 한다.

기하 연산

  • 일정한 기하 연산으로 결정된 화소의 명암값에 따라 새로운 값 결정
  1. Scaling: 각 element에 스칼라 값을 곱하는 것, D.O.F=2
    • Uniform Scaling: 비율을 유지한 채 크기를 바꾸는 것으로 모든 스칼라 값이 동일한 것
      [xy]=[a00b][xy]\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} a & 0 \\ 0 & b \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix}
  2. 2-D Rotation: 어느 픽셀을 중심으로 회전, D.O.F=1
    [xy]=[cosθsinθsinθcosθ][xy]\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix}
    • Rotation matrix R1=RT\mathbf{R}^{-1}=\mathbf{R}^T
    • Rigid(Euclidean): 이동과 회전, D.O.F=3
      [xy]=[cosθsinθtxsinθcosθty][xy1]\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} \cos\theta & -\sin\theta && t_x \\ \sin\theta & \cos\theta && t_y \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}
  3. Affine
    • Translation: 이동, D.O.F=2
      [xy]=[10tx01ty][xy1]\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}
    • Shear: 평행과 위치만 유지, D.O.F=2
      [xy]=[1αxαy1][xy]\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} 1 & \alpha_x \\ \alpha_y & 1 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix}
      • xx 방향으로 αx\alpha_x만큼 기울이고 yy 방향으로 αy\alpha_y만큼 기울인다.
    • Affine: 평행 유지, D.O.F=6
      [xy]=[abcdef][xy1]\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} a & b & c \\ d & e & f \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}
      • a,b,d,ea, b, d, e는 scaling, rotation, shear를 의미한다.
      • c,fc, f는 translation을 의미한다.
  4. Projective: Affine transformation과 projective warp의 병합, D.O.F=8
    [xy1]=[abcdefgh1][xy1]\begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} = \begin{bmatrix} a & b & c \\ d & e & f \\ g & h & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}
  • Aliasing 현상
    • 전방 변환을 적용하면 좌표를 정수로 변환하는 과정에서 빈 픽셀이 발생한다.
      • 주위 화소 값을 이용한 보간으로 Anti-Aliasing을 적용해야 한다.
    • 후방 변환을 적용하면 Anti-Aliasing 현상이 발생하여 여러 값들의 평균값을 적용해야 한다.
    • 양선형 보간: f(x)=(1α)f(x)+αf(x+1)f(x')=(1-\alpha)f(x)+\alpha f(x+1)
      • 이웃 픽셀의 거리를 가중치 합하여 보간하는 방법
profile
Hi, there 👋

0개의 댓글

관련 채용 정보