자주 하는 실수와 요약
자주 하는 실수
| 실수 | 나온 문제 | 바로잡는 법 |
|---|---|---|
| 멀어지면 그림 속 무늬가 바뀐다고 봄 | 1 | 무늬는 그대로이고 눈에 차지하는 각만 줄어 눈이 가를 수 있는 한계가 그림 쪽 c/i 로 낮아진다. 한 주기 2mm 줄무늬는 3.44m에서 회색이 된다 |
| 흐린 그림과 결 그림의 세기가 원래 세기를 나눠 가진다고 봄 | 2 | 블러는 가운데 굵기의 무늬를 양쪽에 반씩 나눠 둔다. 폭 2픽셀 블러면 86.9% + 7.6% = 94.5%. 무늬마다 1배 아니면 0배로 자르면 100%가 된다 |
| 제곱 오차가 작은 답이 더 닮은 그림이라고 봄 | 3 | 제곱 오차는 결을 지운 흐린 그림에 너그럽다. 자리를 확신하지 못하면 여러 답의 평균(흐린 그림)이 기대 오차를 절반으로 줄인다 |
| 주파수 축으로 바꾸면 수가 줄어든다고 봄 | 4 | 수의 개수와 제곱합은 그대로다. 0인 칸이 많아져 적기 쉬워질 뿐이다 |
| 한 축에서 단순한 것은 다른 축에서도 단순하다고 봄 | 5 | 한 칸에 몰린 줄은 계수 여덟 개에 퍼지고, 한결같은 줄은 계수 하나에 몰린다 |
| 데이터에서 배운 축은 코사인 축과 전혀 다를 것이라고 봄 | 6 | 자리를 옮겨도 통계가 같으면 주성분 축은 물결무늬다. 등장인물 그림 조각에서 코사인 크기 0.95~1.00 |
| 칸 수를 16분의 1로 줄이면 세기도 그만큼 잃는다고 봄 | 7 | 칸 수를 차지하는 것은 가는 무늬다. 옥타브마다 세기가 같으면 두 옥타브를 잃어도 18% |
| 세기가 f⁻² 로 줄면 가는 무늬 쪽은 거의 비었다고 봄 | 8 | 2차원에서는 고리의 넓이가 f 로 늘어 옥타브마다 세기가 같다. 1차원에서만 옥타브마다 절반 |
| 제곱 오차로 줄인 압축이 모든 무늬를 고르게 줄인다고 봄 | 9 | 세기가 큰 굵은 무늬부터 남긴다. 주성분 8개: 가장 굵은 구간 100%, 가장 가는 구간 0.6% |
| 피라미드는 블러를 잘 골라야 되살아난다고 봄 | 11 | 같은 블러로 빼고 더하므로 어떤 블러든 정확히 되살아난다 |
| 잃은 세기가 작으니 위 대역을 채우기는 쉽다고 봄 | 12 | 맨 위 대역은 입력에 없는 결이다. 여러 가능성 가운데 하나를 골라 그려야 하고, 제곱 오차로 배우면 흐려진다 |
요약
블러는 그림을 실눈으로 본 흐린 그림과 돋보기로 본 결 그림으로 나눈다. 무늬가 그림 한 폭에 되풀이되는 수가 공간 주파수(c/i)이고, 블러는 공간 주파수가 높은 무늬일수록 많이 줄인다. 그림을 칸마다의 밝기 대신 코사인 무늬마다의 계수로 다시 적는 것이 푸리에 변환(여기서는 DCT)이다. 수의 개수도 제곱합도 그대로라 정보는 빠지지 않지만, 축을 바꾸면 세기가 몇 안 되는 계수에 몰린다. 몰리는 까닭은 세기 스펙트럼에 있다. 그림의 세기는 공간 주파수의 대략 −2제곱(등장인물 그림 −2.24, 얼굴 사진 −2.86)으로 줄고, 칸을 섞은 그림이나 백색 잡음은 평평하다. 2차원에서 f⁻² 는 옥타브마다 같은 세기다. 제곱 오차로 수를 줄이는 압축은 이 내리막 때문에 굵은 무늬부터 남겨 흐린 그림을 낸다. 라플라시안 피라미드는 그림을 대역(공간 주파수의 한 구간)마다 자리와 함께 나누고, 칸 수 4/3배로 정확히 되살린다.
flowchart LR A["흐린 그림 + 결 그림<br/>실눈과 돋보기"] -->|"무늬가 줄어드는 배율"| B["공간 주파수<br/>그림 한 폭에 든 무늬 수"] B -->|"무늬마다 정확히 자르려면"| C["푸리에 변환<br/>칸 N개 ↔ 계수 N개"] C -->|"왜 몇 계수에 몰리나"| D["세기 스펙트럼<br/>P(f) ∝ f^(−γ), γ ≈ 2"] D -->|"제곱 오차로 줄이면"| E["굵은 무늬부터 남김<br/>= 흐린 그림"] C -->|"자리도 함께 가지려면"| F["대역<br/>라플라시안 피라미드"]
막힌 곳
이제 그림을 무늬의 굵기로 나눠 볼 수 있다. 구도는 낮은 공간 주파수에, 결은 높은 공간 주파수에 있고, 그림의 세기는 굵은 무늬에 몰려 있다. 대역마다 그림 한 장씩을 자리와 함께 떼어 낼 수도 있다.
그런데 지금까지 무늬를 고른 것은 사람이 정한 블러와 코사인이었다. 블러는 이웃 몇 칸에 정해진 비율을 곱해 더한 것이었다. 비율을 바꾸면 굵은 무늬 대신 가는 무늬만, 또는 특정한 방향의 무늬만 고를 수도 있지 않을까? 그 비율을 데이터가 고르게 할 수는 없을까? 그리고 그림에 잡음을 섞으면 어느 대역부터 사라질까? 잡음은 픽셀마다 따로 뽑으니 세기 스펙트럼이 평평했는데, 그림은 가는 무늬로 갈수록 세기가 약했다. 거꾸로 그림을 처음부터 만들어야 한다면, 굵은 대역과 가는 대역을 같은 순서로, 한꺼번에 그려야 할까?