ITPI990025A1 - Metodo di stima del moto in una sequenza video mediante tecnica diblock-matching con full search e architettura programmabile a bassa - Google Patents

Metodo di stima del moto in una sequenza video mediante tecnica diblock-matching con full search e architettura programmabile a bassa Download PDF

Info

Publication number
ITPI990025A1
ITPI990025A1 ITPI990025A ITPI990025A1 IT PI990025 A1 ITPI990025 A1 IT PI990025A1 IT PI990025 A ITPI990025 A IT PI990025A IT PI990025 A1 ITPI990025 A1 IT PI990025A1
Authority
IT
Italy
Prior art keywords
block
architecture
blocks
search
per
Prior art date
Application number
Other languages
English (en)
Inventor
Luca Fanucci
Lorenzo Bertini
Pierpaolo Moio
Sergio Saponara
Original Assignee
Consiglio Nazionale Ricerche
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Consiglio Nazionale Ricerche filed Critical Consiglio Nazionale Ricerche
Priority to ITPI990025 priority Critical patent/IT1309846B1/it
Priority to AU15136/01A priority patent/AU1513601A/en
Priority to PCT/EP2000/003546 priority patent/WO2001008402A2/en
Publication of ITPI990025A1 publication Critical patent/ITPI990025A1/it
Application granted granted Critical
Publication of IT1309846B1 publication Critical patent/IT1309846B1/it

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Analysis (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

Descrizione dell'invenzione industriale dal titolo "METODO DI STIMA DEL MOTO IN UNA SEQUENZA VIDEO MEDIANTE TECNICA DI BLOCK-MATCHING CON FULL SEARCH E ARCHITETTURA PROGRAMMABILE A BASSA COMPLESSITÀ ED ELEVATO THROUGHPUT CHE ATTUA TALE METODO"
DESCRIZIONE
Ambito dell'invenzione
La presente invenzione riguarda il settore dei sistemi elettronici per video-comunicazione e più precisamente si riferisce ad un metodo che realizza la stima del moto in una sequenza video tramite un algoritmo di Block -Ma tching con ricerca esaustiva (Full -Search) .
Inoltre, l'invenzione si riferisce ad una architettura circuitale programmabile per video comunicazione, a bassa complessità e ad elevato throughput che attua tale metodo.
Sintesi del problema tecnico e della tecnica nota
La video comunicazione ha molte applicazioni tra le quali la videotelefonia e la videoconferenza su linee ISDN, la TV digitale ad alta definizione ( HDTV), i sistemi video per la sorveglianza remota, quelli per la telemedicina, l'apprendimento a distanza ed il telelavoro.
Sistemi multimediali che utilizzano la video comunicazione trovano un limite di base nell'elevato numero di bit necessari per la rappresentazione dei segnali video, che si traduce in un eccessivo carico per le risorse di trasmissione e memorizzazione. Per cercare di superare tale limite, che attualmente non consente un soddisfacente sviluppo di questi sistemi in un mercato di tipo consumer, è necessario ricorrere a tecniche di compressione dei segnali video .
In tale contesto, commissioni internazionali della ISO e della " ITU-T hanno sviluppato diversi standard di codifica/decodifica video, o codec :
- L'ISO ha sviluppato JPEG per applicazioni con immagini statiche e MPEG nelle versioni 1, 2 e recentemente 4 per l' Interactive video playback, 1 ' entertainment quali ty video distribution e per l'HDTV.
- L'ITU-T ha proposto H.261 e le sue evoluzioni H.263 e H.263+ per applicazioni di videotelefonia e videoconferenza.
Questi codec richiedono una elevata complessità hardware che contrasta con l'esigenza di sviluppare sistemi a basso costo, per cui diventa indispensabile ricorrere ad architetture VLSI dedicate.
La tecnica fondamentale, sviluppata all'interno dei codec ISO ed ITU-T, per la compressione dei segnali video, è quella di stima del moto, o Motion Estimation (ME), che riduce la ridondanza di informazione temporale presente in una sequenza video, ossia tra un frante video e il successivo .
L'idea base della ME, attraverso la tecnica del blockmatching (BMA), è quella di dividere in blocchi il frante corrente nella sequenza video e per ciascun blocco ricercare, all'interno di una opportuna area di ricerca nel frame elaborato precedentemente, quello più simile secondo una opportuna funzione di costo.
Attualmente sono stati sviluppati diversi algoritmi di block-ntatching (BMA) basati su differenti strategie di ricerca: Full -Search, Three Step Search, 2D Logarì thmic Search, Coniugate direction Search, Cross Search, Hierarchical Search e recentemente algoritmi di tipo predittivo.
Tra questi, l'algoritmo di Full Search (FS), che realizza una ricerca esaustiva all'interno dell'area di ricerca, è il migliore per ottenere alta qualità e basso bit-rate. In pratica, con riferimento alle figure 1A e 1B, un blocco di pixel quadrato di dimensioni N xN del frame corrente 1, chiamato blocco di riferimento e indicato come blocco a, è confrontato con tutti i blocchi di uguale dimensione del frame elaborato precedentemente 2, chiamati blocchi di confronto e indicati come blocco b, all'interno di una area di ricerca 3. L'area di ricerca 3 ha dimensioni ph x pv , dove ph è il numero di pixel del suo lato orizzontale mentre pv è il numero di pixel del suo lato verticale, se ph = pv = P e N è il numero di pixel del lato del blocco quadrato N x N le possibili posizioni del blocco b nell'area di ricerca 3 sono pari a 4p<2>.
In figura 2 il blocco di confronto N x N è stato rappresentato nella posizione centrale in cui il vertice superiore sinistro ha coordinate (p, p).
Secondo questa tecnica di full -search (FS) , l'algoritmo di matching consiste nel calcolare la SAD (Su/n of Absolute Difference ) tra i blocchi a e b ed è così definito: se
- a(i,j) è un pixel del blocco di riferimento a,
- b(i n,j m) è un pixel del blocco di confronto b,
- gli indici m ed n indicano la posizione differenziale del blocco di confronto b nell'area di ricerca 3, ovvero le coordinate di un motion vector MV, sarà
con - ph ≤ m ≤ ph -1 e -pv ≤ n ≤ pv -1
Solitamente Ph = Pv = P -Tale calcolo viene ripetuto per tutte le 4p<2>possibili posizioni del blocco di confronto b nell'area di ricerca 3. Le coordinate del blocco b corrispondente al valore della funzione di costo minimo sono usate per la predizione:
Questo approccio esaustivo è caratterizzato da una grande complessità computazionale. Per esempio, per un formato video 4CIF (a 30 frame/s con N =16 e p - 16) é necessaria una potenza di calcolo di oltre 12x10<9 >operazioni di absolute difference al secondo.
Oltre alla full search (FS) anche gli altri algoritmi citati sono stati studiati al fine di ridurre tale complessità computazionale pagando però in termini di qualità dell'immagine codificata rispetto al caso della FS.
Vista la regolarità dell'algoritmo di FS e l'elevato flusso dei dati richiesto, il tipo di architettura che meglio si adatta all'implementazione VLSI è quello sistolico con organizzazione pipeline dei dati. Secondo questa architettura, si caricano i dati di area di ricerca 3 e del blocco a di riferimento entro una struttura di calcolo modulare, facendoli passare attraverso linee di ritardo a registri che hanno, principalmente, lo scopo di attuare una corretta temporizzazione degli stessi.
Per una plausibile applicazione della FS a formati quali il CIF ed il 4CIF, sono note architetture che risultano, però, ancora eccessivamente complesse in termini di area impiegata, come:
a)Hyun Nam and Moon Key Lee, "High-Throughput B-M VLSI Architecture with Low Memory Bandwidth", IEEE Trans, on Circuits and System, voi.45, n.4, pp. 508-512, Apr. 1998.
b)Luc De Vos and Michael Stegherr, "Parametrizable VL Architectures for thè Full-Search Block-Matching Algorithm". IEEE Trans, on Circuits and System, voi.36, n.10, pp. 1309-1316, Oct.1989.
In a) e b) si notano:
- l'elevata ricorrenza del generico registro per la propagazione dei dati, che più di ogni altro contribuisce alla complessità della struttura;
- l'elevato numero di linee per la gestione dei dati, che determina un ulteriore incremento della complessità della architettura;
- l'organizzazione complessa del flusso di dati, il quale ha ripercussioni sui costi relativi alle risorse hardware necessarie per la sua gestione.
Nella architettura secondo a), in particolare, vengono utilizzate ben tre linee di caricamento dati, una per il blocco di riferimento a e due per i dati di area di ricerca 3, per un totale di registri, avendo indicato con N la dimensione caratteristica del blocco e con p il massimo spostamento all'interno della area di ricerca. La gestione dei registri dell'area di ricerca prevede poi l'utilizzo di Multiplexer (MUX) e della relativa logica di controllo.
Nella architettura descritta in b), secondo una Quadratic array solution, vengono impiegati
registri, MUX a 3 vie ed N<2 >elementi di calcolo combinati entro una rete di interconnessioni oltremodo complessa. Invece, con una Linear array solution viene ridotta la complessità della struttura attraverso un'operazione di hardware mul tiplexing che però è in grado di gestire gli stream video tipici (30 frame/s in formato CIF con p - 16 ed N = 16) solo a frequenze di lavoro estremamente elevate (dell'ordine di 200 MHz) con tutte le relative conseguenze in termini di dissipazione di potenza. In particolare, la architettura secondo b) è fortemente limitata nella gestione di formati e velocità di fotogramma.
Per i motivi di cui sopra, le architetture presenti nello stato dell'arte, sono inadeguate ad un mercato di tipo consumer .
Sintesi dell'invenzione
È scopo della presente invenzione fornire, all'interno di un sistema di video comunicazione, un metodo di stima del moto in una sequenza video basato su una tecnica di Block-Matching con Full -Search (qui di seguito per lo più indicata solo con FS-BMA) , secondo i più recenti standard di codifica video, quali ad esempio H.263, MPEG-4, in cui vi sia una gestione del flusso dei dati innovativa ed efficiente, con drastica riduzione della complessità ed elevata efficienza throughpu t/area dell'architettura che implementa tale metodo .
È un altro scopo della presente invenzione fornire una architettura circuitale per attuare tale metodo che consenta una semplice organizzazione del flusso dei dati e della memoria all'interno del source coder o codec realizzato secondo lo schema proposto dagli standard internazionali .
E uno scopo particolare della presente invenzione fornire una siffatta architettura che consenta 1 'implementazione di funzionalità aggiuntive quali:
- la Advanced Prediction mode (AP) e la Unrestricted Motion Vector (UMV) previste dagli standard internazionali (H.263, MPEG-4 ),
- la scelta del MV ( Motion Vector) a norma minima,
- la predilezione del blocco in posizione centrale, a cui corrisponde un MV di coordinate nulle,
- la programmazione dinamica dell'area di ricerca e quindi la possibilità di implementare anche la ricerca a mezzo pixel,
- la parametricità hardware in termini dei parametri N e p sopra introdotti.
Questi scopi vengono raggiunti dal metodo secondo la presente invenzione, la cui caratteristica è che la FS-BMA su un macro blocco viene effettuata a partire dalla FS-BMA relativa ai suoi sotto blocchi.
Preferibilmente, sono previste le fasi di:
- in una sequenza video, suddivisione del frame video corrente in una pluralità di suoi macroblocchi;
- suddivisione di ogni macroblocco in una pluralità di suoi sottoblocchi ;
- per ogni macroblocco individuazione di un'area di ricerca in un frame video elaborato precedentemente al frame corrente; - calcolo di una SAD tra i pixel di un primo sottoblocco di riferimento del frame corrente e tutti i sottoblocchi della stessa dimensione presenti nell'area di ricerca;
- determinazione della SADmin tra tutte le SAD calcolate e calcolo del MV del primo sottoblocco sulla base della SADmin; - ripetizione del calcolo della SADmin e del MV per ciascun altro sottoblocco in cui è suddiviso detto macroblocco;
- determinazione del MV del macroblocco a partire dalle elaborazioni effettuate sui rispettivi sottoblocchi;
- ripetizione del calcolo del MV per gli altri macroblocchi.
Vantaggiosamente, ogni macroblocco ha dimensione quadrata 2N x 2N e i suoi sottoblocchi sono quattro e hanno dimensione quadrata N xN .
I suddetti scopi vengono raggiunti inoltre da una architettura circuitale per effettuare una ricerca completa video del tipo full search con block -ma tching, in cui è necessario determinare il motion vector di un blocco di riferimento presente nel frame corrente di una sequenza video rispetto ad un blocco presente in un'area di ricerca del frame elaborato precedentemente al frame corrente, la cui caratteristica è di comprendere:
- due linee di caricamento dei dati rispettivamente del blocco di riferimento e del blocco di ricerca;
- una matrice di Processor Element per caricare i dati del blocco di riferimento e confrontarli con i dati del blocco di ricerca;
- una risorsa di bufferaggio per adattare l'input seriale dei dati con il loro processamento parallelo eseguito dalla matrice dei Processor Element;
- un accumulatore delle somme parziali elaborate dalla matrice dei PE;
- un Motion Vector Processor per il calcolo dei Motion Vector di detti blocchi di riferimento rispetto a detto blocco di ricerca.
Vantaggiosamente, il blocco di riferimento ha dimensione N x N e il Motion Vector Processor comprende due moduli di Minimum Distortion Detection con risorsa di memorizzazione di modo che uno permetta di calcolare i Motion Vector dei blocchi N xN e, per ogni 4 blocchi N xN , l'altro calcoli anche il MV del blocco 2N x 2N da essi costituito.
L'architettura secondo l'invenzione, avendo la caratteristica di presentare due sole linee di caricamento dei dati, unitamente all'organizzazione dei dati implementata, riduce il numero di registri occorrenti a
Potendo gestire contemporaneamente blocchi 2N x 2N e blocchi N xN relativamente a questi ultimi, rispetto allo stato dell'arte si riduce di un fattore 4 il fabbisogno di elementi di calcolo, che sono meno numerosi rispetto ai registri, ma singolarmente più complessi, e non si necessita della circuiteria di cui alla tecnica nota secondo a) e b) per la gestione del flusso dei dati, ossia Multiplexer (MUX) e relativa logica di controllo.
Breve descrizione del disegni
Ulteriori caratteristiche e vantaggi del metodo e della architettura circuitale secondo la presente invenzione risulteranno più chiaramente con la descrizione che segue di una sua forma realizzativa, fatta a titolo esemplificativo e non limitativo, con riferimento ai disegni annessi in cui:
- le figure 1A e 1B illustrano il principio generale di calcolo del MV di un blocco di riferimento N xN all'interno di un'area di ricerca di dimensioni (2p N -Y)<2 >;
- la figura 1C illustra la suddivisione secondo l'invenzione di un Macro Blocco (MB) 2N x 2N in quattro Sotto Blocchi (SB) N xN ;
- la figura 2 illustra lo schema a blocchi del funzionamento del metodo secondo l'invenzione;
- la figura 3 dettaglia una struttura globale della architettura circuitale secondo l'invenzione e le connessioni tra i diversi moduli per il caso di N = 4 , p - 4; - la figura 4 illustra uno schema funzionale della architettura di figura 3;
- la figura 5 illustra l'organizzazione dello snake di figura 4 costituito dalle matrici di PE ed SR, per il caso di N =4 , p - 4 ed M =9 ;
- la figura 6 illustra la struttura interna di un Processor Element (PE) di figure 4 e 5;
la figura 7 dettaglia la struttura del modulo AD Processor incluso nel PE di figura 6;
- la figura 8 illustra lo schema circuitale del modulo di Adder Tree di figura 4 nel caso di N - 8, M -9;
la figura 9 dettaglia la struttura del modulo doublé adder interno all'Adder Tree di figura 8;
- la figura 10 illustra la struttura generale del Motion Vector Processor (MVP) di figura 4;
la figura 11 dettaglia la struttura del modulo mdd_spo interno al MVP di figura 10;
- la figura 12 dettaglia la struttura del modulo mdd interno all'mdd_spo di figura 11;
- la figura 13 dettaglia la struttura del modulo modmin interno all'mdd di figura 12;
- la figura 14 illustra la soluzione circuitale che, applicata alla risorsa di bufferaggio, matrice di Shift Register SR di figura 3, 4 e 5, consente la programmazione dinamica del parametro p ;
- la figura 15 illustra lo schema di un source coder o codec H.263/MPEG che utilizza l'architettura di figure 3 e 4 come modulo di Motìon Estimation o modulo ME.
Descrizione di una forma realizzativa preferita
Metodo di stima del moto
Come indicato in figura 1C, il metodo secondo l'invenzione, per effettuare una FS-BMA su un macro blocco MB 2N x2N lo suddivide in suoi sotto blocchi SB N xN . A partire da questa suddivisione, l'elaborazione di un MB, ovvero la determinazione della SAD minima e del MV ad esso corrispondenti, viene attuata sfruttando i risultati di FS-BMA ottenuti per i quattro SB costituenti.
In tal modo, elaborando simultaneamente sia i MV relativi ai blocchi SB N xN che i MV relativi ai blocchi MB 2N x2N , si ottiene, relativamente ai blocchi SB N xN , una riduzione di un fattore 4 delle risorse di calcolo necessarie per gestire i formati video.
Più precisamente, uno alla volta i quattro blocchi SB di ogni blocco MB vengono processati dalla struttura di elaborazione più avanti descritta e tutte le 4 p<2 >Suiti of Absolute Difference (SAD) relative vengono inserite opportunamente in una memoria SAD.
Con riferimento alla figura 2, che rappresenta uno schema di funzionamento del metodo la memoria SAD è indicata con 4, ed ha dimensione 4 p<2 >parole, essendo p la dimensione dell'area di ricerca (fig. 1B).
La memoria 4, che è una Dual Port Ram, carica progressivamente le relative al sotto blocco SB k (k =1...4) provenienti dalla linea 5.
Più precisamente, le SAD sulla linea 5 vengono sommate ai valori ai valori provenienti, come output dalla
memoria 4 sulla linea 6a, dal sommatore 6 e il risultato di tale somma viene inserito come input nella memoria 4 attraverso la linea 6b.
Tale procedimento implementa la seguente formula, che esprime la SAD{i,j) relativa al blocco 2N x2N in funzione delle SADk(i,j) relative ai singoli SB N xN -
Le SAD relative ai blocchi SB N xN vengono rese disponibili attraverso la linea 7 per consentire la valutazione della SADmin e del relativo, MV, secondo la formula (2) sopra riportata.
Dopo aver processato i primi tre SB e con l'output delle SAD relative al quarto SB, la linea 8 fornisce le SAD relative al MB 2N x 2N che permettono di valutare il suo MV, sempre secondo la formula (2).
Struttura della architettura
L'organizzazione innovativa del flusso dei dati ora descritta viene mappata nella architettura circuitale di figura 3, indicata come un modulo di ME 100, che comprende: - un array 10, detto snake, visibile in dettaglio in figure 4-7, nel quale avvengono somme parziali dei dati in ingresso attraverso le linee 9x e 9y rispettivamente del blocco di ricerca b e del blocco di riferimento a;
- un Adder Tree 20, dettagliato in figure 8-9, che riceve le somme parziali dallo snake 10 attraverso le linee 13;
- un MV Processor 30, dettagliato in figure 10-13, che riceve attraverso la linea 5 le SAD calcolate dall 'Adder Tree 20;
- una unità di controllo 40 e contatori 50.
Con riferimento alle figure 4 e 5, è visibile la architettura sistolica del sistema di figura 3 il cui cuore è, all'interno dello snake 10, un array bidimensionale 10a di Processing Element o PE 11 collegati tra loro tramite la prima linea di ingresso 9x.
I PE 11 sono organizzati in quattro colonne 11a, 11b, 11c, 11d ed in quattro righe 11' (per N=4). Una seconda linea di ingresso, indicata con 9y, attraversa il PE 11 di ciascuna colonna 11a, 11b, 11c, 11d e, fra una colonna e l'altra, attraversa rispettivamente le colonne 14a, 14b e 14c di un array 10b di Shift Register (SR) 14, i quali rappresentano la risorsa di bufferaggio del sistema. Una linea di clock 12 fornisce il segnale di clock agli elementi 11 e 14 delle matrici 10a e 10b.
Gli array 10a e 10b, per come sono connessi in modo pipeline dalle linee 9x e 9y, costituiscono la struttura a serpente (snake) indicata con 10 in figura 3 e nelle figure 4 e 5.
Il singolo elemento PE 11 di figure 4 e 5 ha una struttura generale indicata in figura 6 e si compone essenzialmente di una unità 110 per il calcolo di una differenza assoluta con riporto e dei registri 111, 112 e 113 necessari rispettivamente alla propagazione dei dati di area di ricerca, di SB e di SAD parziale. All'interno del PE Il viene fissato un valore massimo accettabile di SAD, raggiunto il quale, nel corso del calcolo parziale, non ha più senso produrre ulteriori incrementi. Questo viene fatto limitando a un valore ragionevole il numero M di bit dell'AD Processor 110 adibito al riporto della SAD. Questo accorgimento indica al codec che comprende il modulo ME 100 la convenienza a codificare in modo intraframe (anziché tramite MV) il MB corrispondente. Tale parametro M, di numero max di bit della SAD, rientra nella serie dei parametri di configurazione hardware dell'architettura.
L'unità 110 del PE 11 di figura 6 è un Absolute Difference (AD) processor ed è illustrato in figura 7. Il modulo AD processor 110 segnala, attraverso l'uscita preset_out 115, il superamento del valore massimo rappresentabile su M bit, imponendo la propagazione di quest'ultimo attraverso il preset del registro a valle.
La stessa filosofia è stata adottata all'interno del modulo 20 di Adder Tree di figure 3 e 4, mostrato in maniera più dettagliata in figura 8. L'Adder Tree 20 accumula le somme parziali provenienti dalle righe 11' della matrice IOa di PE 11. In figura 9 è mostrato uno dei moduli doublé adder 21 di figura 8, che comprende i due sommatori 201 e 202.
All'uscita dell'Adder Tree 20 si ha sulla linea 5 il valore del SAD(n,m)conforme alla formula (1) presentata nella parte introduttiva. In tal modo si riesce ad ottenere un processing parallelo tramite la matrice 10a di PE ma con una gestione seriale del flusso di dati.
Affinché il caricamento nell'Adder Tree 20 dei blocchi di confronto nella matrice 10a di PE avvenga correttamente è necessaria una risorsa di bufferaggio che viene realizzata nella architettura secondo l'invenzione mediante la matrice 10b di Shift Register (SR) 14 di figure 4 e 5. A tali SR è richiesta soltanto una funzionalità di tipo flip-flop elementare (D-FF).
Sempre con riferimento alla figura 4, per ogni possibile coppia di coordinate (m,n) all'interno dell'area di ricerca, il Motìon Vector Processor {MVP) 30 indaga se la SAD(n,m) 5 fornitagli dall'Adder Tree 20 è minore di quelle precedenti di cui conserva il minimo in un apposito registro interno al modulo 60 di Minimum Distortion Detection MDD. In caso affermativo il MVP 30 aggiorna tale registro con il nuovo valore . Alla fine del flusso di elaborazione i registri interni dell'MVP 30 contengono così la SAD minima e le coordinate (m,n) del rispettivo MV.
In figura 10 è rappresentata la struttura interna del MVP 30 di figura 4. Il contatore cnt_in, 301 opportunamente sincronizzato scandisce, colonna dopo colonna, tutte le possibili posizioni di confronto contenute entro l'area di ricerca di SB
Analogamente, i contatori cnt_in_r 302 e cnt_in_c 303, indicano, rispettivamente, il numero di riga ed il numero di colonna della posizione di confronto, rispettando la condizione
Un primo modulo mdd_spo 304 (dettagliato in figura 11) riceve, dall'ingresso sad_in 5, la sequenza ordinata delle SAD di SB unitamente ai valori di posizione di cui sopra, provvedendo a fornire il valore della SAD minima e del MV relativo .
Preferibilmente, la posizione statica, ovvero quella caratterizzata dal MV di .coordinate nulle, in accordo con quanto previsto dagli standard, viene privilegiata attraverso la possibilità di diminuire la SAD ad essa relativa di un valore costante (parametro di ingresso della architettura) assegnabile tramite l'ingresso sad_sb_in 305.
I valori forniti dai contatori cnt in r 302 e cnt in c 303 vengono assunti come coordinate di MV, risultando utili a discriminare, tra tutte le posizi per cui si ottiene l SAD minima, quella più prossima alla posizione statica, data da cnt in _r— cnt _in _c = p . Tale funzionalità è ottenuta (figure 12 e 13), attraverso il modulo modmin 61 all'interno del modulo di Minimum Distortion Detection o MDD 60.
La generica SAD di MB viene ottenuta dalla somma delle relative quattro SAD di SB. A tale scopo è stata predisposta nel MVP 30 (fig. 10) la memoria Dual Port Ram 4 in grado di ospitare i calcoli parziali di SAD per ciascuna delle 4 p<2 >posizioni di area di ricerca.
Come ancora indicato in figura 10, la memoria 4 viene scandita sequenzialmente in lettura attraverso la porta b 307 dal contatore cnt_in 301 al fine di prelevare la SAD parziale di MB (sad_stored) e di sommarla mediante il sommatore 6 alla SAD del SB corrente prevedendo una soglia massima di calcolo. Il risultato della somma viene poi scritto in memoria 4 alla medesima locazione durante il ciclo successivo, pilotando gli indirizzi di scrittura, porta b 307, attraverso il valore di cnt_in 301 opportunamente ritardato.
Dal momento che, in relazione al primo dei quattro SB, la memoria 4 non contiene al suo interno dati significativi, è stata opportunamente predisposta una maschera 308 (and_m) in grado di annullare, presso il sommatore 6, l'addendo relativo alla SAD parziale.
Terminata la fase di elaborazione del terzo SB, la scrittura in memoria 4 non è più significativa in quanto l'uscita del sommatore 6 fornisce direttamente la SAD di MB. Tale uscita viene pertanto condotta ad un secondo modulo mdd_spo 309 che lavora, analogamente al primo 304, fornendo la SAD minima ed il relativo MV di MB.
Organizzazione del flusso dei dati
Con riferimento alla descrizione dell'architettura, di seguito viene descritto in maggior dettaglio il flusso dei dati in ingresso allo snake 10 ed il calcolo delle SAD per un blocco di riferimento NxN . L'elaborazione è divisa in una fase di preload, che è necessaria per allineare opportunamente i dati del blocco di riferimento con i dati della relativa finestra di ricerca, e una successiva fase di elaborazione.
Nella fase di preload ciascun PE{i,j) 11 di figure 4 e 5 viene caricato, con i seguenti dati:
- il blocco di riferimento N xN è caricato nella matrice 10a di PE 11 attraverso la linea 9x e il pixel a(i,j) del blocco a vi rimane immagazzinato fino al termine del calcolo di Full Search secondo le formule di (1) e (2);
- i primi dati della finestra di ricerca 3 (fig. 1B) sono inseriti nelle matrici di PE e SR 10a e 10b (fig. 4 e 5) attraverso la linea 9y.
Sia gli o(i,j) del blocco di riferimento NxN che i dell'area di ricerca sono prelevati secondo lo schema descritto più avanti. La durata di questa fase di preload é cicli di clock, al cui termine iniziano le operazioni di confronto per il blocco corrente.
Con riferimento alla figura 5, alla fine della fase di preload, durante l'ultimo ciclo, gli elementi PE(i,0) della colonna 11d elaborano la AD con /= 0,1..., N —1, relativa alla valutazione del SAD(-p -p) , mentre tutte le altre colonne 11a, 11b, 11c producono dati non significativi .
Al successivo ciclo di clock, segnalato dalla linea 12, gli elementi PE(i,l) della colonna 11c elaborano il valore
La precedente colonna 11d elabora l'AD
relativo alla valutazione del mentre le altre colonne 11a, 11b producono dati non significativi.
Notare che la presenza dei blocchi di SR 14 nella linea 9y ha consentito che i valori opportuni dei pixel b siano presenti al ciclo di clock ora esaminato nella seconda colonna 11c dell'array. Così, dopo N cicli di clock dalla fine della fase di preload, i ossia i PE 11 dell'ultima colonna 11a, forniscono all'Adder Tree 20 le N somme parziali
L'Adder Tree realizza la somma di queste somme parziali
calcolando
Dopo 2 p cicli tutti i SAD(n,-p) , con -p ≤ n ≤ p - 1 , sono pronti e, prima di iniziare l'elaborazione della nuova colonna del SAD(n,-p 1), è necessario attendere N - 1 cicli di clock per ottenere nuovamente l'allineamento fra i dati del blocco di riferimento a e quelli della relativa area di ricerca b .
Tuttavia, è importante notare che l'array 10 di figura 5 é continuamente riempito dai dati della finestra di ricerca, ossia non c'è interruzione nel flusso di dati in ingresso tra l'elaborazione di una finestra di ricerca e la consecutiva.
Tutti i passi della fase di elaborazione sopra descritta vengono eseguiti 2p volte per coprire l'intera finestra di ricerca 3, prima di iniziare la nuova elaborazione per il successivo blocco di riferimento a.
In particolare, il primo pixel b dell'i-esima area di ricerca 3 si trova in ingresso all'array 10 nel ciclo seguente l'ingresso dell'ultimo pixel b della (i-1)-esima area di ricerca.
Questo approccio semplifica la gestione della memoria di frame e in particolare l'interfaccia tra l'architettura secondo l'invenzione e la memoria di frame rispetto alle architetture presenti in letteratura. Infatti, il caricamento dell'area di ricerca é realizzato attraverso un solo bus, la linea 9y, prendendo i dati direttamente dalla memoria di frame, evitando così l'uso di ulteriori strutture di memoria.
Inoltre, l'approccio sopra descritto consente una considerevole riduzione della complessità delle matrici 10a e 10b di PE e SR, che rappresentano il contributo maggiore all'area di una struttura sistolica pipeline, a cui è richiesta solo la funzionalità di flip-flop elementare.
È importante notare che l'architettura secondo l'invenzione non sfrutta l' overlap tra aree di ricerca relative a blocchi di riferimento consecutivi poiché la piccola riduzione di banda nell'accesso alla memoria di frame è pagata con un sostanziale incremento della complessità hardware.
L'architettura secondo l'invenzione è caratterizzata quindi da un flusso di dati di ingresso continuo con un throughput di 1 /Ta dove Τα , che é il tempo richiesto per comparare il blocco di riferimento a con quelli di confronto nell'area di ricerca 3, è pari a Τα - (2p+ N-1)<2 >Tclock , avendo indicato con (2p N -1) il numero di pixel costituenti una finestra di ricerca di offset p per un blocco NxN e con Klok il periodo del clock di sistema.
In Tabella 1 viene riportata la temporizzazione dell'architettura proposta facendo riferimento alle specifiche dei più importanti formati video, che sono riassunte in Tabella 2. Questi valori, valutati per il caso tipico di N =8, p =16 e Ν = \6 , P = 16, mostrano come l'architettura secondo l'invenzione è in grado di supportare tutti i formati video presenti negli standard internazionali di codifica video a frequenze di lavoro facilmente ottenibili con le attuali tecnologie CMOS.
Tabella 1
Tabella 2
Programmazione dinamica delle dimensioni dell'area di ricerca In una forma realizzativa preferita della presente architettura è prevista una struttura con la quale è possibile programmare dinamicamente il valore di p entro un intervallo 1,Pmax] con definibile in sede di progettazione hardware secondo quanto precedentemente descritto. Tale potenzialità è ottenuta essenzialmente modificando la risorsa di bufferaggio 10b di figure 4 e 5 nel modo mostrato in figura 14.
Nello schema di figura 14, pmax corrisponde al valore di P in (1). Attraverso (N-1) MUX 18 opportunamente controllati, è possibile modificare arbitrariamente la lunghezza utile delle (N-1) catene di SR 14 viste dalla matrice 10a di PE 11. Come risulta dalla figura 14, quando il MUX 18 consente il passaggio del segnale in posizione h, dove h varia nell ' intervallo [0,2pmax - 2] , significa che la catena effettiva di shift register SR 14 è costituita da h elementi di ritardo, e dunque la struttura è in grado di gestire una finestra di ricerca pari a ( -ρ,ρ) con p-(h+l)/2 se h è dispari (finestra simmetrica), e (-ρ,ρ -1) con p-h/2+I se h è pari (finestra asimmetrica).
Ciascun MUX 18 è caratterizzato da 2pmax —1 vie, il cui controllo è comune a tutti gli (N -1) MUX tramite il segnale di ingresso p_select.
La possibilità di programmare dinamicamente l'area di ricerca offre i seguenti vantaggi:
- selezionando p - 1, è possibile realizzare la modalità di ricerca a metà pixel (Hai f -pel) prevista dagli standard per aumentare l'accuratezza della previsione;
- è possibile raggiungere in maniera programmabile un compromesso fra la dimensione dell'area di ricerca, quindi della qualità della predizione, e la possibilità di gestire formati di immagine più grandi mantenendo le frequenze di lavoro del circuito a valori facilmente ottenibili con le attuali tecnologie CMOS.
In particolare, nel caso dell'architettura secondo l'invenzione vengono consentite, in maniera programmabile dall'utente, le configurazioni relative ai casi di pratico interesse pmax - 16 e rispettivamente N=8 e N=16 che sono mostrate in Tabella 3 :
Tabella 3
Dall'analisi della tabella 3 si evince come, per N = 8, è data la possibilità:
- alla frequenza di lavoro di 101 MHz anziché 289 MHz, di elaborare un formato 4CIF @ 30 frame/s regolando semplicemente il valore di p da 16 a 8;
- alla frequenza di lavoro di 182.7 MHz anziché 420 MHz per N = 16 di elaborare un formato 16CIF @ 30 frame/s riducendo semplicemente il valore di p da 16 a 8.
Considerando il caso di pratico interesse di pmax =16 e con h che assume solo i valori pari nel suo intervallo di variazione, volendo permettere la regolazione dinamica di p con passo unitario nel range [1,P_ =16], la complessità hardware aggiuntiva in termini di gate equivalenti è stata stimata nell'ordine del 6%. Di contro, nei casi di interesse pratico è possibile dimezzare il numero dei valori permessi per p all'interno del medesimo range, riducendo la complessità hardware aggiuntiva al 3%.
È bene sottolineare anche come tale soluzione sia una caratteristica della risorsa di bufferaggio 10b che è indipendente dalla particolare organizzazione del flusso dei dati e pertanto è applicabile a qualsiasi architettura sistolica per FS-BMA.
Struttura del CODER
In figura 15 è rappresentata l'organizzazione del flusso dei dati e della memoria di un codificatore 90, o codec, conforme allo schema proposto dagli standard H.263 ed MPEG, che utilizza l'architettura secondo l'invenzione di figura 4 come modulo di ME, indicato con 100. Durante il generico istante k i dati in ingresso al blocco di ME 100 sono costituiti dai blocchi di riferimento del frame corrente lk , proveniente da una sorgente esterna 92, e dai blocchi di confronto del frame ricostruito Ik-1 che è invece immagazzinato nella memoria 93 (o 94) della Frame Memory 95 da cui vengono prelevati secondo una scansione tipo ras ter.
Contemporaneamente nella memoria 94 (o 93) viene memorizzato il frame Ik che contiene i blocchi di confronto per il frame successivo Ik+1 . All'arrivo di Ik+1 il ruolo delle memorie 93 e 94 viene invertito.
La dimensione delle memorie 93 e 94, ognuna delle quali contiene un intero frame, è direttamente legata al formato dell'immagine che viene gestito, ad esempio per un formato CIF è di 101376 byte.
Le memorie 93 e 94 sono organizzate con parole di 16 bit in cui gli 8 MSB rappresentano il pixel n-mo mentre gli 8 LSB rappresentano il pixel successivo (n+l-mo,): ciò consente di dimezzare il tempo di accesso che nel caso di un formato di immagine CIF per N = 8e p =16 è di 27 ns.
Come si rileva da questa analisi l'architettura secondo l'invenzione si integra molto bene con lo schema del source coder proposto dagli standard garantendo una semplice gestione del flusso dei dati e della memoria.
ESEMPI
L'architettura secondo l'invenzione è stata implementata in tecnologia CMOS a 0.25 μm per due casi di interesse pratico, relativi rispettivamente alla elaborazione dei formati CIF (N =8) e 4CIF { N = 16) a 30 frame/s per un'area di ricerca di -16/+15 che corrisponde a p = 16. Per la realizzazione dei due circuiti è stato utilizzato un approccio di progetto top-down basato su un linguaggio di descrizione dell' hardware ad alto livello, il VHDL (Very high-speed integrated-circuit Hardware Description Language) che ci ha consentito di ottenere una descrizione RTL dell'architettura flessibile ed indipendente dalla tecnologia. Il progetto a livello di gate è stato realizzato con programmi di sintesi logica per una tecnologia CMOS a 0.25 μm. Ad ogni passo della fase di progetto il modello VHDL è stato verificato confrontandone i risultati con quelli di una simulazione fatta a partire da un modello Jbit-true del circuito scritto con linguaggio di programmazione C++.
Nel caso del formato CIF, N = 8 e p = l6 , è stata ottenuta un area del core di 1.5 mm<2 >corrispondente a una complessità di 29 Kgate più 9 Kbit di DPRAM ed una frequenza di clock di 72 MHz. Nel caso del formato 4CIF, N = 16 e p = 16, è stata ottenuta un area del core di 3.84 mm<2 >per una complessità di circa 94 Kgate per una frequenza di clock di 105 MHz.
Questi risultati, insieme alle funzionalità aggiuntive implementate, riassumono efficacemente le innovazioni ed i miglioramenti introdotti dalla architettura secondo l'invenzione nei confronti dello stato dell'arte delle architetture per FS-BMA rispetto al quale si pone in una posizione di evidente superiorità.
La descrizione di cui sopra di una forma esecutiva specifica è in grado di mostrare l'invenzione dal punto di vista concettuale in modo che altri, utilizzando la tecnica nota, potranno modificare e/o adattare in varie applicazioni tale forma esecutiva specifica senza ulteriori ricerche e senza allontanarsi dal concetto inventivo, e, quindi, si intende che tali adattamenti e modifiche saranno considerabili come equivalenti della forma esecutiva esemplificata. I mezzi e i materiali per realizzare le varie funzioni descritte potranno essere di varia natura senza per questo uscire dall'ambito dell'invenzione. Si intende che le espressioni o la terminologia utilizzate hanno scopo
puramente descrittivo e per questo non limitativo.
Breve descrizione dei simboli riportati nelle figure
Indichiamo di seguito il significato di alcuni parametri ricorrenti nelle figure riportate:
- N è la dimensione caratteristica della matrice di PE. - p è la dimensione caratteristica dell'area di ricerca. - K è il numero di bit su cui è rappresentato un pixel. - M è il numero di bit su cui è rappresentata una SAD. - NCrc è il numero di bit su cui è rappresentata una coordinata di Motion Vector.
Glossario
AP - Advanced Prediction mode
AD - Absolute Difference
BMA - Block Matching Algori thm
CMOS - Complementary Metal Oxide Silicon
DPRAM - Dual Port RAM
FS - Full search
HDTV High Defini tion TeleVieion
ISDN Integrated Service Digi tal Network
ISO - International Standard Organization
ITU - International Telecommunication Union
ITU-T - ITU Telecommunication standardization sector
JPEG Joint Photographic Experts Group
MB - Macro Blocco
MDD - Minimum Distortion Detection
ME - Motion Estimation,
MPEG Motion Picture Experts Group
MUX - Mul tiplexer
MV - Motion Vector
MVP - Motion Vector Processor
PE - Processor Element
RAM - Random Access Memory
RTL - Register Transfer Level
SAD - Sum of Absolute Difference
SB - Sotto Blocchi
UMV - Unrestricted Motion Vector
VLSI - Very Large Scale Integration
VHDL - VHSIC Hardware Description Language
VHSIC - Very High Speed Integrated Circuit

Claims (17)

  1. RIVENDICAZIONI 1. Metodo di stima del moto in una sequenza video tramite una ricerca completa video del tipo full search con blockmatching, caratterizzato dal fatto che detta full search con block-matching su un macroblocco (MB) viene effettuata a partire dalla full search con block-matching relativa a una pluralità di suoi sottoblocchi (SB).
  2. 2. Metodo di stima del moto secondo la rivendicazione 1, in cui sono previste le fasi di: - in una sequenza video, suddivisione del frame video corrente (1), che compone detta sequenza, in una pluralità di macroblocchi di riferimento (MB), - suddivisione di ogni macroblocco (MB) in una pluralità di suoi sottoblocchi (SB); - per ogni macroblocco, individuazione di un'area di ricerca (3) in un frame video (2) elaborato precedentemente al frame corrente (1); - calcolo di una Sum of Absolute Difference (SAD) tra i pixel di un primo sottoblocco (SB) di riferimento del frame corrente (a) e tutti i sottoblocchi (SB) della stessa dimensione (b) presenti nell'area di ricerca (3); - determinazione della SADmin tra tutte le SAD calcolate e calcolo del motion vector (MV) del primo sottoblocco (SB) sulla base di detta SADmin; ripetizione del calcolo della SADmin e del motion vector (MV) per ciascun ulteriore sottoblocco (SB) in cui è suddiviso detto macroblocco (MB); - determinazione del MV del macroblocco (MB) a partire dalle elaborazioni effettuate sui rispettivi sottoblocchi (SB); - ripetizione del calcolo del MV per gli altri macroblocchi.
  3. 3. Metodo di stima del moto secondo le rivendicazioni 1 o 2, in cui detto macroblocco ha dimensione quadrata 2N x2N e i suoi sottoblocchi (SB) sono quattro e hanno dimensione quadrata N xN .
  4. 4. Metodo come da rivendicazioni precedenti, in cui la posizione centrale di detta area di ricerca (3) corrisponde al MV di coordinate nulle.
  5. 5. Architettura circuitale per effettuare una ricerca completa video del tipo full search con block -ma tching, in cui è necessario determinare il motion vector {MV) di un blocco di riferimento ( a ) presente nel frame corrente (1) di una sequenza video rispetto ad un blocco (b) presente in un'area di ricerca (3) del frame elaborato precedentemente (2) al frame corrente (1), caratterizzata dal fatto di comprendere - due rispettive linee di caricamento dei dati (9x, 9y) del blocco di riferimento {a) e del blocco di confronto ( b ) ; - una matrice (10a) di Processor Element (11) per caricare i dati di detto blocco di riferimento (a) e confrontarli con i dati di detto blocco di confronto { b); - una risorsa di bufferaggio (10b) per adattare l'input seriale (9y) dei dati con il loro processamento parallelo (9x, 9y) eseguito dalla matrice (10a) dei Processor Element (11); - un accumulatore (20) delle somme parziali elaborate dalla matrice (10a) dei PE (11); - un Motion Vector Processor (30) per il calcolo dei Motion Vector (MV) di detto blocco di riferimento (a) rispetto a detti blocchi di confronto ( b).
  6. 6. Architettura circuitale come da rivendicazione 5, in cui detto blocco di riferimento {a) ha dimensione N xN e detto Motion Vector Processor (30) comprende due moduli (60) di Minimum Distortion Detection con risorsa di memorizzazione di cui uno permetta di calcolare i Motion Vector (MV) dei blocchi N xN e l'altro, per ogni 4 blocchi N xN , calcola anche il MV del blocco 2N x 2N da essi costituito.
  7. 7. Architettura circuitale come da rivendicazione 5 o 6, in cui detta area di ricerca ha dimensione p e detta risorsa di bufferaggio (10b) comprende mezzi per programmare dinamicamente il valore di detta dimensione p entro un range [1, pmax] .
  8. 8. Architettura come da rivendicazione 7, in cui detta risorsa di bufferaggio (10b) è realizzata mediante una catena di Shift Register (14).
  9. 9. Architettura circuitale come da rivendicazione 8, in cui detti mezzi di programmazione dinamica del parametro p comprendono (N-1) Multiplexer (18) e mezzi di controllo di detti Multiplexer atti a modificare la lunghezza utile delle (N-1) catene di SR (14) di detta risorsa di bufferaggio (10b) viste da detta matrice (10a) di PE (11). 10.
  10. Architettura come da rivendicazione 5 o 6, in cui detta risórsa di bufferaggio (10b) ha una struttura basata su memorie RAM opportunamente controllate. lì.
  11. L'architettura, come da rivendicazione 7, in cui la dimensione di detta risorsa di bufferaggio (10b) è (N-l)(2p-2).
  12. 12.Architettura circuitale come da rivendicazione 5 o 6, in cui è prevista un'organizzazione pipeline del flusso dei dati provenienti da dette due linee di caricamento (9x, 9y).
  13. 13. Architettura come da rivendicazione 5, in cui detta matrice (10a) dei PE (11) implementa una funzione di costo scelta tra SAD, MAD, MSE per gli algoritmi di Block Matching .
  14. 14. Architettura come da rivendicazione 6, in cui detti moduli di Minimum Distortion Detection (60) calcolano, a parità di funzione di costo minimo, il MV a norma minima.
  15. 15.Architettura come da rivendicazione 6, in cui il flusso interno dei dati è costituito, per ogni blocco N xN , dall'alternarsi di una fase di Preload della durata di N<2>+(N-l)(2p-2) cicli di clock e di una fase di elaborazione di 2p(2p+N-l) cicli di clock, con un overlap di un ciclo di clock tra due blocchi N xN consecutivi.
  16. 16. Codificatore o codec che utilizza un modulo di stima del moto o ME (100) avente l'architettura secondo le rivendicazioni da 5 a 14.
  17. 17. Codificatore secondo la rivendicazione 15, in cui in un generico istante ( k ) i dati in ingresso a detto modulo di stima del moto (100) sono costituiti dai blocchi di riferimento (a) del frame corrente (1), il quale proviene da una sorgente esterna (92), e dai blocchi di confronto ( b ) del frame elaborato precedentemente (2) il quale è immagazzinato in una Frame Memory (95), che è organizzata con parole di 16 bit in modo da dimezzare la frequenza di accesso, a parità di frequenza interna di detto modulo di stima del moto (100).
ITPI990025 1999-04-19 1999-04-19 Metodo di stima del moto in una sequenza video mediante tecnica diblock-matching con full search e architettura programmabile a bassa IT1309846B1 (it)

Priority Applications (3)

Application Number Priority Date Filing Date Title
ITPI990025 IT1309846B1 (it) 1999-04-19 1999-04-19 Metodo di stima del moto in una sequenza video mediante tecnica diblock-matching con full search e architettura programmabile a bassa
AU15136/01A AU1513601A (en) 1999-04-19 2000-04-19 Method of block-matching motion estimation with full search in a video sequence and low complexity/high throughput architecture
PCT/EP2000/003546 WO2001008402A2 (en) 1999-04-19 2000-04-19 Method of block-matching motion estimation with full search in a video sequence and corresponding architecture

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
ITPI990025 IT1309846B1 (it) 1999-04-19 1999-04-19 Metodo di stima del moto in una sequenza video mediante tecnica diblock-matching con full search e architettura programmabile a bassa

Publications (2)

Publication Number Publication Date
ITPI990025A1 true ITPI990025A1 (it) 2000-10-19
IT1309846B1 IT1309846B1 (it) 2002-02-05

Family

ID=11394388

Family Applications (1)

Application Number Title Priority Date Filing Date
ITPI990025 IT1309846B1 (it) 1999-04-19 1999-04-19 Metodo di stima del moto in una sequenza video mediante tecnica diblock-matching con full search e architettura programmabile a bassa

Country Status (3)

Country Link
AU (1) AU1513601A (it)
IT (1) IT1309846B1 (it)
WO (1) WO2001008402A2 (it)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116074533A (zh) * 2023-04-06 2023-05-05 湖南国科微电子股份有限公司 运动矢量预测方法、系统、电子设备及存储介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI110909B (fi) 2001-09-06 2003-04-15 Nokia Corp Menetelmä liike-estimoinnin suorittamiseksi videokoodauksessa, videokoodausjärjestelmä sekä videokoodauslaite
US7519115B2 (en) * 2003-03-31 2009-04-14 Duma Video, Inc. Video compression method and apparatus

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5477278A (en) * 1991-12-24 1995-12-19 Sharp Kabushiki Kaisha Apparatus for detecting motion of moving picture
US5598514A (en) * 1993-08-09 1997-01-28 C-Cube Microsystems Structure and method for a multistandard video encoder/decoder

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116074533A (zh) * 2023-04-06 2023-05-05 湖南国科微电子股份有限公司 运动矢量预测方法、系统、电子设备及存储介质
CN116074533B (zh) * 2023-04-06 2023-08-22 湖南国科微电子股份有限公司 运动矢量预测方法、系统、电子设备及存储介质

Also Published As

Publication number Publication date
AU1513601A (en) 2001-02-13
WO2001008402A3 (en) 2003-04-17
WO2001008402A2 (en) 2001-02-01
IT1309846B1 (it) 2002-02-05

Similar Documents

Publication Publication Date Title
TW480885B (en) Fast motion-compensated video frame interpolator
De Vos et al. Parameterizable VLSI architectures for the full-search block-matching algorithm
RU2251820C2 (ru) Экстраполяция вектора движения для перекодировки видеопоследовательности
KR100486249B1 (ko) 움직임 추정 장치 및 탐색영역에서 레퍼런스매크로블록창의 스캐닝 방법
KR100534207B1 (ko) 비디오 부호화기의 움직임 추정기 및 그 방법
US7236634B2 (en) Image encoding of moving pictures
JP3089165B2 (ja) 動きベクトル探索装置
JPH09179987A (ja) 動きベクトル検出方法及び動きベクトル検出装置
JP2002511687A (ja) 動き推定システムおよび方法
JPH07193823A (ja) 映像データ・ブロック変換システム
CN102055947A (zh) 使用运动估计和补偿的帧速率转换
US8514937B2 (en) Video encoding apparatus
JPH09102954A (ja) 1つまたは2つの予測ブロックからブロックの画素値を計算する方法
US6332002B1 (en) Motion prediction apparatus and method
Wang et al. Zero waiting-cycle hierarchical block matching algorithm and its array architectures
ITPI990025A1 (it) Metodo di stima del moto in una sequenza video mediante tecnica diblock-matching con full search e architettura programmabile a bassa
US20080013632A1 (en) Integer pixel motion estimation system, motion estimation system for quarter-pixel luminance, motion estimation system for quarter-pixel chrominance, motion estimation system for combined luminance, motion estimation system for combined lumance and chrominance, and motion estimation system for quarter-pixel luminance and chrominance
US5485214A (en) Dual bus dual bank architecture for motion compensation
Pirsch et al. VLSI architectures for block matching algorithms
WO2011068330A2 (ko) 인터 예측 프레임 생성장치 및 그 생성방법, 및 거기에 이용되는 참조 프레임 보간장치 및 그 방법
JP2008136177A (ja) 動き検出装置、MOS(metal−oxidesemiconductor)集積回路および映像システム
KR20080102947A (ko) 가변 블록 움직임 추정을 위한 sad 계산 방법 및 장치
KR100204087B1 (ko) 전역탐색 블럭정합 움직임 추정기
KR100240620B1 (ko) 양방향의 반화소 움직임 추정을 위한 대칭 탐색 윈도우를 형성하는 방법 및 장치
KR100262962B1 (ko) 움직임 추정방법 및 장치