‘신시사이저’에 대한 워크샵: DCT 신시사이징 I


이 실천은 ‘신시사이저’에 대한 워크샵을 따른다.



0. 이미지 합성에 대하여
‘신시사이저’에 대한 워크샵에서 이야기한 대로 신시사이저의 합성 원리는 주파수의 합을 기반으로 확장된다. 나는 이 원리를 오디오의 측면이 아니라 시각 이미지의 영역으로 끌어들이고자 한다. 이에 앞서 몇 가지 조건을 짚고 넘어가자.

1. 이미지의 기본 요소
오디오의 합성의 기본 요소가 사인파로 간단히 정의되는 반면, 이미지의 세계에서 바탕이 될만한 기본 요소는 쉽사리 떠오르지 않는다. 어떻게 찾을 수 있을까?1

먼저, 이미지를 다루는 것은 소리에 비해 복잡한 일이라는 점을 짚고 넘어가자. 1차원의 파동으로만 이루어지는 소리에 반해, 이미지는 x축과 y축을 가진 2차원의 공간적 개념이다. 따라서 시각적 정보의 주파수는 그 방향이 더욱 복잡해진다. 또한, 눈의 분해능은 귀보다 훨씬 높다. 다시말해 해상도가 더 높다는 것이다. 이러한 두 가지 사실은 우리가 시각 이미지에서 해석해내야 할—혹은 전달해야 할—정보의 양이 소리보다 더 많다는 것을 의미한다.

본 실천의 목적은 이미지의 모든 속성을 명확하게 밝히는 데에 있지 않다. 그것은 너무나 방대한 주제다. 한정된 범위 내에서 이미지의 합성이 어떻게 작동할 수 있을지 사변해보는 것으로 충분하다. 실례로, 세상에 존재하는 어떤 신시사이저도 사인파의 합성만으로 모든 소리를 제작할 수 있다는 근본원리를 엄격히 따르지는 않는다. 세계의 복잡도를 온전히 담아낼만한 무수한 오실레이터를 마련하는 것이 불가능에 가깝기 때문이다. 따라서 본 실천은 이미지 합성에 대한 한 가지 접근방식을 취해보고 그 잠재성을 탐구하는 것을 목표로 한다.

2. 이미지의 속성
먼저 이미지의 속성을 3가지로 구분하자.2

  1. 형태
  2. 질감

이 중에서 색은 비교적 다른 속성과 명확히 구분되는 속성이지만, 나머지 둘은 그렇지 않다. 형태를 이미지 내의 특정한 형상 혹은 경계라고 하자면 질감은 이미지 내의 특정한 부위의 패턴 혹은 밀도의 변화라 할 수 있을 테다. 이러한 정의는 인간 직관의 영역에서는 꽤나 명확한 편이지만 기계적인 기준을 설정하기에는 까다롭다. 이에 따라 본 실천에서 응용하게 될 JPEG 압축의 원리를 따르는 과정에서 질감과 형태는 얼마간 구분되지 않은 채 정의될 것이다. 색에 대한 논의를 배제하고 형상—형태와 질감을 합쳐 이렇게 지칭해보자.—만의 합성으로 범위를 한정해두고자 한다.

3. JPEG 압축과 DCT
JPEG 압축 방식(이하 JPG)은 디지털 이미지의 파일 크기를 줄여 저장하는 손실 압축(Lossy Compression) 방식 중 가장 널리 쓰이는 표준이다.3 간단히 말하자면, JPG는 사람의 눈이 잘 인식하지 못하는 정보들은 중요하지 않은 것으로 간주하여 뭉개거나 삭제하는 방식—손실—으로 저장 용량을 줄인다. 이 과정에서 JPG는 이미지 정보를 크게 두 범주로 나누어 처리한다. 하나는 색이고 다른 하나는 형상이다.

JPG는 색을 밝기 정보(Luminance)와 색상 정보(Chrominance)로 나누어 처리한다. 이 과정에서 밝기 정보는 색상 정보보다 중요한 것으로 간주되는데, 사람의 눈이 밝기 변화에 더 민감하기 때문이다. 이에 따라 JPG는 색상 정보를 희생(Subsampling)해 저장 공간을 줄인다. 압축된 디지털 이미지는 실제 색 정보를 일부 잃게 되지만 이 차이를 육안으로 명확히 구별하기는 어렵다. 결과적으로 JPG는 원본 이미지의 시각적인 품질 저하를 방어하면서 실제 데이터는 줄이는 효율적인 압축 방식이 된다.

JPG가 형상을 다루는 과정은 보다 복잡하다. 먼저, JPG는 전체 이미지를 8x8 픽셀의 블록으로 나누어 처리한다. 그리고 각 블록은 독립적으로 압축된다. (JPG 풍화 현상이라고 일컫는 디지털 이미지의 블록무늬는 이 과정에서 생겨난다.) 압축의 과정에서, 8x8 픽셀의 블록들은 이산 코사인 변환(이하 DCT)이라는 방식을 통해 64가지 기본 패턴들의 조합으로 변환된다. 이는 공간 영역의 정보를 주파수 영역의 정보로 변환하기 위함인데, 이 또한 사람의 눈이 판별하는 정보의 위계와 관련이 있다. 우리는 이미지의 큰 구조를 구성하는 저주파 성분을 잘 인식하는 반면, 세부적이고 형상의 변화가 복잡한 고주파 성분은 잘 인식하지 못한다. 때문에 JPG는 변환된 8x8 픽셀의 주파수 영역의 고주파 성분을 희생하는 방식으로 압축률을 높인다.

JPG Image
JPG 이미지, JPG 특유의 블록무늬가 보인다.


4. 이산 코사인 변환
JPG의 DCT는 다음과 같은 과정을 거친다.

  1. 8x8 픽셀 블록은 64가지 기본 패턴(주파수 계수)을 가진다.4
  2. 원본 이미지를 8x8 픽셀의 블록으로 쪼개어 각 블록의 정보를 읽는다.
  3. 블록의 정보는 DCT를 통해 64가지 패턴의 가중치 계수로 변환된다.
  4. 가중치에 따라 64가지의 패턴은 조합되어 블록의 이미지를 구성한다.
  5. 이 때 얼마나 많은 고주파를 희생하느냐에 따라 압축률이 달라진다.

DCT 8x8
DCT 블록의 기본 패턴 (8x8)


5. DCT를 응용한 이미지 생성(DCT 신시사이징)
DCT가 이미지를 압축하는 방식이라면 이를 역으로 활용해 이미지를 생성해내는 것도 가능할 것이다. 본 실천은 이러한 아이디어에서 출발하게 되었다.5

이산 코사인 변환은 앞서 살펴본 대로 64가지의 주파수 계수를 가진다. 궁극적인 목표는 이를 조합해 형상 이미지를 얻어내는 것인데, 8x8은 실험의 대상으로 삼기에 너무 많은 경우의 수를 동반한다. 따라서, 실험을 위해 변수들을 통제하기로 했다. 실험의 조건은 아래와 같다.6

  1. 생성할 형상 이미지의 포맷을 4x4 픽셀로 한다.
  2. 생성할 형상 이미지는 2x2 픽셀 블록 4개의 조합으로 구성한다.
  3. 따라서 2x2 픽셀 블록은 4가지의 기본 패턴(주파수 계수)을 가진다.
  4. 가중치를 0과 1로 한정하여, (조건 내의)가능한 모든 경우의 이미지를 생성한다.

이에 따라, 나는 4가지 기본패턴과 1808장의 형상 이미지를 얻을 수 있었다. 이는 실험의 조건에 따른 모든 경우의 이미지다.

dct 2x2 basics
4가지의 기본 패턴 (2x2 픽셀 블록의 주파수 계수는 가중치 0과 1을 기준으로 총 4가지의 경우의 수를 가진다.)


2x2 주파수 계수를 조합해 4x4 이미지를 만드는 경우의 수는 다음과 같이 정리할 수 있다.

A: 모든 칸이 같은 기본 2×2 패턴으로 채워진 이미지
B: 서로 다른 두 패턴으로 절반씩 채워진 이미지
C: 하나의 패턴이 3칸, 다른 패턴이 1칸 채워진 이미지
D: 하나의 패턴이 2칸, 다른 패턴이 1칸, 또 다른 패턴이 1칸 채워진 이미지7



dct images A
형상 이미지 조합 A, 8가지 (조합쌍 16가지 중 중복 이미지 제거)

dct images B
형상 이미지 조합 B, 96가지 (조합쌍 120가지 중 중복 이미지 제거)

dct images C
형상 이미지 조합 C, 192가지 (조합쌍 240가지 중 중복 이미지 제거)

dct images D
형상 이미지 조합 D, 1512가지 (조합쌍 1680가지 중 중복 이미지 제거)


6. 실천 후기
일련의 과정을 통해, 나는 추상적인 기본 요소의 합성으로 구체적인 이미지를 생성해낼 수 있음을 밝히고자 했다. 하지만 본 실천의 결과로 생성된 형상 이미지들은 아직 추상성을 크게 벗어나지는 못했다는 한계점을 가진다. 그러나 나는 이 이미지들이 DCT의 원리를 이미지 합성에 대한 잠재적인 방법론으로 예증하고 있다는 걸 확신한다. 이어지는 실천에서는 방법론을 보다 발전시켜 더욱 구체적이고 유용한 형상 이미지를 얻어낼 것이다. 뿐만 아니라 이렇게 생성될 형상 이미지는 다양한 맥락과 연결될 수 있다. 예를들어, 특정 방식의 방법론을 통해 주파수의 합으로 생성된 형상 이미지는 스테이블 디퓨전 방식의 AI 생성형 이미지와 어떻게 다른가? 학습된 데이터에 기반한 스테이블 디퓨전또한 ‘합성’의 일종으로 볼 수 있을까? 이러한 질문들은 분명 잠재 이미지의 잠재성을 상기시킨다.

1

이 글에서 이미지란 우선 2차원의 평면 이미지를 뜻하는 것으로 한정한다.

2

이미지의 3가지 속성은 국민대학교 시각디자인학과 성재혁 교수의 의견을 따른다.

3

JPG에 대한 설명을 담은, 이 실천을 위해 도움받은 영상: https://youtu.be/Kv1Hiv3ox8I?si=iVc1zerfmSAGd9qW

4

64가지의 DCT 패턴은 가로와 세로 주파수의 조합으로 이루어진다. JPG가 다루는 이미지는 2차원의 평면 이미지이므로 가로와 세로 2개의 축이 필요하기 때문이다. 또한 8x8 픽셀에서 나올 수 있는 가로, 세로의 주파수는 각 8종류이기 때문에 모든 경우의 수는 64가지 패턴이 된다.

5

엄밀하게는 JPG의 역과정이 온전히 성립하지는 않는다. 디지털 이미지의 압축방식은 크게 손실 압축과 무손실 압축으로 나뉘는데, JPG는 전자의 대표적 예시이고 PNG와 GIF등이 후자의 대표적 예이다. (통상 디지털 이미지를 다뤄본 사람이라면 경험적으로 전자의 포맷이 후자보다 가볍다는 사실을 알거나 느끼고 있다.) 즉, JPG는 압축 전의 원본 정보를 온전히 가지지 못한다.
하지만 이는 JPG의 양자화 과정에서 일어나는 손실일 뿐, DCT 자체는 온전한 역이 성립할 수 있다. JPG로 압축된 이미지를 원본으로 되돌리기 위해서는 역 이산 코사인 변환(이하 IDCT)과정을 거쳐야 하는데, 이 경우 IDCT는 손실을 동반하지 않는다. 이는 DCT가 푸리에 변환에 근거한 변환 방식이기 때문이다. 이러한 근거로, 나는 DCT의 원리가 이미지 신시사이징 응용에 적용하기 적절한 소재라고 판단하게 되었다.

6

이미지 생성 작업은 모두 파이썬 스크립트를 통해 제작되었다. 각 주파수 가중치를 1과 0으로 할당하여 이미지를 생성했으며, 4x4 픽셀의 결과 이미지를 보기 편하도록 40x40 픽셀의 크기로 확대시켰다. 이 글에 첨부된 형상 이미지는 모두 40x40 픽셀로 업스케일링된 이미지다.

7

모든 칸이 다른 패턴으로 채워진 이미지의 경우의 수는 배제한다. 이 경우만으로 43,680가지의 이미지가 형성되는데, 구조적 중요성에 비해 지나치게 많은 수라서 일단 제외했다. A부터 D까지의 이미지만으로도 이미지 합성의 원리를 탐구하기에는 충분할 것이다.