Log in

View Full Version : Luma Chroma Denoise


sirt
14th January 2013, 01:52
Hello,

I've read some things about "luma" and "chroma" but it is really confusing to me. Many times I've seen things like this : "I've denoised chroma without touching luma" and vice versa, or "I've denoised chroma using luma vectors" ; what does that mean exactly ? What if both are denoised at the same time in this case ? How can you detect chroma & luma noises ?

Moreover, how could you filter one of them separetly by using classical filters such as mctemporaldenoise, mcspuds or another one ?

Examples with problematic frames or samples would be appreciated !

sirt
14th January 2013, 19:32
Well, is anybody able to explain ?

Mounir
14th January 2013, 19:45
It's easy if you know virtualdub install neatvideo (trial) use the advanced mode then enable YCbCr view mode

or in avisynth you can use this

avisource("blabla")
Y = GreyScale()
U = UtoY()
V = VtoY()
StackHorizontal(Y, StackVertical(U,V))


and to filter separately with fft3d
plane=0 Y' ; plane=1 U : plane=2 V plane=3 UV plane=4 Y'UV
#
fft3dfilter(sigma=2.0,sigma2=4.0,sigma3=5.0,sigma4=6, bt=3, bw=16, bh=16, ow=8, oh=8,plane=3, sharpen=0.0,interlaced=false,dehalo=0.0)

mandarinka
14th January 2013, 23:28
1) look at mergechroma() / mergeluma()

2) many filters have native options for specifying which planes to filter or which to skip.

Overdrive80
15th January 2013, 04:19
http://img854.imageshack.us/img854/6019/exampletext.png (http://imageshack.us/photo/my-images/854/exampletext.png/)

Usually, luma channel has more noise than chroma, but you wont know until analyze your source.

sirt
15th January 2013, 10:23
Thanks for all your answers guys.

Mounir, I've tried your code but it just shows a blacks and white video.

Overdrive80 : then, in most of cases, only luma should be processed ?

rean : would you show me some example of scripts then ?

sirt
15th January 2013, 12:15
Okay, but could you then show me a script to correct your particular case posted above ? I don't really understand why you have to filter channels separately and especially when you have to do that. That's why I think an example of script would be welcomed. From what I've read before, it looks like converting channels to luma allows to see what the artefacts are : grains, noises ect ; what have you pointed with arrows in the black and white frames above ?

Moreover, I think I am still confused with how to see the problems in a frame : could you explain precisely what are noises, grains, rainbows, interlaced segments, dot crawl and so on and how to detect them precisely ?

poisondeathray
15th January 2013, 16:53
I don't really understand why you have to filter channels separately and especially when you have to do that.


You don't have to do anything.

People filter them separately because it's more selective. The idea is to target the specific type of noise as best as possible. If you only have chroma noise, and use you use a "heavy shotgun" approach , you damage more details then you have to. ie. you get better results using more selective targetted techniques




Moreover, I think I am still confused with how to see the problems in a frame : could you explain precisely what are noises, grains, rainbows, interlaced segments, dot crawl and so on and how to detect them precisely ?

Do some search, look at guides . Too much information to convey for 1 thread...

Mounir
15th January 2013, 20:11
This code should hep you sirt to vizualize UV components:

U = UtoY()
V = VtoY()
StackHorizontal(U,V)
Histogram(mode="luma")

This give you exagerated grayscale UV, totally normal so you can spot artefacts better

Then to filter individually use fft3dfilter (Not the gpu version). the gpu version seem to encompass UV together regardless of the plane you chose (i know weird but i have double checked !)

LemMotlow
16th January 2013, 06:15
d l t d

sirt
17th January 2013, 12:13
Thanks for those answers I will have to study that by myself then and try. I was about to use MCspuds for some tests.

Anyway, Mounir what do you mean by "encompass UV together regardless of the plane" ? Is that equal to the fact U & V are not separated ?

Mounir
17th January 2013, 13:33
it means that if you want to work on U only it will affect V also to a certain degree , this is a bug i believe so don't use the gpu version if you want to work on UV

bxyhxyh
18th April 2013, 17:28
If i have to denoise luma and one channel of chroma without touching other one, how to do it?

StainlessS
18th April 2013, 19:17
Specifically for FFT3DFilter:


AVISource("D:\avs\test.avi").ConvertToYV12()

YPLANE=0
UPLANE=1
VPLANE=2
CHROMAPLANES=3 # Both
ALLPLANES=4


FFT3DFilter(plane=UPLANE,Sigma=1.8)
FFT3DFilter(plane=YPLANE,Sigma=2.0)


I think I read somewhere that processing chroma before luma worked quicker than the other way around.

Mounir
19th April 2013, 00:49
You could do even better if you play with the sigmas for each frequency step (high,mid,low,very low freqs):

ex. for V plane:
fft3dfilter(sigma=2.0,sigma2=4.0,sigma3=4.0,sigma4=6, bt=3, bw=16, bh=16, ow=8, oh=8,plane=2, sharpen=0.0,interlaced=false,dehalo=0.0)

How to determine the sigma values ? Use neatvideo in virtualdub first