Antialiasing Recovery v1.3


 
This location is for Registered Users Only.
Perhaps you need to login or register.
Contributor: Martin Kenzel
A method to restore antialiased edges damaged by image filtering
Requirements:
11.0, 10.5, 10.0, 9.0, 8.0 or later
Linux, Mac, Windows
17 May 2018
1471

This is a BlinkScript implementation of the Antialiasing Recovery method developed by Hoppe, Lawrence, Sander and Yang. It is designed to repair antialiased edges that are damaged by nonlinear image processing operations. The source and target images need to spatially match so this method will not work properly if the applied filter geometrically distorts the image.

Some applications are:

Thresholding or Grading

aa recovery.01

aa recovery.03

Filtering (eg. Bilateral)

aa recovery.02

Remapping (zDepth)

aa recovery.04

If you want more in-depth info about this method check out the paper of Hoppe et al. here! In a nutshell this method analyzes the antialiased source to estimate the colors of the edges that were blended together. Based on this information the current pixel coverage is computed and applied to the damaged/unfiltered target image.

 

Todos:

-aa recovery for alpha (not sure if alpha should be part of the estimation process)

 

Changelog:

v1.3:

-fixed a connection error caused by faulty naming

v1.2:

-Fixed a bug that prevented the Kernel from running on the CPU

-Hopefully fixed Nuke8 warnings when creating the node

v1.1:

-Added tootlips & remapped controls for sigma d

Please login in order to download these files.

Comments   

 
+1 # Mads Hagbarth Damsbo 2018-01-29 09:03
interesting!
 
 
0 # Michael De Caria 2018-01-31 10:24
awesome stuff! thanks for not encrypting the blinkscript, really helpful for learning.
 
 
0 # Martin Kenzel 2018-01-31 15:25
It might be worth noting that there are a few interesting workarounds in there. Eg. line 137-139 where i have to assign values to each float3 component of the vNeib array separately because the compiler would error otherwise (although it works perfectly fine with float4 arrays..). Also line 125 where it would not compile on the CPU if i didnt explicitly assign the type int2 to every entry in the array, although it is defined to be an int2 array anyways :-*
 
 
0 # Michael Habenicht 2018-02-02 15:31
Really interesting idea, thank you for implementing it.
Unfortunately it does not compile on my gpu (Error compiling kernel: Cannot compile OpenCL kernel
error 1: assigning to '__attribute__( (address_space( 16776963))) float' from incompatible type 'fn_unified_mat h_float3' (aka 'float4') and using the cpu doesn't show any effect. I am using nuke 10.5v5 on centos 6.5.
 
 
0 # Martin Kenzel 2018-02-03 02:01
Hm, can you run blink scripts without errors in general? Could you provide more info on your pc build? I must admit I did not test it on linux, but I do not see how it should fail there.
 
 
0 # Aleh Maksimovich 2018-06-12 11:13
Very, very slow...... 11.1v4 - win. And don't work - errror blink script
 
 
0 # Martin Kenzel 2018-08-16 09:50
Can you share a script? Which platform/system are you on? In Nuke 10 I can run it on my laptops integrated graphics with processing times < 1 sec for an HD image.
 
 
+1 # Duong Duc 2022-11-05 17:50
could you make a tutorial for how to use it. I feel a little bit confusing about what is source and what is target to connect to two inputs of this node
 

You have no rights to post comments

We have 4395 guests and 129 members online