Inverse Rendering
Ters işleme, yeniden ışıklandırmayı ve malzeme düzenlemeyi mümkün kılmak için fotoğraflardan geriye doğru giderek bu fotoğrafları oluşturan şekli, malzemeleri, ışığı ve kamerayı bulur.
Ters işleme, bir veya daha fazla görüntünün ardındaki fiziksel sahneyi; nesnelerin 3B şeklini, yüzeylerinin malzemelerini, ışıklandırmayı ve görüntüyü çeken kamerayı geri çıkarma işlemidir. Bilgisayar grafiklerinde işleme ileri yönde çalışır ve bir sahne açıklamasını piksellere dönüştürür. Ters işleme ise aynı fiziği geriye doğru uygulayarak gözlemlenen fotoğrafları yeniden üretecek sahne parametrelerini arar. Bilgisayarlı görü ile grafiklerin kesişiminde yer alır ve ters grafik olarak da adlandırılır. Stephen Marschner'ın 1998 tarihli Cornell doktora tezi Bilgisayar Grafikleri için Ters İşleme, fotoğraflardan ışıklandırma ve yüzey yansıtıcılığını geri çıkarmayı bu türden ters problemler olarak çerçeveledi.
Sentez Yoluyla Analiz#
Ters işleme yöntemlerinin çoğu, sentez yoluyla analiz adı verilen bir döngüyü izler: Sahne için bir tahminle başlanır, sahne işlenir, sonuç gerçek fotoğrafla karşılaştırılır ve farkı azaltmak için tahmin güncellenir. Türevlenebilir işleme, her güncellemeyi verimli kılar. İşleyici, her pikselin her sahne parametresine göre nasıl değiştiğini bildirdiğinden, gradyan inişi tıpkı bir sinir ağını eğiten geri yayılım gibi binlerce parametreyi aynı anda güncelleyebilir. Mitsuba 3 gibi fizik tabanlı türevlenebilir işleyiciler, bu yaklaşımı gölgelere, yansımalara ve yüzeyler arasındaki ışık sıçramalarına da genişletir.
Tek bir uzak ışıkla aydınlatılan mat bir küre gibi en basit sahne için döngü, birkaç satırlık PyTorch koduna sığar. Kod parçası, iyileştiricinin görmediği bir ışık yönü ve yüzey parlaklığı (albedo) kullanarak hedef fotoğrafı işler; ardından yalnızca pikselleri kullanarak ikisini de Adam iyileştiricisi ile geri çıkarır:
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}")Gizli değerleri tam olarak, Light direction: [ 0.597 -0.398 0.697], albedo: 0.800 ifadesini yazdırır. Üretim sistemleri aynı döngüyü korur ancak tek satırlık gölgelendirme modelini tam ışık taşınımıyla değiştirir; bilinmeyenler de ağ örgülerine, doku haritalarına ve ortam ışıklandırmasına kadar genişler.
Problem Neden Belirsizdir#
Birbirinden çok farklı birçok sahne aynı görüntüyü oluşturabilir. Koyu bir alan, daha koyu boya, gölge ya da ışıktan uzağa eğilmiş bir yüzey olabilir; parlak bir nokta ise parlak bir malzemeden ya da tam doğru konumlandırılmış bir lambadan kaynaklanabilir. Parlaklığın kendisi de belirsizdir: ışığı iki katına çıkarıp albedoyu yarıya indirmek aynı pikselleri verir; kod parçası bu yüzden ışık yönünü normalize eder ve tüm parlaklığı albedoya bırakır. Yöntemler yanıtı üç şekilde daraltır:
- Daha fazla gözlem: Bir nesneyi birçok bakış açısından ya da fotometrik stereo örneğindeki gibi bilinen birkaç ışık altında fotoğraflamak, şekli ve malzemeyi tek bir fotoğraftan çok daha fazla sınırlar.
- Öğrenilmiş öncüller: Büyük işlenmiş sahne koleksiyonlarıyla eğitilmiş ağlar, tek bir görüntüden olası normalleri, malzemeleri veya aydınlatmayı tahmin ederek iyileştiriciye güçlü bir başlangıç noktası sunar.
- Bilinen geometri: Şekil bir derinlik sensöründen veya derinlik modelinden geldiğinde, geriye kalan bilinmeyenler malzemeler ve aydınlatmayla sınırlı kalır.
Tek görüntüden derinlik tahmini, sıradan fotoğraflar için bu geometrik bilgiyi sağlar. Ultralytics YOLO26 derinlik modelleri, tek bir RGB görüntüsünden metre cinsinden piksel başına derinlik haritası tahmin eder; bu haritanın gradyanlarından hesaplanan yüzey normalleri ise küre örneğinin hazır kabul ettiği gölgeleme geometrisidir.
Tersine Görüntüleme, Yeniden Yapılandırma ve Sinirsel Görüntüleme#
3B yeniden yapılandırma, genellikle hareketten yapı ve çoklu görünüm stereo yöntemleriyle geometriyi geri çıkarır ve çekim sırasındaki ışıklandırmayı genellikle yüzey renklerine işler. Sinirsel ışınım alanları ve Gauss sıçratma aynı işle-karşılaştır döngüsüyle uydurulur; ancak yüzeyleri ışıklardan ayırmadan sahnenin her yönden nasıl göründüğünü modellerler, bu yüzden yeni görünümleri özgün ışıklandırmayı korur. Ters işlemenin amacı bu ayrımı yapmaktır; böylece ışıklandırmayı değiştirmek, malzemeleri düzenlemek ve sanal nesneleri gerçekçi biçimde sahneye eklemek mümkün olur. Yakın tarihli birçok yöntem, daha geniş sinirsel işleme alanında ışınım alanlarına yansıtıcılık ve aydınlatma modelleri ekleyerek bu iki yaklaşımı derin öğrenmeyle birleştirir.
Varlık Yakalama, AR ve Görsel Efektler#
- 3B varlık yakalama: Perakendeciler ve oyun stüdyoları gerçek ürünleri tarayarak renk, pürüzlülük ve yüzey normalleri için ayrı haritaları olan 3B varlıklar oluşturur; böylece aynı model bir mağaza sayfasında veya oyun motorunda her türlü aydınlatma altında doğru şekilde görüntülenir.
- Artırılmış gerçeklik: Google'ın ARCore'u gibi artırılmış gerçeklik çerçeveleri, kamera görüntüsünden bir odanın ışıklandırmasını tahmin eder; böylece sanal nesneler eşleşen gölgelendirme, gölgeler ve yansımalar alır.
- Görsel efektler: Paul Debevec ve çalışma arkadaşlarının 2000'de tanıttığı ışık sahnesi düzenekleri, bir sanatçının yüzünü yoğun bir ışık yönleri dizisi altında fotoğraflayarak yüzün yansıtıcılığını geri çıkarır; stüdyolar böylece dijital yüzün ışıklandırmasını istedikleri çekime uyacak şekilde değiştirebilir.










