Skip to main content

Section 7.4 이미지 압축과 주성분분석

Subsection 7.4.1 이미지 압축

이 웹문서를 전자기기를 사용해 읽고 있는가? 당신이 바라보고 있는 직사각형 모양의 화면이 바로 이미지다. 또는, 화면 속 직사각형 모양 요소를 이미지라 할 수 있다.

예시 7.4.1. 이미지의 예.

이미지: 소(목판화), 스마트폰으로 촬영
보기 7.4.2.
이미지는 픽셀을 직사각형 모양으로 배열한 것이다. 픽셀이란 무엇인가? 흑백이미지라면 픽셀은 수로 표현할 수 있다.
어두운 정도와 수의 대응
보기 7.4.3. 흑백이미지 픽셀의 색과 수의 대응
흑백을 16단계로 나누어 0-15의 정수로 표현한다면 행렬
\begin{equation} \begin{bmatrix} 0 \amp 7 \amp 15 \\ 0 \amp 3 \amp 7 \\ 3 \amp 3 \amp 10 \end{bmatrix}\tag{7.4.1} \end{equation}
보기 7.4.4쯤 될 것이다.
행렬에 대응하는 흑백 격자
보기 7.4.4. 행렬 (7.4.1)이 표현하는 흑백격자(격자 크기 일정하지 않음)
삼원색 기반 현대적 디스플레이에 적합한 형식은 RGB또는 RGBA로 복수의 독립적인 채널로 구성된다. 채널이 여러개로 늘어나도 각 채널은 정해진 개수의 단계로 나누어 수로 표현되므로 결국 행렬로 표현된다는 사실은 변함없다. 채널이 여러개일 수 있다는 사실을 무시하면, 이미지는 곧 행렬이다.
이미지 압축 문제는 행렬 압축 문제로 환원할 수 있다. 픽셀 수가 \(960 \times 1280\)인 그림을 생각해보자. 약 120만개의 픽셀을 요약하는 방법에는 무엇이 있을까? 특잇값분해를 이용해보자. 그림을 나타내는 행렬
\begin{equation*} A_{\rm 그림} = \text{$960 \times 1280$ 행렬} \end{equation*}
의 특잇값분해
\begin{equation*} A_{\rm 그림} = \sigma_1 \boldsymbol u_1 \boldsymbol v_1^{\operatorname T} + \cdots + \sigma_r \boldsymbol u_r \boldsymbol v_r^{\operatorname T} \end{equation*}
를 생각하자. 특잇값분해의 처음 \(k\)항을 택한 행렬
\begin{equation*} A_k= \sigma_1 \boldsymbol u_1 \boldsymbol v_1^{\operatorname T} + \cdots + \sigma_k \boldsymbol u_k \boldsymbol v_k^{\operatorname T} \end{equation*}
을 저장하기 위해서는
\begin{gather*} \sigma_1,\cdots,\sigma_k \\ \boldsymbol u_1,\cdots,\boldsymbol u_k \\ \boldsymbol v_1,\cdots,\boldsymbol v_k \end{gather*}
이면 충분하다. \(\sigma_i\)는 스칼라이고, 벡터 \(\boldsymbol u_i\)\(\boldsymbol v_i\)는 각각 960개와 1280개의 성분으로 이루어져 있으므로,
\begin{equation*} k \times (1+960+1280) \approx 2k \times 10^3 \end{equation*}
의 수가 필요하다. 원래 행렬 \(A_{\rm 그림}\)에 약 \(960 \times 1280\)개의 픽셀이 있었으므로 압축비율은
\begin{equation*} \frac{(1+960+1280)k }{960 \times 1280} \approx \frac{k}{550} \end{equation*}
으로 어림할 수 있다.
다음 예시를 통해 압축 결과를 살펴보자.

예시 7.4.5. 격자 압축.

보기 7.4.6. 흑백 격자 보기 7.4.4 압축

예시 7.4.7. 소 압축.

보기 7.4.8. 보기 7.4.2 압축, \(1\le k\le 40\)

예시 7.4.9. 나무 압축.

건물 그림자에 반쯤 가린 나무, 스마트폰으로 촬영
보기 7.4.10. 그림자 속 나무
보기 7.4.11. 이미지 “그림자 속 나무” 압축, \(1\le k\le 200\)

예시 7.4.12. 전시된 회화 압축.

벽에 걸린 Mud Bath, 스마트폰으로 촬영
보기 7.4.13. 벽에 걸린 Mud Bath
보기 7.4.14. 이미지 “벽에 걸린 Mud Bath” 압축, \(1\le k\le 40\)

Subsection 7.4.2 주성분분석

자료 해석 방법인 주성분분석은 특잇값분해에 기반한다. 여기서는 간단한 자료에 대한 주성분분석을 적용해본다.
곡물, 콩류, 견과류 각 3종의 성분에 관한 자료 표 7.4.15를 생각해보자.
7.4.15. 식품성분(출처:국가표준식품성분표, 농촌진흥청)
수분 단백질 지방 회분 탄수화물 당류
메밀 13.1 13.64 3.38 2.04 67.84 0.30
멥쌀 13.0 6.81 1.05 0.40 78.74 0.50
보리 11.8 8.75 1.67 0.90 76.89 0.92
강낭콩 56.1 8.80 0.86 1.86 32.38 0
동부 58.5 9.51 1.02 1.63 29.34 0.21
완두 71.0 7.92 0.44 1.13 19.51 0
61.5 3.28 0.50 1.33 33.39 4.95
은행 49.6 4.69 1.53 1.40 42.78 2.95
3.3 15.96 59.28 2.11 19.38 1.33
수분, 단백질, 지방, 회분, 탄수화물, 당류 여섯 성분을 축에 대응시키면 각 식품은 \(\mathbf R^6\)의 벡터이다. 각 행은 아홉 종류의 식품에 해당되므로 아홉 벡터
\begin{equation*} \boldsymbol x_1,\cdots,\boldsymbol x_9 \in \mathbf R^6 \end{equation*}
를 얻는다. 아홉 벡터 중 어떤 것이 비슷한 성분을 가지고 있는지 알아보자. 행렬
\begin{equation*} A = \begin{bmatrix}\boldsymbol x_1 \\ \vdots \\ \boldsymbol x_9\end{bmatrix} \end{equation*}
의 특잇값분해
\begin{equation*} A= \sigma_1 \boldsymbol u_1 \boldsymbol v_1^{\operatorname T} + \sigma_2 \boldsymbol u_2 \boldsymbol v_2^{\operatorname T} + \cdots + \sigma_6 \boldsymbol u_6 \boldsymbol v_6^{\operatorname T} \end{equation*}
에서 \(\boldsymbol v_1,\cdots\boldsymbol v_6\)은 우특이벡터이고, \(\mathbf R^6\)의 정규직교기저임을 상기하자. 각 \(\boldsymbol v_i\)를 주축이라 하며, \(\boldsymbol v_1\)을 제1주축, \(\boldsymbol v_2\)제2주축 등으로 부른다. 각 주축 방향의 크기를 주성분이라 하며 \(\boldsymbol x \in \mathbf R^6\)를 선형결합
\begin{equation*} \boldsymbol x = (\boldsymbol x \bullet \boldsymbol v_1) \boldsymbol v_1 + \cdots +( \boldsymbol x \bullet \boldsymbol v_6) \boldsymbol v_6 \end{equation*}
으로 나타내면 그 계수들이 \(\boldsymbol x\)의 해당 주축 성분이 된다. 부분공간
\begin{equation*} S_k := \span \left(\boldsymbol v_1, \cdots, \boldsymbol v_k\right) \end{equation*}
으로 자료 \(\boldsymbol x_1,\cdots,\boldsymbol x_9\)를 정사영해보고, \(k=1,2,3\)에서 각 식품의 특징이 어떻게 드러나는지 예시 7.4.16에서 관찰하였다.

예시 7.4.16. 식품 9종 주성분분석.

1차원 주성분분석 결과
보기 7.4.17. \(k=1\)
2차원 주성분분석 결과
보기 7.4.18. \(k=2\)
3차원 주성분분석 결과 - xy축 방향
보기 7.4.19. \(k=3\text{,}\) \(S_2\)방향에서
3차원 주성분분석 결과 - 다른 방향
보기 7.4.20. \(k=3\text{,}\) 다른 방향
입력값
설정1
설정2
보기 7.4.21. 입력값 및 설정