DGDenoise

These CUDA filters are packaged into DGDecodeNV, which is part of DGDecNV.
Post Reply
User avatar
admin
Site Admin
Posts: 4410
Joined: Thu Sep 09, 2010 3:08 pm

Re: About DGDenoise

Post by admin » Tue Aug 23, 2016 8:09 pm

Hi gonca, great to hear from you! And thank you for your testing.

I made the defaults based on the AddGrain(100) call I was using to simulate noise. That's strong grain. I think we can tweak the defaults later based on more real-world stuff. That's why I asked for samples. ;) For now just set the parameters as you need and let me know what you like.

I got the integrated filter working. I just have to make a 32-bit build and then I will release it. We'll say adios to the server and OpenGL. Buh-bye! :lol:

The tradeoff for CUDA runtime versus driver API is that I avoid having to ship a .cubin but have to ship a cudart*.dll. So that's a wash and the easier coding for the runtime API rules.

This infrastructure I have developed opens up a lot of possibilities for GPU filters. If you have any great ideas for GPU-accelerated filters beyond denoising, please speak up. What filters run so slow you want to pull your hair out? You get -10 points if you say QTGMC(); that's a script. Maybe some of the filters it invokes can be accelerated, however.

The whole integrated filter is only ~500 lines of code total (including the Avisynth code and KNN and NLM kernel codes). It's ridiculous how powerful CUDA is. Here's what I have to say to nVidia...
:bravo:

gonca
Moose Approved
Posts: 841
Joined: Sun Apr 08, 2012 6:12 pm

Re: About DGDenoise

Post by gonca » Tue Aug 23, 2016 9:16 pm

In terms of filters I would say that you should look first at what filters you use.
They don't have to be "slow" to be improved, and you do have a knack for improving things by making them run on video cards, as your other software.
As far as defaults, I leave that to your judgement, with help from Selur, I am sure the final will be good, and the end user can always tweak a little, if so desired
QTMC is slow, but like you stated, it is a script and not a plugin

If you are willing to help I can set up some avisynth scripts and test the old Clint spaghetti westerns and the Godfather trilogy, all very noisy movies,

User avatar
admin
Site Admin
Posts: 4410
Joined: Thu Sep 09, 2010 3:08 pm

Re: About DGDenoise

Post by admin » Tue Aug 23, 2016 9:46 pm

@gonca

Thank you for your thoughts and I will help you. Just ask!

@all

I have uploaded the integrated filter version, so re-download DGDenoise.rar and read the instructions carefully. The kernel and sobel parameters are different. Kernel is now 1 or 2 for KNN or NLM. Sobel is now in the range 0 to 1000.

Get rid of the old DenoiseServer.exe, freeglut.dll, glew*.dll, and cudart*_60.dll. You have to put cudart*_75.dll in your DLL search path. I hope you know what that means. :geek:

User avatar
admin
Site Admin
Posts: 4410
Joined: Thu Sep 09, 2010 3:08 pm

Re: About DGDenoise

Post by admin » Tue Aug 23, 2016 10:41 pm

Don't be shy to play with the sobel parameter. If you reduce it below default you retain more detail, as you can verify with the map option. Try sobel=100 together with a moderate strength (0.5). It works well on a noisy Stones BD. We would like to retain detail on faces but not on backgrounds, but things like that require artificial intelligence beyond the available APIs.

User avatar
tormento
Moose Approved
Posts: 310
Joined: Mon Sep 20, 2010 2:18 pm

Re: About DGDenoise

Post by tormento » Wed Aug 24, 2016 9:30 am

Please notice I had to manually download msvcr120d.dll to make it work.

Windows 10 x64 build 14905

I'd like to use DGDenoise as a pre filter to SMDegrain but I get a wrong space color error from it.

How can I convert it back to a format SMDegrain reads?

User avatar
admin
Site Admin
Posts: 4410
Joined: Thu Sep 09, 2010 3:08 pm

Re: About DGDenoise

Post by admin » Wed Aug 24, 2016 10:29 am

Add ConvertToYUY2() or ConvertToYV12() after DGDenoise().

User avatar
admin
Site Admin
Posts: 4410
Joined: Thu Sep 09, 2010 3:08 pm

Re: About DGDenoise

Post by admin » Wed Aug 24, 2016 10:30 am

Multiple instance and VirtualDub re-open do not work yet. I have to implement floating cuda contexts as in DGDecodeNV. It will require me to convert from cuda runtime to cuda driver API. Waiting for another burst of energy...

User avatar
admin
Site Admin
Posts: 4410
Joined: Thu Sep 09, 2010 3:08 pm

Re: About DGDenoise

Post by admin » Wed Aug 24, 2016 8:13 pm

I completed the CUDA driver API version. Multiple instantiation and VirtualDub re-open now work fine, which means the filter will work correctly in MeGUI, etc. I'll do some regression testing and then upload it, probably tomorrow morning, as a candidate release.

User avatar
tormento
Moose Approved
Posts: 310
Joined: Mon Sep 20, 2010 2:18 pm

Re: About DGDenoise

Post by tormento » Thu Aug 25, 2016 5:04 am

admin wrote:I completed the CUDA driver API version. Multiple instantiation and VirtualDub re-open now work fine, which means the filter will work correctly in MeGUI, etc. I'll do some regression testing and then upload it, probably tomorrow morning, as a candidate release.
Do you plan to create a new DGDecodeNV with DGFilter as option in same dll?

User avatar
admin
Site Admin
Posts: 4410
Joined: Thu Sep 09, 2010 3:08 pm

Re: About DGDenoise

Post by admin » Thu Aug 25, 2016 8:24 am

tormento wrote:Do you plan to create a new DGDecodeNV with DGFilter as option in same dll?
I'm considering it, but wonder about the point if there is already a stand-alone filter.

@all

I just uploaded the driver API version. It also adds a parameter to specify the desired GPU when you have more than one. The kernel is shipped as PTX code, so this theoretically is future proof for new nVidia architectures.

http://rationalqm.us/misc/DGDenoise.rar

This is my first release candidate. Your testing will be appreciated.

Post Reply