I'm currently running command line noice over multiple AOVs with hopes of splitting the AOVs back out after process completes.
So,
./noice -patchradius 3 -searchradius 9 -variance 0.5 -i beauty.exr -i denoise_albedo.exr -i variance.exr -i N_noice.exr -i Z_noice.exr -i specular.exr -i <other AOVs> -o denoised.exr
I notice that denoised.exr only has RGBA channels and no other AOVs or channels. Is there a way to output denoised image with all the AOVs and channels preserved?
Thanks!
Instead of using noice I'd consider using something like neat video. denoising in nuke is always better and much much faster unless you have something very high profile. Also have you tried writng channels to separate exrs? Much faster write speeds and can denoise them individually.
Sorry, I'm not sure I understand what you mean.
I have separate AOV renders which are being sent to noice. Since noice outputs a single exr, I would like to separate the AOVs back out as part of the post denoising process.
Is there anyway to have noice output "specular.R", "specular.G", etc. in addition to just the beauty's "R","G","B","A" channels?
noice outputs the denoised AOVs only.
However, if you want to be a bit hacky, you can tell noice to denoise AOVs for which you provide no variance channels. Then noice will simple copy the existing AOV channels to the output.
For example, I've added the other AOVs with -l flags. But there's no variance AOVs, so noice "will just copy"
C:\solidangle\mtoadeploy\2019\bin\noice -i C:/maya/projects/default/images/denoise_test.0002.exr -o C:/maya/projects/default/images/denoise_test.0002_denoised.exr -ef 0 -sr 9 -pr 3 -v 0.5 -l diffuse -l direct -l emission -l indirect -l specular -l sss Denoising image C:/Users/Stephen Blair/Documents/maya/projects/default/images/denoise_test/denoise_test.0002.exr ------------------------ (1/1) noice 5.4.0.0 [4d2efe03] - the Arnold denoiser Using 40 threads. Loading images... Loading file "C:/maya/projects/default/images.0002.exr". Using feature AOV 'diffuse_albedo' with filter 'gaussian_filter' Using feature AOV 'N' with filter 'gaussian_filter' Using feature AOV 'Z' with filter 'gaussian_filter' Working with 1 frame at 1024x1024 Will denoise AOV "RGBA", using associated variance Output file will be "C:/maya/projects/default/images.0002_denoised.exr" Will just copy AOV "diffuse", variance not found Output file will be "C:/maya/projects/default/images.0002_denoised.exr" Will just copy AOV "direct", variance not found Output file will be "C:/maya/projects/default/images.0002_denoised.exr" Will just copy AOV "emission", variance not found Output file will be "C:/maya/projects/default/images.0002_denoised.exr" Will denoise AOV "indirect", using associated variance Output file will be "C:/maya/projects/default/images.0002_denoised.exr" Will denoise AOV "specular", using associated variance Output file will be "C:/maya/projects/default/images.0002_denoised.exr" Will just copy AOV "sss", variance not found Output file will be "C:/maya/projects/default/images.0002_denoised.exr" Start denoising (patch radius 3, search radius 9, variance 0.5) Denoising RGBA Denoising diffuse Could not find AOV with source diffuse and filter variance_filter Could not find variance for AOV "diffuse", skipping denoise. Denoising direct Could not find AOV with source direct and filter variance_filter Could not find variance for AOV "direct", skipping denoise. Denoising emission Could not find AOV with source emission and filter variance_filter Could not find variance for AOV "emission", skipping denoise. Denoising indirect Denoising specular Denoising sss Could not find AOV with source sss and filter variance_filter Could not find variance for AOV "sss", skipping denoise. Finished denoising Saving image C:/maya/projects/default/images.0002_denoised.exr (1024 x 1024 x 22)
Here's the noice output
oiiotool.exe -v --info "denoise_test.0002_denoised.exr" Reading denoise_test.0002_denoised.exr denoise_test.0002_denoised.exr : 1024 x 1024, 22 channel, float openexr channel list: R, G, B, A, diffuse.R, diffuse.G, diffuse.B, direct.R, direct.G, direct.B, emission.R, emission.G, emission.B, indirect.R, indirect.G, indirect.B, specular.R, specular.G, specular.B, sss.R, sss.G, sss.B
Thank you for your suggestion.
Right now, what we have are separate AOVs renders. We were hoping to be able to select individual AOVs which are noisy and just run noice on those. Obviously denoising beauty is important, but we would like to denoise the other layers separately as well.
If we pass the other light AOVs with '-l' flag as the hack you mentioned, from what I can see, they will remain unaltered. If I try passing the other AOVs as the main input along with the variance AOVs, it doesn't seem to denoise them. Getting the folloing output message:
...
Loading images...
Loading file "<all the AOV files>"
Using feature AOV 'diffuse_albedo' with filter 'gaussian_filter'
Using feature AOV 'N' with filter 'gaussian_filter'
Using feature AOV 'Z' with filter 'gaussian_filter'
Working with 5 frames at 960x540
Will just copy AOV "specular", variance not found
Output file will be "output.exr"
Start denoising (patch radius 3, search radius 9, variance 0.5)
Denoising diffuse
Could not find AOV with source specular and filter variance_filer
Could not find variance for AOV "specular", skipping denoise.
Finished denoising
My guess is this is because those variance AOVs were based on beauty.
I've tried skipping the variance AOVs in hopes the additional frames alone would provide some temporal stability but it does not seem to denoise either.
So basically, this works for beauty, but not for the other AOVs as we would like. Is there a way we can denoise the other AOVs?
Thanks!
In the original question, it says "with all the AOVs and channels preserved" so that's what I answered.
If you want to denoise individual AOVs, see here:
https://answers.arnoldrenderer.com/questions/16837/efficient-denoiser-utitliy-workaround.html