본문 바로가기

AI

영상 처리 기초 정리

영상의 표현

영상좌표계

- 원점이 왼쪽에 위치

- 좌표 표현 : x = (y,x) or x = (j, i) -> (j or y) : 수직 방향 / (i or x) : 수평 방향

(행렬에서 원소의 좌표를 표현하는 방식과 동일)

 

- j축 방향 화소 개수 = M -> j범위 : [0, M-1]

- i축 방향 화소 개수 = N -> i범위 : [0, N-1]

 

- 화소(pixel) : (j, i)로 지정되는 한 점

- 해상도(resolution) : 영상의 크기를 나타내는 M x N

- 영상 f가 가질 수 있는 명암값의 범위  [0, L-1]

  -> 보통 화소 하나에 1바이트 > L=256

  -> L = 2 : 0(흑) / 1(백) 두 가지 값만 가능한 이진 영상(binary image)

- 컬러 영상 : 한 화소가 R, G, B 3개의 값을 가짐 -> 각각 f_r(x) / f_g(x) / f_b(x)로 표기

 

컴퓨터 비전에서 다루는 영상은 모두 디지털 영상으로, 연속된 2차원 공간을 샘플링하여 정수 좌표를 갖는 j축과 i축을 구성 + 명암 L 단계로 양자화

-> 함수를 미분하는 연산을 사용하는 경우 정수가 아니라 실수값을 갖는 연속 함수라 가정

 

히스토그램

히스토그램 계산

영상 f의 히스토그램?

명암값이 나타난 빈도수로, [0, L-1] 사이의 명암값 각각이 영상에 몇 번 나타나는지를 표시

 

영상 f의 히스토그램 h를 계산하는 pseudo code

for (l = 0 to L-1)
	h(l) = 0
    # h() 초기화
for (j = 0 to M-1)
	for (i = 0 to N-1) 
    # f의 화소(j, i) 각각에 대해
    	h(f(j, i)) ++
        # 명암값에 해당하는 히스토그램 칸을 1만큼 장가
for (l = 0 to L-1)
	h_hat(l) = h(l) / (M x N)
    # 정규화 > 정규 히스토그램(normalized histogram)

 

why 히스토그램?

1. 영상의 특성 파악

2. 평활화를 통한 영상 품질 개선

 

- 히스토그램 평활화(histogram equalization)

말 그대로 영상의 히스토그램을 평평하게 만듦

-> 영상이 사용하는 명암의 범위( = 동적 범위(dynamic range))가 늘어나 영상이 더욱 선명해짐

 

평활화 연산 : 입력 f -> 출력 g

c() : 누적 히스토그램

T() : 입력 영상 f의 명암값 l_in을 출력 영상 g의 명암값 l_out으로 변환하는 매핑 함수

 

작동 방식

히스토그램 평활화 -> 히스토그램을 '평평하게' 변환 -> 값들을 '비슷하게' 바꿔줌

어떠한 명암 l을 기준으로 생각했을 때, l보다 작은 명암을 가지는 화소의 비율은 l/L이어야 함.

(오른쪽 극단적인 예 참고)

=> 누적 히스토그램 : 비율이 l/L인 점을 l로 매핑

 

*주의*

히스토그램 평활화를 이용한다고 해서 반드시 영상의 품질이 좋아지는 것은 아님.

히스토그램 역투영(histogram backprojection)

물체의 모양은 무시하고 단순히 색 분포만으로 검출하는 방법

-> 히스토그램은 색 분포를 표현하는 데 사용

 

이때, 명암+@의 채널이 필요하기 때문에 최소 2차원 이상을 사용해야 함.

 

ex) 얼굴 검출에 이용하기

1) RGB 색상 공간을 HSI 공간(색상(hue) 채도(saturation), 명암(intensity)로 구성)으로 변환

 

단, 2차원으로 차원이 증가되면서 대부분의 칸이 0을 갖는 희소한 공간이 됨 

2) 기존 L단계를 양자화하여 q단계로 줄임

 

3) 정규화

를 거치면 모델 히스토그램 h_m이 생성됨

 

새로운 영상 g의 어떤 화소 (j, i)의 H와 S채널 값을 (a, b)라 했을 때

h_m이 큰 값을 가지면 그 화소는 얼굴일 가능성이 높고,

h_m이 낮은 값을 가지면 얼굴일 가능성이 낮음

-> h_m은 화소의 값을 얼굴에 해당할 신뢰도 값으로 변환

 

히스토그램 역투영

# 1) 영상 g_h, g_s에서 정규 히스토그램 h_i 구하기
# 2) h_r 구하기
for (j = 0 to M-1)
	for (i = 0 to N-1)
    	o(j, i) = h_r(quantize(g_h(j, i)), quantize(g_s(j, i))
        # 역투영을 통해 가능성 맵 생성

입력 영상 g에서 히스토그램 h_i를 만들면

히스로그램 역투영은 모델 히스토그램 h_m과 영상 히스토그램 h_i의 비율을 나타내는 h_r을 이용

-> h_r은 영상에 드물게 나타난 색상에 가중치를 더 주는 역할

 

히스토그램 역투영의 특징

장점

- 물체의 이동과 회전에 불변

- 물체의 일부가 가려진 경우에도 잘 작동

단점

- 색 분포만을 이용하기 때문에 검출 대상이 여러 가지 색 분포를 가지는 경우 여러 개의 모델을 이용해야 함.

'AI' 카테고리의 다른 글

HOG | HONV 정리  (0) 2025.01.09
BlazePalm 모델 정리  (0) 2024.12.26
[논문 리뷰] Neural Feedback Text Clustering with BiLSTM-CNN-Kmeans  (3) 2024.12.05
Video Classification  (2) 2024.11.21
[추천시스템] 행렬 분해 정리  (0) 2024.11.15