|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Apr 2011
Città: Roma
Messaggi: 168
|
Script avisynth per confronto visivo codifica
Salve, vorrei realizzare uno script avisynth che permetta di vedere visivamente in movimento e in fermo immagine la differenza tra un video originale e uno codificato.
Avevo questa idea: dividere lo schermo in quattro parti Codice:
+----------------------+---+ | | | | | | | Codificato/confronto | | | 1 | 3 | | | | +----------------------+---+ | | | | | | | Originale | | | 2 | 4 | | | | +----------------------+---+ 2) Filmato originale che scorre. 3) differenza(della banda sovrapposta) in luminanza dei due filmati 4) differenza(della banda sovrapposta) in crominanza dei due filmati |
![]() |
![]() |
![]() |
#2 | ||
Senior Member
Iscritto dal: Jun 2009
Messaggi: 1780
|
Ciao.
Ho capito in parte: Quote:
O deve essere semplicemente una banda verticale semitrasparente? Quote:
__________________
no pain, no gain
|
||
![]() |
![]() |
![]() |
#3 | |
Member
Iscritto dal: Apr 2011
Città: Roma
Messaggi: 168
|
Quote:
3) e 4) Si le informazioni sono relative solo alla banda e nel punto in cui si trova. [/code] |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jun 2009
Messaggi: 1780
|
Per il layout non ci sono grossi problemi, lo scorrimento della porzione del video originale si può fare con una maschera in movimento e la comparazione visiva con Layer o Overlay, oppure animando il filtro Crop.
Il problema nasce nella comparazione scritta: 1) va trovato il filtro giusto, Compare non fa al caso e dando un'occhiata uno che raffronti Luma e Chroma e riporti un testo su video non l'ho trovato. 2) mi sembra che ogni filtro di debug stampi le info sulla clip in esame e non le archivi come dati richiamabili altrove e quindi stampabili su un'altro sfondo.
__________________
no pain, no gain
Ultima modifica di Esavoc : 20-08-2012 alle 07:59. |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Apr 2011
Città: Roma
Messaggi: 168
|
Non so cosa sono le maschere...
1) Pensavo al subtract 2) Per le informazioni io pensavo piu' che altro a informazioni "visive" (ma se ci sono anche a supporto quelle numeriche ben venga, ma non sono necessarie) Comunque se non e' possibile passare le informazioni su un altro punto , va bene metterle nel punto in cui si calcolano. |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jun 2009
Messaggi: 1780
|
Ok. Ti posto uno script di esempio.
Codice:
maschera=avisource("mask.avi").bicubicresize(640,360).ConvertToRGB32().loop() clip1=AviSource("test1_1.avi").bicubicresize(640,360).ConvertToRGB32() clip2=AviSource("test4.avi").bicubicresize(640,360).ConvertToRGB32() clip_mask1=avisource("test1_1.avi").bicubicresize(640,360).converttorgb32.mask(maschera) clip_mask2=avisource("test4.avi").bicubicresize(640,360).converttorgb32.mask(maschera) banda=Layer(clip1,clip_mask2) datiC=Layer(clip_mask1,clip_mask2).bicubicresize(260,360) datiC2=compare(clip1,clip2).bicubicresize(260,360) dati=stackvertical(datiC,datiC2).bicubicresize(260,720) video=stackvertical(banda,clip1).bicubicresize(640,720) comp=StackHorizontal(video,dati) return comp mask.zip Usa la maschera e sostituisci i file.avi con quelli che hai tu per provare lo script e vediamo se può essere un punto di partenza. Poi vediamo come modificarlo per le tue esigenze.
__________________
no pain, no gain
Ultima modifica di Esavoc : 20-08-2012 alle 13:04. |
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Apr 2011
Città: Roma
Messaggi: 168
|
Ho il pc con l'hd che sta morendo... Per il momento non posso proseguire con i test. Almeno finche' non ripristino il tutto... Che p....!
|
![]() |
![]() |
![]() |
#8 |
Member
Iscritto dal: Apr 2011
Città: Roma
Messaggi: 168
|
... dopo un anno ...
Ho provato lo script con la maschera e il risultato ottenuto e' quello che volevo ma mi sono reso conto che non e' sufficiente per vedere le differenze. |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Apr 2006
Città: Roma
Messaggi: 3044
|
Esavoc, complimenti per tutto quell'effort con tanto di mask mobile!
Comunque, per effettuare il confronto ti conviene utilizzare Masktool. Una volta installati i suoi plug in ti conviene spostarti in yv12 invece che lavorare in RGB, quindi sostituire i ConvertToRGB32() con ConvertToYV12() e poi effettuare i confronti in questo modo: Codice:
Luma: mt_makediff(clip_mask1,clip_mask2).histogram("luma") Chroma: mt_makediff(clip_mask1,clip_mask2, U=3,V=3).mt_lut(Y=128,U=2,V=2)
__________________
Mobo Asus X99-S CPU Intel i7 5820K @ 4.2Ghz Cooled by Noctua NH-D14 RAM 4X4GB GSkill RipJaw @ 2400Mhz C15 PSU Corsair HX1000i VGA MSI GTX 1080 Armor OC HD Samsung EVO 500Gb + WD Caviar Black 1Tb Monitor Acer H277H Mouse e Tastiera Steelseries Rival 300 e Corsair K90 CASE Corsair Graphite 600T White Ultima modifica di Weap : 29-08-2013 alle 09:17. |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Jun 2009
Messaggi: 1780
|
Grazie.
![]() In realtà ho creato questo script come base da cui partire, volevo sapere se era quel tipo di layout che einstein1969 voleva ottenere. Riguardo la comparazione hai ragione però ci sarebbero alcune incompatibilità tra i formati colore, mask per esempio lavora solo in RGB32. Andrebbe ripensato nel suo insieme magari mantenendone le funzionalità. E' passato un'anno...
__________________
no pain, no gain
|
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Apr 2006
Città: Roma
Messaggi: 3044
|
Quote:
__________________
Mobo Asus X99-S CPU Intel i7 5820K @ 4.2Ghz Cooled by Noctua NH-D14 RAM 4X4GB GSkill RipJaw @ 2400Mhz C15 PSU Corsair HX1000i VGA MSI GTX 1080 Armor OC HD Samsung EVO 500Gb + WD Caviar Black 1Tb Monitor Acer H277H Mouse e Tastiera Steelseries Rival 300 e Corsair K90 CASE Corsair Graphite 600T White |
|
![]() |
![]() |
![]() |
#12 |
Member
Iscritto dal: Apr 2011
Città: Roma
Messaggi: 168
|
La parte della luminanza sembra buona... E' amplificata 16 volte ?
Si potrebbe amplificare anche la crominanza e trasformarla in luminanza e poi aggiungerla? Al risultato poi vorrei aggiungere la clip originale in semitrasparenza. Ho provato a prendere degli spunti in giro ed ho abbozzato una funzione che devo ancora capire bene... vorrei usare la mt_diff anche qui se e' meglio. Codice:
function ODiff(clip A,clip B) { #amplificazione crominanza # 2048 default AmpYUV=2048 #amplificazione luminanza # 8 default AmpY=8 Diff=subtract(A,B) DY=Overlay(Diff,Diff.invert(),x=0,y=0,mode="lighten",opacity=1).ColorYUV(off_y=-128).Levels (0,1,256/AmpY,0,255,coring=false).greyscale() DUV=Diff.ColorYUV(off_y=-255,cont_u=AmpYUV,cont_v=AmpYUV) DYUV=DY.MergeChroma(Diff.ColorYUV(cont_u=AmpYUV,cont_v=AmpYUV)) # trasformo in luminanza la crominanza # Chroma to lumina VY=Diff.ColorYUV(off_y=-255,cont_u=AmpYUV,cont_v=AmpYUV).VToY().ColorYUV(off_y=-128) UY=Diff.ColorYUV(off_y=-255,cont_u=AmpYUV,cont_v=AmpYUV).UToY().ColorYUV(off_y=-128) UVY=overlay(VY,UY,x=0,y=0,mode="add",opacity=1).BilinearResize(Diff.width, Diff.height) # verificata opacity 1.0 va bene # Mix (mergeluma?) UVYY=overlay(UVY,DY,x=0,y=0,mode="add",opacity=1) O=Overlay(UVYY,A,x=0,y=0,mode="add",opacity=0.1) OC=Overlay(DYUV,A,x=0,y=0,mode="add",opacity=0.1) OO=Overlay(DY,A,x=0,y=0,mode="add",opacity=0.2) OOC=Overlay(OO,DUV,x=0,y=0,mode="add",opacity=0.5) #return interleave(A.subtitle("A"),B.subtitle("B"),DY,DUV,DYUV,UY.BilinearResize(Diff.width, Diff.height),VY.BilinearResize(Diff.width, Diff.height),UVY,UVYY,O) return OOC |
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Apr 2006
Città: Roma
Messaggi: 3044
|
Quote:
I piani sono 3, u,v e y quindi diciamo che non puoi portare sia u che v su y, ma puoi portare prima uno poi l'altro e poi sommare queste differenze. Quindi potresti fare una cosa del tipo: Codice:
v_Clip=mt_makediff(clip_mask1,clip_mask2, U=3,V=3).mt_lut(Y=128,U=2,V=2).vtoy() u_Clip=mt_makediff(clip_mask1,clip_mask2, U=3,V=3).mt_lut(Y=128,U=2,V=2).utoy() mt_lutxy(v_Clip, u_Clip, "x y +").spline36resize(1280,720).histogram("luma")
__________________
Mobo Asus X99-S CPU Intel i7 5820K @ 4.2Ghz Cooled by Noctua NH-D14 RAM 4X4GB GSkill RipJaw @ 2400Mhz C15 PSU Corsair HX1000i VGA MSI GTX 1080 Armor OC HD Samsung EVO 500Gb + WD Caviar Black 1Tb Monitor Acer H277H Mouse e Tastiera Steelseries Rival 300 e Corsair K90 CASE Corsair Graphite 600T White Ultima modifica di Weap : 30-08-2013 alle 08:48. |
|
![]() |
![]() |
![]() |
#14 |
Member
Iscritto dal: Mar 2005
Città: Regno di OZ
Messaggi: 133
|
visto che parlate di maschere...
qualcuno sa dirmi come funziona mt_merge? ho provato così clip1 = AviSource("D:\questo.avi") clip2 = AviSource("D:\quello.avi") mt_merge(clip1, clip2) e così clip1 = AviSource("D:\questo.avi") clip2 = AviSource("D:\quello.avi") clip1.mt_merge(clip2) ma non funziona altrimenti quali alternative ci sono per le maschere? con la maschera che devo usare non va bene Overlay(clip1, clip2, mode="blend", opacity=100, y=0, x=0) Ultima modifica di Kiky Oz : 05-09-2013 alle 23:39. |
![]() |
![]() |
![]() |
#15 | ||
Senior Member
Iscritto dal: Apr 2006
Città: Roma
Messaggi: 3044
|
Quote:
Quote:
__________________
Mobo Asus X99-S CPU Intel i7 5820K @ 4.2Ghz Cooled by Noctua NH-D14 RAM 4X4GB GSkill RipJaw @ 2400Mhz C15 PSU Corsair HX1000i VGA MSI GTX 1080 Armor OC HD Samsung EVO 500Gb + WD Caviar Black 1Tb Monitor Acer H277H Mouse e Tastiera Steelseries Rival 300 e Corsair K90 CASE Corsair Graphite 600T White |
||
![]() |
![]() |
![]() |
#16 |
Member
Iscritto dal: Mar 2005
Città: Regno di OZ
Messaggi: 133
|
la maschera è questa (quella sotto che inizia con ### BEGIN SCRIPT ###)
http://forum.doom9.org/showpost.php?...2&postcount=10 in realtà non credo che sia quella giusta... cioè non è quella che produce proprio questo risultato http://forum.doom9.org/showpost.php?...0&postcount=13 il risultato è una maschera grigia, mentre dovrebbe essere nera agendo sui livelli si ottiene qualcosa di simile, ma non uguale credo che lo script che ha usato sia diverso e non lo ha condiviso (oppure è quello che ha messo + qualcosa che non so) il thread completo è questo http://forum.doom9.org/showthread.php?t=140623 faccio fatica a capirci qualcosa in inglese ![]() ancora non ho capito che script devo usare per fondere la source con la maschera scrivendo mt_merge(clip1, clip2) mi dice "invalid argument to function..." aggiungendo il parametro "mask" mi dice I don't know "mask" means questo: mt_merge : clip clip1, clip clip2, clip mask, bool "luma"(false), non so come usarlo uso masktools-v2.0a48 ![]() Ultima modifica di Kiky Oz : 06-09-2013 alle 12:13. |
![]() |
![]() |
![]() |
#17 | |
Senior Member
Iscritto dal: Apr 2006
Città: Roma
Messaggi: 3044
|
Quote:
__________________
Mobo Asus X99-S CPU Intel i7 5820K @ 4.2Ghz Cooled by Noctua NH-D14 RAM 4X4GB GSkill RipJaw @ 2400Mhz C15 PSU Corsair HX1000i VGA MSI GTX 1080 Armor OC HD Samsung EVO 500Gb + WD Caviar Black 1Tb Monitor Acer H277H Mouse e Tastiera Steelseries Rival 300 e Corsair K90 CASE Corsair Graphite 600T White |
|
![]() |
![]() |
![]() |
#18 | |
Member
Iscritto dal: Mar 2005
Città: Regno di OZ
Messaggi: 133
|
Quote:
![]() come riferimento ho le caps presenti qui http://forum.doom9.org/showpost.php?...0&postcount=13 credo che si dovrebbe fondere la prima ORIGINAL, con la seconda HALO MASK, per ottenere la terza FIXED giusto o sbagliato? la mask non è generica, ma viene creata con lo script presente qui http://forum.doom9.org/showpost.php?...2&postcount=10 come ho già detto... probabilmente non è lo script definitivo che ha usato... e se tu sapessi come ottenere il risultato della seconda cap HALO MASK, sarebbe fantastico magari mt_merge non è il giusto metodo per fondere... questo non lo so se mi fai lo script (che non ci capisco un cavolo) per "dare come argomento a mt_merge per specificargli come fondere le due clip" mi faresti un favore grazie mille per l'aiuto |
|
![]() |
![]() |
![]() |
#19 | |
Senior Member
Iscritto dal: Apr 2006
Città: Roma
Messaggi: 3044
|
Quote:
Il punto è che il tizio di quel thread ha postato immagini di un video che ha molto haloing, e quindi chiedeva come poteva eliminare quell'haloing e gli vengono proposte delle soluzioni che coinvolgono delle mask. Quindi, te stai cercando di correggere dell'haloing e stai cercando come maskarlo per filtrare solo quello? Non mi sembra che sia questo il caso, per questo ti chiedevo... Purtroppo non esistono formule magiche che migliorano a priori, ma dipende da quello che stai cercando di correggere e dalla sorgente... poi sulla base di questi decidi cosa fare. Comunque se può consolarti, anche io fatico a capire quei codici postati li, non a caso didée non è esattamente l'ultimo arrivato ^^
__________________
Mobo Asus X99-S CPU Intel i7 5820K @ 4.2Ghz Cooled by Noctua NH-D14 RAM 4X4GB GSkill RipJaw @ 2400Mhz C15 PSU Corsair HX1000i VGA MSI GTX 1080 Armor OC HD Samsung EVO 500Gb + WD Caviar Black 1Tb Monitor Acer H277H Mouse e Tastiera Steelseries Rival 300 e Corsair K90 CASE Corsair Graphite 600T White |
|
![]() |
![]() |
![]() |
#20 |
Member
Iscritto dal: Mar 2005
Città: Regno di OZ
Messaggi: 133
|
si certo, è proprio un de-halo che mi servirebbe
uso da sempre il BlindDeHalo3. Mi piace molto perchè affina l'immagine e toglie l'oversharp, quindi non lo uso solo per togliere gli aloni, anzi... credo che non si possa considerare un de-halo efficacissimo, come ad esempio il DeHalo_alpha, ma quello che non mi piace di quest'ultimo è che squadra un po' l'immagine per me il discorso della squadratura è importanre... ed evito il più possibile filtri di sharp che tendono a squadrare... praticamente quasi tutti la maschera che usa Avisynth_challenged mi sembra piuttosto buona proprio perchè mantiene l'immagine abbastanza fedele all'originale allora non sai proprio come fare il merge usando quella maschera? ![]() Didée lo considero un genio di Avisynth da una parte, e uno che fa tanti disastri dall'altra ![]() Ultima modifica di Kiky Oz : 07-09-2013 alle 01:03. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:59.