module inscription newsletter haut de page forum mobile

Dismiss 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
Dismiss 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

[Débutant] Amélioration fichier suite numérisation VHS

Discussion in 'Transferts vidéo analogique vers numérique' started by india_whisky, Dec 22, 2020.

  1. maxtherence

    Appréciations:
    +3 / 2 / -0

    Trophy Points:
    1,200
    Likes Received:
    1
    Messages:
    107
  2. india_whisky

    Appréciations:
    +0 / 0 / -0

    Trophy Points:
    100
    Likes Received:
    0
    Messages:
    7
    Bonsoir à tous,
    J'ai essayé Film9, qui ne me donne pas plus de résultats que le logiciel dont je parlais dans mon post initial. Sous ShotCut, en ajoutant un filtre RGB Shift j'ai pu superposer 3 images qui étaient légèrement décalées (d'ailleurs, d'où vient ce décalage ?) Du coup, la bande rouge a disparu. J'ai également augmenté de 50% la netteté de l'image, ce qui rend l'ensemble un peu plus agréable. J'en reste là vu que les bandes horizontales sont dues au magnétoscope utilisé. Pour 5 VHS concernées sur 35, je vais temporiser pour le moment.

    J'en reviens à ma dernière question, le format issu de la numérisation est du MPG, un intérêt particulier à le laisser tel quel ? Ou vaut-il mieux ré encoder en FFV1 .mkv par exemple ?
     
  3. THEMASTER

    Appréciations:
    +9 / 18 / -0

    Trophy Points:
    1,970
    Likes Received:
    11
    Messages:
    987
    Sur l'image que tu as postée il n'y pas que la bande rouge de droite il y aussi les traits blancs (dropouts je pense) et ça se nettoie bien avec avisynth.
    J'attend toujours un extrait de ta video...
     
  4. india_whisky

    Appréciations:
    +0 / 0 / -0

    Trophy Points:
    100
    Likes Received:
    0
    Messages:
    7
    Oups désolé TheMaster.
    Voilà un extrait concerné.
    Dropbox - Sample.mp4 - Simplify your life
    Le problème finalement sous Shotcut est qu'une fois l'image retravaillée, j'ai beaucoup moins d'images par secondes. J'ai du louper une option lors du ré-encodage.
     
  5. THEMASTER

    Appréciations:
    +9 / 18 / -0

    Trophy Points:
    1,970
    Likes Received:
    11
    Messages:
    987
  6. india_whisky

    Appréciations:
    +0 / 0 / -0

    Trophy Points:
    100
    Likes Received:
    0
    Messages:
    7
    Incroyable.
    Quels sont ces réglages TheMaster ?
     
  7. Alcoriza

    So
    Appréciations:
    +294 / 698 / -5

    Trophy Points:
    8,200
    Likes Received:
    94
    Messages:
    5,209
    Tu as un indice dans le nom du fichier qu'il t'a envoyé.
     
  8. Lacombe

    Appréciations:
    +34 / 95 / -4

    Trophy Points:
    4,480
    Likes Received:
    24
    Messages:
    436
    Ce sujet m'intéresse beaucoup puique j'ai numérisé toute ma videotheque VHS, S-VHS, DV et HDV depuis 1987!
    J'ai repris des fichiers VHS de bonne qualité et essayé les deux softs mentionnés: Film9 et Studio transfer.
    Ils utilisent les mêmes logiciels et les mêmes codecs, mais l'interface et le tutorial de Studiotransfer est largement supérieur. De plus avec Film9, sur de longs projets (20 min et plus) j'au subi de nombreux plantages. Avec Studiotransfer aucun plantage et surtout une qualité du fichier brut de départ largement amélioré!
    Facilité du crop, bon réglages de la luminosité , contraste et balance des blancs et grande amélioration de la netteté sans augmentation notable du fourmillement de l'image. Je suis enchanté.
    Au point qu'un film VHS retravaillé reencodé en MP4 peut tout à fait être vu sur un videoprojecteur 4K sans honte et avec beaucoup de plaisir.
     
  9. THEMASTER

    Appréciations:
    +9 / 18 / -0

    Trophy Points:
    1,970
    Likes Received:
    11
    Messages:
    987
    Pas de soucis le script que j'ai concocté c'est celui-ci:
    (il te faudra charger divers filtres avant ce script dont: ttempsmooth, fft3dfilter, mvtools, spotless, depulse, DeGrainMedian et je dois en oublier 1 ou 2


    Code:
    ## chargement des filtres ici:
    LoadPlugin("C:\Program Files (x86)\AviSynth 2.6\plugins\TTempSmooth\TTempSmooth.dll")
    etc.....
    SetMemoryMax(1200)
    SetMTMode(3,4)
    LWLibavVideoSource("Sample.mp4")
    
    ####### Pour enlever le bruit sur les canaux chromatiques (U et V) #######
    converttoyv12(matrix="Rec601",interlaced=false)
    U = UToY().ttempsmooth(maxr=1,lthresh=150, strength=1)
    V=VToY().ttempsmooth(maxr=1,lthresh=150, strength=1)
    YToUV(U,V,last)#
    
    ####### Pour enlever  des petits traits noirs (drop outs)  (noir uniquement) #######
    noisy   = last
    nonoise = FFT3DFilter(sigma=13,bt=1)
    diff    = 5                         # Difference between denoised and noisy clips
    m       = mt_lutxy(noisy,nonoise,"y x - "+string(diff)+" - 255 *")
    mt_merge(noisy,nonoise,m) # On Merge les 2 sources noisy et denoised
    
    ####### Pour enlever traits blancs  (drop outs) avec spotless et depulse #######
    SpotLess(last)
    converttoyuy2()
    DePulse(h=190, l=50, d=30, debug=false) # ok pour blanc, pas parfait
    converttoyv12(matrix="Rec601",interlaced=false)
    
    
    #######  Pour améliorer la video globalement, Attention !!! les valeurs  pour Manalyse doivent être sûrement à peaufiner car sinon ça peut créer des artéfacts#######
    # Video avec bcp de mouvement   / video avec peu de mouvement / se renseigner sur le forum doom9
    a=last
    #clense(reduceflicker=false).merge(last,0.5).clense(reduceflicker=false)
    mot=removegrain(8,0).DepanEstimate(range=2)
    take2=a.depaninterleave(mot,prev=2,next=2,subpixel=2).DeGrainMedian(limitY=255,limitUV=255,mode=2,norow=true,interlaced=false)
    clean1=take2.DeGrainMedian(limitY=255,limitUV=255,mode=0,norow=true,interlaced=false).selectevery(5,2)  # MODE 0 pour sample.mp4
    
    sup1 = clean1.minblur(1).removegrain(11,0)
     \           .mt_lutxy(clean1,"x 1 + y < x 2 + x 1 - y > x 2 - y ? ?",U=2,V=2)
     \           .msuper(pel=2,sharp=0)
    sup2 = a.msuper(pel=2,levels=1,sharp=2)
    ###### Good mvtools values, Do not change, checked##########
    bv22=sup1.manalyse(isb=true, truemotion=false,global=true,delta=2,blksize=16,overlap=8,search=5,searchparam=4,DCT=5)
    bv21=sup1.manalyse(isb=true, truemotion=false,global=true,delta=1,blksize=16,overlap=8,search=5,searchparam=4,DCT=5)
    fv21=sup1.manalyse(isb=false,truemotion=false,global=true,delta=1,blksize=16,overlap=8,search=5,searchparam=4,DCT=5)
    fv22=sup1.manalyse(isb=false,truemotion=false,global=true,delta=2,blksize=16,overlap=8,search=5,searchparam=4,DCT=5)
    
    interleave(a.mcompensate(sup2,fv22),a.mcompensate(sup2,fv21),a,a.mcompensate(sup2,bv21),a.mcompensate(sup2,bv22))
    mergeluma(TMedian2(),0.9).mergechroma(TMedian2(),1).selectevery(5,2)
    
    sup3 = last.msuper(pel=2,sharp=2)
    bv33=sup3.manalyse(isb=true, truemotion=false,global=true,delta=3,blksize=8,overlap=4,search=5,searchparam=4,DCT=5)
    bv32=sup3.manalyse(isb=true, truemotion=false,global=true,delta=2,blksize=8,overlap=4,search=5,searchparam=4,DCT=5)
    bv31=sup3.manalyse(isb=true, truemotion=false,global=true,delta=1,blksize=8,overlap=4,search=5,searchparam=4,DCT=5)
    fv31=sup3.manalyse(isb=false,truemotion=false,global=true,delta=1,blksize=8,overlap=4,search=5,searchparam=4,DCT=5)
    fv32=sup3.manalyse(isb=false,truemotion=false,global=true,delta=2,blksize=8,overlap=4,search=5,searchparam=4,DCT=5)
    fv33=sup3.manalyse(isb=false,truemotion=false,global=true,delta=3,blksize=8,overlap=4,search=5,searchparam=4,DCT=5)
    last
    
    ##### Filtrage de la bande de couleur rouge à droite: #######
    # on peut faire mieux je pense notamment prendre la couleur de la video (vers la gauche) et la "dupliquer" dans cette partie de la video filtrée pour un rendu plus homogène. Voir sur doom9 ou forum videohelp
    
    filter_borders(last,0, 0, -30, -0)
    
    function filter_borders(clip c, int Left, int Top, int Right, int Bottom)
    {
      inner = Crop(c, 0, 0, -30, -0)
      # mettre les filtres ici:
    tweak(c,sat=0.0)
      Overlay(last, inner, Left, Top) # overlay unfiltered inner portion
    }
    
    ###  Fonctions nécessaires au bon fonctionnement de ce script ##############
    
    Function SpotLess(clip c,int "RadT",int "ThSAD",int "ThSAD2",int "pel",bool "chroma", int "BlkSz",Int "Olap",bool "tm",Bool "glob",Float "bBlur") {
        RadT     = Default(RadT,1)        # Temporal radius. (MCompensate arg)
        ThSAD    = Default(ThSAD,10000)   # SAD threshold at radius 1 (Default Nearly OFF).
        ThSAD2   = Default(ThSAD2,ThSAD)  # SAD threshold at radius RadT.
        Pel      = Default(pel,2)         # Default 2. 1, 2, or 4. Maybe set 1 for HD+. (1=precision to pixel, 2=precision to half pixel, 4=quarter pixel)
        Chroma   = Default(chroma,True)   # MAnalyse chroma arg. If set to true, use chroma in block matching.
        BlkSz    = Default(BlkSz,8)       # Default 8. MAnalyse BlkSize. Bigger blksz quicker and perhaps  better, esp for HD clips. Maybe also better where BIG noise.
        OLap     = Default(OLap, BlkSz/2) # Default half of BlkSz.
        Tm       = Default(tm,True)       # TrueMotion, Some folk swear MAnalyse(truemotion=false) is better.
        Glob     = Default(glob,Tm)       # Default Tm, Allow set MAnalyse(global) independently of TrueMotion.
        Bblur    = Default(bblur,0.0)     # Default OFF
        Assert(1 <= RadT,"SpotLess: 1 <= RadT")
        pad      = max(BlkSz,8)
        sup      = (bBlur<=0.0  ? c   : c.blur(bblur)).MSuper(hpad=pad,vpad=pad,pel=pel,sharp=2)
        sup_rend = (bBlur<=0.0) ? sup : c.MSuper(hpad=pad,vpad=pad,pel=pel,sharp=2,levels=1) # Only 1 Level required where not MAnalyse-ing.
        MultiVec = sup.MAnalyse(multi=true, delta=RadT,blksize=BlkSz,overlap=OLap,search=4,chroma=Chroma,truemotion=Tm,global=Glob)
        c.MCompensate(sup_rend,MultiVec,tr=RadT,thSad=ThSAD,thSad2=ThSAD2)
        MedianBlurTemporal(radiusY=0,radiusU=0,radiusV=0,temporalradius=RadT)  # Temporal median blur only [not spatial]
        SelectEvery(RadT*2+1,RadT)                                             # Return middle frame
    }
    
    
    #################################################################
    function EdgeCleaner(clip c, float "strength", bool "rep", int "rmode", int "smode", bool "hot", bool "fix") {
        strength    = default(strength, 8.0)
        rep         = default(rep, true)
        rmode       = default(rmode, 17)
        smode       = default(smode, 0)
        hot         = default(hot, false)
        fix         = default(fix, true)
        c           = (c.isYV12()) ? c : c.ConvertToYV12()
        strength    = (smode==0) ? strength : strength+4
        main        = c.aWarpSharp(strength,1)
        main        = (rep) ? Repair(main,c,rmode) : main
        mask        = c.mt_edge("prewitt",4,32,4,32).mt_invert().mt_convolution()
        final       = (!hot) ? mt_merge(c,main,mask) : Repair(mt_merge(c,main,mask),c,2)
        final       = (fix) ? Overlay(final,c.ConvertToRGB24().Crop(0,1,-c.width+1,-c.height+2),x=0,y=1) : final
        final       = (smode != 0) ? mt_merge(final,c,c.StarMask(smode)) : final
        return final
    }
    function StarMask(clip c, int "mode") {
        mode        = default(mode, 1)
        clean       = (mode==1) ? c.RemoveGrain(17) : Repair(c.Deen("a3d",4,12,0),c,15).RemoveGrain(21)
        diff        = (mode==1) ? mt_makediff(c,clean) : NOP
     
        final       = (mode==1) ? diff.Greyscale().Levels(40,0.350,168,0,255).removegrain(7,-1).mt_edge("prewitt",4,16,4,16) : \
                      Subtract(mt_merge(clean,c,c.mt_edge("roberts",0,2,0,2).mt_expand(mode=mt_circle(1)).mt_invert()),c).mt_edge("roberts",0,0,0,0).mt_deflate()
     
        return final
    }
    
    
    
    function MinBlur(clip clp, int r, int "uv")
    {
    uv   = default(uv,3)
    uv2  = (uv==2) ? 1 : uv
    rg4  = (uv==3) ? 4 : -1
    rg11 = (uv==3) ? 11 : -1
    rg20 = (uv==3) ? 20 : -1
    medf = (uv==3) ? 1 : -200
    
    RG11D = (r==0) ? mt_makediff(clp,clp.sbr(),U=uv2,V=uv2)
     \    : (r==1) ? mt_makediff(clp,clp.removegrain(11,rg11),U=uv2,V=uv2)
     \    : (r==2) ? mt_makediff(clp,clp.removegrain(11,rg11).removegrain(20,rg20),U=uv2,V=uv2)
     \    :          mt_makediff(clp,clp.removegrain(11,rg11).removegrain(20,rg20).removegrain(20,rg20),U=uv2,V=uv2)
    RG4D  = (r<=1) ? mt_makediff(clp,clp.removegrain(4,rg4),U=uv2,V=uv2)
     \    : (r==2) ? mt_makediff(clp,clp.medianblur(2,2*medf,2*medf),U=uv2,V=uv2)
     \    :          mt_makediff(clp,clp.medianblur(3,3*medf,3*medf),U=uv2,V=uv2)
    DD    = mt_lutxy(RG11D,RG4D,"x 128 - y 128 - * 0 < 128 x 128 - abs y 128 - abs < x y ? ?",U=uv2,V=uv2)
    clp.mt_makediff(DD,U=uv,V=uv)
    return(last)
    }
    
    
    
    # median of 5 clips from Helpers.avs by G-force
    Function Median2(clip "input_1", clip "input_2", clip "input_3", clip "input_4", clip "input_5", string "chroma")
    {
    chroma = default(chroma,"process") #default is "process". Alternates: "copy first" or "copy second"
    #MEDIAN(i1,i3,i5)
    Interleave(input_1,input_3,input_5)
    chroma == "process" ? Clense(reduceflicker=false) : Clense(reduceflicker=false,grey=true)
    m1 = selectevery(3,1)
    #MAX(MIN(i1,i3,i5),i2)
    m2  = input_1.MT_Logic(input_3,"min",chroma=chroma).MT_Logic(input_5,"min",chroma=chroma).MT_Logic(input_2,"max",chroma=chroma)
    #MIN(MAX(i1,i3,i5),i4)
    m3  = input_1.MT_Logic(input_3,"max",chroma=chroma).MT_Logic(input_5,"max",chroma=chroma).MT_Logic(input_4,"min",chroma=chroma)
    Interleave(m1,m2,m3)
    chroma == "process" ? Clense(reduceflicker=false) : Clense(reduceflicker=false,grey=true)
    selectevery(3,1)
    chroma == "copy first" ? last.MergeChroma(input_1) : chroma == "copy second" ? last.MergeChroma(input_2) : last
    ConverttoRGB32(matrix="rec601",interlaced=false)
    LoadVirtualDubPlugin("C:\Program Files (x86)\VirtualDub\plugins\Camcorder_Color_Denoise_sse2.vdf", "CCD", 1)
    CCD(7,1) # de 0 à 100 # Défaut =30 /
    converttoyv12(matrix="rec601",interlaced=false)
    Return(last)
    }
    
    function TMedian2(clip c) {
    Median2( c.selectevery(1,-2), c.selectevery(1,-1), c, c.selectevery(1,1), c.selectevery(1,2) ) }
    
    
    function RemoveDirt(clip input, int limit, bool _grey)
    {
      clensed=input.Clense(grey=_grey, cache=4)
      alt=input.RemoveGrain(2)
      return RestoreMotionBlocks(clensed,input,alternative=alt,pthreshold=6,cthreshold=8, gmthreshold=40,dist=3,dmode=2,debug=false,noise=limit,noisy=4, grey=_grey)
    
      # Alternative settings
      # return RestoreMotionBlocks(clensed,input,alternative=alt,pthreshold=4,cthreshold=6, gmthreshold=40,dist=1,dmode=2,debug=false,noise=limit,noisy=12,grey=_grey,show=true)
      # return RestoreMotionBlocks(clensed,input,alternative=alt,pthreshold=6,cthreshold=8, gmthreshold=40,dist=3,tolerance= 12,dmode=2,debug=false,noise=limit,noisy=12,grey=_grey,show=false)
    }

    Modération : Code mis dans balises pour faciliter la lecture de la discussion
     
    #24 THEMASTER, Jan 7, 2021
    Last edited by a moderator: Jan 7, 2021
Loading...

Dernières occasions

 

Share This Page

Vous souhaitez annoncer sur le Repaire ? Contactez-nous