Newsgroup: it.comp.software.divx
Titolo: algoritmo di deinterlacciamento miracoloso?

vorrei portare alla vostra attenzione questa pagina:
http://www.compression.ru/video/deinterlacing/index_en.html
questo gruppo russo (MSU Graphics & Media Lab) dice di avere
sviluppato un filtro per Virtualdub (che purtroppo non e'
scaricabile... "currently filter is unavailable due to contract
limitations"); pare che il progetto abbia richiesto molti mesi
e che usi una "combinazione bilanciata di altri 8 filtri"...
(tra l'altro mi chiedo se non abbiano usato materiale open
source... tipica situazione...)
ebbene, guardate le immagini della bandiera americana;
la prima sarebbe l'immagine sorgente, la seconda (a sinistra)
sarebbe quella ottenuta dalla sorgente applicando il loro
algoritmo, e la terza (a destra) sarebbe ottenuta applicando
"Smart Deinterlace" (e' un filtro open source per Virtualdub).
voi cosa ne pensate?
sinceramente sono molto scettico! l'immagine che pretendono
di avere ottenuto con il loro algoritmo e' piu' definita
dell'originale; non mi riferisco solo al fatto che ha
eliminato in modo pressoche' perfetto tutte (e sole) le
seghettature, ma contiene proprio piu' informazione, piu'
dettagli...
ho analizzato velocemente le immagini, ho applicato tutti
i filtri della libreria "postproc" (una sotto-libreria
"interna" di libavcodec) e quello che mi sembra il miglior
risultato e' molto simile a quello presentato come "Smart
Deinterlace"... ma soprattutto, in ogni caso, ricomprimendo
i risultati ottengo dimensioni simili (leggermente piu' basse
della sorgente)
insomma, non sono per niente convinto che la raccontino
giusta...
l'unico modo per sapere come stanno veramente le cose,
sarebbe di poter avere il filtro a disposizione e poterlo
testare con le nostre manine :-)

 insomma, non sono per niente convinto che la raccontino giusta...
Anch'io la vedo un po' improbabile. Però se davvero è così buono, direi
che va implementato su Mjpeg2Divx. ;P
-- 
Saluti, Kap - 
www.lordkap.it
 - ¥'s Fan #01 - 
www.pianetalibri.com
 - VCC
L'uomo più forte sulla terra è quello che è più solo. - Henrik Ibsen

testare con le nostre manine :-)
Non me ne intendo per niente, ma č possibile una cosa del genere? :
- viene preso un semiquadro, e viene fatto il blend delle righe (pari)
- viene preso il semiquadro successivo, e blend delle righe (dispari)
- i due semiquadri vengono sovrapposti e ri-blendati
Cosa ne uscirebbe?
-- 
Paradoxally,
Jan AxHell

 che va implementato su Mjpeg2Divx. ;P
se ne fossi capace, mi metterei subito al lavoro :-)
vorrei pero' spiegare meglio perche' ho dei seri dubbi sulla genuinita'
degli esempi mostrati in quella pagina.
un filtro come "Smart Deinterlace" di Donald Graft e simili
( 
http://neuron2.net/smart/smart.html
 ) e' composto essenzialmente di
due componenti:
(1) un test che analizza le righe e rileva movimenti (cioe' le parti
    seghettate, dovute a un movimento verificatosi tra i due campi);
(2) un metodo per eliminare le seghettature nei segmenti in cui il
    risultato del test (1) risulti verificato.
i vari algoritmi si differenziano per il modo in cui assolvono a
questi due compiti (blending, interpolating, linear cubic ecc).
lasciando da parte il secondo, non credo che si possa definire un
test (1) che non sbagli mai... l'algoritmo dovrebbe capire cosa sono
gli oggetti rappresentati nel filmato, e se e' normale che presentino
una certa discontinuita' in una certa posizione... in altre parole,
dovrebbero sapere come e' fatto il mondo... e' impossibile (in certi
casi puo' essere difficile anche per un essere umano).
quindi il test (1) fallira' in una certa percentuale di casi;
gli errori saranno di due tipi: falsi positivi e falsi negativi;
nel caso di una immagine statica (ad esempio, di un filmato
progressivo) ci saranno solo falsi positivi.
questo e' il caso, ad esempio, dell'immagine che compare sotto
l'esempio della bandiera in quella pagina ("The next example is fragment
of frame No. 92 from Schumacher sequence");
come si puo' notare, il risultato di "Smart Deinterlace" e' del tutto
verosimile, perche' tutte le discontinuita' delle ombreggiature dei
numeri vengono rilevate come movimenti (falsi positivi!) e l'immagine
viene sciupata da interpolazioni che non erano necessarie
(questo e' il motivo per cui non bisognerebbe mai applicare filtri
di deinterlacciamento se sappiamo a priori che i frame sono
progressivi).
ma anche in quel caso, il loro algoritmo si comporta in maniera
perfetta, sembra che il loro test capisca chiaramente che non si
tratta di movimento, ma di una caratteristica intrinseca degli oggetti,
e quindi l'immagine non viene sciupata...
secondo me e' impossibile!

 Cosa ne uscirebbe?
niente di buono :-)
non ho chiaro cosa intendi con "fare il blend delle righe", comunque
tieni presente che la parte piu' difficile e delicata di un procedimento
di deinterlacciamento e' quella di rilevare la presenza di movimento...
ti faccio un esempio.
immagina una trasmissione televisiva, interlacciata.
in un frame 720x576, composto da due semiquadri, le righe pari e quelle
dispari rappresentano due istanti temporali leggermente diversi
(20 millisecondi).
se prendi un frame di una scena movimentata, vedrai le tipiche
seghettature.
se prendi un frame di una scena statica (telecamera fissa, e nessuno
che si muove) non vedrai nessuna seghettatura: e' come se si trattasse
di un filmato progressivo! questo perche' nei 20 millisecondi che
separano i due campi, la scena ripresa dalla telecamera non e'
cambiata per niente.
ecco, un buon filtro di deinterlacciamento, in questo ultimo caso,
non dovrebbe fare niente! qualsiasi intervento faccia, sarebbe di troppo.
(purtroppo, nei casi reali, come ho spiegato in un altro post,
qualche intervento verra' fatto e si perdera' cosi' un po' di
definizione... ma non moltissima...)
ora fai un po' di attenzione :-) perche', anche nel caso in cui
un frame contiene movimento, il filtro non deve "pasticciare" su
tutte le righe del frame in modo uniforme e incondizionato, ma
dovrebbe modificare solo le parti che si sono mosse e che risultano
"seghettate"; tutto il resto non deve essere toccato!
altrimenti, non converrebbe applicare un filro di deinterlacciamento,
si farebbe prima a buttare via uno dei due campi, e amen...
se non sono stato chiaro, fammi sapere.

 
Secondo me esce 'na ciofeca. Il blend per defiizione mescola i pixel
adiacenti e tu stai mescolando pixel dello stesso frame temporale, e su
porzioni di filmato diverso. Esattamente il contrario di quello che un
filtro di deinterlacciamneto dovrebbe fare: operare su frame temporalmente
diversi e su porzioni di filmato adiacenti.
bye
-- 
HomePage e FAQ: 
http://giubbe.altervista.org
Inutile scrivere in privato, non ricevo le email

 e quindi l'immagine non viene sciupata...
Anche a me ha dato la stessa impressione, però sono più cauto. Troppo
spesso ho visto realizzate cose che credevo non fossero possibili. Gli
concedo il benificio del dubbio, dopo che l'hanno rilasciato farò sempre in
tempo a definirlo 'na ciofeca! ^_^
Bye


 adiacenti
si', il blend e' quello descritto qui:
http://www.benis.it/dvd/pal/pal.htm#provenienza
 televisiva
il metodo e' descritto su un rettangolo che sta ruotando;
pero' c'e' da fare una considerazione importante: applicando
quel metodo a tutti i frame (e su tutto il frame) si perderebbe
molta definizione; per capirlo, basta considerare un frame di
una scena statica: dato che non contiene movimenti, e' gia' a
posto cosi' com'e', e sfrutta tutta la risoluzione di entrambi
i campi.
se pero' gli si applica il metodo (raddoppiamento dell'altezza
dei campi per interpolazione, e media aritmetica delle due
parti) si perde molta definizione...
quindi un compito fondamentale di un filtro e' di individuare
le zone di movimento, e agire solo su quelle. (su un frame
statico dovrebbe scoprire che non ci sono parti in movimento
e non dovrebbe quindi fare niente).
piu' sotto, nella stessa pagina, Benny mostra una finestra
dello "smart deinterlace" che ha una opzione "Show motion
areas...visualizza a scopo di test dove interviene il filtro."
che e' appunto cio' che voglio sottolineare.
c'e' anche una "soglia" che immagino serva a regolare il
metodo di rilevazione dei movimenti (ad esempio, se mi accorgo
che su un particolare filmato, il filtro interviene troppe volte
dove non dovrebbe intervenire, oppure, al contrario, se non
interviene dove dovrebbe, modifico un po' la soglia per vedere
se la situazione migliora...)
da quello che ho capito, il termine "blend" indica un
miscelamento tra righe adiacenti (o meglio, tra segmenti di
linee adiacenti; ho visto un filtro che "shifta" i segmenti
da miscelare...).
ad esempio, se numeriamo le righe: 0, 1, 2, ...
un intervento sulla riga 1 consiste nel miscelare una parte
della riga 1 con la riga 0, e mettere il risultato del
miscelamento sulla riga 1.
pero', ci sono altri filtri (denominati "interpolating"), che
sostituiscono parte della riga 1 con il risultato del
miscelamento della riga 0 con la riga 2 (in pratica, le parti
in movimento della riga 1 vengono buttate via); naturalmente
questo comporta una perdita di definizione, ma limitata alle
sole parti in movimento.

 tempo a definirlo 'na ciofeca! ^_^
ok.
ma una cosa che mi sta molto a cuore e' questa: se io mostro
pubblicamente (come lo e' una pagina web) qualche risultato di una
prova, mi aspetto che qualcuno legittimamente mi dica "scusa, vorrei
controllare" e devo essere pronto a metterlo nelle condizioni di
ripetere la prova, fornendogli i dettagli di come ho ottenuto quei
risultati.
se il filtro VirtualDub non e' disponibile per limiti di contratto,
non dovrebbero avere problemi a fornire un semplice eseguibile che
prenda come argomento un'immagine e salvi l'immagine che risulta
applicando il loro algoritmo.
un tale eseguibile sarebbe utilizzabile solo per fare dei test...
piu' tardi gli scrivero' per chiedergli se qualcosa del genere e'
possibile

 possibile
ok, ho appena spedito la mia gentile richiesta; se risponderanno
qualcosa faro' sapere

di deinterlacciamento e' quella di rilevare la presenza di movimento...
ALT: no, il deinterlacciamento ricompone le righe pari e dispari di
due semiquadri per farne uno unico. Che poi una trasmissione
televisiva consti in 50/60 momenti temporali differenti è diverso da
ciò a cui mi riferivo, e presumo di ci siano filtri diversi a seconda
del tipo di sorgente che si vuole deinterlacciare.
Allora:
- io mi riferivo alla sola ipotesi della bandiera con più roba
dell'originale e teorizzavo come poteva essere possibile.
- pensavo a fotogrammi cinematografici (quindi 2 semiquadri non sono
attimi temporali sfasati, ma due metà di una unica immagine fissa)
- per blend mi riferivo al lavoro di interpolazione (?) che applicano
gli emulatori di videogiochi (
www.mame.net
) per rimuovere le
scanlines, che sono appunto l'effetto dell'interlacciamento dei
monitor arcade -> di fatto un'immagine così trattata ha "più roba".
-- 
Paradoxally,
Jan AxHell

diversi e su porzioni di filmato adiacenti.
No, questo è vero solo per trasmissioni televisive. I frame dei film
cinematografici vengono divisi singolarmente in due semiquadri che
appartengono allo stesso momento "fisso" (o coppia di Hz se vogliamo).
Non c'è nessun movimento tra un semiquadro cinematografico e il
successivo, c'è solo con il terzo semiquadro, ma quello fa già parte
del ciclo di (de)interlacciamento successivo.
-- 
Paradoxally,
Jan AxHell

sole parti in movimento.
Non so se ti puņ servire, ma forse puoi dare un'occhiata ai sorgenti
del Mame che ti ho indicato nell'altro post, sono liberamente
scaricabili, ma non so quanto sia facile individuare la parte che si
occupa del filtraggio delle immagini. 
www.mame.net
-- 
Paradoxally,
Jan AxHell

 del Mame che ti ho indicato nell'altro post,
ok, se riesco a individuare facilmente la parte che effettua tale
filtraggio e se riesco a capirci qualcosa...
grazie

 monitor arcade -> di fatto un'immagine così trattata ha "più roba".
con mame devo averci giocato (ma poche volte) qualche anno fa, ma
non ho presente questa cosa delle scanlines

non ho presente questa cosa delle scanlines
In linea teorica, da quel che ho capito, se emuli alla perfezione un
coin-op (cioč scrivi componenti software che fanno esattamente quello
che fanno le componenti hardware di un cabinato), ottieni una immagine
"a righe" (che perň si vedono solo sul monitor VGA, mentre se fai un
output a TV non le vedi): se vuoi *puoi* toglierle settando un flag
(di fatto un comando tipo mame.exe -noscanlines nomegioco) che (credo)
interpola l'immagine, e non vedi piů le scanlines nemmeno su VGA.
Tuttavia esistono ulteriori flag che attivano tipi di filtraggio
diversi, con effetti piů o meno gradevoli (uno mi pare si chiami
Eagle, poi forse Scale2X, e altri).
-- 
Paradoxally,
Jan AxHell

Vertical Scanlines - This simulates the lower resolution arcade monitors.
Tuttavia in questo caso il Nebula agisce all'opposto del Mame, ovvero
*simula* le scanlines se richiesto, e ne deduco che non emuli
realmente la parte video come fa il Mame.
Però gli altri filtri sono gli stessi a occhio.
-- 
Paradoxally,
Jan AxHell

 appartengono allo stesso momento "fisso" (o coppia di Hz se vogliamo).
Ma noi stiamo parando di interlacciamento, quindi devono coesistere due
fattori:
* esistenza di due semiquadri separati
* sfasamento temporale dei due semiquadri (in pal mi sembra che sia di
20ms)
Quello che dici tu è "l'interlacciamento" tipicamente usato nei DVD per
mantenere la compatibilità con le TV interlacciate. In questo caso lo
sfasamento è zero e si usano tutt'altri algoritmi, come weave, per
riportare il frame a progressivo e sempre con ottimi risultati proprio
perchè i problemi sono dati dall'interlacciamento vero, cioè dallo
sfasamento temporale.
Sinceramente non ho mai applicato il blend laddove sarebbe bastato un
weave, ma dubito fortemente che si possa ottenere un buon risultato
semplicemente perchè fa più operazioni di quelle necessarie.
bye, giubbe


 molta definizione;
esatto, io davo per scontato che l'algoritmo di deinterlacciamento sapesse
quando applicare il blend.


 qualcosa faro' sapere
grande!
Sono d'accordo con te, se mostrano qualcosa lo devono anche provare e se
poi vogliono vendre il prodotto un demo non potrebbe che fare del bene per
i loro affari.
bye


sfasamento temporale.
Secondo me non c'è un interlacciamento "vero" e uno "finto", ce n'è
solo uno ed ha effetti diversi a seconda che si tratti di trasmissione
video pura o conversione da pellicola. 
Solo in una trasmissione video ogni semiquadro mostra roba diversa dal
successivo, perchè è filmata in partenza a semiquadri anzichè quadri.
-- 
Paradoxally,
Jan AxHell

 Secondo me non c'è un interlacciamento "vero" e uno "finto", ce n'è
Peccato che per il resto del mondo non sia così. Se si vuol definire 
l'interlacciamento solo come utilizzo di semiquadri lo si dice 
esplicitamente e comunque, ripeto, non è il caso di questo thread.
Bye


 successivo, perchè è filmata in partenza a semiquadri anzichè quadri.
si', il problema e' tutto li', cioe' come funziona il dispositivo che
ha effettuato la ripresa all'origine (telecamera, macchina da presa...)
a me piace il termine "fotografare", al posto di "filmare" o "riprendere"
(l'ho letto da qualche parte ma non ricordo dove...)

 fine ci si capisca :-)
ah, se non l'hai mai letta, ti consiglio questa pagina:
http://www.100fps.com
e' ricca di esempi... ci sono anche delle "pagine collaterali"
interessanti, tipo questa:
http://www.100fps.com/video_resolution_vs_fluidity.htm

esplicitamente e comunque, ripeto, non è il caso di questo thread.
Vedi sopra.
-- 
Paradoxally,
Jan AxHell


http://www.100fps.com
Molto interessante, e leggendone la prima metà, dice quello che ho
detto fin'ora. Forse l'incomprensione con Giubbe è dovuta al fatto che
io parto sempre dal film cinematografico.
-- 
Paradoxally,
Jan AxHell

 E poi quale algoritmo avrei proposto? 
Quello con il blend a cui ho risposto e da cui è nato questo sotto thread.
Sembrava che tu dicessi che la mia obbiezione avesse senso solo nel caso in
cui ci sia un interlacciamento "televisiso", per usare le tue parole.
bye


 io parto sempre dal film cinematografico.
Sarò de coccio, ma il sito mostra chiaramente come viene costruita
l'immagine interlacciata:
 1) frame 1 ad istante 0
 2) frame 2 ad istante 1/50 dopo (dato che scatta 50 volte al secondo)
 3) unisco i due frame in un unico frame, quindi si ha sfasamento
temporale.
Il fatto che tu parta da un film cinematografico non ha nulla a che fare
con l'interlacciamento, come ho spiegato nell'altro post. Comunque se
ancora ci fosse dell'incomprensione non hai che da farmelo notare, prima o
poi ci capiremo.
Bye


 detto fin'ora.
pero' leggi anche questo:
-------------
- Some TV channels can air movies in a non-interlaced (=progressive)
  state while airing the commercial breaks interlaced.
- TV channels can air a music video clip interlaced and the next one
  non-interlaced. The same applies to commercials: One commercial is
  25fps, the next one is 50fps.
- TV channels can air the news interlaced, but the intro to the news
  (spinning globes etc) is not interlaced.
-------------
mi pare che l'autore di quelle pagine usi una terminologia diversa
dalla tua;
ad esempio, lui dice: "un canale tv puo' trasmettere un videoclip
interlacciato e il successivo non-interlacciato".
(nella sua terminologia, "non-interlacciato" e progressivo sono
sinonimi, come si nota anche dalla parentesi nella prima riga
che ho riportato).
invece, mi sembra che nella tua terminologia, anche il secondo
videoclip andrebbe dichiarato "interlacciato" (dato che viene
trasmesso sotto forma di segnale composto da coppie di semiquadri);
lui invece lo dichiara progressivo; perche'? perche' i due
semiquadri si riferiscono allo stesso istante temporale.
da altre parti, ho letto il termine "falso interlacciamento"
per descrivere questo concetto (cioe', un filmato che nasce
progressivo, ma che viene decomposto in coppie di semiquadri).
forse questo uso delle parole e' improprio... ma, secondo me
non e' tanto importante fissarsi sul significato da dare a una
parola; basta che alla fine ci si capisca, o no?

poi ci capiremo.
Riassumo qui sia per te che per Frank: è che io registro da TV su
DVD-R, e quel che ottengo è un MPEG sempre interlacciato, qualunque
cosa sia, quindi quando lo comprimo a divx devo sempre
deinterlacciare.
Effettivamente non mi è mai capitato di vedere/registrare qualcosa di
progressivo, ma prendo atto del fatto che esistano tali trasmissioni.
In merito ai DVD, è vero che sono quasi sempre progressivi, ma mi è
capitato diverse volte che non lo fossero.
-- 
Paradoxally,
Jan AxHell

Benny.
Da quel che dici, mi sa che io mi riferivo all'interlacciamento
strano. E infatti quando converto registrazioni TV, non posso usare
sempre lo stesso filtro, faccio varie prove e scelgo quello che mi
pare migliore.
-- 
Paradoxally,
Jan AxHell

parola; basta che alla fine ci si capisca, o no?
Sì, ma guarda che è Giubbe che si è fissato ;-)
-- 
Paradoxally,
Jan AxHell

 progressivo, ma prendo atto del fatto che esistano tali trasmissioni.
sono molte piu' di quanto si tenda a pensare! :-)
voglio raccontarti la mia esperienza in merito, la faro' un po' lunga
e noiosa, ma spero anche un po' utile.
nel 2003 un tizio (tramite mio fratello) mi ha venduto per 5 euri una
scheda grafica "matrox marvel" che ha annesso uno scatolotto blu per
fare acquisizioni; ero stato avvertito che non funzionava bene, che
al massimo poteva acquisire a 352x288 e che su un pentium3 non avevo
molte speranze di ottenere risultati decenti; a me andava bene lo
stesso perche' a quel prezzo (mi e' costato di piu' il materiale per
farmi costruire il cavo da mio fratello; mi pare che lo pagai circa
10 euri...) valeva comunque la pena per divertirsi a fare qualche
esperimento. inoltre, avevo preventivamente visto questo progetto:
http://mjpeg.sourceforge.net/
quindi sapevo che la scheda era supportata sotto linux.
con mia grande sorpresa, vidi che la scheda funzionava benone,
acquisiva a 720x576 impiegando circa il 2% di CPU di un pentium3
(per forza: la codifica jpeg viene fatta dalla scheda) e che potevo
impegnare il processore in compiti pesanti (come la codifica in divx
di precedenti acquisizioni) contemporaneamente a nuove acquisizioni,
senza avere mai sperimentato un frame perso; mai!
all'inizio non ne capivo una mazza di interlacciamento, segnali PAL,
frame progressivi ecc.
quando iniziai a voler codificare delle acquisizioni per poi
conservarle, l'unica cosa che conoscevo da prima che avessi la scheda
era VCD/SVCD (avevo scritto anche un programma di authoring con tanto
di interfaccia grafica :-));
allora mi avvicinai per la prima volta al DivX; iniziai a usare un
metodo strano che faceva uso di una DLL Windows (ma da Linux) che
conteneva il codec DivX 3.qualcosa, e all'inizio ne ero moooolto
soddisfatto; ero colpito dal fatto che, al contrario di VCD,
non ero vincolato a una unica risoluzione e a un preciso bitrate
(i VCD "avrebbero" un bitrate ben preciso: e' il bitrate che
corrisponde alla velocita' di lettura di un cd audio; una
simpatica conseguenza di questa scelta progettuale, e' che in un
CD da 74 minuti ci stanno esattamente 74 minuti di film, in uno
da 80 ce ne stanno 80, ecc. in altre parole, non e' una coincidenza,
e' proprio una scelta di chi progetto' i CD-I, che e' rimasta nei
VCD).
ora vengo al dunque :-)
acquisendo sempre a 576 righe, mi accorsi ben presto che alcune
volte ottenevo splendidi risultati, altre volte venivano dei
brutti pasticci, cioe' filmati che apparivano buoni nelle scene
statiche e inguardabili in corrispondenza dei movimenti...
allora indagai il fenomeno e scoprii il motivo, cioe', in breve
scoprii l'esistenza dell'interlacciamento e del fatto che il
segnale PAL in ingresso alla scheda era composto da 50 semiquadri
al secondo, invece che 25 interi quadri al secondo.
in quel periodo passai a usare "mencoder" e a codificare con il
suo codec mpeg4 clone, che dava risultati migliori di quello che
usavo prima, e quindi iniziai ad aggiungere nelle mie codifiche di
acquisizioni da tv il filtro "linear blend" ("-vf pp=lb") che
migliorava molto la situazione. (in seguito ho scoperto che mi
piace molto piu' il filtro "-vf lavcdeint").
pero' continuavo a non capire perche' abbastanza spesso, senza
usare alcun filtro di deinterlacciamento, ottenevo risultati
splendidi (quasi vicini a qualita' DVD!); inoltre, se su quelle
stesse acquisizioni usavo il filtro "linear blend", ottenevo
risultati sempre accettabili ma piu' "sfocati" di quelli ottenuti
senza usare alcun filtro...
a questo punto avevo gia' iniziato a frequentare questo Ng :-)
iniziai a indagare il fenomeno piu' a fondo; per prima cosa
iniziai a scrivere un decoder per gli stream acquisiti dalla
mia scheda; una libreria AVI ce l'avevo gia' (quella open
source scritta da Rainer Johanni e migliorata da Thomas
Ostreich, del progetto "transcode"), cosi' come avevo la
libreria "libjpeg" del Independent JPEG Group, quindi mi
occorse pochissimo tempo per decodificare gli stream MJPEG
prodotti dalla scheda (e in seguito lo modificai per
supportare anche la scheda Pinnacle DC10+ di mio fratello,
che e' anche la stessa di Lord Kap).
nella scrittura di questo decoder, dovetti effettuare anche
l'operazione "weave" (che non sospettavo minimamente che
si chiamasse cosi' :-)), perche' gli stream mjpeg prodotti
da queste schede contengono una sequenza di immagini jpeg
che rappresentano semiquadri, quindi grosso modo occorre
procedere cosi':
- si usa il demuxer AVI per estrarre il blocco di byte
  corrispondente al frame desiderato;
- si usa la libreria JPEG sul blocco due volte in
  sequenza
- si ricostruiscono le linee del frame, intercalando le
  righe delle due immagini (e' questo il "weave")
a questo punto, potei iniziare a vederci piu' chiaro,
perche' mi facevo mostrare in sequenza quello che acquisivo
(puo' sembrare strano, ma nonostante ci avessi provato con
altri programmi gia' esistenti, c'era sempre qualche
problema con quel formato...).
in seguito, scrissi una interfaccia grafica al mio decoder
AVI/MJPEG, che e' anche un front-end di mencoder, e che
permette di fare un minimo di editing dei filmati acquisiti
(togliere la pubblicita', selezionare inizio e fine del
filmato) e permette di impostare i parametri di codifica
piu' basilari... il programma lo chiamai impropriamente
"Mjpeg2DivX" ("impropriamente" perche' non codifica con il
codec commerciale DivX, ma con quello open source di
libavcodec; gli dovrei cambiare nome...)
poi mi accorsi che, avendo gia' un demuxer AVI che sapevo
usare, e che esisteva una libreria open source per decodificare
i codec di tipo DV (Digital Video):
http://libdv.sourceforge.net/
in pochi minuti potei quindi modificare il programma, in modo
che accettasse anche quel tipo di file in ingresso (questo fu
utile a mio fratello, che ogni tanto ha l'esigenza di
convertire dei DV in divx).
poi mi accorsi che potevo fare la stessa cosa con mpeg2, grazie
alla libreria open source:
http://libmpeg2.sourceforge.net/
questa fu un po' piu' difficile, perche' DV e MJPEG non usano
"motion compensation" (tutti i frame sono I-frame) e quindi
sono ad accesso casuale; invece, in mpeg2, se il frame desiderato
casca dentro a un GOP, per poterlo decodificare con libmpeg2
occorre fare dei passi indietro, fino a individuare un I-frame.
il supporto a mpeg2 mi permette di rippare dvd con mencoder
in AVI/MPEG2 ("direct stream copy" di un DVD :-)), e aprire
il file con il mio programma, scorrere tra i frame del DVD
(posso anche salvare un frame che mi piace, e cose del genere),
e infine impostare e far partire la codifica...
infine mi dissi: perche' non mettere anche il supporto a divx
in ingresso? questo fu facile, perche' avevo gia' risolto il
problema piu' grosso per mpeg2, e la situazione dei divx era
abbastanza simile...
per la decodifica di DivX, XviD, MS-MPEG4-v1/2/3 ecc ho
usato (naturalmente) la libreria open source libavcodec.
penso sia interessante notare che ho potuto fare tutto questo
in tempi decisamente ristretti, solo perche' esiste tutto
questo ben di dio di librerie open source!
il supporto in ingresso a tanti tipi di filmati, e l'interfaccia
grafica, mi hanno permesso di analizzare, nel corso del tempo,
un gran numero di casi.
in pratica, ho acquisito di tutto: telegiornali, pubblicita',
VHS, film, telefilm, film da sky, televendite, trasmissioni di
ogni genere...
la mia conclusione e' che alcune regole si possono trarre, ma
molte meno di quello che in genere si tende a pensare.
ad esempio, i telegiornali RAI sono sempre interlacciati per
quanto riguarda le riprese in studio dei telegiornalisti, ma
i servizi trasmessi in mezzo ai tg, a volte sono interlacciati,
a volte progressivi.
alcuni spot pubblicitari sono progressivi, alcuni interlacciati.
molti film (secondo la mia statistica piu' della meta') sono
progressivi, ma ce ne sono anche interlacciati.
lo stesso vale per i telefilm.
mio fratello ha registrato tutte le puntate di "Quantum Leap"
(il dottor Sam Beckett! :-)) da Jimmy, e le ha convertite con
il mio programma; mi ha detto che erano tutte progressive,
eccetto una che era interlacciata. non ho spiegazioni per questo
fatto.
i film trasmessi da Sky sono tutti progressivi.
le trasmissioni in studio della rai sono quasi tutte
interlacciate.
per i videoclip musicali trasmessi da MTV non c'e' una regola:
meta' sono interlacciati, meta' sono progressivi.
nel 2004 registrai un concerto di Alanis Morissette su MTV;
il concerto era inframmezzato da alcune riprese di Enrico
Silvestrin che dava qualche informazione;
ebbene, la cosa buffa era che, all'interno della stessa
trasmissione, le riprese di Enrico Silvestrin erano
interlacciate (quando si muoveva appariva seghettato),
mentre le riprese del palco erano progressive (nessuna
seghettatura, frame splendidi a piena risoluzione);
eppure alle spalle di Silvestrin si vedeva il palco; le
riprese erano state fatte nella stessa circostanza, ma
evidentemente avevano usato telecamere che funzionano
in modo differente...
con qeusto chiudo questo post esageratamente lungo, sperando
di averti fornito qualche altra informazione utile sul tema.

sono molte piu' di quanto si tenda a pensare! :-)
Socc che lungo! Adesso leggo il resto con calma :)
[CUT]
-- 
Paradoxally,
Jan AxHell

di averti fornito qualche altra informazione utile sul tema.
Abbondantemente :)
Ma il tuo prog lavora anche con file in ingresso, o solo stream da
scheda di acquisizione? Se io copio su HD una delle mie registrazioni
in un file MPEG2, posso usarlo col tuo prog?
-- 
Paradoxally,
Jan AxHell

 Socc che lungo! Adesso leggo il resto con calma :)
va be', non sei obbligato :-)

 in un file MPEG2, posso usarlo col tuo prog?
si', lo puoi fare, ma non direttamente, perche' non ho mai avuto voglia
di mettere il supporto diretto a mpeg.
il mio programma puo' decodificare le tue registrazioni in mpeg2, ma
purtroppo devi prima "infilarle" dentro a un contenitore AVI, perche'
il programma accetta in ingresso solo AVI.
per infilare i tuoi mpeg2 dentro un AVI, puoi usare mencoder; se non
ce l'hai, lo trovi qui:
http://www1.mplayerhq.hu/MPlayer/releases/win32/
e' lo zip da 7.9 Mb.
(non e' recentissima, ma puo' andare)
il comando da dare e' questo:
mencoder -mc 0 tuo.mpg -o pippo.avi -oac pcm -ovc copy
dove "tuo.mpg" e' il tuo mpeg2 :-)
e "pippo.avi" e' l'AVI in cui viene infilato lo stream ed
e' quello che puoi dare in ingresso al mio programma...


Ma come, con tutte quelle librerie? =) 
Va beh, uno di questi giorni lo provo (ma dove lo prendo il tuo
prog?). Per curiosità, cos'è quel pcm nel comando? I miei rip da TV
sono tutti AC3, lo converte forse in ENORME audio pcm?
-- 
Paradoxally,
Jan AxHell

 sono tutti AC3, lo converte forse in ENORME audio pcm?
esatto :-)
nel mio programma non ho mai messo alcun supporto audio, quindi
l'unico che riesce a "decodificare" e' PCM (pulse code
modulation), per il semplice fatto che e' gia' decodificato :-)
quindi, se gli dai in ingresso un AVI con audio MP3 o AC3 o DTS,
lui ti visualizza un messaggio che ti avverte che ti verra'
codificato solo il video (dovrai provvedere da te a rimuxare
l'audio, in seguito).
devi considerare che il programma lo usiamo solo io, mio fratello
e talvolta Lord Kap, e in tutti i casi partiamo da stream
AVI/MJPEG o AVI/DV in cui l'audio e' sempre PCM non compresso,
quindi non mi sono mai sentito abbastanza motivato per migliorare
quell'aspetto.
tempo fa Lord Kap mi chiese di aggiungere almeno il direct stream
copy dell'audio... ma non mi sembrava ne valesse la pena... magari
ci ripenso.
ciao

 i loro affari.
niente da fare, questa e' stata la loro risposta:
---------------
    Sorry, we working only with companies on it now.
---------------
nella mia richiesta avevo specificato che non pretendevo che rilasciassero
i dettagli di funzionamento, ne' il filtro usabile con Virtualdub, ma un
semplice file eseguibile con una scomoda interfaccia a linea di comando,
utile solo per fare qualche test e vedere come si comportava...
pazienza! ci ho provato ed e' andata male :-)
in realta' io penso che in quel laboratorio ci siano persone molto brave,
credo di avere capito che sia un laboratorio del dipartimento di
informatica dell'universita' di Mosca, e che i lavori siano portati
avanti da dottorandi (o laureandi)...
non so se hai visto questo filtro "delogo", ad esempio:
http://www.compression.ru/video/subtitles_removal/index_en.html
per fortuna questo e' scaricabile, c'e' uno zip da decomprimere nella
directory "Plugins" di VirtualDub.
io adesso non posso testarlo, ma a chi usa Windows consiglierei di
provarlo, dagli esempi mostrati nella pagina, sembrerebbe ottimo...
ci sono anche altri filtri, ma per la maggior parte sono capace di
scriverli anch'io in poco tempo (eccetto "deinterlacing" e il
"subtitle remover"). ce n'e' anche uno "stego" che non e'
granche' (dieci anni fa feci di meglio, con semplici jpeg).
quello che mi aveva realmente impressionato era il "deinterlacing",
ma purtroppo hanno messo solo quelle immagini e non c'e' il verso
di provarlo.
ciao

 provarlo, dagli esempi mostrati nella pagina, sembrerebbe ottimo...
Ho fatto qualche test. Son tutti compressi in Xvid unica passata a
700kbps. Sul primo non ho inserito nessun filtro, negli altri (a parte
la stessa impostazione per tutti della dimensione a posizione del logo)
ho adottato i parametri standard, a parte le variazioni che si capiscono
dal nome del file.
http://www.lordkap.it/aruba/test-delogo-puro.avi
http://www.lordkap.it/aruba/test-delogo-Threshold90.avi
http://www.lordkap.it/aruba/test-delogo-Threshold60.avi
http://www.lordkap.it/aruba/test-delogo-Threshold60-UseWithMC.avi
-- 
Saluti, Kap - 
www.lordkap.it
 - ¥'s Fan #01 - 
www.pianetalibri.com
 - VCC
Con aspetto devoto e azioni pie noi raddolciamo il demonio stesso.
William Shakespeare

 (mi hanno detto che e' difficilissimo da installare sotto Windows)
Naaaaaaaaa! ;)
-- 
Saluti, Kap - 
www.lordkap.it
 - ¥'s Fan #01 - 
www.pianetalibri.com
 - VCC
Tutti gli stili sono buoni, tranne lo stile noioso. - Voltaire

 ci ripenso.
Mi sembra utile per poter almeno sfruttare il programma con alcuni avi
per non perdere tempo con il demux/remux. Ma non c'è problema. Quando
hai tempo! ;)
-- 
Saluti, Kap - 
www.lordkap.it
 - ¥'s Fan #01 - 
www.pianetalibri.com
 - VCC
Nel regno animale la legge è mangiare o essere mangiati; nel regno
umano, definire o essere definiti. - Thomas Szasz

ci ripenso.
Beh, già il direct stream consentirebbe almeno di saltare la
decompressione AC3. 
-- 
Paradoxally,
Jan AxHell

 
http://www.lordkap.it/aruba/test-delogo-Threshold60-UseWithMC.avi
devo dire che la mia prima impressione non e' molto positiva
(a parte la visione di Jennifer Garner)
mi sembra che in alcuni punti si comporti benissimo, ma appena
c'e' un cambio brusco dei colori in quel punto si comporti
abbastanza male...
mi pare che hai scritto che hai impostato la posizione del
logo (in alto a sinistra)... non dovrebbe individuarlo da se'?
ancora grazie :-)

 andava di installare nella mia PLOS. Che faccio?
puoi scaricare questa:
http://fsinapsi.altervista.org/tmp/libavutil.zip
la decomprimi e la sposti (da root) su una directory di librerie
(/lib oppure /usr/lib oppure /usr/local/lib)
poi batti il comando (sempre da root):
/sbin/ldconfig
se hai problemi, fammi sapere

.
-- 
Saluti, Kap - 
www.lordkap.it
 - ¥'s Fan #01 - 
www.pianetalibri.com
 - VCC
La vita è dubbio e la fede senza dubbio non è altro che morte.
Miguel de Unamuno

 hai tempo! ;)
mi e' appena venuto in mente come posso farlo velocemente :-)
quindi questo lo faccio di sicuro, anche se ci vorra' qualche giorno
prima di ricompilare tutto anche sotto Windows.
le cose che invece non sono sicuro di fare, ma che mi piacerebbe:
- possibilita' di ricodificare audio compresso (mp3, ac3, dts); questo
  sono quasi sicuro di farlo perche' non ci vuole molto;
- aggiungere altri filtri video (anche scriverne nuovi);
- la possibilita' di codificare con XviD;
- la possibilita' di codificare con x264
le ultime due non sono difficili (basta passare i giusti parametri a
mencoder... lo fa lui...); ma mi fa fatica riscrivere l'interfaccia
grafica, perche' tutti i codec hanno molti parametri in comune, ma
anche parametri diversi, quindi c'e' un po' da ammattire a
districarsi tra tutte le possibilita' (l'interfaccia grafica dovrebbe
abilitare/disabilitare i parametri a seconda del codec attualmente
selezionato)... gia' adesso l'interfaccia e' incasinata, perche'
aggiunsi la modalita' di codifica "quality based" rendendola
incoerente con la possibilita' di scegliere il "bitrate video"
(che viene ignorato in quella modalita'); insomma, mi toccherebbe
riscrivere un po' tutto :-)
cmq il direct stream copy dell'audio lo faccio sicuramente

.
ah, si'.
grazie

 impressionante:
Infatti. A questo punto mi verrebbe da chiedergli con quali impostazioni
hanno ottenuto quel risultato. Insomma: mi puzza un pochino ma, ripeto,
io non ho mai usato filtri del genere e magari non setto i parametri
nella maniera giusta.
-- 
Saluti, Kap - 
www.lordkap.it
 - ¥'s Fan #01 - 
www.pianetalibri.com
 - VCC
La sconfitta non è il peggior fallimento. Non aver tentato è il peggior
fallimento. - George E. Woodberry

 cmq il direct stream copy dell'audio lo faccio sicuramente
Prima o poi c'incontreremo e ti pagherò una cena. ;)
-- 
Saluti, Kap - 
www.lordkap.it
 - ¥'s Fan #01 - 
www.pianetalibri.com
 - VCC
Son sicuro che l'afflizione è nemica della vita. - William Shakespeare

 hanno ottenuto quel risultato
Ora ho un attimo e ci provo io. Vi faccio sapere anche se da quel che ho
letto ho forti dubbi circa la bontà "miracolosa" di questo filtro.


 
Ma quanto č lento!!!!
L'ho fatto con le impostazioni base e non ho ottenuto nulla di buono. L'ho
riprovato con impostazioni ad hoc (almeno credo...) e voleva 2 ore per 37
sec di filmato!!! Il primo e secondo fotogramma effettivamente erano privi
di errori, ma non posso attendere due ore per vedere se ha fatto bene. Ora
lo sto facendo con una qualitŕ un poco superiore, ma č da un quarto d'ora
che sta lě!
Niente da fare. Nei prmi fotogrammi toglie il logo, poi rimane fino a
quando non cambia il fondale e da qui in poi ne toglie solo una parte
(molto bene). Voglio provare con un altro filmato, ma non posso attendere
due ore!!
ci risentiamo
bye


 Ma quanto è lento!!!!
Infatti! ;)
-- 
Saluti, Kap - 
www.lordkap.it
 - ¥'s Fan #01 - 
www.pianetalibri.com
 - VCC
Il fiume è dentro di noi, il mare tutto intorno a noi.
Thomas Stearns Eliot

 Infatti! ;)
Ho fatto le prove anche con delogo e devo dire che quando funziona il nuovo
filtro è migliore anche perchè con delogo mi è rimasto un alone verde
intorno al simbolo di raitre.
Se volete vi posto le due prove per un confronto.


 Se volete vi posto le due prove per un confronto.
Thanks.
-- 
Saluti, Kap - 
www.lordkap.it
 - ¥'s Fan #01 - 
www.pianetalibri.com
 - VCC
Il terribile non sono le contraddizioni, bensì il loro graduale
svigorire. - Elias Canetti

 intorno al simbolo di raitre.
sicuramente i programmi che stanno facendo devono essere basati su lavori
teorici di una certa consistenza; mi pare che in tutti i filtri presenti
sul sito sia menzionato un certo Dimitri (la persona che mi ha risposto)
come "autore delle idee e del progetto" e altre persone per quanto riguarda
implementazione e idee.
probabilmente il primo e' il coordinatore di tutti i progetti (sara' un
professore o un ricercatore) e gli altri sono studenti.
ho letto che l'efficienza non e' un loro obiettivo primario, e che di
solito si dedicano all'ottimizzazione del codice dopo circa un anno dal
rilascio dei filtri.
magari, ogni tanto mi ricordero' di darci un'occhiata per eventuali
novita'
ora ho fatto una rapida ricerca sul database "citeseer"
( 
http://citeseer.ist.psu.edu/
 )
ci sono molti articoli interessanti sul deinterlacciamento; alcuni
descrivono modelli teorici che potrebbero essere simili a quelli
utilizzati da quel laboratorio russo.
ciao

 ( 
http://citeseer.ist.psu.edu/
 )
Gentile come sempre. Grazie


 Thanks.
Appena ho un attimo di tempo posto i risultati, forse domani sera. Sorry
