이미지 및 이미지 처리

완료됨

이미지 처리 및 기타 컴퓨터 비전 기능을 살펴보기 전에 먼저 컴퓨터 프로그램의 데이터 맥락에서 실질적 이미지의 의미를 고려해 보는 것이 좋습니다.

픽셀 배열로서의 이미지

컴퓨터에서 이미지는 픽셀 숫자 값의 배열입니다. 예를 들어 다음 배열을 생각해 보겠습니다.

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

배열은 7x7 픽셀 이미지(이미지의 해상도라고 함)의 픽셀 값을 나타내는 7개 행과 7개 열로 구성됩니다. 각 픽셀의 값은 0(검정)에서 255(흰색) 사이이며, 두 경계 사이의 값은 회색 음영을 나타냅니다. 이 배열로 표시되는 이미지는 다음 이미지(확대 표시)와 유사합니다.

Diagram of a grayscale image.

이 이미지의 픽셀 값 배열은 2차원(행과 열을 나타내는 xy의 좌표)이며 픽셀 값의 단일 사각형을 정의합니다. 이와 같은 픽셀 값의 단일 레이어는 회색조 이미지를 나타냅니다. 실제로 대부분의 디지털 이미지는 다차원이며 빨강, 녹색, 파랑(RGB) 색상 색조를 나타내는 세 개의 레이어(채널이라고 함)로 구성됩니다. 예를 들어 이전 회색조 예시와 동일한 사각형 도형을 만드는 픽셀 값의 세 채널을 정의하여 색 이미지를 나타낼 수 있습니다.

Red:
 150  150  150  150  150  150  150  
 150  150  150  150  150  150  150
 150  150  255  255  255  150  150
 150  150  255  255  255  150  150
 150  150  255  255  255  150  150
 150  150  150  150  150  150  150
 150  150  150  150  150  150  150

Green:
 0    0    0    0    0    0    0          
 0    0    0    0    0    0    0
 0    0   255  255  255   0    0
 0    0   255  255  255   0    0
 0    0   255  255  255   0    0
 0    0    0    0    0    0    0
 0    0    0    0    0    0    0

Blue:
 255  255  255  255  255  255  255  
 255  255  255  255  255  255  255
 255  255   0    0    0   255  255
 255  255   0    0    0   255  255
 255  255   0    0    0   255  255
 255  255  255  255  255  255  255
 255  255  255  255  255  255  255

결과 이미지는 다음과 같습니다.

Diagram of a color image.

보라색 사각형은 조합으로 표시됩니다.

Red: 150 
Green: 0 
Blue: 255 

가운데의 노란색 사각형은 조합으로 표시됩니다.

Red: 255
Green: 255
Blue: 0

필터를 사용하여 이미지 처리

이미지 처리 작업을 수행하는 일반적인 방법은 이미지의 픽셀 값을 수정하는 필터를 적용하여 시각적 효과를 만드는 것입니다. 필터는 필터 커널이라고 하는 하나 이상의 픽셀 값 배열로 정의됩니다. 가령 다음 예시와 같이 3x3 커널을 사용하여 필터를 정의할 수 있습니다.

-1 -1 -1
-1  8 -1
-1 -1 -1

그런 다음 커널이 이미지 전체에 연결되고 픽셀의 각 3x3 패치에 대한 가중치 합계를 계산하고 결과를 새 이미지에 할당합니다. 단계별 예를 살펴봄으로써 필터링의 작동 방식을 더 쉽게 이해할 수 있습니다.

앞에서 살펴본 회색조 이미지부터 시작해 보겠습니다.

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

먼저 이미지의 왼쪽 위 패치에 필터 커널을 적용하여 각 픽셀 값에 커널의 해당 가중치 값을 곱하고 결과를 더합니다.

(0 x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (0 x -1) + (255 x -1) = -255

결과(-255)가 새 배열의 첫 번째 값이 됩니다. 그런 다음 한 픽셀을 따라 필터 커널을 오른쪽으로 이동하고 작업을 반복합니다.

(0 x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (255 x -1) + (255 x -1) = -510

다시 결과가 새 배열에 추가되어 이제 두 개의 값이 있습니다.

-255  -510

이 애니메이션에 표시된 것처럼 프로세스는 필터가 이미지 전체에서 컨볼루션될 때까지 반복됩니다.

Diagram of a filter.

필터가 이미지 전체에서 컨볼루션되어 새 값의 배열을 계산합니다. 일부 값은 0~255 픽셀 값 범위를 벗어나므로 값이 이 범위에 맞게 조정됩니다. 필터의 모양 때문에 픽셀의 바깥쪽 가장자리는 계산되지 않고 안쪽 여백 값(일반적으로 0)이 적용됩니다. 결과 배열은 필터가 원래 이미지를 변환한 결과물인 새 이미지를 나타냅니다. 이 경우에서는 필터가 이미지 모양의 가장자리를 강조 표시하는 효과가 있습니다.

다음은 필터의 효과를 더욱 명확하게 확인할 수 있는 실제 이미지에 적용된 동일한 필터의 예시입니다.

원본 이미지 필터링된 이미지
Diagram of a banana. Diagram of a filtered banana.

필터가 이미지 전체에서 컨볼루션되기 때문에 이러한 종류의 이미지 조작을 나선형 필터링이라고도 합니다. 이 예에 사용된 필터는 이미지의 개체에 대한 가장자리를 강조 표시하는 특정 유형의 필터(라플라스 필터라고 함)입니다. 흐리게, 선명하게, 색 반전 및 기타 효과를 만드는 데 사용할 수 있는 다른 많은 종류의 필터가 있습니다.