Karışıklığınızı basitleştirmek için - iki süreç var:
1. Hareket tahmini
2. Hareket telafisi
Tahmin hakkında konuşmadan önce, Hareket telafisi hakkında konuşmalıyız.
Diyelim ki, B bloğuna ayrılmıştır l o c k s t [ k ] ( x ′ , y ′ ) .Imaget(x,y)Blockst[k](x′,y′)
Hareket telafisinin görevi, I m a g e t - 1'in ( x , y ) herhangi bir bölgesinden
üretmektir .Blockst[k](x′,y′)Imaget−1(x,y)
Dolayısıyla, 16x16 sınırında mutlaka hizalanmayan başka bir blok mümkün olan en iyi eşleşmedir Blockst−1[k](x′+mx,y′+my)
Burada hareket vektörleri olarak adlandırılır.mx,my
Hedef ve referans arasındaki hatayı şu şekilde hesaplayabiliriz:
Errt[k](x,y)=Blockst[k](x′,y′)−Blockst−1[k](x′+mx,y′+my)
Şimdi, kodlayıcı temel olarak her blok için (DCT ve nicemleme ile) ve ( m x , m y ) [ k ] iletir .Errt[k](x,y)(mx,my)[k]
Yani kodlayıcının 2 işi var:
1. Hareket Tahmin
işlemi ya da tahmin , her için k böyle e r r t [ k ] ( x , y ) en aza hareket tahmini olarak adlandırılır.mx,my[k]kErrt[k](x,y)
2. Hareket Dengelemesinden sonra hata görüntüsünün
oluşturulması I t görüntü piksellerinden ve ( m x , m y ) [ k ] ' den oluşturma işlemine Hareket telafisi denir . Hata görüntüsü iletilen şeydir.Blockst[k](x′,y′)It(mx,my)[k]
Son olarak, kod çözücü, moiton vektörleri ve hata görüntüsünü kullanarak hareket dengelemesini kendi başına yeniden oluşturabilir.
Şimdi birkaç nokta fark ediyoruz:
En İyi Hareket tahmini, iletilmesi gereken enerjiyi en aza indirmeye yardımcı olur ve böylece bitleri belirli bir kalite için optimize eder.
Ancak, ideal olmasa veya sahnenin son resim üzerinde önemli bir değişikliği olsa bile, E r r t [ k ] ( x , y ) her zaman alıcıya iletilir - dolayısıyla yeniden yapılandırma her zaman mükemmeldir (nicemenin yarattığı kayıp modulo). Bu nedenle, yetersiz hareket vektörünüz olsa veya fazlalığınız çok olmasa da, yeniden yapılanma her zaman daha fazla bitle de olsa mükemmeldir!(mx,my)[k]Errt[k](x,y)
Her blok , kendi başına hareketle dengelenir - bu nedenle, herhangi bir komşu bloğun gerçek hareket vektörlerinin yapı üzerinde bir etkisi olmasa bile. Bu nedenle, mükemmel rekonstrüksiyonun mümkün olması için hareket vektörlerinin mükemmel bir şekilde hizalanması gerekli değildir.Blockst[k](x′,y′)
Algoritma tahmin akıllı yeterli olan mevcut de olsa, eğer bir hareket vektörüne sahip ( m, x , m, y ) [ k ] için tahmin B l O C k s t [ k + 1 ] kudreti sadece buna daha yakın olun.Blockst[k](mx,my)[k]Blockst[k+1]
Son olarak, bir sonraki resmin tamamen farklı olduğunu varsayalım ki .
Energy(Errt[k](x,y))>Energy(Blockst[k](x′,y′))
Bu gibi durumlarda, bloğu tahmin olmadan doğrudan iletmek farkı göndermekten daha tavsiye edilebilir. Bu kodlayıcıda INTRA bloğu adı verilen bir hükümle de mümkündür.