Inverse Rendering
يستنتج العرض العكسي الشكل والمواد والإضاءة والكاميرا التي أنتجت الصور، ما يتيح إعادة الإضاءة وتحرير المواد.
التصيير العكسي هو عملية استعادة المشهد المادي الكامن وراء صورة واحدة أو أكثر: الشكل ثلاثي الأبعاد لأجسامه، ومواد أسطحها، والإضاءة، والكاميرا التي التقطته. يسير التصيير في رسومات الحاسوب إلى الأمام، محولًا وصف المشهد إلى وحدات بكسل. أما التصيير العكسي فيعكس الفيزياء نفسها، باحثًا عن معلمات المشهد التي من شأنها إعادة إنتاج الصور المرصودة. ويقع عند التقاء الرؤية الحاسوبية بالرسومات، ويُسمى أيضًا الرسومات العكسية. وقد صاغت أطروحة ستيفن مارشنر في كورنيل عام 1998، التصيير العكسي لرسومات الحاسوب، استعادة الإضاءة وانعكاس السطح من الصور بوصفهما مسألتين عكسيتين من هذا النوع.
التحليل بالتركيب#
تتبع معظم أساليب التصيير العكسي حلقة تُسمى التحليل بالتوليف: ابدأ بتخمين للمشهد، وصيّره، وقارن النتيجة بالصورة الحقيقية، ثم عدّل التخمين لتقليل الفرق. يجعل التصيير القابل للتفاضل كل تعديل فعالًا. ولأن المصيّر يحدد كيفية تغير كل بكسل بالنسبة إلى كل معلمة في المشهد، يستطيع الانحدار المتدرج تحديث آلاف المعلمات دفعة واحدة، بالطريقة نفسها التي يدرّب بها الانتشار العكسي شبكة عصبية. وتوسّع المصيّرات القابلة للتفاضل القائمة على الفيزياء، مثل Mitsuba 3، هذا النهج ليشمل الظلال والانعكاسات وارتداد الضوء بين الأسطح.
يمكن كتابة الحلقة في بضعة أسطر من PyTorch لأبسط مشهد: كرة مطفأة الإضاءة يضيئها مصدر ضوء بعيد واحد. يعرض المقتطف صورة مستهدفة باستخدام اتجاه ضوء وسطوع سطح (البياض) لا يراهما المحسّن، ثم يستعيد كليهما من وحدات البكسل وحدها باستخدام محسّن Adam:
import torch
import torch.nn.functional as F
# Unit normals of a sphere seen head-on, on a 64 x 64 pixel grid
y, x = torch.meshgrid(torch.linspace(-1, 1, 64), torch.linspace(-1, 1, 64), indexing="ij")
z = (1 - x**2 - y**2).clamp(min=0).sqrt()
normals = torch.stack([x, y, z], dim=-1)[z > 0]
# Lambertian "photo" lit from a direction the optimizer never sees, with albedo 0.8
photo = 0.8 * (normals @ F.normalize(torch.tensor([0.6, -0.4, 0.7]), dim=0)).clamp(min=0)
# Fit light direction and albedo: render, compare with the photo, follow the gradients
light = torch.tensor([0.0, 0.0, 1.0], requires_grad=True)
albedo = torch.tensor(0.3, requires_grad=True)
optimizer = torch.optim.Adam([light, albedo], lr=0.02)
for _ in range(500):
render = albedo * (normals @ F.normalize(light, dim=0)).clamp(min=0)
loss = (render - photo).pow(2).mean()
optimizer.zero_grad()
loss.backward()
optimizer.step()
print(f"Light direction: {F.normalize(light.detach(), dim=0).numpy().round(3)}, albedo: {albedo.item():.3f}")يطبع المقتطف Light direction: [ 0.597 -0.398 0.697], albedo: 0.800، أي القيم المخفية بدقة. وتحافظ أنظمة الإنتاج على الحلقة نفسها، لكنها تستبدل نموذج التظليل ذي السطر الواحد بنقل ضوئي كامل، وتتوسع المجهولات لتشمل الشبكات المجسمة وخرائط الأنسجة وإضاءة البيئة.
لماذا تكتنف المشكلةَ حالةُ التباس#
يمكن لمشاهد مختلفة كثيرة أن تنتج الصورة نفسها. فقد تكون الرقعة الداكنة طلاءً أغمق، أو ظلاً، أو سطحاً مائلاً بعيداً عن الضوء، وقد تكون البقعة الساطعة مادة لامعة أو مصباحاً موضوعاً على نحو ملائم. كما أن السطوع وحده ملتبس: فمضاعفة الضوء وخفض الانعكاسية إلى النصف يعطيان وحدات البكسل نفسها، ولهذا يطبّع المقتطف اتجاه الضوء ويجعل الانعكاسية تحمل السطوع كله. وتضيّق الطرق نطاق الإجابة بثلاث وسائل:
- ملاحظات أكثر: إن تصوير جسم من زوايا رؤية كثيرة، أو تحت عدة أضواء معلومة كما في الاستريو الضوئي، يقيّد الشكل والمادة بدرجة أكبر بكثير مما تفعله صورة واحدة.
- السوابق المتعلَّمة: تتنبأ الشبكات المدرّبة على مجموعات كبيرة من المشاهد المصيّرة بالمتجهات العمودية أو المواد أو الإضاءة المرجحة من صورة واحدة، ما يمنح المحسّن نقطة بداية قوية.
- الهندسة المعروفة: عندما يأتي الشكل من مستشعر عمق أو نموذج عمق، تقتصر المجهولات المتبقية على المواد والإضاءة.
يوفر تقدير العمق من صورة واحدة هذه الهندسة للصور العادية. وتتنبأ نماذج العمق Ultralytics YOLO26 بخريطة عمق لكل بكسل بوحدة المتر انطلاقًا من صورة RGB واحدة، وتمثل متجهات العمود السطحي المحسوبة من تدرجاتها هندسة التظليل التي يفترضها مثال الكرة.
التصيير العكسي مقابل إعادة البناء والتصيير العصبي#
يستعيد إعادة البناء ثلاثي الأبعاد الهندسة، غالبًا باستخدام البنية من الحركة والتصوير المجسم متعدد المناظر، وعادةً ما يدمج إضاءة الالتقاط في ألوان السطح. وتُدرَّب حقول الإشعاع العصبية والتنقيط الغاوسي باستخدام حلقة التصيير والمقارنة نفسها، لكنها تمثل مظهر المشهد من كل اتجاه من دون فصل الأسطح عن الأضواء، لذا تحتفظ المناظر الجديدة بالإضاءة الأصلية. وهدف التصيير العكسي هو إجراء هذا الفصل، ما يتيح إعادة الإضاءة وتحرير المواد وإدراج أجسام افتراضية بواقعية. وتجمع أساليب حديثة كثيرة بين النهجين باستخدام التعلم العميق، بإضافة نماذج الانعكاس والإضاءة إلى حقول الإشعاع ضمن المجال الأوسع لـالتصيير العصبي.
التقاط الأصول والواقع المعزز والمؤثرات البصرية#
- التقاط الأصول ثلاثية الأبعاد: تمسح متاجر التجزئة واستوديوهات الألعاب المنتجات الحقيقية لتحويلها إلى أصول ثلاثية الأبعاد ذات خرائط منفصلة للون والخشونة والمتجهات العمودية للسطح، بحيث يُصيَّر النموذج بصورة صحيحة تحت أي إضاءة في صفحة متجر أو محرك ألعاب.
- الواقع المعزز: تقدّر أطر الواقع المعزز، مثل ARCore من Google، إضاءة الغرفة من بث الكاميرا، كي تتلقى الأجسام الافتراضية تظليلًا وظلالًا وانعكاسات مطابقة.
- المؤثرات البصرية: تلتقط منصات الإضاءة، التي ابتكرها بول ديبيفيك وزملاؤه عام 2000، صورًا لوجه المؤدي من اتجاهات إضاءة كثيفة لاستعادة انعكاسه، ما يتيح للاستوديوهات إعادة إضاءة الوجه الرقمي ليتطابق مع أي لقطة.










