Image Registration
تُحاذي مواءمة الصور صور المشهد نفسه ضمن نظام إحداثيات واحد، باستخدام مطابقة السمات أو تشابه البكسلات ونموذج تحويل.
تسجيل الصور هو عملية الرؤية الحاسوبية التي تحاذي صورتين أو أكثر للمشهد نفسه، بحيث تقع كل نقطة مادية عند إحداثيات البكسل نفسها في جميع الصور. وقد تأتي الصور من أوقات أو زوايا رؤية أو مستشعرات مختلفة: مرور قمر صناعي في يناير وآخر في يونيو، أو تصوير بالرنين المغناطيسي وآخر بالتصوير المقطعي للمريض نفسه، أو إطارات متتابعة من كاميرا مهتزة. وبعد التسجيل، يمكن مقارنة الصور بكسلًا بكسلًا، أو دمجها في مشهد واحد، أو تجميعها في فسيفساء.
يُحدَّد في التسجيل أحد الصور بوصفها الصورة الثابتة أو المرجعية، ثم تُحوّل الصورة الأخرى، أي الصورة المتحركة، إلى نظام إحداثياتها. ويتضمن ذلك ثلاثة خيارات: كيفية قياس محاذاة الصور، ونوع التحويل الهندسي المسموح به، وطريقة البحث عن أفضل تحويل. وبعد تقدير التحويل، يعاد أخذ عينات من الصورة المتحركة، حيث يحسب الاستيفاء قيم البكسلات في المواضع الجديدة.
الأساليب المعتمدة على السمات والمعتمدة على الشدة#
يكتشف التسجيل القائم على السمات نقاطًا مميزة، مثل الزوايا والبقع، في كلتا الصورتين، ويصف كل نقطة بواصف مثل ORB أو SIFT، ثم يطابق الواصفات بين الصورتين. وتوفر النقاط المفتاحية المتطابقة أزواجًا من المواقع المتناظرة، ويقدّر أسلوب متين مثل RANSAC التحويل مع استبعاد حالات عدم التطابق. وتتميز أساليب السمات بالسرعة والقدرة على معالجة الإزاحات الكبيرة، ما يجعلها الخيار المعتاد لتجميع الصور البانورامية ورسم خرائط الطائرات المسيّرة، كما يوسع مطابقة الصور المتعلمة نطاق استخدامها إلى المشاهد التي تتعثر فيها الواصفات المصممة يدويًا. يغيّر هذا المثال صورة اختبارية وفق دوران ومقياس وإزاحة معلومة، ثم يستعيد التحويل باستخدام 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)يطبع Kept 497 of 567 matches: rotation 10.01 degrees, scale 0.910. والتحويل المقدّر هو معكوس التحويل المطبق: دوران عكسي بمقدار 10 درجات ومقياس 1/1.1، ويتطابق registered.png مع الصورة الأصلية حيثما تداخلت الصورتان.
يتجاوز التسجيل القائم على الشدة السمات الصريحة، ويقارن قيم البكسلات مباشرةً، مع تعديل التحويل لتعظيم مقياس التشابه. وترجع الفكرة إلى بروس لوكاس وتاكيئو كانادي، إذ قدمت ورقتهما المنشورة عام 1981، «تقنية تكرارية لتسجيل الصور وتطبيقها على الرؤية المجسمة»، الطريقة المستخدمة أيضًا في التدفق البصري. ويصلح الارتباط للصور المأخوذة بالمستشعر نفسه، بينما تعالج المعلومات المتبادلة، التي طُرحت للتسجيل الطبي في منتصف تسعينيات القرن العشرين، الأنماط المختلفة، مثل صور الرنين المغناطيسي مقارنةً بالتصوير المقطعي، حيث تظهر الأنسجة نفسها بدرجات سطوع مختلفة. ويبحث مُحسِّن، غالبًا باستخدام الانحدار المتدرج عبر هرم صور يبدأ بالدقة الخشنة وينتقل إلى الدقيقة، عن أفضل المعلمات؛ وتتيح مجموعات الأدوات، مثل إطار عمل التسجيل SimpleITK، استخدام المقياس والمُحسِّن والتحويل والمُستوفي مكوناتٍ منفصلة.
تدرّب أساليب التعلم العميق، مثل VoxelMorph الذي نشره غوها بالاكريشنان وزملاؤه عام 2019، شبكة عصبية التفافية للتنبؤ بحقل تشوه في تمريرة أمامية واحدة، لتحل بذلك محل التحسين لكل زوج، الذي يستغرق دقائق أو أكثر، بتنبؤ يستغرق أقل من ثانية على GPU.
اختيار نموذج التحويل#
ينبغي أن يتوافق التحويل مع الاختلاف الفعلي بين الصور:
- الإزاحة والتحويل الصلب: إزاحات، بالإضافة إلى دوران في الحالة الصلبة، مع الحفاظ على المسافات. ويشيع استخدامهما في مسح الجسم الصلب نفسه.
- التشابه والتحويل الأفيني: يضيف التشابه تغييرًا موحدًا للمقياس، ويضيف التحويل الأفيني تغييرًا غير موحد للمقياس وقصًا، ضمن تحويل واحد للصورة بأكملها. يناسب ذلك صور الأقمار الصناعية الملتقطة بمقاييس مختلفة قليلًا.
- إسقاطي (تحويل تجانسي): يمثّل تغيرات المنظور في المشاهد المستوية أو مع الكاميرات الدوارة، كما في مسح المستندات والصور البانورامية.
- قابل للتشوه: يتيح لكل منطقة التحرك بصورة مستقلة، حسب الحاجة للأنسجة الرخوة التي يتغير شكلها بين عمليات المسح.
يمكن للنماذج الأكثر مرونة أن تلائم أي شيء تقريبًا، بما في ذلك التغييرات الحقيقية التي ينبغي للتحليل اكتشافها؛ لذلك يبدأ التسجيل عادةً بأبسط نموذج معقول، ولا تُضاف المرونة إلا عند استمرار خطأ المحاذاة. وتُظهر المشاهد ذات العمق والكاميرا المتحركة اختلاف المنظر، وهو ما لا يستطيع أي تحويل ثنائي الأبعاد منفرد إزالته؛ لذا تعتمد محاذاتها على الهندسة الإبيبولارية وإعادة البناء ثلاثي الأبعاد.
مواضع استخدام التسجيل#
في الاستشعار عن بُعد وتحليل صور الأقمار الصناعية، يكون التسجيل الخطوة الأولى في كشف التغيرات: إذ يجب محاذاة صور المنطقة نفسها الملتقطة بفارق أشهر قبل أن يتمكن النموذج من رصد إنشاءات جديدة أو إزالة الغابات، وإلا بدا أي انزياح طفيف وكأنه تغير على امتداد كل حافة طريق. وفي تحليل الصور الطبية، تتيح محاذاة صور الفحوص من زيارات منفصلة للأطباء قياس نمو الورم، ويجمع محاذاة صور PET مع التصوير المقطعي النشاط الأيضي والتشريح، كما ينقل تسجيل أطلس موسوم إلى صورة جديدة تسميات التشريح، وهو أسلوب كلاسيكي لـتقسيم الصور لتحديد بنى الدماغ.
تسجل تطبيقات الفيديو الإطارات المتتابعة لتقدير حركة الكاميرا. ويزيل التثبيت تلك الحركة، كما تستخدمها أدوات التتبع كي لا تختلط حركة الكاميرا بحركة الأجسام عند تصوير الفيديو بكاميرا متحركة. ويسجل متعقب TrackTrack الافتراضي في تتبع الأجسام ضمن Ultralytics YOLO كل إطار نسبةً إلى الإطار السابق عبر تتبع السمات الركنية باستخدام التدفق البصري المتناثر بنصف الدقة، وملاءمة تحويل تشابه باستخدام RANSAC، ما يبقي المسارات من طائرة مسيّرة أو كاميرا مركبة متصلة بالأجسام الصحيحة.










