기술 이야기

디지털 영상처리

lottopotato 2026. 4. 16. 17:35

"

회사에서 타 부서와 친목 도모 겸 워크샵을 했었는대 당시 발표했던 자료들을 기록한다.

인공지능과 친숙하지 않은 사람에게 설명하기 위한 자료로 기초적인 개념위주이며 표현을 최대한 쉽게 하도록 하였다.

"

 

# 디지털 영상처리

용어

영상(Image)

일반적인 그림, 사진, 구조물, 조각 등 시각적인 정보를 표현하는 모든 형상들을 말한다.
단순히 평면 상의 그림 뿐만 아니라 입체적인 공간적 개념 또한 “시각적 표현”으로 형상화 될 수 있다.

 

디지털 영상

이미지를 픽셀이라는 기본 표현 단위로부터 유한적이고 이산적인 값으로 표현한 데이터를 말한다.
기본적으로 x축, y축으로 이루어진 2차원 데이터와 색상 정보 차원을 갖는 3차원 데이터로 표현한다.
색상 정보는 Grayscale 부터 RGB, CMYK 등 색상 맵으로 표현 한다. 
익히 알고 있는 JPEG, PNG 등의 파일 포맷이 있으며 파일 포맷 마다 차원이나 압축율 등이 다르다.
디지털 이미지는 보통 배열 형태의 데이터로 표현 할 수 있다.

 

디지털 영상 처리

디지털 영상을 다루는 여러 프로세스를 말하며 단순 이미지 크기 조정부터  이미지 수정, 분석 등 이미지에 변경을 가하는 대부분의 행위에 대해 다루는 단어이다.
대부분의 경우 수학적 공식에 의해 변화를 가함으로 PNG나 JPEG 등 바이트 형태의 데이터 보단 배열 형태의 데이터를 주로 다루게 된다.

 

컴퓨터비전

디지털 영상 처리는 전형적인 이미지의 시각적인 변화를 집중한다면 컴퓨터 비전은 이미지의 대한 의미론적 이해, 분류, 객체 검출 등 조금 더 복잡하고 조금 더 인공지능에 가까운 처리를 말한다.
디지털 영상 처리가 로우레벨 프로세싱이라면 컴퓨터 비전은 디지털 영상 처리를 포함하는 하이레벨 프로세싱이다.

 

디지털 영상 처리 종류

단순 Image resizing 부터 Histogram Equalization, Sharpening & Blurring, Geometric Transformation, Color Transformation 같은 보통 이미지자체에 변형을 가하는 기능과 Thresholding, Edge detection 등 이미지 분해(segmentation) 같은 기능 등 여러 가지 처리 기법이 있다.

 

 

 

이미지처리: 리사이징

이미지의 크기 조정은 언뜻 보기에 단순해 보이지만 실제로 다른 처리 기법과 비교해도 복잡하면 더 복잡 해 질 수 있는 대표적인 처리 기법이다.

이유를 설명해보면, 가로, 세로, 50, 102차원 이미지를 25, 10으로 줄일 때를 생각 해보자.

가장 단순한 방법은 구간별 픽셀을 선택하는 것으로 가로 50 픽셀을 25픽셀로 줄이는 것임으로 가로 픽셀을 ½ 마다 값을 취한다. 

 

0 255 0 255 0 255
0 255 0 255 0 255
0 255 0 255 0 255

 

하지만 이와 같은 방식은 실제로 쓰이기 어렵다.

더군다나 반대로 크기를 키운다고 생각해보면, 크기를 키움으로 써 발생하는 공간에 어떤 픽셀 값을 취하여야 할지 단순한 방법으로는 생각하기 어렵다.

 

보간법(Interpolation)

보간법은 알고 있는 각 지점 값으로부터 지점 사이에 있는 값을 도출 하기 위한 방식으로 이미지의 크기를 변경 할 때에도 자주 사용되는 기법이다.

 

선형 보간법은 가장 단순한 보간법중 하나로 두 구간 사이의 값을 선형으로 이어 구간을 도출 한다.

3x3 의 배열로 표현된 이미지가 있고 크기 조정을 통해 새로운 값 x가 도출 되어야 할 때 a, b, c, d들의 중간에 위치한 가운데 값 x를 선형 보간법으로 도출 하면 다음과 같다.

실제로는 선형 보간법은 잘 사용하진 않으며 보간법으로 픽셀을 창조함으로써 화질을 개선 할 수 있기 때문에 이러한 처리는 단순히 크기를 감 시키는 것 뿐만 아니라 이미지 복원, 화질 개선 등에 사용되기도 한다.

 

이미지처리: 히스토그램 평탄화

히스토그램 평탄화 처리는 이미지가 협소한 픽셀 분포를 갖고 있을 때 용한 처리 기법으로 픽셀의 분포를 나타내는 히스토그램의 누적분포함수를 이용하여 픽셀 분포를 넓게 퍼트리는 결과를 얻는 처리 기술이다. 

 

히스토그램

히스토그램은 빈즈라고 하는 표현하는 균등한 구간에 데이터가 포함되었을 때 개수를 상승 시키는 통계 방법 중 하나로 이미지에 적용하면 픽셀의 분포도를 알 수 있다.

 

누적분포함수

누적분포함수는 각 분포도에서 왼쪽부터 시작하여 오른쪽까지(우연속) 말 그대로 누적하여 표현한 분포도로 보통은 정규화 값을 누적함으로 확률분포로써 사용 될 수 있다. 확률분포로써 누적함수는 각 확률을 누적함으로써 시점(또는 값) xx 보다 작거나 같을 확률 Pr(x)을 나타내게 된다. 이미지의 경우 누적 분포 함수로 부터 측정된 픽셀 분포도에서 값이 50인 픽셀이 실제 값 n(여기선 약 113으로 측정됨) 보다 작거나 같은 확률이 Pr(50) ≒ 44% 로 볼 수 있다.

 

픽셀의 분포에 대한 누적 분포임으로 어떤 구간에 픽셀 분포가 급격히 증가하거나 희미하다면 CDF 곡선도 같이 급격하게 변동하게 된다. 곡선이 급격하게 변동한다는 것은 입력 값과 출력 값의 차이가 그만큼 커진다는 것을 의미하며 분포가 많거나 적음 -> 입력 값과 출력 값의 갭이 증가함 -> 실제 입력 값보다 분산이 증가함 이라는 생각을 할 수 있다.

 

평탄화 작업은 픽셀 분포의 CDF의 기울기를 1 과 가깝게 픽셀을 배치함으로써 픽셀 분포를 균등하게 변화 시킨다.

 

 

 

이미지처리: Sharpening & Blurring

대비(Contrast)

이미지를 선명하거나 희미하게 보이게 하는 것은 대비와도 관련이 있다. 대비란 빛과 색상에 의해 물체와 물체를 개별 인식하는 시각적인 특성을 말한다. 우리 눈은 휘도나 색상의 절대 값보다 대비에 더 영향을 받는다.

 

위의 유명한 짤을 보면 왼쪽과 오른쪽에 있는 캐릭터의 피부색은  RGB(124, 124, 124) 의 같은 색상이다.

 

SharpeningBlurring은 부분적으로 Edge Contrast를 증감 시키는 결과를 얻으며 픽셀이 오돌토돌한 형태가 될 경우 선명도가 올라가고 완만한 형태가 될 경우 선명도가 낮아 질 것이다.

 

 

합성곱

선명도를 높이거나 낮추는 방법은 여러 가지 있지만 여기서 다뤄볼 처리 기법은 바로 합성곱 커널을 이용한 처리이다.

합성곱은 본디 두 개의 함수(f, g)의 합성 형태 함수  (f*g)를 구하는 연산으로 대상 함수(f)와 또 다른 함수(g)를 반전하여 곱한 다음 적분한다.

 

이미지에서 합성곱

합성곱은 이미지영역에 자주 사용 되었는데 향후 이 합성곱을 기반으로 이미지 처리 딥러닝 모델(CNN)이 등장한 배경이 된다.

이미지는 n차원의 배열로 표현하는 이산적 데이터임으로 이산 합성곱을 취하는데, 대상 함수(f)를 이미지 자체로 두고 다른 함수(g)커널(윈도우, 리셉티브 필드)로 생각하여 아웃풋을 구한다. 커널은 이미지를 순회하며 합성곱을 취하여 새로운 대상 픽셀을 계산한다.

 

 

Sharpening kernel

그래서 합성곱을 하는것은 무슨 의미가 있을까?

다음과 같은 이미지 2D 배열 이 있을때 새로운 커널 g를 구성해본다.

 

새로운 픽셀을 계산할 때 커널 g에서 가운데 값이 연산되는 픽셀은 5배 증가 시키고 가산하며 그 옆 부분은 음수화하여 감산하게 된다.

 

 

이미지 배열에서 2,2 자리의 9값 은 주변에 비해 높은 값을 갖고 있다. f*g에서 같은 자리인 y2를 계산하면

y2 = 1*0 + 2*-1 + 3*0 +

         1*-1 + 9*5 + 8*-1 +

         2*0 + 3*-1 + 4*0 = 31

이 되며 원래 자리의 값 9를 더욱 강조 시키고 주변 대각 픽셀은 무시, 정각 픽셀로 너무 값이 커지지 않게 조절하여 새로운 값을 구하게 된다. 즉 현재 자리의 픽셀값을 주변 픽셀 값에 비해 강조 시킴으로써 대비를 높여 이미지의 선명도를 키우는 것이다. 

 

 

Blurring kernel

선명도를 낮추는 처리(희미하게)는 그와 반대로 커널은 예상할 수 있듯이 부드러운 느낌의 값으로 이루어져 있다. 보통은 가우시안 커널이라고 불리는 정규분포를 따르는 완만한 형태를 주로 사용한다.

가우시안 커널g는 합이 1이고 편차가 0을 따르는 표준정규분포를 따르며 가운데 값이 제일 높은 산같은 형태를 보인다. 모든 값은 0 보다 크고 1보단 작음으로 커널에 대상이 되는 필드에서 버려지는 픽셀이 없다.  제일 높은 중심값에서 점점 주변값으로 가중치가 낮아짐으로 아웃풋 대상 픽셀은 점점 주변 픽셀의 값과 비슷하게 조정 되는 효과를 줄 수 있다.

 

대상 픽셀값이 주변 픽셀 값과 가깝도록 조정되기에 대비가 낮아져 이미지가 희미하게 보이게 된다.

 

디지털영상처리: Geometric Transformation

이미지에 회전, 변형 등의 기하학적 변형을 가한다. 여러 변형 기법이 있지만 여기선 어파인 변형법을 간단하게만 설명한다.

 

Affine transformation

어파인 변형법은 이미지에서 보통 세개의 점을 지정하고 세개의 점이 변화될 새로운 세개의 점을 지정함으로써 이미지에 기하학적 변형을 가하는 처리 기법이다.

 

 

어파인 변형은 기본적으로 선형식으로 표현이 가능한대, 곱에 해당하는 A 값은 선형 변환을 의미하고 편향에 해당하는 B는 이미지의 이동을 의미하게 된다.

즉 기존의 세개의 점이 새로운 세개의 점으로 향하는 가중치와 편향값을 구하고 이미지에 적용 시키는 과정을 어파인 변형법이라고 한다.

 

디지털 영상처리: Color Transformation

이미지의 색상맵을 조정하는 처리 기법으로 기하학적 변형법이 좌표 공간(위치)를 이동시키는 기법 이였다면 대비 조정은 픽셀 값을 변형 시키는 기법이다. 변형 방법으론 여러가지 있지만 여기선 어파인 변형법과 비슷한 선형이동과 감마 보정법을 설명한다.

 

 

선형 이동은 어파인 변형법과 같이 픽셀 값을 가중치와 편향값에 의해 조정시키는 방법이다. 

감마 보정은은 이미지의 밝기 또는 대비를 조절하는 비선형 처리 기법중 하나이다. r 값을 1보다 작은 값으로 둘 경우 이미지가 밝아지며 1보다 높은 값으로 처리할 경우 이미지가 어두워진다. 

 

두개 방식의 차이를 설명하는 가장 좋은 비유는 일정 비율의 곱(또는 합) 과 거듭제곱의 차이를 생각해보면 좋다.

 

디지털영상처리: Segmentation

이미지 분할은 n개(보통 작은 개수)의 개별 픽셀로 구분하는 처리 기법으로 이미지를 단순화 하여 사용할 때 주로 사용된다. 

이미지 분할 기법은 여기서 설명하는 기법보다는 사실 인공지능으로 의미론적 분할을 주로 쓰인다. 

 

여기서는 그냥 아주 단순하게 히스토그램을 사용하여 이미지 분할 해본다.

 

먼저 RGB채널 이미지를 Grayscale로 변환하고 히스토그램과 히스토그램의 CDF를 구한다.

픽셀 분포 CDF에 따라 밀도가 균등한 분포를 갖는 픽셀 범위 구간을 계산하여 각 픽셀을 범위 구간에 지정된 값으로 치환한다.

 

 

디지털영상처리: Edge Detection

edge detection은 이미지 속에 객체로 보이는 물체의 외곽이나 도드라지는 선을 검출하기 위한 처리 기법으로 segmentation sharpening 기법과 관련 있는 처리 기법으로 앞서 본 edge contrast를 높이는 sharpening을 적절히 사용하면 가장자리가 더 자세히 검출 될 수 있다.

 

Canny edge detection

 

캐니 엣지 디텍션은 edge detection 프로세스에서 간단하면서도 효과적인 파이프라인으로 다음과 같은 순서를 거쳐 가장자리를 구분한다.

1. 가우시안 필터로 노이즈 제거
2. 이미지의 강도 경사 계산: 수평 기울기와 수직 기울기를 특정한 커널로 컨볼루션 연산하여 계산한다.
3. 외곽선을 얻기 위한 비 최대 억제기법 적용: 외곽선이 아닌 픽셀이 계속 진행되는 경우를 억제하기 위해 적용되는 처리 방법.

방향 경사도를 이용하여 지역적인 부분의 픽셀의 최대값들이 경계선에 인접하는지 여부를 측정한다.

 

4. Double Threshold: 외각선이 끊어 질 수도 있는 경우를 고려하여 이중 구역화를 진행한다

 

 

끝~