벡터 (3,2)라고 말할 때 우리는 늘 한 가지를 몰래 가정합니다. "가로로 3칸, 세로로 2칸", 즉 표준 기저 e1,e2를 잣대로 쓴다는 가정입니다. 잣대를 바꾸면 같은 화살표가 다른 숫자로 적힙니다. 결정 격자의 원자 위치, 로봇 손끝의 위치, 사진의 색은 저마다 편한 잣대가 따로 있습니다. 이 장은 잣대(기저)를 바꾸는 법과, 잣대를 바꾸면 같은 변환이 다른 행렬로 보이는 이유를 다룹니다. 그리고 잘 고른 잣대 하나가 복잡한 행렬을 대각 행렬로 바꾸고, 사진 파일을 절반 크기로 줄인다는 것을 보입니다.
기저에 대한 좌표 [x]B를 정의하고, 좌표가 하나뿐인 이유를 선형 독립으로 설명한다.
기저 변환 행렬 P로 x=P[x]B, [x]B=P−1x를 계산하고, 두 비표준 기저 사이의 변환 C−1B를 구한다.
선형 변환의 기저 B에 대한 행렬 [T]B=P−1AP를 구하고, 닮은 행렬이 공유하는 대각합·행렬식·계수를 증명한다.
변환에 맞는 기저를 골라 반사·사영 같은 변환을 대각 행렬로 쓰고, 그것이 고유값 문제로 이어지는 이유를 안다.
다항식 공간의 미분을 행렬로 쓰고, 핵·상·계수–퇴화차수 정리와 동형 사상을 이해한다.
JPEG가 RGB를 YCbCr로 바꾸는 이유를 기저 변환으로 설명하고, 색차 표본을 줄여도 사진이 멀쩡한 이유를 실험으로 확인한다.
이 수식이 없었다면지금 크기의 JPEG 사진
카메라 센서는 화소마다 빨강·초록·파랑 세 숫자를 기록합니다. 그런데 사람 눈은 밝기의 변화에는 아주 예민하고, 색의 미세한 변화에는 훨씬 둔합니다. 문제는 R, G, B 세 숫자 어느 것도 "밝기"나 "색"만을 담고 있지 않다는 점입니다. 빨강 값을 대충 기록하면 밝기도 색도 함께 망가집니다.
JPEG의 해법은 숫자를 버리기 전에 잣대부터 바꾸는 것입니다. 3×3 행렬 하나로 (R, G, B)를 밝기 Y와 두 색차 Cb, Cr로 옮기면, 정보가 "눈이 예민한 축"과 "둔한 축"으로 나뉩니다. 그다음 색차 두 성분만 가로세로 절반 해상도로 줄여도(4:2:0) 눈은 거의 알아채지 못하고, 표본 수는 화소당 3개에서 1.5개로 줄어듭니다. 같은 데이터, 다른 기저. 이 장의 주제가 사진 한 장 안에 들어 있습니다.
RGB: 밝기와 색이 섞임→어느 숫자도 버릴 수 없음→기저 변환 RGB → YCbCr→색차만 줄여 절반 크기
좌표는 기저에 대한 상대적인 숫자다
그래핀 원자의 위치를 어떻게 적을까
그래핀의 탄소 원자는 정육각형 벌집 무늬로 놓입니다. 이 무늬는 길이 2.46 Å인 두 벡터 a1,a2가 60°를 이루는 격자를 따라 되풀이됩니다. 원자 위치를 가로·세로 좌표로 적으면 (1.23,2.13)처럼 무리수투성이가 되고, "격자를 몇 칸 옮긴 자리인가"라는 정작 중요한 정보가 숫자에서 사라집니다. 결정학자는 대신 "a1 방향으로 1칸, a2 방향으로 2칸"이라고 적습니다. 같은 점, 다른 숫자입니다.
1장에서 평면의 모든 벡터가 e1,e2의 선형 결합으로 쓰인다는 것을 보았습니다. 사실 서로 평행하지 않은 아무 두 벡터로도 같은 일을 할 수 있습니다. 그 두 벡터를 새 잣대로 삼으면, 그 잣대로 잰 숫자가 새 좌표입니다.
정의 7.1 (기저와 좌표) 벡터 공간 V의 벡터 b1,…,bn이 선형 독립이고 V를 생성하면 이 순서 있는 묶음 B=(b1,…,bn)을 V의 기저(basis)라 한다. x=c1b1+⋯+cnbn일 때 계수를 모은 벡터
[x]B=c1⋮cn
를 x의 B에 대한 좌표 벡터(coordinate vector)라 한다. 표준 기저 E=(e1,…,en)에서는 [x]E=x이다.
정리 7.1 (좌표의 유일성)B가 V의 기저이면 모든 x∈V의 좌표 [x]B는 꼭 하나 있다.
증명. 생성하므로 적어도 하나는 있다. 두 개 ∑cibi=∑dibi가 있다면 빼서 ∑(ci−di)bi=0. 선형 독립이므로 모든 ci−di=0이다. ∎
생성은 "좌표가 있다", 독립은 "좌표가 하나뿐이다"를 보장한다. 기저의 두 조건은 정확히 좌표가 잘 정의되기 위한 조건이다.
그림 7-1. 같은 점 x를 두 잣대로 잰다. 왼쪽 표준 격자에서는 (3, 2), 오른쪽 60° 격자(b₁ = (1, 0), b₂ = (1/2, √3/2))에서는 약 (1.85, 2.31)이다. 점이 움직인 것이 아니라 눈금이 바뀌었다. 점선은 두 기저 방향을 따라 걷는 경로다.
아래 시뮬레이터에서 기저 벡터 b1,b2와 점 x를 끌어 보세요. 보라색 격자는 새 기저가 만드는 눈금이고, 점선은 c1b1만큼 간 뒤 c2b2만큼 가는 경로입니다.
SIMULATOR
두 잣대로 잰 같은 점
b₁, b₂, x를 끌어 보세요
x (표준 좌표)—
[x]_B (새 좌표)—
P = [b₁ b₂]—
det P—
해볼 것: ① '60° 격자'에서 'x를 격자점에 맞추기'를 누르면 새 좌표가 정수가 됩니다. 결정학자가 이 좌표를 쓰는 이유입니다. ② '거의 평행한 기저'에서 x를 조금만 움직여 보세요. 새 좌표가 크게 출렁입니다. 기저가 나쁘면 좌표가 잡음에 민감해집니다(16장 조건수). ③ b₂를 b₁과 한 직선에 놓으면 좌표가 정의되지 않습니다. 모델: 2차원, 좌표는 P[x]_B = x를 풀어 구합니다. 끄는 점은 0.1 단위로 맞춰집니다.
풀이.c1(1,1)+c2(1,−1)=(3,1)은 연립방정식 c1+c2=3, c1−c2=1이다. 더하면 2c1=4, 따라서 c1=2, c2=1. 즉 [x]B=(2,1).
확인: 2(1,1)+1(1,−1)=(3,1). 좌표를 구하는 일은 언제나 연립방정식 하나를 푸는 일이고, 그 계수 행렬의 열이 바로 기저 벡터다. 다음 절은 이 관찰을 행렬 하나로 정리한다.
기저 변환 행렬: 새 좌표와 옛 좌표 잇기
새 좌표로 받은 숫자를 표준 좌표로 되돌리려면
로봇 팔 제어기가 "공구 좌표계로 (0.2, 0.1)만큼 움직여라"라는 명령을 받았다고 합시다. 모터는 작업대에 고정된 표준 좌표계로 움직이므로, 이 숫자를 작업대 좌표로 바꿔야 합니다. 반대로 카메라가 작업대 좌표로 본 물체 위치를 공구 좌표로 알려 주어야 할 때도 있습니다. 두 방향 모두, 매번 연립방정식을 새로 세워야 할까요?
정의 7.1의 식 x=c1b1+⋯+cnbn을 다시 보세요. 이것은 2장의 열 그림 그대로, 기저 벡터를 열로 세운 행렬과 좌표 벡터의 곱입니다.
정리 7.2 (기저 변환 행렬)Rn의 기저 B에 대해 PB=[b1⋯bn]라 하면
x=PB[x]B,[x]B=PB−1x.
PB의 열이 선형 독립이므로 PB는 가역이다(4장 가역 조건). 또 C가 또 다른 기저이면 B-좌표를 C-좌표로 바꾸는 행렬은
[x]C=PC←B[x]B,PC←B=PC−1PB.
증명. 첫 식은 행렬–벡터 곱의 열 그림 그 자체다. 둘째 식은 PC[x]C=x=PB[x]B의 양변 왼쪽에 PC−1을 곱하면 된다. ∎
방향을 헷갈리기 쉬우니 그림으로 기억하세요. PB는 "새 좌표 → 표준 좌표" 방향입니다. 새 좌표를 받아서 기저 벡터를 그만큼 더하면 실제 화살표가 나오니까요. 반대 방향은 역행렬입니다. PC←B는 B에서 표준 좌표로 올라갔다가(PB) C로 내려오는(PC−1) 길입니다.
그림 7-2. 기저 행렬 P_B는 좌표를 "기저 B의 숫자"에서 "실제 화살표(표준 좌표)"로 올린다. 다른 기저 C의 좌표로 가려면 표준 좌표를 거쳐 P_C⁻¹로 내려온다. 두 화살표를 이은 것이 P_(C←B)다.
예제 7.2 · 두 비표준 기저 사이의 변환B=((1,1),(1,−1)), C=((1,0),(1,2))일 때 PC←B를 구하고, 예제 7.1의 [x]B=(2,1)을 C-좌표로 바꿔라.
풀이.PC=[1012], detPC=2이므로 PC−1=21[20−11]. 그러면
확인: 25(1,0)+21(1,2)=(3,1). 같은 점 (3,1)이다. 계산에서는 PC−1을 만들지 말고 PCy=PB[x]B를 소거로 푸는 편이 낫다(4장의 교훈 그대로).
직교 기저면 역행렬이 공짜다 기저 벡터가 서로 수직인 단위 벡터이면 PTP=I, 즉 P−1=PT입니다. 이때 새 좌표는 그냥 내적 ci=bi⋅x입니다. 로봇 공학과 그래픽스가 회전된 좌표계를 즐겨 쓰는 이유이고, 9장 그람–슈미트가 아무 기저나 직교 기저로 바꾸는 이유입니다.
기저에서 본 선형 변환의 행렬
비스듬한 직선에 대한 반사를 행렬로 쓰려면
직선 y=2x를 거울 삼아 평면을 뒤집는 변환을 생각합시다. 2장의 방법대로 e1,e2가 어디로 가는지 계산하려면 삼각함수를 꺼내야 합니다. 그런데 거울 직선 방향의 벡터는 그대로 있고, 거울에 수직인 벡터는 정확히 뒤집힐 뿐입니다. 그 두 방향을 잣대로 쓰면 이 변환은 "첫 좌표는 그대로, 둘째 좌표는 부호만 바꾼다"라는 한 줄이 됩니다.
2장에서 행렬은 "기저 벡터가 가는 곳의 기록"이었습니다. 그때 기저는 늘 표준 기저였지요. 기저를 B로 바꾸면 기록하는 숫자도 B로 잰 숫자여야 합니다.
정의 7.2 (기저에 대한 변환의 행렬) 선형 변환 T:V→V와 기저 B=(b1,…,bn)에 대해, j열이 [T(bj)]B인 n×n 행렬을 T의 B에 대한 행렬 [T]B라 한다. 그러면 모든 x에 대해
[T(x)]B=[T]B[x]B.
즉 B-좌표만 다루는 사람에게 T는 [T]B를 곱하는 일이다.
정리 7.3 (기저를 바꾼 행렬)Rn에서 T(x)=Ax(표준 행렬 A)이고 P=PB이면
[T]B=P−1AP,A=P[T]BP−1.
증명.B-좌표 [x]B에서 출발해 세 단계를 밟는다. P를 곱해 실제 벡터 x로 올라가고, A로 변환하고, P−1로 다시 B-좌표로 내려온다. 결과는 [Ax]B=P−1AP[x]B. 모든 좌표에 대해 성립하므로 [T]B=P−1AP. ∎
그림 7-3. 같은 변환 T를 두 좌표계에서 본 그림. 표준 좌표에서는 A, B-좌표에서는 P⁻¹AP. 어느 길로 가도 도착점이 같으므로(가환 도식) 두 행렬은 같은 변환의 다른 기록이다. 행렬 곱은 오른쪽부터 읽는다: 먼저 P로 올라가고, A, 그다음 P⁻¹.
열 하나하나로 읽으면 더 직관적입니다. [T]B의 j열은 "bj를 변환한 결과를 B로 잰 숫자"입니다. 만약 T(bj)가 bj의 상수배 λjbj라면, 그 열은 j번째 칸만 λj이고 나머지는 0입니다. 모든 기저 벡터가 그렇다면 [T]B는 대각 행렬이 됩니다. 이것이 5절의 주제이고 11장 고유값의 출발점입니다.
닮은 행렬: 같은 변환, 다른 기록
두 행렬이 사실 같은 변환인지 어떻게 알까
두 연구실이 같은 장비의 동작을 각자 다른 좌표계로 측정해 행렬 A와 B를 얻었습니다. 숫자는 완전히 다릅니다. 두 행렬이 같은 물리 현상의 기록인지, 아니면 정말 다른 동작인지 가려낼 방법이 있을까요? 좌표계에 따라 바뀌지 않는 숫자, 즉 불변량을 찾으면 됩니다.
정의 7.3 (닮음) 가역 행렬 P가 있어 B=P−1AP이면 A와 B는 닮은 행렬(similar matrices)이라 하고 A∼B로 쓴다. 정리 7.3에 따르면 닮은 두 행렬은 같은 선형 변환을 서로 다른 기저로 기록한 것이다.
정리 7.4 (닮음 불변량)A∼B이면 다음이 같다.
행렬식: detB=detA
대각합(trace): trB=trA (대각 원소의 합)
계수: rankB=rankA
특성 다항식 det(A−λI), 따라서 고유값
증명. (1) det(P−1AP)=detP−1detAdetP=detA. 행렬식은 부피 배율이니, 좌표를 바꿔도 변환이 부피를 몇 배 하는지는 그대로다(10장). (2) 아무 X,Y에 대해 tr(XY)=∑i,kxikyki=tr(YX)이므로 tr(P−1(AP))=tr((AP)P−1)=trA. (3) 가역 행렬을 곱해도 상의 차원은 바뀌지 않는다(7절). (4) P−1AP−λI=P−1(A−λI)P에 (1)을 쓴다. ∎
불변량이 같다고 반드시 닮은 것은 아닙니다. I와 [1011]은 행렬식·대각합·특성 다항식이 모두 같지만, P−1IP=I이므로 단위 행렬과 닮은 행렬은 단위 행렬뿐입니다. 불변량은 "다르다"를 증명하는 데 쓰는 도구입니다. 대각합이 다르면 그것으로 끝입니다.
아래 시뮬레이터는 같은 변환을 두 화면에 동시에 그립니다. 왼쪽은 표준 좌표로 본 세상, 오른쪽은 기저 B의 눈금을 반듯한 정사각형으로 펴서 본 세상입니다. 오른쪽에서 보이는 변환의 행렬이 P−1AP입니다.
SIMULATOR
같은 변환을 두 좌표계로 보기
표준 좌표: A
B-좌표: P⁻¹AP
기저 B
A (표준)—
P⁻¹AP (B-좌표)—
tr · det · rank—
원래 글자 F변환된 F기저 B의 눈금
해볼 것: ① '반사'에서 기저를 '변환에 맞춘'으로 바꾸면 오른쪽 행렬이 diag(1, −1)이 됩니다. 오른쪽 화면에서는 그냥 세로 뒤집기입니다. ② 어떤 변환·기저 조합에서도 tr·det·rank 세 숫자는 왼쪽과 오른쪽이 같습니다. ③ '전단'과 '회전'은 '변환에 맞춘' 기저를 만들 수 없습니다. 이유는 11장의 고유벡터가 답합니다. 모델: '변환에 맞춘' 기저는 실수 고유벡터 두 개(MB.mat.eig2)로 만듭니다.
좋은 기저 하나가 계산을 바꾼다
반사를 백 번 하면?
비스듬한 거울에 대한 반사 행렬 A를 100번 곱한 A100이나, 사영을 여러 번 한 결과는 무엇일까요? 표준 좌표에서 곱셈을 반복하면 계산도 오차도 쌓입니다. 하지만 거울에 맞춘 좌표에서 반사는 diag(1,−1)이고, 이것의 100제곱은 그냥 diag(1,1)=I입니다. 좌표를 잘 고르면 어려운 문제가 대각 원소 몇 개의 계산이 됩니다.
정리 7.3을 거꾸로 쓰면 A=PDP−1입니다. D가 대각 행렬이면 이 식은 "A는 기저 B를 따라 각 방향을 di배 늘이는 변환"이라는 뜻입니다. 거듭제곱도 쉬워집니다. 가운데의 P−1P가 서로 지워지므로
이렇게 쓸 수 있는 A를 대각화 가능(diagonalizable)하다고 한다. 그런 기저가 언제 있고 어떻게 찾는지가 11장의 주제다.
그림 7-4. 거울 직선 위의 b₁은 반사해도 그대로, 거울에 수직인 b₂는 정확히 뒤집힌다. 이 두 벡터를 기저로 쓰면 반사는 diag(1, −1)이다. 점 x = (3, 0)은 거울에 대해 대칭인 (−1.8, 2.4)로 간다(가는 점선은 x와 Ax를 잇는, 거울에 수직인 선분).
예제 7.3 · 좋은 기저에서 표준 행렬 만들기 직선 y=2x에 대한 반사의 표준 행렬을 구하라.
풀이. 거울 방향 b1=(1,2)는 그대로이고 수직 방향 b2=(−2,1)은 뒤집히므로 [T]B=D=diag(1,−1). P=[12−21], detP=5, P−1=51[1−221]. 따라서
A=PDP−1=[122−1]⋅51[1−221]=51[−3443].
확인: 일반 공식 [cos2θsin2θsin2θ−cos2θ]에 tanθ=2를 넣으면 cos2θ=1+41−4=−53, sin2θ=1+42⋅2=54. 같은 답을 삼각함수 없이 얻었다. 또 A2=PD2P−1=PIP−1=I: 두 번 반사하면 제자리다.
SIMULATOR
비스듬한 직선에 맞춘 기저
x를 끌어 보세요
변환
표준 행렬 Aᵏ—
맞춘 기저에서 Dᵏ—
[x]_B → [Aᵏx]_B—
해볼 것: ① 각도를 바꾸면 표준 행렬의 네 숫자는 모두 바뀌지만, 맞춘 기저의 행렬은 늘 diag(1, −1)입니다. ② '정사영'에서 k를 올려도 결과가 같습니다(P² = P). '직선 방향 2배'에서는 Dᵏ = diag(2ᵏ, 1)이 표준 행렬보다 훨씬 읽기 쉽습니다. ③ '반사'에서 k가 짝수면 단위 행렬입니다. 모델: b₁ = (cos θ, sin θ), b₂ = (−sin θ, cos θ)인 직교 기저, Aᵏ = P Dᵏ Pᵀ.
모든 변환에 좋은 기저가 있는 것은 아니다 30° 회전은 어떤 실수 벡터도 같은 방향으로 남겨 두지 않으므로 실수 대각화가 불가능합니다. 전단 [1011]은 x축 방향 하나만 그대로 두어 기저를 이룰 두 번째 방향이 없습니다. 언제 대각화가 되는지, 안 될 때 무엇이 차선인지(복소 고유값, 조르당 형식, 14장 특이값 분해)는 11장에서 다룹니다.
화살표가 아닌 벡터: 다항식 공간의 미분 행렬
미분도 행렬 곱셈일까
컴퓨터 대수 프로그램이 다항식 p(x)=1+2x−x2+3x3을 미분하는 장면을 상상해 보세요. 프로그램은 기호를 들여다보지 않습니다. 계수 목록 (1,2,−1,3)을 받아 (2,−2,9,0)을 돌려줄 뿐입니다. 숫자 목록을 받아 숫자 목록을 내놓고, 덧셈과 상수배를 보존한다면, 그것은 행렬입니다.
3차 이하 다항식 전체 P3은 덧셈과 상수배가 자연스럽게 정의되는 벡터 공간입니다(5장에서 공리로 정리합니다). 기저 B=(1,x,x2,x3)을 잡으면 p(x)=a0+a1x+a2x2+a3x3의 좌표는 (a0,a1,a2,a3)입니다. 미분 D(p)=p′은 D(p+q)=p′+q′, D(cp)=cp′이므로 선형입니다.
정의 7.4 (벡터 공간 사이의 선형 사상과 그 행렬) 벡터 공간 V,W 사이의 함수 T:V→W가 T(au+bv)=aT(u)+bT(v)를 만족하면 선형 사상(linear map)이다. V의 기저 B=(b1,…,bn), W의 기저 C에 대해 j열이 [T(bj)]C인 행렬을 [T]C←B라 하면 [T(v)]C=[T]C←B[v]B이다.
증명.[S(Tu)]C=[S]C←B[Tu]B=[S]C←B[T]B←A[u]A. 모든 u에 대해 성립한다. ∎ 예를 들어 두 번 미분은 [D]B2이다.
기저를 바꾸면 미분의 행렬도 바뀔까요? 아래 시뮬레이터에서 기저를 x=1 근처의 테일러 기저 (1,(x−1),(x−1)2,(x−1)3)로 바꿔 보세요. 다항식의 좌표는 완전히 달라지지만, 미분 D의 행렬은 놀랍게도 그대로입니다. dxd(x−1)k=k(x−1)k−1이 dxdxk=kxk−1과 모양이 같기 때문입니다. 반면 xdxd는 단항식 기저에서 대각 행렬 diag(0,1,2,3)이지만 테일러 기저에서는 대각이 아닙니다. 어떤 기저가 "좋은가"는 변환에 따라 다릅니다.
SIMULATOR
다항식 공간의 선형 사상
사상 T
기저
[p]_B—
[T]_B—
[T p]_B—
p(x)T p(x)
해볼 것: ① d/dx에서 기저를 바꿔 보세요. [p]_B는 바뀌지만 [D]_B는 그대로입니다. ② x·d/dx로 바꾸면 단항식 기저에서는 대각 행렬이지만 테일러 기저에서는 아닙니다. 두 행렬은 닮았습니다(대각합 6, 행렬식 0). ③ a₁, a₂, a₃을 0으로 두면 d/dx의 결과가 0입니다. 상수 다항식이 미분의 핵입니다. 모델: 3차 이하 실계수 다항식, [T]_B = S⁻¹ M S (S는 기저 다항식의 단항식 계수를 열로 세운 행렬).
정의 7.5·정리 7.6 (동형 사상) 선형 사상 T:V→W가 일대일이고 위로의 함수이면 동형 사상(isomorphism)이라 하고, 그런 사상이 있으면 V와 W는 동형이라 한다. 차원이 n인 모든 벡터 공간 V는 Rn과 동형이다.
증명. 기저 B를 하나 잡고 좌표 사상 v↦[v]B를 생각한다. 좌표의 정의에서 선형이고, 정리 7.1에 의해 일대일, 모든 숫자 목록 (c1,…,cn)이 ∑cibi의 좌표이므로 위로의 함수다. ∎
이 정리 덕분에 다항식, 신호, 행렬처럼 "화살표가 아닌" 벡터도 기저만 고르면 Rn의 숫자 목록과 행렬 계산으로 다룰 수 있다. 컴퓨터가 모든 선형대수를 숫자 배열로 하는 근거다.
핵과 상: 무엇이 사라지고 무엇이 남나
측정값에서 원래 신호를 되찾을 수 있을까
3차원 물체를 카메라로 찍으면 깊이 정보가 사라집니다. 같은 광선 위의 점은 모두 같은 화소에 찍히니까요. 선형 사상에서 이렇게 "보이지 않게 되는" 입력을 모은 것이 핵이고, 실제로 나올 수 있는 출력을 모은 것이 상입니다. 둘의 크기 사이에는 정확한 저울이 있습니다.
정의 7.6 (핵과 상) 선형 사상 T:V→W에 대해
kerT={v∈V:T(v)=0},imT={T(v):v∈V}
를 각각 T의 핵(kernel, null space)과 상(image, range)이라 한다. 핵은 V의, 상은 W의 부분공간이다. 행렬 A로 말하면 핵은 영공간 N(A), 상은 열공간 C(A)다(5장).
정리 7.7 (계수–퇴화차수 정리, 차원 정리)V가 유한 차원이면
dimkerT+dimimT=dimV.
증명 아이디어.kerT의 기저 k1,…,kr을 V 전체의 기저 k1,…,kr,u1,…,us로 늘린다. T(ki)=0이므로 상은 T(u1),…,T(us)가 생성한다. 이들이 독립임을 보이면 dimimT=s이고 r+s=dimV이다. ∑cjT(uj)=0이면 ∑cjuj∈kerT이므로 ki들의 결합인데, 전체가 기저이므로 모든 cj=0이다. ∎ (6장에서 행렬의 언어로 다시 증명한다.)
따름정리.T가 일대일 ⟺kerT={0}. 이유: Tu=Tv⟺T(u−v)=0. 특히 dimV=dimW이면 일대일, 위로, 동형이 모두 같은 조건이다.
미분 D:P3→P3으로 확인해 봅시다. 핵은 상수 다항식(1차원), 상은 2차 이하 다항식(3차원), 합은 1+3=4=dimP3입니다. 미분은 상수항을 잊어버리고, 그래서 적분에는 "+C"가 붙습니다. 적분 상수는 미분의 핵을 되돌릴 수 없다는 고백입니다.
SIMULATOR
사라지는 방향, 남는 방향
입력 공간: 핵(빨강)
출력 공간: 상(보라)
행렬 A
dim ker A—
dim im A (계수)—
합 = dim ℝ²—
일대일? 위로?—
해볼 것: ① 왼쪽의 x를 끌어 보세요. 계수 1인 행렬에서는 x를 지나 핵과 평행한 점선 위의 모든 점이 오른쪽 같은 점 Ax로 갑니다. 그래서 Ax만 보고 x를 되찾을 수 없습니다. ② '가역'에서는 핵이 원점 하나, 상이 평면 전체입니다. ③ 행렬 칸을 고쳐 열 하나를 다른 열의 배수로 만들면 상이 직선으로 줄고 핵이 나타납니다. 모델: 점 묶음은 −3…3 격자점, 색은 입력 점의 방향(각도)입니다.
응용: 색 공간, 좌표계, 결정 격자
사진에서 무엇을 버려야 눈치채지 못할까
사진 한 장의 데이터를 반으로 줄여야 합니다. R, G, B 중 하나의 해상도를 줄이면 그 색 성분이 많은 경계에서 색과 밝기가 함께 번집니다. 숫자를 버리기 전에, 눈이 예민한 정보와 둔한 정보가 서로 다른 좌표에 담기도록 기저를 바꿀 수는 없을까요?
JPEG 파일 형식(JFIF)은 ITU-R BT.601 표준의 계수로 RGB를 밝기 Y와 두 색차 Cb,Cr로 바꿉니다. 8비트 값(0–255) 기준으로
Y의 계수는 초록에 가장 크다. 사람 눈의 밝기 감도가 초록 근처에서 가장 높기 때문이다. Cb,Cr의 각 행은 합이 0이라서, 회색(R=G=B)이면 색차가 정확히 128(중립)이 된다. 상수 128은 음수가 나오지 않게 옮긴 것이고, 이 때문에 엄밀히는 아핀 변환이다. 선형 부분은 3×3 행렬이다.
역변환은 R=Y+1.402(Cr−128), G=Y−0.344136(Cb−128)−0.714136(Cr−128), B=Y+1.772(Cb−128)입니다. 이 계수들이 위 3×3 행렬의 역행렬(반올림한 값)이라는 것을 확인해 볼 수 있습니다. 행렬의 행 하나하나를 "새 기저로 잰 성분을 얻는 내적"으로 읽으면, 이 변환은 색 공간의 좌표축을 밝기 축 하나와 색 축 둘로 돌려 세운 것입니다.
예제 7.4 · 주황색 하나 변환하기(R,G,B)=(200,100,50)을 YCbCr로 바꿔라.
풀이.Y=0.299⋅200+0.587⋅100+0.114⋅50=59.8+58.7+5.7=124.2. Cb=128−33.747−33.126+25=86.13. Cr=128+100−41.869−4.066=182.07. 밝기는 중간 정도, Cb<128(파랑이 적다), Cr>128(빨강이 많다). 주황이 맞다.
SIMULATOR
RGB ↔ YCbCr 변환기
원래 색
Y만 (흑백 사진)
색차만 (Y = 128 고정)
Y (밝기)—
Cb (파랑 − 밝기)—
Cr (빨강 − 밝기)—
역변환으로 되돌린 RGB—
해볼 것: ① R = G = B로 맞추면 Cb = Cr = 128입니다. 회색은 색차 축의 원점입니다. ② 순수한 초록(0, 255, 0)과 파랑(0, 0, 255)의 Y를 비교해 보세요. 같은 "최대 밝기"여도 눈에는 초록이 훨씬 밝습니다. ③ 되돌린 RGB가 원래 값과 소수점 아래까지 같습니다. 기저 변환은 정보를 잃지 않습니다. 모델: JFIF(BT.601) 전범위 공식, 표시할 때만 0–255로 자릅니다.
기저 변환 자체는 정보를 하나도 잃지 않습니다. 이득은 그다음에 옵니다. 밝기 Y는 모든 화소에서 그대로 두고, 색차 Cb,Cr만 2×2 화소 묶음마다 평균 하나로 줄이는 것이 4:2:0 색차 부표본화(chroma subsampling)입니다. 아래에서 같은 양의 숫자를 YCbCr에서 버릴 때와 RGB에서 버릴 때를 비교해 보세요.
SIMULATOR
어느 좌표에서 버릴 것인가: 색차 부표본화
버리는 좌표계
묶음 크기
화소당 표본 수—
PSNR · YCbCr에서 버림—
PSNR · RGB에서 버림—
해볼 것: ① 2×2에서 두 좌표계의 PSNR(높을수록 원본에 가깝다)을 비교해 보세요. 버린 숫자의 양은 같습니다. ② 'RGB'로 바꾸고 오차 그림을 보면 글자와 줄무늬의 경계, 즉 밝기가 바뀌는 곳에 오차가 몰립니다. YCbCr에서는 밝기가 온전해 오차가 색 경계에만 남습니다. ③ 4×4로 키워도 YCbCr 쪽 사진은 형태가 또렷합니다. 모델: 합성 시험 그림(160×100), 묶음 평균 후 최근접 복원, 오차는 5배로 확대해 표시. 실제 JPEG는 여기에 DCT와 양자화를 더합니다.
그림 7-5. 결정의 격자 기저. 격자점은 a₁, a₂의 정수 결합이고, 원자 위치는 이 기저에 대한 분수 좌표로 적는다. 데카르트 좌표로 바꾸는 것은 x = P[x]_B 한 번이다. 결정 구조 데이터 파일(CIF)도 원자 위치를 이렇게 격자 벡터에 대한 분수 좌표로 저장한다.
로봇 공학과 컴퓨터 비전에서는 기저 변환이 매 순간 일어납니다. 로봇의 각 관절, 손끝의 공구, 카메라, 작업대는 저마다 자기 좌표계(프레임)를 가지고, 한 프레임의 좌표를 다른 프레임으로 옮기는 회전 행렬과 평행이동이 2장의 동차 행렬로 이어집니다. 카메라가 본 물체 위치를 로봇 손끝 기준으로 바꾸는 일은 정리 7.2의 PC←B=PC−1PB를 동차 행렬로 쓴 것이고, 회전 부분이 직교 행렬이라 역행렬이 전치로 끝납니다. 2장의 동차 좌표 절과 함께 읽으세요.