Image Registration
Đăng ký ảnh căn chỉnh các ảnh chụp cùng một cảnh vào một hệ tọa độ, sử dụng các điểm đặc trưng khớp nhau hoặc độ tương đồng pixel cùng model biến đổi.
Đăng ký ảnh là quy trình thị giác máy tính căn chỉnh từ hai hình ảnh trở lên của cùng một cảnh để mọi điểm vật lý nằm tại cùng tọa độ pixel trong tất cả hình ảnh. Các ảnh có thể được chụp vào thời điểm, góc nhìn hoặc bằng cảm biến khác nhau: ảnh vệ tinh chụp vào tháng 1 và tháng 6, ảnh MRI và CT của cùng một bệnh nhân, hoặc các khung hình liên tiếp từ camera bị rung. Sau khi đăng ký, có thể so sánh ảnh theo từng pixel, hợp nhất chúng thành một góc nhìn hoặc ghép thành ảnh khảm.
Trong đăng ký ảnh, một ảnh được chọn làm ảnh cố định, hay ảnh tham chiếu; ảnh còn lại, tức ảnh di động, được biến đổi sang hệ tọa độ của ảnh cố định. Quy trình này bao gồm ba lựa chọn: cách đo mức độ căn chỉnh giữa các ảnh, loại biến đổi hình học được phép và phương pháp tìm kiếm biến đổi tốt nhất. Sau khi ước tính được phép biến đổi, ảnh di động được lấy mẫu lại; phép nội suy tính giá trị pixel tại các vị trí mới.
Phương pháp dựa trên đặc trưng và dựa trên cường độ#
Đăng ký dựa trên đặc trưng phát hiện các điểm riêng biệt như góc và đốm trong cả hai ảnh, mô tả từng điểm bằng descriptor như ORB hoặc SIFT, rồi ghép các descriptor giữa các ảnh. Các keypoint đã ghép tạo thành các cặp vị trí tương ứng; bộ ước lượng vững chắc như RANSAC khớp phép biến đổi đồng thời loại bỏ các điểm không khớp. Phương pháp đặc trưng nhanh và xử lý được độ dịch chuyển lớn, nên thường được dùng để ghép ảnh panorama và lập bản đồ bằng drone; phương pháp ghép ảnh học sâu mở rộng khả năng này sang những cảnh mà descriptor thiết kế thủ công gặp khó khăn. Ví dụ này biến đổi một ảnh thử nghiệm theo góc xoay, tỷ lệ và độ dịch chuyển đã biết, rồi khôi phục phép biến đổi bằng OpenCV:
import cv2
import numpy as np
from skimage import data
# Fixed image, and a moving copy rotated 10 degrees, scaled 1.1x, and shifted (25, -15) pixels
fixed = data.camera()
warp = cv2.getRotationMatrix2D((256, 256), 10, 1.1)
warp[:, 2] += (25, -15)
moving = cv2.warpAffine(fixed, warp, (512, 512))
# Detect and match ORB features in both images
orb = cv2.ORB_create(1000)
kp_moving, des_moving = orb.detectAndCompute(moving, None)
kp_fixed, des_fixed = orb.detectAndCompute(fixed, None)
matches = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True).match(des_moving, des_fixed)
src = np.float32([kp_moving[m.queryIdx].pt for m in matches])
dst = np.float32([kp_fixed[m.trainIdx].pt for m in matches])
# Fit a similarity transform (rotation, scale, translation) with RANSAC, rejecting wrong matches
M, inliers = cv2.estimateAffinePartial2D(src, dst, method=cv2.RANSAC)
angle, scale = np.degrees(np.arctan2(M[1, 0], M[0, 0])), np.hypot(M[0, 0], M[1, 0])
print(f"Kept {inliers.sum()} of {len(matches)} matches: rotation {angle:.2f} degrees, scale {scale:.3f}")
# Resample the moving image into the fixed image's coordinates
registered = cv2.warpAffine(moving, M, (512, 512))
cv2.imwrite("registered.png", registered)Kết quả in ra là Kept 497 of 567 matches: rotation 10.01 degrees, scale 0.910. Phép biến đổi ước tính là nghịch đảo của phép biến dạng đã áp dụng: xoay ngược 10 độ và tỷ lệ 1/1.1; registered.png căn chỉnh với ảnh gốc tại những vùng hai ảnh chồng lấp.
Đăng ký dựa trên cường độ bỏ qua đặc trưng tường minh và so sánh trực tiếp giá trị pixel, điều chỉnh phép biến đổi để tối đa hóa thước đo độ tương đồng. Ý tưởng này bắt nguồn từ Bruce Lucas và Takeo Kanade; bài báo năm 1981 “Một kỹ thuật đăng ký ảnh lặp với ứng dụng trong thị giác lập thể” của họ giới thiệu phương pháp hiện cũng được dùng cho luồng quang học. Tương quan phù hợp với ảnh từ cùng cảm biến; thông tin tương hỗ, được giới thiệu cho đăng ký ảnh y tế vào giữa thập niên 1990, xử lý được các phương thức khác nhau như MRI và CT, trong đó cùng một mô có độ sáng khác nhau. Bộ tối ưu hóa, thường sử dụng hạ gradient trên kim tự tháp ảnh từ thô đến mịn, tìm kiếm bộ tham số tốt nhất; các bộ công cụ như framework đăng ký SimpleITK cung cấp metric, bộ tối ưu hóa, phép biến đổi và bộ nội suy dưới dạng các thành phần riêng biệt.
Các phương pháp học sâu như VoxelMorph, được Guha Balakrishnan và các đồng nghiệp công bố năm 2019, huấn luyện một mạng nơ-ron tích chập để dự đoán trường biến dạng chỉ trong một lượt truyền xuôi. Cách này thay thế quy trình tối ưu hóa từng cặp ảnh vốn mất vài phút hoặc lâu hơn bằng một dự đoán mất chưa đến một giây trên GPU.
Chọn model biến đổi#
Phép biến đổi nên phù hợp với những khác biệt thực tế giữa các ảnh:
- Tịnh tiến và rigid: Dịch chuyển, cộng thêm phép quay trong trường hợp rigid, đồng thời giữ nguyên khoảng cách. Thường dùng cho ảnh quét cùng một vật thể cứng.
- Tương đồng và affine: Phép biến đổi tương đồng bổ sung tỷ lệ đồng nhất; phép biến đổi affine bổ sung tỷ lệ không đồng nhất và độ xiên. Cả hai áp dụng một phép biến đổi cho toàn bộ ảnh. Phù hợp với ảnh vệ tinh được chụp ở các tỷ lệ hơi khác nhau.
- Projective (homography): Mô hình hóa thay đổi phối cảnh trong cảnh phẳng hoặc khi camera xoay, như trong quét tài liệu và ghép ảnh panorama.
- Deformable: Cho phép từng vùng di chuyển độc lập, cần thiết khi mô mềm thay đổi hình dạng giữa các lần chụp.
Các model linh hoạt hơn có thể khớp gần như mọi thứ, kể cả những thay đổi thực tế mà quá trình phân tích cần phát hiện; vì vậy, việc căn chỉnh thường bắt đầu bằng model đơn giản nhất có cơ sở hợp lý và chỉ bổ sung độ linh hoạt khi sai số căn chỉnh vẫn còn. Các cảnh có độ sâu và camera chuyển động thể hiện hiện tượng thị sai mà không phép biến đổi 2D đơn lẻ nào có thể loại bỏ; thay vào đó, việc căn chỉnh dựa vào hình học epipolar và tái tạo 3D.
Các ứng dụng của đăng ký ảnh#
Trong viễn thám và phân tích ảnh vệ tinh, đăng ký là bước đầu tiên của phát hiện thay đổi: ảnh cùng một khu vực chụp cách nhau vài tháng phải được căn chỉnh trước khi model phát hiện công trình mới hoặc khu rừng bị phát quang; nếu không, chỉ một dịch chuyển nhỏ cũng trông như thay đổi dọc theo mọi mép đường. Trong phân tích ảnh y tế, căn chỉnh các ảnh chụp ở những lần khám khác nhau giúp bác sĩ đo khối u có phát triển hay không; căn chỉnh PET với CT kết hợp hoạt động chuyển hóa với cấu trúc giải phẫu; đăng ký atlas có nhãn với ảnh chụp mới chuyển các nhãn giải phẫu sang ảnh đó, một phương pháp kinh điển để phân đoạn ảnh các cấu trúc não.
Các ứng dụng video đăng ký những khung hình liên tiếp để ước tính chuyển động camera. Chống rung loại bỏ chuyển động đó; tracker sử dụng thông tin này để cảnh quay từ camera di động không nhầm chuyển động camera với chuyển động của đối tượng. Tracker TrackTrack mặc định trong tính năng theo dõi đối tượng của Ultralytics YOLO đăng ký từng khung hình với khung hình trước bằng cách theo dõi các đặc trưng góc thông qua luồng quang học thưa ở độ phân giải một nửa, rồi khớp phép biến đổi tương đồng bằng RANSAC; nhờ đó, các track từ camera gắn trên drone hoặc phương tiện vẫn bám đúng đối tượng.










