View Full Version : Need help denoising incredibly noisy video
Dark Shikari
4th August 2007, 13:49
Linkage to sample clip (encoded to Xvid from source) (http://www.mediafire.com/?fosf3izzdm2)
The amount of grain on this is absurd.
How would you suggest I denoise it? VagueDenoiser does little on lower settings and on the recommended higher settings it gets rid of the dots but creates a lot of variation from frame to frame.
FFT3DGPU(sigma=6,beta=1,bw=64,bh=64,sharpen=0.7,precision=2) is quite powerful but it still leaves a lot of variation from frame to frame even in static portions of the frame.
What would you recommend?
My personal preference is to totally eliminate noise; with the noise it looks bad and even with the noisiness removed (as far as I've tried) there's a lot of flickering where the noise was, and its distracting. I'd rather have a slightly blurry video than a noisy one.
check
4th August 2007, 15:15
The first thing I'll point out is that 300 is meant to have that much noise.
The second thing I'll ask: what sort of crazy insaneo resolution is 1440*800?? Are you encoding from a HD disc for your laptop?
Anyway, as to the denoising, I'd go with something that's basically a killer spatial smoother and then temporally smear it later. Something like this:
AVISource("Noise.avi")
src = last
removegrain(19).removegrain(19).DeGrainMedian(mode=0).fft3dfilter().hqdn3d(0,0,3,6)
last.mergechroma(src)
Note the mergechroma, which is needed due to the removegrains, but also the hqdn3d.
The problem is that you will get ghosting in high motion parts of the video with such hqdn3d values, since the sample had none of them I can't really test it though. You can try ttempsmooth instead, but it's a little hard to get working as a stabiliser.
Dark Shikari
4th August 2007, 15:21
The first thing I'll point out is that 300 is meant to have that much noise.
The second thing I'll ask: what sort of crazy insaneo resolution is 1440*800?? Are you encoding from a HD disc for your laptop?
Anyway, as to the denoising, I'd go with something that's basically a killer spatial smoother and then temporally smear it later. Something like this:
AVISource("Noise.avi")
src = last
removegrain(19).removegrain(19).DeGrainMedian(mode=0).fft3dfilter().hqdn3d(0,0,3,6)
last.mergechroma(src)
Note the mergechroma, which is needed due to the removegrains, but also the hqdn3d.
The problem is that you will get ghosting in high motion parts of the video with such hqdn3d values, since the sample had none of them I can't really test it though. You can try ttempsmooth instead, but it's a little hard to get working as a stabiliser.
Yeah I was encoding it for a laptop so I shrunk it from 1080p to save processing power (since the screen can't handle that anyways).
I'll try your script.
And what do you mean 300 is meant to have that much noise?
check
4th August 2007, 15:28
And what do you mean 300 is meant to have that much noise?
assert("Video clip was from the movie '300'")
If you look at the HD discs available (and the DVD), or if you saw it at the cinema, you will see the huge amounts of grain are actually part of the movie. It's obviously not a technical problem they had because of budget limitations, so I can only assume it was part of the director's vision, just as the costumes or special effects are.
... That said, I'm not here to moralise, I tend to get rid of grain too :devil: (I just think this movie deserves full quality 1080p at --crf 16)
Dark Shikari
4th August 2007, 15:30
Doesn't work, it says invalid argument to removegrain. There doesn't seem to be a mode=19...
buzzqw
4th August 2007, 15:49
need removegrain 1.0 ...
BHH
Dark Shikari
4th August 2007, 16:21
need removegrain 1.0 ...
BHH
Where can I find it? The plugin list shows 0.9, and the official RemoveGrain website shows 0.9.
Didée
4th August 2007, 16:23
http://home.arcor.de/kassandro/RemoveGrain/RemoveGrain.rar
edit - worth a try:
http://forum.gleitz.info/showthread.php?p=333669#post333669
For your source, in the script change to "bs=16". Probably downsize first, as MoComp'ed filtering is no fun on 1080ish sources ...
Leak
4th August 2007, 17:17
assert("Video clip was from the movie '300'")
If you look at the HD discs available (and the DVD), or if you saw it at the cinema, you will see the huge amounts of grain are actually part of the movie. It's obviously not a technical problem they had because of budget limitations, so I can only assume it was part of the director's vision, just as the costumes or special effects are.
Yeah, since it all was filmed digital (and projected digital, if you went to the right cinema) the noise actually was added artificially in post-production. You just can't have a nitty-gritty film that looks smooth like a baby's skin... :)
np: Praxis - Machine Gun (Tennessee 2004)
Dark Shikari
4th August 2007, 17:23
Yeah, since it all was filmed digital (and projected digital, if you went to the right cinema) the noise actually was added artificially in post-production. You just can't have a nitty-gritty film that looks smooth like a baby's skin... :)
I always feel bad wasting 2/3 of my bitrate on noise though :p
Leak
4th August 2007, 17:32
I always feel bad wasting 2/3 of my bitrate on noise though :p
Does bitrate matter all that much for playback on a notebook, though? It's not as if it was some lowly PDA that couldn't handle the bitrate, right? ;)
np: Praxis - Chopper (Tennessee 2004)
Dark Shikari
4th August 2007, 17:32
Here's what I settled on... it looks pretty good in my opinion.
src=last
removegrain(19)
removegrain(19)
DeGrainMedian(mode=0)
fft3dgpu(precision=2)
hqdn3d(0,0,3,6)
fft3dfilter(sigma=0,sharpen=1)
last.mergechroma(src)
Lanczos4Resize(1280,720)
I figured I would just stick to the regular 720p resolution to resize to and then fix the aspect ratio with a SAR flag in the final encode.
Does bitrate matter all that much for playback on a notebook, though? It's not as if it was some lowly PDA that couldn't handle the bitrate, right? ;)
np: Praxis - Chopper (Tennessee 2004)
It matters when I have a 160GB hard disk, 90% of which is already full within the first two months of me using the notebook!
Leak
4th August 2007, 18:04
src=last
removegrain(19)
removegrain(19)
DeGrainMedian(mode=0)
fft3dgpu(precision=2)
hqdn3d(0,0,3,6)
fft3dfilter(sigma=0,sharpen=1)
last.mergechroma(src)
Lanczos4Resize(1280,720)
:eek: :confused:
I think my brain just melted.
It matters when I have a 160GB hard disk, 90% of which is already full within the first two months of me using the notebook!
:eek: :confused:
Someone get this man an external hard disk... :D
np: Hexstatic - Roll Over (When Robots Go Bad)
halsboss
5th August 2007, 07:19
Me too ... please, any advice to deal with this indoor DV capture from a PAL Canon MV920 ? Snippet = 2s 4Mb http://www.adam.com.au/walshdcw/cut-2secs.avi Most noise most obvious in the last half of the clip on the "light" wall to the left.
Tried this but only passingly comfortable with results 22-24 (FFT3D + DeGrainMedian) in this case ... mvdenoise2 trial fell out of contention a bit earlier after a test.
LoadPlugin("C:\SOFTWARE\DGindex\DGDecode.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins-dcw\ReverseFieldDominance.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins-dcw\ReInterpolate420.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins-dcw\ColorMatrix.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins-dcw\TDeint.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins-dcw\AGC.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins-dcw\Cnr2.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins-dcw\dctfilter.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins-dcw\fft3dfilter.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins-dcw\degrainmedian.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins-dcw\Convolution3d.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins-dcw\despot.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins-dcw\MVTOOLS.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins-dcw\WarpSharp.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins-dcw\MaskTools.dll")
# These next 2 for LimitedSharpenFaster.avsi
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins-dcw\mt_masktools.dll")
# -------------------------------------------------------------------------------------
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins-dcw\RemoveGrainSSE2.dll")
#####LoadPlugin("C:\Program Files\AviSynth 2.5\plugins-dcw\RemoveGrain.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins2.0\LoadPluginEx.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins2.0\DustV5.dll")
# -------------------------------------------------------------------------------------
Import("C:\Program Files\AviSynth 2.5\LimitedSharpenFaster.avsi")
Import("C:\Program Files\AviSynth 2.5\dcwresize.avsi")
Import("C:\Program Files\AviSynth 2.5\Deblock_QED_MT2.avs")
# -------------------------------------------------------------------------------------
AviSource("D:\DVD\PatBday\cut-2secs.avi", audio=false)
ConvertToYUY2(interlaced=TRUE)
original=LAST
#
ColorMatrix(mode="rec.601->rec.709",interlaced=true)
# raw with just ColorMatrix only
I0 = LAST.AssumeBFF()
# run CNR2 over it to remove chroma noise
Icnr2 = I0.SeparateFields()
Icnr2even = Icnr2.SelectEven()
Icnr2odd = Icnr2.SelectOdd()
Icnr2even = Icnr2even.Cnr2()
Icnr2odd = Icnr2odd.Cnr2()
Icnr2 = Interleave(Icnr2even,Icnr2odd)
Icnr2 = Icnr2.Weave()
Icnr2 = Icnr2.AssumeBFF()
# Conv3d with no CNR2 first
IC3DnoCNR2 = I0.SeparateFields()
IC3DnoCNR2even = IC3DnoCNR2.SelectEven()
IC3DnoCNR2odd = IC3DnoCNR2.SelectOdd()
IC3DnoCNR2even = IC3DnoCNR2even.Convolution3D(0, 6, 10, 6, 8, 2.8, 0)
IC3DnoCNR2odd = IC3DnoCNR2odd.Convolution3D(0, 6, 10, 6, 8, 2.8, 0)
IC3DnoCNR2 = Interleave(IC3DnoCNR2even,IC3DnoCNR2odd)
IC3DnoCNR2 = IC3DnoCNR2.Weave()
IC3DnoCNR2 = IC3DnoCNR2.AssumeBFF()
# Conv3d with yes CNR2 first
IC3DyesCNR2 = Icnr2.SeparateFields()
IC3DyesCNR2even = IC3DyesCNR2.SelectEven()
IC3DyesCNR2odd = IC3DyesCNR2.SelectOdd()
IC3DyesCNR2even = IC3DyesCNR2even.Convolution3D(0, 6, 10, 6, 8, 2.8, 0)
IC3DyesCNR2odd = IC3DyesCNR2odd.Convolution3D(0, 6, 10, 6, 8, 2.8, 0)
IC3DyesCNR2 = Interleave(IC3DyesCNR2even,IC3DyesCNR2odd)
IC3DyesCNR2 = IC3DyesCNR2.Weave()
IC3DyesCNR2 = IC3DyesCNR2.AssumeBFF()
#
IFFT3DnoCNR2 = I0.FFT3DFilter(sigma=3, plane=4, sharpen=1.0, degrid=1.0, interlaced=TRUE)
#
IFFT3DyesCNR2 = Icnr2.FFT3DFilter(sigma=3, plane=4, sharpen=1.0, degrid=1.0, interlaced=TRUE)
#
IFFT3DBIGnoCNR2 = I0.FFT3DFilter(sigma=4, plane=0, sharpen=1.0, degrid=1.0, interlaced=TRUE)
IFFT3DBIGnoCNR2 = IFFT3DBIGnoCNR2.FFT3DFilter(sigma=8, plane=3, sharpen=1.0, degrid=1.0, interlaced=TRUE)
#
IFFT3DBIGyesCNR2 = Icnr2.FFT3DFilter(sigma=4, plane=0, sharpen=1.0, degrid=1.0, interlaced=TRUE)
IFFT3DBIGyesCNR2 = IFFT3DBIGyesCNR2.FFT3DFilter(sigma=8, plane=3, sharpen=1.0, degrid=1.0, interlaced=TRUE)
#
IDGMstrongnoCNR2 = I0.DeGrainMedian(limitY=5,limitUV=7,mode=0, interlaced=TRUE)
#
IDGMstrongyesCNR2 = Icnr2.DeGrainMedian(limitY=5,limitUV=7,mode=0, interlaced=TRUE)
#
IstrongestNoCNR2 = IFFT3DBIGnoCNR2.DeGrainMedian(limitY=5,limitUV=7,mode=0,interlaced=TRUE)
#
IstrongestYesCNR2 = IFFT3DBIGyesCNR2.DeGrainMedian(limitY=5,limitUV=7,mode=0,interlaced=TRUE)
# not too sure about removegrain(19) ON INTERLACED MATERIAL !
IrgNoCNR2 = Converttoyv12(I0,interlaced=TRUE)
IrgNoCNR2 = IrgNoCNR2.removegrain(19).removegrain(19).DeGrainMedian(mode=0,interlaced=TRUE).fft3dfilter(interlaced=TRUE)
IrgNoCNR2 = ConvertToYUY2(interlaced=TRUE)
# not too sure about removegrain(19) ON INTERLACED MATERIAL !
IrgYesCNR2 = Converttoyv12(Icnr2,interlaced=TRUE)
IrgYesCNR2 = IrgYesCNR2.removegrain(19).removegrain(19).DeGrainMedian(mode=0,interlaced=TRUE).fft3dfilter(interlaced=TRUE)
IrgYesCNR2 = ConvertToYUY2(interlaced=TRUE)
# mvdegrain2
Imv = I0.TDeint(mode=1)
Imvdenoised = Imv.DegrainMedian(limituv=0)
Imvbackward_vec2 = MVAnalyse(Imvdenoised, isb = true, delta = 2, pel = 2, overlap=8, sharp=2, idx = 1, blksize=16, chroma=false)
Imvbackward_vec1 = MVAnalyse(Imvdenoised, isb = true, delta = 1, pel = 2, overlap=8, sharp=2, idx = 1, blksize=16, chroma=false)
Imvforward_vec1 = MVAnalyse(Imvdenoised, isb = false, delta = 1, pel = 2, overlap=8, sharp=2, idx = 1, blksize=16, chroma=false)
Imvforward_vec2 = MVAnalyse(Imvdenoised, isb = false, delta = 2, pel = 2, overlap=8, sharp=2, idx = 1, blksize=16, chroma=false)
Imv = MVDegrain2(Imv,Imvbackward_vec1,Imvforward_vec1,Imvbackward_vec2,Imvforward_vec2,thSAD=400,idx=2)
#Imv = Imv.FFT3DFilter(sigma=3,plane=4,degrid=1.0,interlaced=FALSE)
Imv = Imv.FFT3DFilter(sigma=3,plane=0,sharpen=1.0,degrid=1.0,interlaced=FALSE)
Imv = Imv.FFT3DFilter(sigma=8,plane=3,sharpen=1.0,degrid=1.0,interlaced=FALSE)
Imv = Imv.SeparateFields()
Imv = Imv.SelectEvery(4,0,3)
Imv = Imv.Weave().AssumeBFF()
#------------------------------------------------------------------------------------------
I0agc = dcwHDRAGC(I0)
I0agc = I0agc.ScriptClip("""subtitle("03. colormatrix yes AGC " + string(current_frame),x=40,y=30,size=25)""")
I0 = I0.ScriptClip("""subtitle("02. colormatrix no AGC " + string(current_frame),x=40,y=30,size=25)""")
#
Icnr2agc = dcwHDRAGC(Icnr2)
Icnr2agc = Icnr2agc.ScriptClip("""subtitle("05. cnr2 only yes AGC " + string(current_frame),x=40,y=30,size=25)""")
Icnr2 = Icnr2.ScriptClip("""subtitle("04. cnr2 only no AGC " + string(current_frame),x=40,y=30,size=25)""")
#
IC3DnoCNR2agc = dcwHDRAGC(IC3DnoCNR2)
IC3DnoCNR2agc = IC3DnoCNR2agc.ScriptClip("""subtitle("07. C3d no CNR2 yes AGC " + string(current_frame),x=40,y=30,size=25)""")
IC3DnoCNR2 = IC3DnoCNR2.ScriptClip("""subtitle("06. C3d no CNR2 no AGC " + string(current_frame),x=40,y=30,size=25)""")
#
IC3DyesCNR2agc = dcwHDRAGC(IC3DyesCNR2)
IC3DyesCNR2agc = IC3DyesCNR2agc.ScriptClip("""subtitle("09. C3d yes CNR2 yes AGC " + string(current_frame),x=40,y=30,size=25)""")
IC3DyesCNR2 = IC3DyesCNR2.ScriptClip("""subtitle("08. C3d yes CNR2 no AGC " + string(current_frame),x=40,y=30,size=25)""")
#
IFFT3DnoCNR2agc = dcwHDRAGC(IFFT3DnoCNR2)
IFFT3DnoCNR2agc = IFFT3DnoCNR2agc.ScriptClip("""subtitle("11. FFT3d no CNR2 yes AGC " + string(current_frame),x=40,y=30,size=25)""")
IFFT3DnoCNR2 = IFFT3DnoCNR2.ScriptClip("""subtitle("10. FFT3d no CNR2 no AGC " + string(current_frame),x=40,y=30,size=25)""")
#
IFFT3DyesCNR2agc = dcwHDRAGC(IFFT3DyesCNR2)
IFFT3DyesCNR2agc = IFFT3DyesCNR2agc.ScriptClip("""subtitle("13. FFT3d yes CNR2 yes AGC " + string(current_frame),x=40,y=30,size=25)""")
IFFT3DyesCNR2 = IFFT3DyesCNR2.ScriptClip("""subtitle("12. FFT3d yes CNR2 no AGC " + string(current_frame),x=40,y=30,size=25)""")
#
IFFT3DBIGnoCNR2agc = dcwHDRAGC(IFFT3DBIGnoCNR2)
IFFT3DBIGnoCNR2agc = IFFT3DBIGnoCNR2agc.ScriptClip("""subtitle("15. FFT3d BIG no CNR2 yes AGC " + string(current_frame),x=40,y=30,size=25)""")
IFFT3DBIGnoCNR2 = IFFT3DBIGnoCNR2.ScriptClip("""subtitle("14. FFT3d BIG no CNR2 no AGC " + string(current_frame),x=40,y=30,size=25)""")
#
IFFT3DBIGyesCNR2agc = dcwHDRAGC(IFFT3DBIGyesCNR2)
IFFT3DBIGyesCNR2agc = IFFT3DBIGyesCNR2agc.ScriptClip("""subtitle("17. FFT3d BIG yes CNR2 yes AGC " + string(current_frame),x=40,y=30,size=25)""")
IFFT3DBIGyesCNR2 = IFFT3DBIGyesCNR2.ScriptClip("""subtitle("16. FFT3d BIG yes CNR2 no AGC " + string(current_frame),x=40,y=30,size=25)""")
#
IDGMstrongnoCNR2agc = dcwHDRAGC(IDGMstrongnoCNR2)
IDGMstrongnoCNR2agc = IDGMstrongnoCNR2agc.ScriptClip("""subtitle("19. DGM no CNR2 yes AGC " + string(current_frame),x=40,y=30,size=25)""")
IDGMstrongnoCNR2 = IDGMstrongnoCNR2.ScriptClip("""subtitle("18. DGM no CNR2 no AGC " + string(current_frame),x=40,y=30,size=25)""")
#
IDGMstrongyesCNR2agc = dcwHDRAGC(IDGMstrongyesCNR2)
IDGMstrongyesCNR2agc = IDGMstrongyesCNR2agc.ScriptClip("""subtitle("21. DGM yes CNR2 yes AGC " + string(current_frame),x=40,y=30,size=25)""")
IDGMstrongyesCNR2 = IDGMstrongyesCNR2.ScriptClip("""subtitle("20. DGM yes CNR2 no AGC " + string(current_frame),x=40,y=30,size=25)""")
#
IstrongestNoCNR2agc = dcwHDRAGC(IstrongestNoCNR2)
IstrongestNoCNR2agc = IstrongestNoCNR2agc.ScriptClip("""subtitle("23. STRONGEST no CNR2 yes AGC " + string(current_frame),x=40,y=30,size=25)""")
IstrongestNoCNR2 = IstrongestNoCNR2.ScriptClip("""subtitle("22. STRONGEST no CNR2 no AGC " + string(current_frame),x=40,y=30,size=25)""")
#
IstrongestYesCNR2agc = dcwHDRAGC(IstrongestyesCNR2)
IstrongestYesCNR2agc = IstrongestyesCNR2agc.ScriptClip("""subtitle("25. STRONGEST yes CNR2 yes AGC " + string(current_frame),x=40,y=30,size=25)""")
IstrongestYesCNR2 = IstrongestyesCNR2.ScriptClip("""subtitle("24. STRONGEST yes CNR2 no AGC " + string(current_frame),x=40,y=30,size=25)""")
#
IrgNoCNR2agc = dcwHDRAGC(IrgNoCNR2)
IrgNoCNR2agc = IrgNoCNR2agc.ScriptClip("""subtitle("27. DGM FFT no CNR2 yes AGC " + string(current_frame),x=40,y=30,size=25)""")
IrgNoCNR2 = IrgNoCNR2.ScriptClip("""subtitle("26. DGM FFT no CNR2 no AGC " + string(current_frame),x=40,y=30,size=25)""")
#
IrgYesCNR2agc = dcwHDRAGC(IrgYesCNR2)
IrgYesCNR2agc = IrgYesCNR2agc.ScriptClip("""subtitle("29. DGM FFT yes CNR2 yes AGC " + string(current_frame),x=40,y=30,size=25)""")
IrgYesCNR2 = IrgYesCNR2.ScriptClip("""subtitle("28. DGM FFT yes CNR2 no AGC " + string(current_frame),x=40,y=30,size=25)""")
Imvagc = dcwHDRAGC(Imv)
Imvagc = Imvagc.ScriptClip("""subtitle("31. MVdenoise2 yes AGC " + string(current_frame),x=40,y=30,size=25)""")
Imv = Imv.ScriptClip("""subtitle("30. MVdenoise2 no AGC " + string(current_frame),x=40,y=30,size=25)""")
#
final = original.ScriptClip("""subtitle("01. original no colormatrix no agc" + string(current_frame),x=40,y=30,size=25)""")
final = final ++ I0
final = final ++ I0agc
final = final ++ Icnr2
final = final ++ Icnr2agc
final = final ++ IC3DnoCNR2
final = final ++ IC3DnoCNR2agc
final = final ++ IC3DyesCNR2
final = final ++ IC3DyesCNR2agc
final = final ++ IFFT3DnoCNR2
final = final ++ IFFT3DnoCNR2agc
final = final ++ IFFT3DyesCNR2
final = final ++ IFFT3DyesCNR2agc
final = final ++ IFFT3DBIGnoCNR2
final = final ++ IFFT3DBIGnoCNR2agc
final = final ++ IFFT3DBIGyesCNR2
final = final ++ IFFT3DBIGyesCNR2agc
final = final ++ IDGMstrongnoCNR2
final = final ++ IDGMstrongnoCNR2agc
final = final ++ IDGMstrongyesCNR2
final = final ++ IDGMstrongyesCNR2agc
final = final ++ IstrongestNoCNR2
final = final ++ IstrongestNoCNR2agc
final = final ++ IstrongestYesCNR2
final = final ++ IstrongestYesCNR2agc
final = final ++ IrgNoCNR2
final = final ++ IrgNoCNR2agc
final = final ++ IrgYesCNR2
final = final ++ IrgYesCNR2agc
final = final ++ Imv
final = final ++ Imvagc
final
Converttoyv12()
SetPlanarLegacyAlignment(True)
Function dcwHDRAGC(Clip a) {
dcwHDRAGCclip = a.SeparateFields() # if content is interlaced
#dcwHDRAGCclip = dcwHDRAGCclip.HDRAGC(coef_gain=1.0, coef_sat=1.0) # default. +coef_gain=brighter decrease to limit. +coef_sat=more saturation
#dcwHDRAGCclip = dcwHDRAGCclip.HDRAGC(coef_gain=0.1, coef_sat=1.0)
#dcwHDRAGCclip = dcwHDRAGCclip.HDRAGC(coef_gain=0.2, coef_sat=1.0, corrector=0.8, reducer=2.0)
#dcwHDRAGCclip = dcwHDRAGCclip.HDRAGC(coef_gain=0.2, min_gain=0.1, max_gain=1.0, coef_sat=1.0, corrector=0.8, reducer=2.0)
#dcwHDRAGCclip = dcwHDRAGCclip.HDRAGC(coef_gain=0.2, min_gain=0.1, max_gain=1.0, coef_sat=1.0, corrector=0.8, reducer=2.0, black_clip=0.5)
dcwHDRAGCclip = dcwHDRAGCclip.HDRAGC(coef_gain=0.1, min_gain=0.1, max_gain=0.5, coef_sat=1.0, corrector=0.8, reducer=2.0, black_clip=1.0)
return dcwHDRAGCclip.Weave() # if content is interlaced
}
Pookie
5th August 2007, 08:05
The amount of grain on this is absurd.
You can reduce it significantly with Mvdegrain2, but if you're transcoding on your laptop, keep a fire extinguisher handy.
halsboss
5th August 2007, 08:20
Thanks, yes, a lot of grain. Wife's old girl's 70th... hides their wrinkles ? :) Surprised me too, the Canon MV920 doesn't appear to cope with low light too well, and no onboard light source. Oh well, its price was 1/3 normal so I can't complain.
Tried this without a lot of joy... am I doing something wrong ?
# mvdegrain2
Imv = I0.TDeint(mode=1) # I0 = suitably prepared source clip
Imvdenoised = Imv.DegrainMedian(limituv=0)
Imvbackward_vec2 = MVAnalyse(Imvdenoised, isb = true, delta = 2, pel = 2, overlap=8, sharp=2, idx = 1, blksize=16, chroma=false)
Imvbackward_vec1 = MVAnalyse(Imvdenoised, isb = true, delta = 1, pel = 2, overlap=8, sharp=2, idx = 1, blksize=16, chroma=false)
Imvforward_vec1 = MVAnalyse(Imvdenoised, isb = false, delta = 1, pel = 2, overlap=8, sharp=2, idx = 1, blksize=16, chroma=false)
Imvforward_vec2 = MVAnalyse(Imvdenoised, isb = false, delta = 2, pel = 2, overlap=8, sharp=2, idx = 1, blksize=16, chroma=false)
Imv = MVDegrain2(Imv,Imvbackward_vec1,Imvforward_vec1,Imvbackward_vec2,Imvforward_vec2,thSAD=400,idx=2)
#Imv = Imv.FFT3DFilter(sigma=3,plane=4,degrid=1.0,interlaced=FALSE)
Imv = Imv.FFT3DFilter(sigma=3,plane=0,sharpen=1.0,degrid=1.0,interlaced=FALSE)
Imv = Imv.FFT3DFilter(sigma=8,plane=3,sharpen=1.0,degrid=1.0,interlaced=FALSE)
Imv = Imv.SeparateFields()
Imv = Imv.SelectEvery(4,0,3)
Imv = Imv.Weave().AssumeBFF()
halsboss
5th August 2007, 10:50
So far, pending further suggestions, "she who must be obeyed" preferred "clip 23" which was
IFFT3DBIGnoCNR2 = I0.FFT3DFilter(sigma=4, plane=0, sharpen=1.0, degrid=1.0, interlaced=TRUE)
IFFT3DBIGnoCNR2 = IFFT3DBIGnoCNR2.FFT3DFilter(sigma=8, plane=3, sharpen=1.0, degrid=1.0, interlaced=TRUE)
IstrongestNoCNR2 = IFFT3DBIGnoCNR2.DeGrainMedian(limitY=5,limitUV=7,mode=0,interlaced=TRUE)
IstrongestNoCNR2.HDRAGC(coef_gain=0.1, min_gain=0.1, max_gain=0.5, coef_sat=1.0, corrector=0.8, reducer=2.0, black_clip=1.0)
foxyshadis
5th August 2007, 11:19
To me, the output of mvdegrain segment looks as perfect as anything I could hope for, but then again, I like some noise and texture. If you want to cut more out, you can always throw frfun7 or deen after that. (edit: At least the one she picked will be faster. :p)
Something I noticed is that the original cut-2secs.avi isn't interlaced. I don't know if that's the way it came off the camera or if it's been resaved with processing, but bobbing that probably isn't effective. Better to do all the denoising, then run motion or mvflowfps over it prior to reinterlacing. Or just leave it progressive; watching progressive on an interlaced screen isn't so bad, since there's not much movement.
halsboss
5th August 2007, 14:36
Eek, it was a vdub "copy" of selected parts... and is supposed to be straight BFF interlaced DV... I'll have to look at that, sorry.
Will have a look at frfun 7 then.
Cheers
Terranigma
5th August 2007, 15:48
Just to add my 2 cents, if your source has rain, snow, or fire, it'd be a lot harder to denoise. The most efficient way to handle these sources I found (especially rain), is to use mvanalyse in conjunction with mvmask. For mvanalyse, change search to 3 for 2x the backward/forward searches. :)
halsboss
6th August 2007, 07:09
Thanks.
A funny thing happened with Vdub 1.16 ... original video source is interlaced BFF DV [using the avisynth/vdub method of telling eg watching the individual effect of each of separatefields().AssumeTFF() and then separatefields().AssumeBFF()].
But when I select some frames from the raw avi, choose "stream copy" or whatever under Video, then do "Save as AVI" it did something to the video so the saved avi is un-interlaced...
What tool do you use to select and "copy" some frames into a new AVI for posting ?
halsboss
10th August 2007, 05:33
Seems I goofed somehow (unknown how) as re-doing the vdub "cut" now works fine ...
In the end we went with the "clip 23" approach for that noisy low-light DV capture from a Canon MV920 (no built-in light source).
Anyone like to suggest how to do (or link to something on how to do) limitedsharpenfaster on an interlaced source ?
Edit: LimitedSharpen thread seems to suggest SeparateFields() then sharpen then Weave()
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.