module inscription newsletter haut de page forum mobile

Rejeter la notice

formations etalonnage sur davinci resolve

Nos Formations Etalonnage avec Forest reviennent en octobre !
Adoptez une réelle méthodologie d'étalonnage professionnelle et atteignez vos objectifs créatifs avec nos formations intensives sur 3 jours
Toutes les infos
Rejeter la notice

Formation Lumière - Pratique Intensive du 14 au 16 octobre à Paris
Formez-vous avec cet atelier de pratique intensive dans des conditions exceptionnelles ! Formation finançable.
Toutes les infos

Ateliers et Formations

Quels filtres pour VHS en 2013 ?

Discussion dans 'Transferts vidéo analogique vers numérique' créé par laurentj1982, 5 Mars 2013.

Tags:
  1. arnuche

    Points Repaire:
    3 470
    Recos reçues:
    8
    Messages:
    1 270
    Appréciations:
    +1 / 9 / -1
    Avec la puissance actuelle des CPU, plus vraiment besoin de CG, en tout cas pour ce que je fais (pas de jeux vidéo).
     
  2. laurentj1982

    Points Repaire:
    1 650
    Recos reçues:
    1
    Messages:
    924
    Appréciations:
    +7 / 10 / -2
    merci, du coup, ça fonctionne très bien avec QTsource. J'ai du télécharger et installer le dll dans le dossier plugin de avisynth et ça marche.
    Je vais tenter d'executer le script sur la totalité de mon fichier cette nuit.
     
  3. laurentj1982

    Points Repaire:
    1 650
    Recos reçues:
    1
    Messages:
    924
    Appréciations:
    +7 / 10 / -2
    J'ai un autre souci que voudrais régler sur avisynth que j'avais évoqué ici :
    http://www.repaire.net/forums/compressions-mpeg-divx-wm/250592-executer-un-ascript-avisynth.html

    Il s'agit de DVD souffrant d'un défaut 601 (double conversion de rgb à 601).

    En 601, la luminance est comprise entre 16 et 235, et le chrominance entre 16 et 240.

    Calcul de la perte de luminance :
    255 x 0,9411 = 240 X 0,9411 = 225
    255 X 0,9215 = 235 x 0,9215 = 216

    D'après le calcul précédent et mes mesures, mes DVD ont une luminance comprise entre 32 et 216 et une chrominance entre 32 et 225.

    Est-ce que l'utilisation de Ylevels comme ceci peut résoudre le problème de luminance ?
    Code:
     Ylevels(32,1.0,225, 16, 235)
    Je pensais utiliser YlevelsC() pour faire de même sur la chroma, mais je ne comprends pas son paramétrage.

    Sinon j'avais repéré cette fonction :
    http://avisynth.org/mediawiki/Convert

    Et j'ai l'impression que bien paramétrée, elle peut résoudre mon problème :
    ConvertToRGB(clip, matrix="rec709")

    J'essairais tout ça quand j'aurais fini la numérisation de VHS.
    Mais tout conseil est bon à prendre sur ce point.

    Merci.
     
  4. THEMASTER

    Points Repaire:
    1 970
    Recos reçues:
    11
    Messages:
    987
    Appréciations:
    +9 / 18 / -0
    en rec709 c'est pareil je te rassure ,16-235 pour la luma (et pas luminance c'est différent)

    je pense que tu devrais utiliser ceci et voir ce que ça donne:
    ColorYUV(levels="TV->PC)# 16 devient 0 ; 235 devient 255

    avec ça 32-216 doit devenir 16-235 en principe

    L'avantage de ce filtre est qu'il change exactement les valeurs pour la chroma de 255 à 240 par exemple, ylevels ne serait d'aucune utilité pour la chroma vu qu'il n'y touche pas et le filtre levels ne mappe pas exactement 255 sur 240 (source sûre).
     
  5. laurentj1982

    Points Repaire:
    1 650
    Recos reçues:
    1
    Messages:
    924
    Appréciations:
    +7 / 10 / -2
    Ok, je pense en effet qua ça correspond exactement à ce que je veux.

    Sinon, j'ai essayé d'adapter le script pour une 2ème vidéo, mais dur dur parce que ça rame énormément.

    Pour ColorYUV(analyze=true), je n'avais pas capté que le filtre analyse seulement l'image en cours : il faut se balader dans la vidéo pour voir les variations de luminance?

    Du coup, j'ai un peu de mal à voir, mais à première vue, la luminance est bien à 16-235. C'est une VHS du commerce cette fois.
     
  6. THEMASTER

    Points Repaire:
    1 970
    Recos reçues:
    11
    Messages:
    987
    Appréciations:
    +9 / 18 / -0
    il existe un filtre qui analyse toutes les images de toute la video et qui fait une moyenne (si elle fait une heure ça va ramer attention) showchannels voir ici:
    [ame=http://forum.doom9.org/showthread.php?t=163829]ShowChannels() v0.7 - 20 Apr 2013 - Doom9's Forum[/ame]
     
  7. THEMASTER

    Points Repaire:
    1 970
    Recos reçues:
    11
    Messages:
    987
    Appréciations:
    +9 / 18 / -0
    pour ce qui est de la lenteur occasionée du désentrelaceur qtgmc tu peux désormais tester avisynth mt je pense.Si tu a un processeur multi-coeurs/ threads ça va bien booster le décodage

    voir sur cette page:
    [ame=http://forum.doom9.org/showthread.php?t=148782]Avisynth 2.6 MT - Doom9's Forum[/ame]

    Par ailleurs tu peux choisir des paramètres plus rapides parceque le mode lossless est très lent.

    exemple
    Function ModeSwitch(int index) { return Select(index, "Placebo", "Very Slow", "Slower", "Slow", "Medium", "Fast", "Faster", "Very Fast", "Super Fast", "Ultra Fast", "Draft") } # Pour UserSlider QTGMC
    QTGMC(preset=ModeSwitch(4)) #
    SelectEven()
    mode 1= Very slow (très lent)
    mode 4= medium (moyen)
    mode 6= ultra fast (très rapide)
    etc...
    Le résultat sera plus flou/moins précis mais selon le projet ça peut convenir à toi de voir
     
  8. laurentj1982

    Points Repaire:
    1 650
    Recos reçues:
    1
    Messages:
    924
    Appréciations:
    +7 / 10 / -2
    Salut,
    j'ai encore un souci avec ylevels :

    [​IMG]

    On voit une ligne droite verticale au centre de l'image. La partie droite et le partie gauche de l'image ne sont pas traitées de la même manière.

    Je sais que ça vient de ylevels car quand je l'enlève, ça disparait.

    Tu as une idée du problème ?

    La ligne de code est :
    ylevels(0,1.000,255,6,245) # pour corriger les niveaux sur Y'

    Je pense réessayer demain en avi pour voir si ça faisait pareil ou non.
     
  9. THEMASTER

    Points Repaire:
    1 970
    Recos reçues:
    11
    Messages:
    987
    Appréciations:
    +9 / 18 / -0
    Je viens de calculer en fait il y a deux versions de ylevels désormais (c'est bien ce que tu disais) la version normale et la version mt.
    La version normale utilise masktools 1.5.X et la mt masktools v2

    Sur le mediawiki il n'y a que le lien vers la version mt de ylevels donc au cas ou tu ne le trouves pas copie/colle avec le notepad ou avspmod et sauvegardes en ylevels.avsi :

    # Filtre ylevels version normale
    function Ylevels(clip clp, int a, float gamma, int b, int c, int d)
    { wicked="x "+string(a)+" - "+string(b)+" "+string(a)+" - / 1 "+string(gamma)+" / ^ "+string(d)+" "+string(c)+" - * "+string(c)+" +"
    # Reminder: Yexpr = "x a - b a - / 1 gamma / ^ d c - * c +"
    # return( clp.subtitle(wicked) )
    return( clp.YV12LUT(Yexpr = wicked, U=2,V=2) )
    }

    function YlevelsG(clip clp, int a, float gamma, int b, int c, int d)
    { wicked = gamma > 1.0
    \ ? "x "+string(a)+" - "+string(b)+" "+string(a)+" - / 1 "+string(gamma)+" / ^ "+string(d)+" "+string(c)+" - * "+string(c)+" + x * x 255 x - * + 255 /"
    \ : "x "+string(a)+" - "+string(b)+" "+string(a)+" - / 1 "+string(gamma)+" / ^ "+string(d)+" "+string(c)+" - * "+string(c)+" + 255 x - * x x * + 255 /"
    return( clp.YV12LUT(Yexpr = wicked, U=2,V=2) )
    }

    function YlevelsS(clip clp, int a, float gamma, int b, int c, int d)
    { wicked="x "+string(a)+" - "+string(b)+" "+string(a)+" - / 1 "+string(gamma)+" / ^ "+string(d)+" "+string(c)+" - * "+string(c)+" + x 162,97466 / sin 255 * * x 255 x 162,97466 / sin 255 * - * + 255 /"
    return( clp.YV12LUT(Yexpr = wicked, U=2,V=2) )
    }
     
  10. laurentj1982

    Points Repaire:
    1 650
    Recos reçues:
    1
    Messages:
    924
    Appréciations:
    +7 / 10 / -2
    Ca a marché. Je suis donc passé sur Ylevels normal et masktool v1.5.
     
  11. THEMASTER

    Points Repaire:
    1 970
    Recos reçues:
    11
    Messages:
    987
    Appréciations:
    +9 / 18 / -0
    Alors ça donne quoi finalement je suis pas contre un petit extrait du fichier final...
     
  12. laurentj1982

    Points Repaire:
    1 650
    Recos reçues:
    1
    Messages:
    924
    Appréciations:
    +7 / 10 / -2
    Salut,
    désolé pour la réponse tardive. Je viens juste de finir 5 VHS. Au final, je suis passé sur ma bécane pro qui arrive à traiter une vidéo de 1h30 en 6 h contre presque 15 sur mon portable.

    Voici 2 exemples de fichiers vidéos :
    https://www.dropbox.com/sh/5wfpzggtnnz1jt1/mts-RvGxtH
    Le "non corrigé" est désentrelacé par Adobe lors de l'encodage.

    Le résultat est bien sur "flèches avenir" (le script que tu m'avais fait).
    Code:
    # chargement des plugins (.dll ou .avsi/avs):
    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\FFTQuiver.dll")
    Loadplugin("C:\Program Files (x86)\AviSynth 2.5\plugins\mvtools-v2.5.10\mvtools2.dll")
    Loadplugin("C:\Program Files (x86)\AviSynth 2.5\plugins\MaskTools-v1.5.8\MaskTools.dll") # pour QTGMC
    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\RemoveGrain_v1.0\RemoveGrainSSE3.dll") # pour QTGMC
    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\RepairSSE2.dll")
    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\nnedi3.dll")
    Import("C:\Program Files (x86)\AviSynth 2.5\plugins\QTGMC-3.32.avsi")
    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\QTGMC 32-bit Plugins\Avisynth 32-bit Plugins\SSE3Tools.dll") # pour support YUY2
    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\VerticalCleanerSSE3.dll")
    import("C:\Program Files (x86)\AviSynth 2.5\plugins\Ylevels.avsi")
    
    ## DEBUT DU SCRIPT ##
    
    
    # directshowsource("E:\testsansson",fps=25.000)
    #converttoyv12(interlaced=true)
    QTInput("E:\flechesavenirs.mov", color=2, audio=1)
    #AVISource("E:\logarith.AVI")
    converttoyv12(interlaced=true)
    assumetff() # pour source entrelacée
    separatefields() # séparation des champs pairs/impairs
    ylevels(0,1.000,255,6,245) # pour corriger les niveaux sur Y'
    tweak(sat=1.3,cont=1.0,coring=false) # ajouter de la saturation sur UV (couleurs)
    #Pour enlever les herring bones / dot crawl:
    F1Quiver(last, "gn", 336, 10, test=false)
    weave() # pour ré-entrelacer les champs
    ConverttoRGB32(matrix="rec601",interlaced=true) # conversion en rgb32 pour filtre vdub
    LoadVirtualDubPlugin("C:\Program Files (x86)\VirtualDub\plugins\Camcorder_Color_Denoise_sse2.vdf","CCD",1)
    CCD(7,1) # pour enlever un peu de chroma noise(
    converttoyv12(matrix="rec601",interlaced=true) # on revient en Y'UV
    # rajouter qtgmc pour désentrelacer à la fin
    QTGMC( Preset="fast", SourceMatch=3, Lossless=2, Sharpness=0.4, TR2=2 )
    selecteven()
    # controle pour CCD
    # Y = GreyScale()
    # U = UtoY()
    # V = VtoY()
    # StackHorizontal(Y, StackVertical(U,V))
    # controle pour ylevels
    # Crop(16,16, -16, -8)
    # ColorYUV(analyze=true)
    
    
    En revanche, le résultat est moins convainquant sur l'autre exemple qui est une VHS très abimée :
    Code:
    # chargement des plugins (.dll ou .avsi/avs):
    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\FFTQuiver.dll")
    Loadplugin("C:\Program Files (x86)\AviSynth 2.5\plugins\mvtools-v2.5.10\mvtools2.dll")
    Loadplugin("C:\Program Files (x86)\AviSynth 2.5\plugins\MaskTools-v1.5.8\Masktools.dll") # pour QTGMC
    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\RemoveGrain_v1.0\RemoveGrainSSE3.dll") # pour QTGMC
    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\RepairSSE2.dll")
    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\nnedi3.dll")
    Import("C:\Program Files (x86)\AviSynth 2.5\plugins\QTGMC-3.32.avsi")
    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\QTGMC 32-bit Plugins\Avisynth 32-bit Plugins\SSE3Tools.dll") # pour support YUY2
    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\VerticalCleanerSSE3.dll")
    import("C:\Program Files (x86)\AviSynth 2.5\plugins\YLevels.avsi")
    
    ## DEBUT DU SCRIPT ##
    
    
    # directshowsource("E:\testsansson",fps=25.000)
    #converttoyv12(interlaced=true)
    QTInput("M:\Master\vhsLaurent\nirvana.mov", color=2, audio=1)
    #AVISource("E:\logarith.AVI")
    converttoyv12(interlaced=true)
    assumetff() # pour source entrelacée
    separatefields() # séparation des champs pairs/impairs
    tweak(sat=1.1,cont=1.0,coring=false) # ajouter de la saturation sur UV (couleurs)
    #Pour enlever les herring bones / dot crawl:
    F1Quiver(last, "gn", 336, 10, test=false)
    weave() # pour ré-entrelacer les champs
    ConverttoRGB32(matrix="rec601",interlaced=true) # conversion en rgb32 pour filtre vdub
    LoadVirtualDubPlugin("C:\Program Files (x86)\VirtualDub\plugins\Camcorder_Color_Denoise_sse2.vdf","CCD",1)
    CCD(15,0) # pour enlever un peu de chroma noise(
    converttoyv12(matrix="rec601",interlaced=true) # on revient en Y'UV
    # rajouter qtgmc pour désentrelacer à la fin
    QTGMC( Preset="fast", SourceMatch=3, Lossless=2, Sharpness=0.4, TR2=2 )
    selecteven()
    
    
    J'ai poussé CCD jusqu'à 15 sans trop voir de difference. Je n'ai pas utilisé Ylevels sur les autres VHS car après test, elles étaient calibrées en 15-235.
     
  13. THEMASTER

    Points Repaire:
    1 970
    Recos reçues:
    11
    Messages:
    987
    Appréciations:
    +9 / 18 / -0
    Il y a du boulot encore , exemple sur les chemises qui sont bleutées et qui devraient être blanches à priori
     
  14. laurentj1982

    Points Repaire:
    1 650
    Recos reçues:
    1
    Messages:
    924
    Appréciations:
    +7 / 10 / -2
    Mais les blanc paraissent corrects plus loin sur les cibles, les casquettes, les t-shirts....

    Du coup, c'est assez délicat de faire des corrections car il faudrait les faire plan par plan.
    Et je me demande si ce défaut est du à la VHS ou tout simplement à la prod d'origine et à un mauvais étalonnage ?
     
  15. arnuche

    Points Repaire:
    3 470
    Recos reçues:
    8
    Messages:
    1 270
    Appréciations:
    +1 / 9 / -1
    Je vais avoir besoin de votre aide d'ici quelques jours (notamment concernant les fonctions ylevels, tweak, undot, ...) parce que je dois numériser et nettoyer une VHS ayant quelques défauts.
    J'ai déjà tenté une capture en Lagarith et il y a un problème étrange d'en-tête : le framerate de l'avi est en 29.97 au lieu de 25 (ma VHS est bien en Pal) mais je peux changer ça facilement avec Virtual Dub (source rate adjustment), donc ce n'est pas grave mais ça fait une manipulation en plus.
    Pareil si je capture en Huffyuv ou YUV (ce dernier est le format de Virtual VCR quand on ne choisit pas de compression).
    Quelqu'un connaît ce problème ?
     
Chargement...

Partager cette page