Aby uprościć zamieszanie - istnieją dwa procesy:
1. Szacowanie
ruchu 2. Kompensacja ruchu
Zanim porozmawiamy o oszacowaniu, powinniśmy porozmawiać o kompensacji ruchu.
Powiedzmy, że jest podzielony na blok B l o c k s t [ k ] ( x ′ , y ′ ) .Imaget(x,y)Blockst[k](x′,y′)
Zadaniem kompensacji ruchu jest wytworzenie z dowolnego obszaru
I m a g e t - 1 ( x , y ) .Blockst[k](x′,y′)Imaget−1(x,y)
Zatem inny blok niekoniecznie wyrównany na granicy 16 x 16 jest najlepszym możliwym dopasowaniem Blockst−1[k](x′+mx,y′+my)
Tutaj nazywane są wektorami ruchu.mx,my
Możemy obliczyć błąd między celem a odniesieniem jako
Errt[k](x,y)=Blockst[k](x′,y′)−Blockst−1[k](x′+mx,y′+my)
Teraz, koder zasadniczo przenoszą (z DCT i kwantyzacji) i ( m x , m y ) [ k ] dla każdego bloku ,.Errt[k](x,y)(mx,my)[k]
Zatem enkoder ma do wykonania 2 prace:
1. Ruch Oszacowanie
Proces lub oszacowanie dla wszystkich K tak, że e r r T [ k ] ( x , y ) jest zminimalizowane nazywa szacowania ruchu.mx,my[k]kErrt[k](x,y)
2. Generowanie obrazu błędu po kompensacji ruchu
Proces konstruowania z I t pikseli obrazu i ( m x , m y ) [ k ] nazywa się kompensacją ruchu . Obraz błędu jest przesyłany.Blockst[k](x′,y′)It(mx,my)[k]
Wreszcie dekoder może samodzielnie wykonać kompensację ruchu za pomocą wektorów moitonowych i obrazu błędu, aby dokonać ostatecznej rekonstrukcji obrazu.
Teraz zdajemy sobie sprawę z kilku punktów:
Szacowanie Best Motion pomaga zminimalizować energię, która jest wymagana do przesłania, a tym samym optymalizuje bity dla danej jakości.
Jednak nawet jeśli nie jest idealny lub jeśli scena ma znaczącą zmianę w stosunku do ostatniego obrazu, E r r t [ k ] ( x , y ) jest zawsze przesyłane do odbiornika - stąd rekonstrukcja jest zawsze idealny (modulo strata spowodowana kwantyzacją). Dlatego nawet jeśli masz suboptymalny wektor ruchu lub redundancja nie jest duża, rekonstrukcja jest zawsze idealna, choć z większą ilością bitów!(mx,my)[k]Errt[k](x,y)
Każdy blok jest kompensowany ruchem sam w sobie - dlatego nawet jeśli rzeczywiste wektory ruchu sąsiednich bloków nie mają wpływu na konstrukcję. Dlatego nie jest konieczne, aby wektory ruchu były idealnie wyrównane, aby możliwa była idealna rekonstrukcja.Blockst[k](x′,y′)
Chociaż istnieje algorytm, który jest wystarczająco inteligentny, aby zgadywać, że jeśli ma wektor ruchu ( m x , m y ) [ k ] zgadnij, że B l o c k s t [ k + 1 ] może tylko bądź do tego bliżej.Blockst[k](mx,my)[k]Blockst[k+1]
Na koniec załóżmy, że następny obraz jest zupełnie inny, możliwe, że energia dla .
Energy(Errt[k](x,y))>Energy(Blockst[k](x′,y′))
W takich przypadkach bardziej wskazane może być przesłanie bloku bezpośrednio bez przewidywania, niż przesłanie różnicy. Jest to również możliwe w enkoderze dzięki przepisowi zwanemu blokiem INTRA.