Phép biến đổi affine là một quá trình đưa các điểm trong không gian đến các điểm mới bằng cách áp dụng một phép biến đổi tuyến tính và một phép tịnh tiến (dịch chuyển). Bạn có thể xoay, co giãn (scale), nghiêng (shear), phản xạ, rồi trượt toàn bộ, và các đường thẳng vẫn sẽ giữ nguyên tính thẳng.
Phép biến đổi affine xuất hiện ở khắp nơi vì chúng bao quát nhiều thay đổi hình học mà vẫn giữ được cấu trúc hình học của đối tượng, đồng thời có chi phí tính toán thấp.

Các ứng dụng đa dạng của phép biến đổi affine. Nguồn ảnh: Napkin AI
Ý tưởng này khởi nguồn khi các nhà toán học như Leonhard Euler và August Ferdinand Möbius cố gắng xác định những tính chất nào vẫn bất biến ngay cả khi các yếu tố khác thay đổi.
Ngày nay, nó là một phần then chốt của thế giới số, vận hành từ CSS trên trang web đến các hệ thống chẩn đoán hình ảnh y khoa phức tạp.
Phép biến đổi Affine là gì?
Phép biến đổi affine nằm giữa “đại số tuyến tính thuần túy” và “hình học đời thực”. Chúng giữ cho phần toán học gọn gàng trong khi cho phép tịnh tiến, điều mà các ánh xạ tuyến tính đơn thuần không làm được.
Hiểu về không gian affine và phép biến đổi affine
Một không gian vector có một điểm đặc biệt gọi là gốc tọa độ (dù bạn không vẽ ra, về mặt khái niệm nó vẫn tồn tại). Trong không gian vector, các vector có thể được cộng và nhân vô hướng, và có một “vector không” đặc trưng.
Một không gian affine trông giống không gian vector nhưng không chọn gốc. Bạn vẫn có thể nói về:
- các điểm (vị trí)
- các vector dịch chuyển giữa các điểm (ví dụ, “đi từ P đến Q”)
- cộng một vector vào một điểm (di chuyển điểm theo dịch chuyển đó)
Nhưng bạn không thể cộng hai điểm một cách có ý nghĩa, vì phép cộng điểm phụ thuộc vào việc chọn gốc.
Về hình thức, một không gian affine A trên không gian vector V là một tập các điểm với tác động tự do và bắc cầu của V. Thực tế: hiệu của các điểm nằm trong V, nhưng từng điểm riêng lẻ thì không.
Một phép biến đổi affine là ánh xạ giữa các không gian affine, bảo toàn các tổ hợp affine (sẽ nói thêm sau) và về hình học, bảo toàn các đường thẳng và tính song song.
Công thức phép biến đổi affine: Định nghĩa bằng không gian vector
Trong hệ tọa độ, một phép biến đổi affine có dạng:

Phép biến đổi affine ở dạng ma trận.
Trong đó:
- x ∈ Rn là điểm đầu vào (dưới dạng vector cột)
- A ∈ Rn×n là ma trận biểu diễn phần tuyến tính (xoay, co giãn, nghiêng, phản xạ, và kết hợp của chúng)
- b ∈ Rn là vector biểu diễn tịnh tiến
Cấu trúc “tuyến tính + hằng số” này là lý do các ánh xạ affine được ưa chuộng trong kỹ thuật và tính toán: biểu đạt tốt, nhưng vẫn nhanh và ổn định khi áp dụng.
Các Tính chất Chính của Phép biến đổi Affine
Phép biến đổi affine bảo toàn một số quan hệ hình học “mang tính cấu trúc”, đồng thời cho phép hình dạng bị giãn hoặc nghiêng.
Những tính chất nào được bảo toàn trong phép biến đổi affine?

Các tính chất được bảo toàn trong phép biến đổi affine. Nguồn ảnh: Napkin AI
Được bảo toàn:
- Tính thẳng hàng: nếu các điểm cùng nằm trên một đường thẳng trước đó, sau biến đổi chúng vẫn nằm trên một đường thẳng.
- Tính song song: các đường thẳng song song vẫn song song (rất quan trọng trong đồ họa và bản đồ).
- Tính lồi: một hình lồi vẫn giữ tính lồi.
- Tỷ lệ dọc theo một đường thẳng: nếu một điểm chia đoạn thẳng theo một tỷ lệ, tỷ lệ đó được bảo toàn.
Một cách diễn đạt gọn là thông qua tổ hợp affine:

Các ánh xạ affine bảo toàn những tổ hợp này.
Không được bảo toàn (nói chung):
- Khoảng cách
- Góc
- Diện tích/thể tích (trừ khi thỏa điều kiện đặc biệt)
Cuối cùng, các phép biến đổi affine khép kín dưới phép hợp thành: thực hiện một phép affine sau một phép affine khác, kết quả vẫn là một phép affine.
Cấu trúc nhóm của phép biến đổi affine
Các phép biến đổi affine tạo thành một nhóm dưới phép hợp thành (thường gọi là nhóm affine, ký hiệu Aff(n)).
Phép hợp thành hoạt động gọn gàng nếu

và

khi đó

Vẫn là affine.
Lưu ý về khả nghịch: Ax+b khả nghịch nếu A khả nghịch (det(A)≠0). Khi đó:

Vì vậy bạn có một đại số mạnh mẽ: xây dựng biến đổi phức tạp bằng cách xâu chuỗi các biến đổi đơn giản, và đảo ngược khi cần.
Ma trận Phép biến đổi Affine
Để tính toán hiệu quả các phép biến đổi affine, ta sử dụng ma trận—đặc biệt là tọa độ thuần nhất (homogeneous), giúp biểu diễn tịnh tiến theo cách tương thích với ma trận.
Dạng tổng quát của ma trận phép biến đổi affine
Trong không gian n chiều, phép biến đổi như sau:

trong đó
Điều kiện khả nghịch là ma trận (A) phải khả nghịch. Nói đơn giản, nếu (A) nén tất cả điểm lên một đường thẳng (hạng giảm), thì không thể đảo ngược duy nhất.
Tọa độ thuần nhất và biểu diễn ma trận bổ sung
Tịnh tiến không thể biểu diễn bằng ma trận (n x n) tác động lên riêng (x). Tọa độ thuần nhất giải quyết vấn đề này bằng cách thêm một tọa độ phụ.
Biểu diễn một điểm 2D ((x, y)) thành ((x, y, 1)).
Khi đó phép biến đổi affine 2D trở thành một ma trận 3×3:

Phép biến đổi affine 2D dùng tọa độ thuần nhất (ma trận 3×3). Nguồn: Tác giả
Lợi ích:
- Hợp thành trở nên đơn giản thành phép nhân (chỉ cần nhân ma trận).
- Chuỗi xử lý tối ưu (các thư viện đồ họa và thị giác máy ủng hộ điều này)
- Quản lý nhất quán tịnh tiến, xoay, co giãn và nghiêng
Các Loại Phép biến đổi Affine
Hầu hết các phép biến đổi affine dùng trong thực tế chỉ gồm vài bước.
Tịnh tiến trong phép biến đổi affine
Tịnh tiến di chuyển mọi điểm cùng một dịch chuyển: T(x)=x+b
Dạng thuần nhất 2D được biểu diễn bởi:

Tịnh tiến dưới dạng ma trận biến đổi thuần nhất (2D). Nguồn: Tác giả
Dạng này được dùng trong đồ họa (để di chuyển đối tượng), robot (đổi hệ quy chiếu), và thị giác máy (căn chỉnh ảnh).
Phép co giãn: Đồng nhất và không đồng nhất
Co giãn đồng nhất: Trong 2D, co giãn đồng nhất dùng cùng một hệ số (s) theo mọi hướng:

Ma trận co giãn đồng nhất 2D. Nguồn: Tác giả
Co giãn không đồng nhất:

Ma trận co giãn không đồng nhất 2D. Nguồn: Tác giả
Trong 3D, co giãn tương ứng là ma trận chéo 3×3. Khi co giãn, các đường thẳng và tính song song được bảo toàn, nhưng khoảng cách thay đổi (trừ khi s=1).
Phép quay trong 2D và 3D
Quay 2D một góc (theta):

Phép quay 2D theo góc. Nguồn: Tác giả
Khi quay trong 3D, bạn quay quanh một trục (x, y hoặc z) với các ma trận tương ứng. Khi thêm tịnh tiến vào phép quay, kết quả vẫn là affine (và trở thành “chuyển động cứng” nếu chỉ có quay và tịnh tiến).
Giải thích phép nghiêng (shear)
Shear làm “xiên” hình. Nghiêng theo trục x trong 2D là:

Biểu diễn nghiêng theo trục x trong 2D. Nguồn: Tác giả
Nghiêng theo trục y:

Biểu diễn nghiêng theo trục y trong 2D. Nguồn: Tác giả
Shear thường dùng trong kiểu chữ (typography), biến dạng thị giác và các hiệu ứng giống phối cảnh (dù phối cảnh thực chất là biến đổi xạ ảnh, không phải affine).
Phép phản xạ trong hình học affine
Khi phản xạ qua các trục hay mặt phẳng đi qua gốc tọa độ, đó là phản xạ tuyến tính (và do đó là affine).
Phản xạ 2D qua trục x:

Phản xạ 2D qua trục x. Nguồn: Tác giả
Qua trục y:

Phản xạ 2D qua trục y. Nguồn: Tác giả
Phản xạ làm thay đổi hướng (orientation) và hữu ích để phân tích đối xứng, nhận dạng mẫu và xử lý hình học.
Cách Hợp thành và Nghịch đảo Phép biến đổi Affine
Trong các hệ thống thực tế, bạn hiếm khi chỉ dùng một phép biến đổi; bạn thường liên kết nhiều phép lại với nhau.
Hợp thành nhiều phép biến đổi affine
Giả sử:

và

Khi đó:

Thứ tự quan trọng. Xoay trước rồi tịnh tiến không giống tịnh tiến trước rồi xoay. Điều này là vì tịnh tiến sẽ bị “bắt” bởi ma trận tiếp theo.
Một cách hữu ích để ghi nhớ:
- Nếu bạn dùng ma trận thuần nhất, hợp thành là nhân ma trận
- Phép biến đổi áp dụng sau cùng đứng bên trái trong phép nhân.
Nghịch đảo phép biến đổi affine: Tính toán và ứng dụng
Với

nếu (A) khả nghịch:

Trong thị giác máy, điều này thường được dùng: bạn thường chuyển các điểm ảnh đầu ra ngược về điểm ảnh đầu vào (ánh xạ nghịch) để lấp đầy khoảng trống.
Biến đổi Tuyến tính so với Affine
Phép biến đổi affine là “phép biến đổi tuyến tính kèm một dịch chuyển tích hợp”.
Khác biệt chính giữa biến đổi tuyến tính và affine
Một phép biến đổi tuyến tính - L(x)=Ax - phải thỏa mãn:
- L(0)=0 (gốc ở lại gốc)
- L(x+y)=L(x)+L(y)
- L(cx)=cL(x)
Một phép biến đổi affine T(x)=Ax+b:
- không cần ánh xạ 0 về 0
- giữ đường thẳng và bảo toàn tính song song
- hoạt động tuyến tính khi bạn tách phần tịnh tiến
Mọi ánh xạ tuyến tính đều là affine (đặt b=0), nhưng không phải mọi ánh xạ affine là tuyến tính (bất kỳ tịnh tiến khác 0 sẽ phá vỡ tính tuyến tính).
Phép biến đổi affine như tuyến tính cộng tịnh tiến
Bạn có thể viết lại:

thành “thực hiện phần tuyến tính (Ax), rồi cộng tịnh tiến (b).”
Bạn đã quen với phiên bản 1D nếu từng thấy (y=mx+c). Đây cũng là lý do phép affine thường dùng trong mạng nơ-ron: một lớp dày đặc tính (Wx+b), chính là ánh xạ affine. Sau đó, phi tuyến được bổ sung.
Đồ họa máy tính và thị giác máy sử dụng các phép biến đổi affine.
Phép biến đổi Affine trong Đồ họa Máy tính và Thị giác Máy tính
Đây là nơi các phép biến đổi affine bớt trừu tượng và bắt đầu thể hiện giá trị thực tiễn.
Biến đổi và biến dạng ảnh bằng phép biến đổi affine
Trong xử lý ảnh, các phép affine dùng cho:
- xoay và thay đổi kích thước
- tịnh tiến (di chuyển ảnh)
- sửa nghiêng (shear)
- căn chỉnh/đăng ký (khớp ảnh)
Hai ý tưởng triển khai quan trọng:
- Ánh xạ thuận: lấy từng điểm ảnh đầu vào và đẩy tiến. Cách này có thể tạo khoảng trống/lỗ.
- Ánh xạ nghịch: với mỗi điểm ảnh đầu ra, ánh xạ ngược để tìm vị trí gốc; thường là lựa chọn tốt hơn.
Nội suy rất quan trọng vì tọa độ đã ánh xạ thường không rơi đúng vào điểm ảnh. Một số cách phổ biến:
- Láng giềng gần nhất: nhanh nhất, dễ bị “khối”
- Bilinear: mượt hơn, thường là mặc định
- Bicubic: mượt hơn nhưng tốn tài nguyên hơn
Phép biến đổi affine trong đồ họa 3D và kết xuất
Phép biến đổi affine có mặt ở mọi nơi trong đồ họa 3D:
- biến đổi mô hình (hệ cục bộ đối tượng → thế giới)
- biến đổi nhìn (thế giới → camera)
- chuẩn bị chiếu (phần affine diễn ra trước bước xạ ảnh)
Một điểm tinh tế nhưng quan trọng: khi co giãn không đồng nhất, các pháp tuyến bề mặt không luôn biến đổi giống các điểm. Để đảm bảo chiếu sáng chính xác, pipeline kết xuất thường dùng ma trận nghịch đảo-chuyển vị của phần tuyến tính cho pháp tuyến.
Phép biến đổi affine trong robot
Robot học về bản chất là tràn ngập các hệ tọa độ.
Phép biến đổi affine ánh xạ:
- khung đế robot ↔ khung tay máy ↔ khung cơ cấu chấp hành cuối
- khung camera ↔ khung thế giới
- lidar ↔ tọa độ phương tiện
Trong định vị dựa trên thị giác (ví dụ, đo đạc chuyển động bằng thị giác), các chuyển động nhỏ giữa các khung hình thường có thể xấp xỉ cục bộ là affine trong không gian ảnh, giúp theo dõi và ước lượng chuyển động.
Ánh xạ không gian tọa độ và chuẩn hóa dữ liệu
Trong học máy, việc co giãn đặc trưng thường là affine:
- Chuẩn hóa min-max: (x' = alpha x + beta)
- Chuẩn hóa Z: (x' = (x-μ)/σ) (cũng là affine)
Điều này quan trọng vì nhiều mô hình (đặc biệt dựa trên gradient) hoạt động tốt hơn khi các đặc trưng có cùng thang đo.
Khái niệm và Lý thuyết Nâng cao về Phép biến đổi Affine
Phép biến đổi affine ban đầu có vẻ đơn giản, nhưng lý thuyết rất sâu, đặc biệt khi bạn quan tâm đến các bất biến như diện tích hoặc các hệ tọa độ thay thế.

Các khái niệm nâng cao về phép biến đổi affine. Nguồn ảnh: Napkin AI
Hình học affine và tọa độ barycentric
Tọa độ barycentric biểu diễn một điểm như là tổ hợp có trọng số của các đỉnh tam giác:

Những tọa độ này là bất biến affine, nghĩa là nếu bạn biến đổi tam giác và điểm theo cách affine, λi vẫn giữ nguyên.
Do đó tọa độ barycentric được dùng rộng rãi trong: ánh xạ kết cấu (texture mapping), nội suy lưới, và phương pháp phần tử hữu hạn.
Phép biến đổi affine bảo toàn đo lường và đẳng diện tích
Một phép affine bảo toàn diện tích (2D) hoặc thể tích (3D) khi:

Định thức của A cho biết bạn thay đổi diện tích hoặc thể tích bao nhiêu khi áp dụng phần tuyến tính.
Nếu (|det(A)| > 1), không gian nở ra; nếu nhỏ hơn 1, nó co lại. Nếu âm, hướng (orientation) thay đổi (như phản xạ). Đây là những điều tối quan trọng cho đồ họa, mô phỏng vật lý và mô hình hóa biến dạng.
Biến đổi đồng dạng và đẳng cự trong hình học affine
Quan hệ:
- Affine: (Ax+b) (trường hợp tổng quát)
- Đồng dạng (similarity): co giãn + xoay + tịnh tiến (giữ góc, tính đến hệ số co giãn)
- Đẳng cự (isometry, cứng): xoay + tịnh tiến (giữ khoảng cách và góc)
Vì vậy:đẳng cự ⊂ đồng dạng ⊂ biến đổi affine
Thứ bậc này giúp bạn chọn mô hình phù hợp cho bài toán. Ví dụ, nếu cần giữ khoảng cách, affine là quá rộng.
Biến đổi xạ ảnh và mở rộng affine lên không gian chiều cao hơn
Phép biến đổi affine là một loại của biến đổi xạ ảnh. Biến đổi xạ ảnh có thể mô hình hóa phối cảnh, như cách các đường thẳng song song gặp nhau tại điểm tụ. Phép affine không làm được điều này.
Trong tọa độ thuần nhất, các biến đổi xạ ảnh cho phép hàng cuối tự do hơn so với ([0,0,1]). Mức tự do tăng này tạo nên hiệu ứng phối cảnh.
Các khái niệm affine cũng hoạt động ở không gian chiều cao hơn, như biến đổi thuần nhất 4D trong đồ họa 3D.
Triển khai Phép biến đổi Affine
Phép biến đổi affine là “toán dễ”, nhưng cách sử dụng có thể quyết định chất lượng kết quả.
Ổn định số và độ chính xác trong phép biến đổi affine
Vấn đề thường gặp:
- Ma trận gần suy biến: nếu (det(A)) gần 0, phép nghịch đảo trở nên không ổn định
- Tích lũy lỗi số dấu phẩy động: hợp thành lặp lại có thể trôi sai
- Cực trị co giãn: kích thước quá lớn hoặc quá nhỏ làm giảm độ chính xác.
Thực hành tốt:
- Dùng số điều kiện (hoặc ít nhất |det(A)|) như cảnh báo sớm.
- Khi nghịch đảo, chọn các thư viện ổn định như NumPy và Eigen.
- Khi phải hợp thành dài (đồ họa hay robot), thường xuyên trực chuẩn hóa lại ma trận quay.
Triển khai trên GPU và xử lý song song các phép biến đổi affine
Phép affine rất phù hợp song song hóa: mỗi điểm hay điểm ảnh biến đổi độc lập. Điều này khiến chúng lý tưởng cho SIMD và các kernel GPU.
Đó là lý do biến dạng ảnh và pipeline kết xuất hoạt động hiệu quả trên GPU: có thể thực hiện hàng loạt phép nhân và cộng cùng lúc.
Một số tối ưu phổ biến: dùng phép cộng-nhân hợp nhất (FMA), gom lô các biến đổi, và giảm số lần truyền dữ liệu bộ nhớ.
Ứng dụng và Mở rộng Chuyên biệt của Phép biến đổi Affine
Phép biến đổi affine “đủ cứng” cho nhiều nhiệm vụ, đồng thời có thể làm nền cho các mô hình linh hoạt hơn.
Phép biến đổi Affine dựa trên B-Spline cho đăng ký không cứng
Trong hình thái học và ảnh y khoa, căn chỉnh affine thuần túy chỉ là bước đầu. Sau khi căn thô, các mô hình biến dạng dựa trên B-spline cho phép tạo ra biến dạng mượt, không cứng trong khi vẫn kiểm soát được các điểm điều khiển.
Hãy hình dung: affine làm thẳng tổng thể, còn B-spline xử lý những chỗ uốn cong nhỏ.
Bất biến affine trong nhận dạng mẫu và thị giác máy tính
Nhiều hệ thống nhận dạng cố gắng đạt tính bất biến affine để đối tượng vẫn được nhận ra khi góc nhìn thay đổi theo cách gần giống phép affine.
Kỹ thuật bao gồm:
- dùng đặc trưng bất biến affine (hoặc chuẩn hóa các mảng ảnh con)
- xác định các khung affine cục bộ cho điểm đặc trưng
- thiết kế bộ mô tả bền vững với nghiêng và tỉ lệ
Điều này giúp các nhiệm vụ như ghép cặp, theo dõi và truy hồi đáng tin cậy hơn.
Phép biến đổi affine trong GIS và hệ tọa độ trắc địa
Trong GIS, phép affine xuất hiện trong gán tham chiếu địa lý cho bản đồ, căn chỉnh các lớp từ nguồn khác nhau, hoặc xấp xỉ cục bộ các phép chuyển đổi tọa độ.
Các phép biến đổi trắc địa thực tế có thể phức tạp hơn, tuy nhiên các mô hình affine thường được dùng như xấp xỉ cục bộ hoặc là một phần của pipeline rộng hơn.
Thư viện Phần mềm cho Phép biến đổi Affine
Bạn không cần bắt đầu từ con số 0; hầu hết hệ sinh thái đều có hỗ trợ tốt.
Triển khai phép biến đổi affine bằng Python, C++ và Java
- Python: NumPy cho đại số ma trận; OpenCV cho biến dạng ảnh; SciPy cho công cụ số.
- C++: Eigen (đại số tuyến tính), OpenCV (thị giác), GLM (toán đồ họa)
- Java: Apache Commons Math và các bộ công cụ thị giác tùy nền tảng
Ý tưởng cốt lõi xuyên suốt các ngôn ngữ:
- Biểu diễn điểm dưới dạng vector
- Áp dụng (Ax+b) (hoặc nhân ma trận thuần nhất)
- Dùng nhân ma trận để hợp thành biến đổi.
- Đảo khi cần bằng (A-1)
Công cụ và thư viện tốt nhất cho phép biến đổi affine

Công cụ và thư viện tốt nhất cho phép biến đổi affine. Nguồn ảnh: Napkin AI
Công cụ dùng rộng rãi:
- OpenCV: warpAffine, getAffineTransform, estimateAffine2D (quy trình thị giác máy)
- NumPy: các phép toán ma trận nói chung
- Eigen: thư viện đại số tuyến tính C++ hiệu năng cao
- GLM / DirectXMath: thư viện toán tập trung cho đồ họa
- GDAL / PROJ (GIS): biến đổi tọa độ và pipeline địa không gian
Bạn nên chọn theo lĩnh vực: OpenCV cho ảnh, GLM cho đồ họa, GDAL/PROJ cho GIS.
Góc nhìn Khác về Phép biến đổi Affine
Nghe một ý tưởng được giải thích theo cách khác đôi khi giúp mọi thứ rõ ràng hơn.
Định nghĩa thay thế: Ánh xạ affine và hàm affine
Một ánh xạ affine có thể được định nghĩa là một hàm bảo toàn tính chuẩn mực của các tổ hợp affine:
Cách diễn đạt này không gắn với một gốc duy nhất, rất “tinh thần hình học affine”. Nó cũng làm rõ ngay rằng đường thẳng được ánh xạ thành đường thẳng.
Phép biến đổi affine và công thức (y = mx + b)
Nếu phép biến đổi affine có vẻ trừu tượng, hãy liên hệ với điều bạn đã biết: (y=mx) là tuyến tính (đi qua gốc), còn (y=mx+b) là affine (cùng hiệu ứng độ dốc và có dịch chuyển).
Ở không gian cao hơn, (m) trở thành ma trận (A), nhưng câu chuyện vẫn vậy: nó tác động tuyến tính và di chuyển xung quanh.
Kết luận
Tóm gọn lại, phép biến đổi affine là: “Tôi sẽ giữ thế giới của bạn gồm các đường thẳng và các cạnh song song, nhưng tôi không thể hứa các góc của bạn vẫn như cũ.”
Nếu bạn đang suy nghĩ theo hướng ma trận và hệ tuyến tính, hãy xem Đại số tuyến tính cho Khoa học Dữ liệu bằng R và các hướng dẫn tập trung vào ma trận, bao gồm Giải thích Dạng Bậc Thang Dòng.
Nếu bạn muốn bắt đầu với thị giác máy tính, các dự án như Phân loại Hình ảnh Món ăn với Hugging Face và các khóa học như Làm việc với Hugging Face là bước tiếp theo phù hợp.
Phép biến đổi affine là một quá trình đưa các điểm trong không gian đến các điểm mới bằng cách áp dụng một phép biến đổi tuyến tính và một phép tịnh tiến (dịch chuyển). Bạn có thể xoay, co giãn (scale), nghiêng (shear), phản xạ, rồi trượt toàn bộ, và các đường thẳng vẫn sẽ giữ nguyên tính thẳng.
Phép biến đổi affine xuất hiện ở khắp nơi vì chúng bao quát nhiều thay đổi hình học mà vẫn giữ được cấu trúc hình học của đối tượng, đồng thời có chi phí tính toán thấp.
Các ứng dụng đa dạng của phép biến đổi affine. Nguồn ảnh: Napkin AI
Ý tưởng này khởi nguồn khi các nhà toán học như Leonhard Euler và August Ferdinand Möbius cố gắng xác định những tính chất nào vẫn bất biến ngay cả khi các yếu tố khác thay đổi.
Ngày nay, nó là một phần then chốt của thế giới số, vận hành từ CSS trên trang web đến các hệ thống chẩn đoán hình ảnh y khoa phức tạp.
Phép biến đổi Affine là gì?
Phép biến đổi affine nằm giữa “đại số tuyến tính thuần túy” và “hình học đời thực”. Chúng giữ cho phần toán học gọn gàng trong khi cho phép tịnh tiến, điều mà các ánh xạ tuyến tính đơn thuần không làm được.
Hiểu về không gian affine và phép biến đổi affine
Một không gian vector có một điểm đặc biệt gọi là gốc tọa độ (dù bạn không vẽ ra, về mặt khái niệm nó vẫn tồn tại). Trong không gian vector, các vector có thể được cộng và nhân vô hướng, và có một “vector không” đặc trưng.
Một không gian affine trông giống không gian vector nhưng không chọn gốc. Bạn vẫn có thể nói về:
Nhưng bạn không thể cộng hai điểm một cách có ý nghĩa, vì phép cộng điểm phụ thuộc vào việc chọn gốc.
Về hình thức, một không gian affine
Atrên không gian vectorVlà một tập các điểm với tác động tự do và bắc cầu củaV. Thực tế: hiệu của các điểm nằm trongV, nhưng từng điểm riêng lẻ thì không.Một phép biến đổi affine là ánh xạ giữa các không gian affine, bảo toàn các tổ hợp affine (sẽ nói thêm sau) và về hình học, bảo toàn các đường thẳng và tính song song.
Công thức phép biến đổi affine: Định nghĩa bằng không gian vector
Trong hệ tọa độ, một phép biến đổi affine có dạng:
Phép biến đổi affine ở dạng ma trận.
Trong đó:
Cấu trúc “tuyến tính + hằng số” này là lý do các ánh xạ affine được ưa chuộng trong kỹ thuật và tính toán: biểu đạt tốt, nhưng vẫn nhanh và ổn định khi áp dụng.
Các Tính chất Chính của Phép biến đổi Affine
Phép biến đổi affine bảo toàn một số quan hệ hình học “mang tính cấu trúc”, đồng thời cho phép hình dạng bị giãn hoặc nghiêng.
Những tính chất nào được bảo toàn trong phép biến đổi affine?
Các tính chất được bảo toàn trong phép biến đổi affine. Nguồn ảnh: Napkin AI
Được bảo toàn:
Một cách diễn đạt gọn là thông qua tổ hợp affine:
Các ánh xạ affine bảo toàn những tổ hợp này.
Không được bảo toàn (nói chung):
Cuối cùng, các phép biến đổi affine khép kín dưới phép hợp thành: thực hiện một phép affine sau một phép affine khác, kết quả vẫn là một phép affine.
Cấu trúc nhóm của phép biến đổi affine
Các phép biến đổi affine tạo thành một nhóm dưới phép hợp thành (thường gọi là nhóm affine, ký hiệu Aff(n)).
Phép hợp thành hoạt động gọn gàng nếu
và
khi đó
Vẫn là affine.
Lưu ý về khả nghịch: Ax+b khả nghịch nếu A khả nghịch (det(A)≠0). Khi đó:
Vì vậy bạn có một đại số mạnh mẽ: xây dựng biến đổi phức tạp bằng cách xâu chuỗi các biến đổi đơn giản, và đảo ngược khi cần.
Ma trận Phép biến đổi Affine
Để tính toán hiệu quả các phép biến đổi affine, ta sử dụng ma trận—đặc biệt là tọa độ thuần nhất (homogeneous), giúp biểu diễn tịnh tiến theo cách tương thích với ma trận.
Dạng tổng quát của ma trận phép biến đổi affine
Trong không gian n chiều, phép biến đổi như sau:
trong đó
Achi phối sự thay đổi hình dạng (thành phần tuyến tính).bđiều khiển độ dịch chuyển (tịnh tiến)Điều kiện khả nghịch là ma trận (A) phải khả nghịch. Nói đơn giản, nếu (A) nén tất cả điểm lên một đường thẳng (hạng giảm), thì không thể đảo ngược duy nhất.
Tọa độ thuần nhất và biểu diễn ma trận bổ sung
Tịnh tiến không thể biểu diễn bằng ma trận (n x n) tác động lên riêng (x). Tọa độ thuần nhất giải quyết vấn đề này bằng cách thêm một tọa độ phụ.
Biểu diễn một điểm 2D ((x, y)) thành ((x, y, 1)).
Khi đó phép biến đổi affine 2D trở thành một ma trận 3×3:
Phép biến đổi affine 2D dùng tọa độ thuần nhất (ma trận 3×3). Nguồn: Tác giả
Lợi ích:
Các Loại Phép biến đổi Affine
Hầu hết các phép biến đổi affine dùng trong thực tế chỉ gồm vài bước.
Tịnh tiến trong phép biến đổi affine
Tịnh tiến di chuyển mọi điểm cùng một dịch chuyển: T(x)=x+b
Dạng thuần nhất 2D được biểu diễn bởi:
Tịnh tiến dưới dạng ma trận biến đổi thuần nhất (2D). Nguồn: Tác giả
Dạng này được dùng trong đồ họa (để di chuyển đối tượng), robot (đổi hệ quy chiếu), và thị giác máy (căn chỉnh ảnh).
Phép co giãn: Đồng nhất và không đồng nhất
Co giãn đồng nhất: Trong 2D, co giãn đồng nhất dùng cùng một hệ số (s) theo mọi hướng:
Ma trận co giãn đồng nhất 2D. Nguồn: Tác giả
Co giãn không đồng nhất:
Ma trận co giãn không đồng nhất 2D. Nguồn: Tác giả
Trong 3D, co giãn tương ứng là ma trận chéo 3×3. Khi co giãn, các đường thẳng và tính song song được bảo toàn, nhưng khoảng cách thay đổi (trừ khi s=1).
Phép quay trong 2D và 3D
Quay 2D một góc (theta):
Phép quay 2D theo góc. Nguồn: Tác giả
Khi quay trong 3D, bạn quay quanh một trục (x, y hoặc z) với các ma trận tương ứng. Khi thêm tịnh tiến vào phép quay, kết quả vẫn là affine (và trở thành “chuyển động cứng” nếu chỉ có quay và tịnh tiến).
Giải thích phép nghiêng (shear)
Shear làm “xiên” hình. Nghiêng theo trục x trong 2D là:
Biểu diễn nghiêng theo trục x trong 2D. Nguồn: Tác giả
Nghiêng theo trục y:
Biểu diễn nghiêng theo trục y trong 2D. Nguồn: Tác giả
Shear thường dùng trong kiểu chữ (typography), biến dạng thị giác và các hiệu ứng giống phối cảnh (dù phối cảnh thực chất là biến đổi xạ ảnh, không phải affine).
Phép phản xạ trong hình học affine
Khi phản xạ qua các trục hay mặt phẳng đi qua gốc tọa độ, đó là phản xạ tuyến tính (và do đó là affine).
Phản xạ 2D qua trục x:
Phản xạ 2D qua trục x. Nguồn: Tác giả
Qua trục y:
Phản xạ 2D qua trục y. Nguồn: Tác giả
Phản xạ làm thay đổi hướng (orientation) và hữu ích để phân tích đối xứng, nhận dạng mẫu và xử lý hình học.
Cách Hợp thành và Nghịch đảo Phép biến đổi Affine
Trong các hệ thống thực tế, bạn hiếm khi chỉ dùng một phép biến đổi; bạn thường liên kết nhiều phép lại với nhau.
Hợp thành nhiều phép biến đổi affine
Giả sử:
và
Khi đó:
Thứ tự quan trọng. Xoay trước rồi tịnh tiến không giống tịnh tiến trước rồi xoay. Điều này là vì tịnh tiến sẽ bị “bắt” bởi ma trận tiếp theo.
Một cách hữu ích để ghi nhớ:
Nghịch đảo phép biến đổi affine: Tính toán và ứng dụng
Với
nếu (A) khả nghịch:
Trong thị giác máy, điều này thường được dùng: bạn thường chuyển các điểm ảnh đầu ra ngược về điểm ảnh đầu vào (ánh xạ nghịch) để lấp đầy khoảng trống.
Biến đổi Tuyến tính so với Affine
Phép biến đổi affine là “phép biến đổi tuyến tính kèm một dịch chuyển tích hợp”.
Khác biệt chính giữa biến đổi tuyến tính và affine
Một phép biến đổi tuyến tính - L(x)=Ax - phải thỏa mãn:
Một phép biến đổi affine T(x)=Ax+b:
Mọi ánh xạ tuyến tính đều là affine (đặt b=0), nhưng không phải mọi ánh xạ affine là tuyến tính (bất kỳ tịnh tiến khác 0 sẽ phá vỡ tính tuyến tính).
Phép biến đổi affine như tuyến tính cộng tịnh tiến
Bạn có thể viết lại:
thành “thực hiện phần tuyến tính (Ax), rồi cộng tịnh tiến (b).”
Bạn đã quen với phiên bản 1D nếu từng thấy (y=mx+c). Đây cũng là lý do phép affine thường dùng trong mạng nơ-ron: một lớp dày đặc tính (Wx+b), chính là ánh xạ affine. Sau đó, phi tuyến được bổ sung.
Đồ họa máy tính và thị giác máy sử dụng các phép biến đổi affine.
Phép biến đổi Affine trong Đồ họa Máy tính và Thị giác Máy tính
Đây là nơi các phép biến đổi affine bớt trừu tượng và bắt đầu thể hiện giá trị thực tiễn.
Biến đổi và biến dạng ảnh bằng phép biến đổi affine
Trong xử lý ảnh, các phép affine dùng cho:
Hai ý tưởng triển khai quan trọng:
Nội suy rất quan trọng vì tọa độ đã ánh xạ thường không rơi đúng vào điểm ảnh. Một số cách phổ biến:
Phép biến đổi affine trong đồ họa 3D và kết xuất
Phép biến đổi affine có mặt ở mọi nơi trong đồ họa 3D:
Một điểm tinh tế nhưng quan trọng: khi co giãn không đồng nhất, các pháp tuyến bề mặt không luôn biến đổi giống các điểm. Để đảm bảo chiếu sáng chính xác, pipeline kết xuất thường dùng ma trận nghịch đảo-chuyển vị của phần tuyến tính cho pháp tuyến.
Phép biến đổi affine trong robot
Robot học về bản chất là tràn ngập các hệ tọa độ.
Phép biến đổi affine ánh xạ:
Trong định vị dựa trên thị giác (ví dụ, đo đạc chuyển động bằng thị giác), các chuyển động nhỏ giữa các khung hình thường có thể xấp xỉ cục bộ là affine trong không gian ảnh, giúp theo dõi và ước lượng chuyển động.
Ánh xạ không gian tọa độ và chuẩn hóa dữ liệu
Trong học máy, việc co giãn đặc trưng thường là affine:
Điều này quan trọng vì nhiều mô hình (đặc biệt dựa trên gradient) hoạt động tốt hơn khi các đặc trưng có cùng thang đo.
Khái niệm và Lý thuyết Nâng cao về Phép biến đổi Affine
Phép biến đổi affine ban đầu có vẻ đơn giản, nhưng lý thuyết rất sâu, đặc biệt khi bạn quan tâm đến các bất biến như diện tích hoặc các hệ tọa độ thay thế.
Các khái niệm nâng cao về phép biến đổi affine. Nguồn ảnh: Napkin AI
Hình học affine và tọa độ barycentric
Tọa độ barycentric biểu diễn một điểm như là tổ hợp có trọng số của các đỉnh tam giác:
Những tọa độ này là bất biến affine, nghĩa là nếu bạn biến đổi tam giác và điểm theo cách affine, λi vẫn giữ nguyên.
Do đó tọa độ barycentric được dùng rộng rãi trong: ánh xạ kết cấu (texture mapping), nội suy lưới, và phương pháp phần tử hữu hạn.
Phép biến đổi affine bảo toàn đo lường và đẳng diện tích
Một phép affine bảo toàn diện tích (2D) hoặc thể tích (3D) khi:
Định thức của A cho biết bạn thay đổi diện tích hoặc thể tích bao nhiêu khi áp dụng phần tuyến tính.
Nếu (|det(A)| > 1), không gian nở ra; nếu nhỏ hơn 1, nó co lại. Nếu âm, hướng (orientation) thay đổi (như phản xạ). Đây là những điều tối quan trọng cho đồ họa, mô phỏng vật lý và mô hình hóa biến dạng.
Biến đổi đồng dạng và đẳng cự trong hình học affine
Quan hệ:
Vì vậy:đẳng cự ⊂ đồng dạng ⊂ biến đổi affine
Thứ bậc này giúp bạn chọn mô hình phù hợp cho bài toán. Ví dụ, nếu cần giữ khoảng cách, affine là quá rộng.
Biến đổi xạ ảnh và mở rộng affine lên không gian chiều cao hơn
Phép biến đổi affine là một loại của biến đổi xạ ảnh. Biến đổi xạ ảnh có thể mô hình hóa phối cảnh, như cách các đường thẳng song song gặp nhau tại điểm tụ. Phép affine không làm được điều này.
Trong tọa độ thuần nhất, các biến đổi xạ ảnh cho phép hàng cuối tự do hơn so với ([0,0,1]). Mức tự do tăng này tạo nên hiệu ứng phối cảnh.
Các khái niệm affine cũng hoạt động ở không gian chiều cao hơn, như biến đổi thuần nhất 4D trong đồ họa 3D.
Triển khai Phép biến đổi Affine
Phép biến đổi affine là “toán dễ”, nhưng cách sử dụng có thể quyết định chất lượng kết quả.
Ổn định số và độ chính xác trong phép biến đổi affine
Vấn đề thường gặp:
Thực hành tốt:
Triển khai trên GPU và xử lý song song các phép biến đổi affine
Phép affine rất phù hợp song song hóa: mỗi điểm hay điểm ảnh biến đổi độc lập. Điều này khiến chúng lý tưởng cho SIMD và các kernel GPU.
Đó là lý do biến dạng ảnh và pipeline kết xuất hoạt động hiệu quả trên GPU: có thể thực hiện hàng loạt phép nhân và cộng cùng lúc.
Một số tối ưu phổ biến: dùng phép cộng-nhân hợp nhất (FMA), gom lô các biến đổi, và giảm số lần truyền dữ liệu bộ nhớ.
Ứng dụng và Mở rộng Chuyên biệt của Phép biến đổi Affine
Phép biến đổi affine “đủ cứng” cho nhiều nhiệm vụ, đồng thời có thể làm nền cho các mô hình linh hoạt hơn.
Phép biến đổi Affine dựa trên B-Spline cho đăng ký không cứng
Trong hình thái học và ảnh y khoa, căn chỉnh affine thuần túy chỉ là bước đầu. Sau khi căn thô, các mô hình biến dạng dựa trên B-spline cho phép tạo ra biến dạng mượt, không cứng trong khi vẫn kiểm soát được các điểm điều khiển.
Hãy hình dung: affine làm thẳng tổng thể, còn B-spline xử lý những chỗ uốn cong nhỏ.
Bất biến affine trong nhận dạng mẫu và thị giác máy tính
Nhiều hệ thống nhận dạng cố gắng đạt tính bất biến affine để đối tượng vẫn được nhận ra khi góc nhìn thay đổi theo cách gần giống phép affine.
Kỹ thuật bao gồm:
Điều này giúp các nhiệm vụ như ghép cặp, theo dõi và truy hồi đáng tin cậy hơn.
Phép biến đổi affine trong GIS và hệ tọa độ trắc địa
Trong GIS, phép affine xuất hiện trong gán tham chiếu địa lý cho bản đồ, căn chỉnh các lớp từ nguồn khác nhau, hoặc xấp xỉ cục bộ các phép chuyển đổi tọa độ.
Các phép biến đổi trắc địa thực tế có thể phức tạp hơn, tuy nhiên các mô hình affine thường được dùng như xấp xỉ cục bộ hoặc là một phần của pipeline rộng hơn.
Thư viện Phần mềm cho Phép biến đổi Affine
Bạn không cần bắt đầu từ con số 0; hầu hết hệ sinh thái đều có hỗ trợ tốt.
Triển khai phép biến đổi affine bằng Python, C++ và Java
Ý tưởng cốt lõi xuyên suốt các ngôn ngữ:
Công cụ và thư viện tốt nhất cho phép biến đổi affine
Công cụ và thư viện tốt nhất cho phép biến đổi affine. Nguồn ảnh: Napkin AI
Công cụ dùng rộng rãi:
Bạn nên chọn theo lĩnh vực: OpenCV cho ảnh, GLM cho đồ họa, GDAL/PROJ cho GIS.
Góc nhìn Khác về Phép biến đổi Affine
Nghe một ý tưởng được giải thích theo cách khác đôi khi giúp mọi thứ rõ ràng hơn.
Định nghĩa thay thế: Ánh xạ affine và hàm affine
Một ánh xạ affine có thể được định nghĩa là một hàm bảo toàn tính chuẩn mực của các tổ hợp affine:
Cách diễn đạt này không gắn với một gốc duy nhất, rất “tinh thần hình học affine”. Nó cũng làm rõ ngay rằng đường thẳng được ánh xạ thành đường thẳng.
Phép biến đổi affine và công thức (y = mx + b)
Nếu phép biến đổi affine có vẻ trừu tượng, hãy liên hệ với điều bạn đã biết: (y=mx) là tuyến tính (đi qua gốc), còn (y=mx+b) là affine (cùng hiệu ứng độ dốc và có dịch chuyển).
Ở không gian cao hơn, (m) trở thành ma trận (A), nhưng câu chuyện vẫn vậy: nó tác động tuyến tính và di chuyển xung quanh.
Kết luận
Tóm gọn lại, phép biến đổi affine là: “Tôi sẽ giữ thế giới của bạn gồm các đường thẳng và các cạnh song song, nhưng tôi không thể hứa các góc của bạn vẫn như cũ.”
Nếu bạn đang suy nghĩ theo hướng ma trận và hệ tuyến tính, hãy xem Đại số tuyến tính cho Khoa học Dữ liệu bằng R và các hướng dẫn tập trung vào ma trận, bao gồm Giải thích Dạng Bậc Thang Dòng.
Nếu bạn muốn bắt đầu với thị giác máy tính, các dự án như Phân loại Hình ảnh Món ăn với Hugging Face và các khóa học như Làm việc với Hugging Face là bước tiếp theo phù hợp.