[컴퓨터비전] 2. 영상 처리

2025-04-16
#컴퓨터비전

1. 디지털 영상이란?

1.1 디지털 영상의 태동

  • 1920년대 Bartlane 케이블 사진 전송 시스템이 시초

  • 1950년대 영상처리 기술은 문자 인식(OCR) 등의 특수 분야에서 시작됨

  • 디지털 영상은 컴퓨터에서 처리할 수 있도록 변환된 이산적인 2차원 신호

1.2 획득과 표현

  • 디지털 영상은 픽셀들의 이차원 배열로 표현됨

  • 일반적으로 흑백 영상은 0~255 범위의 8비트 정수, 컬러 영상은 RGB 3채널 각각 8비트

  • 픽셀 크기가 작아질수록(=해상도 증가) 더 정밀한 영상 표현 가능

  • 영상의 저장 포맷에는 RAW, BMP, JPEG, PNG 등이 있음


2. 히스토그램

2.1 히스토그램 계산

  • 히스토그램: 영상의 명암값(0~255) 분포를 그래프로 표현

  • h(rk)=nkh(r_k) = n_k : 밝기값 rkr_k 의 픽셀 수가 nkn_k

2.2 히스토그램의 활용

  • 영상의 밝기 분포를 분석하여 어두운 영상/밝은 영상 구분 가능

  • 히스토그램 평활화(Equalization): 누적분포함수(CDF)를 이용하여 전체 명암값을 고르게 분포시킴 → 명암 대비 향상

  • 명암 변환: 히스토그램 정보를 바탕으로 로그, 감마 등의 비선형 변환 가능

2.3 히스토그램 역투영과 객체 검출

  • 역투영(Backprojection): 특정 색상의 히스토그램 분포를 이용해 유사 영역 탐색

  • HSV 색공간에서 H와 S 채널 중심으로 사용


3. 이진 영상

3.1 이진화와 오츠 알고리즘

  • 이진화(Binary Thresholding): 임계값 TT를 기준으로 밝기값을 0 또는 255로 이진 변환

  • 오츄(Otsu) 알고리즘: 클래스간 분산을 최대화하는 TT를 자동으로 선택

3.2 연결 성분 분석

  • 이진 영상에서 연결된 영역을 구분하기 위해 레이블링(Labeling) 수행

  • 연결 기준은 4-연결성 / 8-연결성

  • DFS, BFS 방식의 알고리즘 사용


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

4.1 점 처리

  • 한 픽셀의 값만을 기반으로 계산:

    • 반전: f(x,y)=255f(x,y)f'(x, y) = 255 - f(x, y)

    • 선형 조정: f(x,y)=af(x,y)+bf'(x, y) = af(x, y) + b

    • 감마 보정: f(x,y)=cf(x,y)γf'(x, y) = cf(x, y)^\gamma

4.2 영역 처리

  • 이웃 픽셀들과의 연산을 수행하는 방식, 주로 커널(Kernel) 사용

4.2.1 선형 필터

  • 박스 필터(Box mask): 스무딩(저주파 필터), 노이즈 제거

  • 샤프닝 필터(라플라시안, 언샤프 마스크): 고주파 성분 강조

  • 가우시안 필터: 가우시안 분포 기반 스무딩

4.2.2 비선형 필터

  • 메디안 필터(Median filter): 주변 픽셀의 중앙값 사용 → 염점 잡음에 효과적 → 에지 보존 스무딩

4.2.3 상관(Correlation)

  • 커널을 영상에 그대로 적용하여 곱한 후 더함

  • 영상처리에서는 일반적으로 상관 연산이 기본으로 사용됨

4.2.4 컨볼루션(Convolution)

  • 커널을 좌우 및 상하 반전한 후 상관과 동일하게 수행

  • 수학적으로 정확한 정의이며, 신호처리, 딥러닝에서 사용

상관과 컨볼루션의 구분

  • 두 연산은 계산 방법이 거의 같지만, 커널을 반전하는 차이가 있음

  • 윈도우가 대칭일 경우 결과는 동일

  • 상관은 템플릿 매칭, 물체 검출에 적합

  • 컨볼루션은 임펄스 응답을 기반으로 시스템 해석에 필수적

4.3 기하 처리

  • 영상의 좌표 자체를 변형하는 처리

    • 이동: x=x+dx,y=y+dyx' = x + dx, \quad y' = y + dy

    • 회전: 회전 행렬 R(θ)R(\theta)

    • 스케일링: x=sxx,y=syyx' = s_x x, \quad y' = s_y y

  • 아핀 변환투시 변환에 해당

기하 변환을 위한 동차 행렬

각 기하 변환은 3×3 행렬로 통합 가능

입력 좌표:

  • 이동: y방향으로 tyt_y, x방향으로 txt_x

  • 회전: 원점을 중심으로 시계방향으로 θ\theta만큼 회전

  • 크기 조절: y방향으로 sys_y, x방향으로 sxs_x만큼 확대

  • 기울임: y방향으로 hyh_y, x방향으로 hxh_x만큼 기울임

 

왜 2차원 변환에 3×3 동차 행렬을 사용하는가?

  • 이동, 회전, 스케일링 등 여러 변환이 연속적으로 일어날 때, 각각을 따로 계산하면 연산량이 많아짐

  • 예를 들어, 점 하나에 대해 먼저 이동 행렬 T(3,2)T(3, 2)를 적용하고, 그다음 회전 행렬 R(30)R(30^\circ)를 적용하면(x,y)=R(30)T(3,2)[xy1](x', y') = R(30^\circ) \cdot T(3, 2) \cdot \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}

  • 점이 수천 개라면, 각 점마다 행렬 곱을 두 번씩 해야 함 → 비효율적

복합 변환

  • 행렬 곱셈은 결합 법칙이 성립함 → R(30)T(3,2)p=(RT)pR(30^\circ) \cdot T(3,2) \cdot \mathbf{p} = (R \cdot T) \cdot \mathbf{p}

  • 즉, 두 행렬을 미리 곱해놓고 각 점에 한 번만 곱해주면 됨

  • 연산 속도는 약 2배 향상됨 (행렬 곱셈 2회 → 1회)

 

  • 이처럼 여러 변환을 하나의 행렬로 묶어서 처리할 수 있게 해주는 것이 동차 좌표를 사용하는 이유


5. 다해상도

  • 지금까지의 영상 처리 연산은 영상의 해상도, 즉 크기 M×NM \times N고정된 상태로 유지했다

  • 하지만 실무에서는 영상의 해상도를 조정(늘리거나 줄이기)해야 하는 경우가 많다

    • 예: 스마트폰, 디지털 카메라, TV, 프린터 등 장치마다 해상도가 다르기 때문

5.1 업샘플링과 다운샘플링

  • 업샘플링: 해상도를 늘리는 연산

  • 다운샘플링: 해상도를 줄이는 연산

  • 이러한 해상도 변환 연산을 영상 피라미드라고 부르며, 다해상도 구조를 구성함


5.2 영상 피라미드

  • 영상 피라미드는 원래 영상으로부터 시작하여 점점 더 작은 크기의 영상들을 계층적으로 구성한 것

  • 주로 샘플링 비율 r=1/2r = 1/2을 적용 → 한 단계마다 해상도가 절반씩 줄어듦

  • 예: f0f1f2f3f_0 \rightarrow f_1 \rightarrow f_2 \rightarrow f_3 \rightarrow \cdots

원본 영상의 크기 조건

  • 일반적으로 영상의 크기는 2k×2k2^k \times 2^k 형태여야 단계적으로 정확히 줄어듦

  • 예: 1024×10241024 \times 1024 영상이면

    • f0=1024×1024f_0 = 1024 \times 1024

    • f1=512×512f_1 = 512 \times 512

    • f2=256×256f_2 = 256 \times 256

    • f3=128×128...f_3 = 128 \times 128 ...


5.3 다운샘플링 시 주의점: 에일리어싱 현상

  • 에일리어싱: 다운샘플링 시 생기는 왜곡 현상

    • 홀수 좌표 화소만 100% 반영되고, 짝수 좌표 화소는 0% 반영됨 → 정보 손실 발생

  • 해결법: 다운샘플링 전에 스무딩을 적용하여 고주파 성분 제거

스무딩 + 다운샘플링 식

  • 다섯 개 화소의 가중치 합으로 필터링 후 다운샘플링

  • 필터 예 (1×5 크기):

  • 이 필터는 좌우로 대칭이며 중심 화소에 가장 큰 가중치를 둬서 에일리어싱 억제 효과가 있음

2차원 필터로 확장

  • 수직 vv 방향에도 동일한 필터 사용 → w=vhw = v \cdot h


5.4 활용 예

  • 다중 해상도 분석은 다양한 해상도에서의 변화를 고려해 다음과 같은 문제를 해결할 수 있음:

    • 객체 검출: 크기 변화에 상관없이 검출

    • 얼굴 인식, SIFT 특징 추출, 물체 추적, 영상 압축


6. 모폴로지

6.1 이진 모폴로지

  • 이진 영상에서 객체의 형태를 다루는 연산

  • 구조 요소를 기반으로 연산 수행

  • 주요 연산:

연산정의효과
침식 (Erosion)객체의 외곽을 깎아냄작은 잡음 제거, 객체 축소
팽창 (Dilation)객체의 외곽을 확장구멍 채움, 객체 연결
열림 (Opening)침식 후 팽창작은 잡음 제거
닫힘 (Closing)팽창 후 침식작은 구멍 메움
  • 구조 요소는 일반적으로 3×33 \times 3 사각형 사용, 필요에 따라 원형, 십자형 등 다양하게 사용됨

6.2 명암 모폴로지

  • 이진 영상이 아닌 회색조 영상에 대해 적용되는 모폴로지 연산

  • 최댓값/최솟값 필터링 방식으로 구현됨

연산정의
밝기 팽창구조 요소가 닿는 영역 중 최댓값으로 대체
밝기 침식구조 요소가 닿는 영역 중 최솟값으로 대체
밝기 열림밝기 침식 → 밝기 팽창
밝기 닫힘밝기 팽창 → 밝기 침식
  • 노이즈 제거, 조명 보정 등에 사용됨


7. 컬러

7.1 컬러 영상 표현

  • 디지털 영상에서 가장 기본적인 색 표현 방식은 RGB 모델

    • R (Red), G (Green), B (Blue) 채널로 구성

    • 각 채널은 일반적으로 8비트 정수 → 총 24비트 컬러 영상

  • 하지만 RGB는 인간 시각과 일치하지 않음

7.2 HSI / HSV 색 공간

  • HSI (Hue, Saturation, Intensity) 또는 HSV (Hue, Saturation, Value) 모델은 사람의 시각 모델에 기반함

구성요소설명
H (Hue)색상, 0~360도 (예: 빨강, 파랑 등)
S (Saturation)채도, 색의 순도
I/V (Intensity/Value)명도, 밝기 정도
  • H 값만 사용하면 조명 변화에 강인한 색상 정보 추출 가능

  • 예: 객체 추적, 얼굴 검출 등에서 HSV 색 공간을 자주 사용


7.3 컬러 히스토그램 기반 추적

  • 색상 히스토그램을 만들어 특정 색상 분포를 추적하는 방식

  • HSV 공간에서 H와 S 채널 중심으로 객체를 탐색함