Log in

View Full Version : NLMeansCL: GPU based Non Local Means Denoising


Pages : 1 2 [3] 4

Stereodude
5th March 2011, 00:59
Which AvsFilterNet and Cloo version does this need? I can't get it to work on my system.

http://img848.imageshack.us/img848/5203/nlmeansclerror.th.png (http://img848.imageshack.us/img848/5203/nlmeansclerror.png)

Edit: It needs Cloo .8.2 The .9.2 alpha doesn't work.

===================================[ System / CPU ]
- CPU Name: Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz
- CPU Core Speed: 3401 MHz
- CPU Num Cores: 8
- Family: 6 - Model: 10 - Stepping: 7
- Physical Memory Size: 3319 MB
- Operating System: Windows XP 32-bit build 2600 [Service Pack 3]
- DirectX Version: 9.0c
- PhysX Version: 9100514


===================================[ Graphics Adapter / GPU ]
- SLI: disabled
- GPUs: 1
- Logical GPUs: 1
- OpenGL Renderer: GeForce GT 440/PCI/SSE2
- Drivers Renderer: NVIDIA GeForce GT 440
- DB Renderer: NVIDIA GeForce GT 440
- Device Description: NVIDIA GeForce GT 440
- Adapter String: GeForce GT 440
- Vendor: NVIDIA Corporation
- Vendor ID: 0x10DE
- Device ID: 0x0DE0
- Sub device ID: 0x4188
- Sub vendor ID: 0x19DA
- Drivers Version: Forceware 6.14.12.6658 (1-7-2011)
- GPU Codename: GF108
- GPU Unified Shader Processors: 96
- GPU Vertex Shader Processors: 0
- GPU Pixel Shader Processors: 0
- TPD (Watts): 65
- Video Memory Size: 1024 MB
- Video Memory Type: GDDR5
- Clocks level #0: Core: 405MHz - Memory: 324MHz - Shader: 810MHz
- Clocks level #1: Core: 405MHz - Memory: 324MHz - Shader: 810MHz
- Clocks level #2: Core: 810MHz - Memory: 1600MHz - Shader: 1620MHz
- BIOS String: 70.08.45.00.01
- Current Display Mode: 1600x1200 @ 60 Hz - 32 bpp


===================================[ OpenGL GPU Capabilities ]
- OpenGL Version: 4.1.0
- GLSL (OpenGL Shading Language) Version: 4.10 NVIDIA via Cg compiler
- ARB Texture Units: 4
- Vertex Shader Texture Units: 32
- Pixel Shader Texture Units: 32
- Geometry Shader Texture Units: 32
- Max Texture Size: 16384x16384
- Max Anisotropic Filtering Value: X16.0
- Max Point Sprite Size: 63.4
- Max Dynamic Lights: 8
- Max Viewport Size: 16384x16384
- Max Vertex Uniform Components: 4096
- Max Fragment Uniform Components: 2048
- Max Geometry Uniform Components: 2048
- Max Varying Float: 60
- Max Vertex Bindable Uniforms: 12
- Max Fragment Bindable Uniforms: 12
- Max Geometry Bindable Uniforms: 12
- Frame Buffer Objects (FBO) Support:[yes]
- Multiple Render Targets / Max draw buffers: 8
- Pixel Buffer Objects (PBO) Support:[yes]
- S3TC Texture Compression Support:[yes]
- ATI 3Dc Texture Compression Support:[no]
- Texture Rectangle Support:[yes]
- Floating Point Textures Support:[yes]
- MSAA: 2X
- MSAA: 4X
- MSAA: 8X
- MSAA: 16X
- MSAA: 32X
- OpenGL Extensions: 245 extensions (GL=222 and WGL=23)
<li>GL_ARB_blend_func_extended</li>
<li>GL_ARB_color_buffer_float</li>
<li>GL_ARB_compatibility</li>
<li>GL_ARB_copy_buffer</li>
<li>GL_ARB_debug_output</li>
<li>GL_ARB_depth_buffer_float</li>
<li>GL_ARB_depth_clamp</li>
<li>GL_ARB_depth_texture</li>
<li>GL_ARB_draw_buffers</li>
<li>GL_ARB_draw_buffers_blend</li>
<li>GL_ARB_draw_indirect</li>
<li>GL_ARB_draw_elements_base_vertex</li>
<li>GL_ARB_draw_instanced</li>
<li>GL_ARB_ES2_compatibility</li>
<li>GL_ARB_explicit_attrib_location</li>
<li>GL_ARB_fragment_coord_conventions</li>
<li>GL_ARB_fragment_program</li>
<li>GL_ARB_fragment_program_shadow</li>
<li>GL_ARB_fragment_shader</li>
<li>GL_ARB_framebuffer_object</li>
<li>GL_ARB_framebuffer_sRGB</li>
<li>GL_ARB_geometry_shader4</li>
<li>GL_ARB_get_program_binary</li>
<li>GL_ARB_gpu_shader5</li>
<li>GL_ARB_gpu_shader_fp64</li>
<li>GL_ARB_half_float_pixel</li>
<li>GL_ARB_half_float_vertex</li>
<li>GL_ARB_imaging</li>
<li>GL_ARB_instanced_arrays</li>
<li>GL_ARB_map_buffer_range</li>
<li>GL_ARB_multisample</li>
<li>GL_ARB_multitexture</li>
<li>GL_ARB_occlusion_query</li>
<li>GL_ARB_occlusion_query2</li>
<li>GL_ARB_pixel_buffer_object</li>
<li>GL_ARB_point_parameters</li>
<li>GL_ARB_point_sprite</li>
<li>GL_ARB_provoking_vertex</li>
<li>GL_ARB_robustness</li>
<li>GL_ARB_sample_shading</li>
<li>GL_ARB_sampler_objects</li>
<li>GL_ARB_seamless_cube_map</li>
<li>GL_ARB_separate_shader_objects</li>
<li>GL_ARB_shader_bit_encoding</li>
<li>GL_ARB_shader_objects</li>
<li>GL_ARB_shader_precision</li>
<li>GL_ARB_shader_subroutine</li>
<li>GL_ARB_shading_language_100</li>
<li>GL_ARB_shading_language_include</li>
<li>GL_ARB_shadow</li>
<li>GL_ARB_sync</li>
<li>GL_ARB_tessellation_shader</li>
<li>GL_ARB_texture_border_clamp</li>
<li>GL_ARB_texture_buffer_object</li>
<li>GL_ARB_texture_buffer_object_rgb32</li>
<li>GL_ARB_texture_compression</li>
<li>GL_ARB_texture_compression_bptc</li>
<li>GL_ARB_texture_compression_rgtc</li>
<li>GL_ARB_texture_cube_map</li>
<li>GL_ARB_texture_cube_map_array</li>
<li>GL_ARB_texture_env_add</li>
<li>GL_ARB_texture_env_combine</li>
<li>GL_ARB_texture_env_crossbar</li>
<li>GL_ARB_texture_env_dot3</li>
<li>GL_ARB_texture_float</li>
<li>GL_ARB_texture_gather</li>
<li>GL_ARB_texture_mirrored_repeat</li>
<li>GL_ARB_texture_multisample</li>
<li>GL_ARB_texture_non_power_of_two</li>
<li>GL_ARB_texture_query_lod</li>
<li>GL_ARB_texture_rectangle</li>
<li>GL_ARB_texture_rg</li>
<li>GL_ARB_texture_rgb10_a2ui</li>
<li>GL_ARB_texture_swizzle</li>
<li>GL_ARB_timer_query</li>
<li>GL_ARB_transform_feedback2</li>
<li>GL_ARB_transform_feedback3</li>
<li>GL_ARB_transpose_matrix</li>
<li>GL_ARB_uniform_buffer_object</li>
<li>GL_ARB_vertex_array_bgra</li>
<li>GL_ARB_vertex_array_object</li>
<li>GL_ARB_vertex_attrib_64bit</li>
<li>GL_ARB_vertex_buffer_object</li>
<li>GL_ARB_vertex_program</li>
<li>GL_ARB_vertex_shader</li>
<li>GL_ARB_vertex_type_2_10_10_10_rev</li>
<li>GL_ARB_viewport_array</li>
<li>GL_ARB_window_pos</li>
<li>GL_ATI_draw_buffers</li>
<li>GL_ATI_texture_float</li>
<li>GL_ATI_texture_mirror_once</li>
<li>GL_S3_s3tc</li>
<li>GL_EXT_texture_env_add</li>
<li>GL_EXT_abgr</li>
<li>GL_EXT_bgra</li>
<li>GL_EXT_bindable_uniform</li>
<li>GL_EXT_blend_color</li>
<li>GL_EXT_blend_equation_separate</li>
<li>GL_EXT_blend_func_separate</li>
<li>GL_EXT_blend_minmax</li>
<li>GL_EXT_blend_subtract</li>
<li>GL_EXT_compiled_vertex_array</li>
<li>GL_EXT_Cg_shader</li>
<li>GL_EXT_depth_bounds_test</li>
<li>GL_EXT_direct_state_access</li>
<li>GL_EXT_draw_buffers2</li>
<li>GL_EXT_draw_instanced</li>
<li>GL_EXT_draw_range_elements</li>
<li>GL_EXT_fog_coord</li>
<li>GL_EXT_framebuffer_blit</li>
<li>GL_EXT_framebuffer_multisample</li>
<li>GL_EXTX_framebuffer_mixed_formats</li>
<li>GL_EXT_framebuffer_object</li>
<li>GL_EXT_framebuffer_sRGB</li>
<li>GL_EXT_geometry_shader4</li>
<li>GL_EXT_gpu_program_parameters</li>
<li>GL_EXT_gpu_shader4</li>
<li>GL_EXT_multi_draw_arrays</li>
<li>GL_EXT_packed_depth_stencil</li>
<li>GL_EXT_packed_float</li>
<li>GL_EXT_packed_pixels</li>
<li>GL_EXT_pixel_buffer_object</li>
<li>GL_EXT_point_parameters</li>
<li>GL_EXT_provoking_vertex</li>
<li>GL_EXT_rescale_normal</li>
<li>GL_EXT_secondary_color</li>
<li>GL_EXT_separate_shader_objects</li>
<li>GL_EXT_separate_specular_color</li>
<li>GL_EXT_shader_image_load_store</li>
<li>GL_EXT_shadow_funcs</li>
<li>GL_EXT_stencil_two_side</li>
<li>GL_EXT_stencil_wrap</li>
<li>GL_EXT_texture3D</li>
<li>GL_EXT_texture_array</li>
<li>GL_EXT_texture_buffer_object</li>
<li>GL_EXT_texture_compression_latc</li>
<li>GL_EXT_texture_compression_rgtc</li>
<li>GL_EXT_texture_compression_s3tc</li>
<li>GL_EXT_texture_cube_map</li>
<li>GL_EXT_texture_edge_clamp</li>
<li>GL_EXT_texture_env_combine</li>
<li>GL_EXT_texture_env_dot3</li>
<li>GL_EXT_texture_filter_anisotropic</li>
<li>GL_EXT_texture_integer</li>
<li>GL_EXT_texture_lod</li>
<li>GL_EXT_texture_lod_bias</li>
<li>GL_EXT_texture_mirror_clamp</li>
<li>GL_EXT_texture_object</li>
<li>GL_EXT_texture_shared_exponent</li>
<li>GL_EXT_texture_sRGB</li>
<li>GL_EXT_texture_swizzle</li>
<li>GL_EXT_timer_query</li>
<li>GL_EXT_transform_feedback2</li>
<li>GL_EXT_vertex_array</li>
<li>GL_EXT_vertex_array_bgra</li>
<li>GL_EXT_vertex_attrib_64bit</li>
<li>GL_IBM_rasterpos_clip</li>
<li>GL_IBM_texture_mirrored_repeat</li>
<li>GL_KTX_buffer_region</li>
<li>GL_NV_blend_square</li>
<li>GL_NV_conditional_render</li>
<li>GL_NV_copy_depth_to_color</li>
<li>GL_NV_copy_image</li>
<li>GL_NV_depth_buffer_float</li>
<li>GL_NV_depth_clamp</li>
<li>GL_NV_explicit_multisample</li>
<li>GL_NV_fence</li>
<li>GL_NV_float_buffer</li>
<li>GL_NV_fog_distance</li>
<li>GL_NV_fragment_program</li>
<li>GL_NV_fragment_program_option</li>
<li>GL_NV_fragment_program2</li>
<li>GL_NV_framebuffer_multisample_coverage</li>
<li>GL_NV_geometry_shader4</li>
<li>GL_NV_gpu_program4</li>
<li>GL_NV_gpu_program4_1</li>
<li>GL_NV_gpu_program5</li>
<li>GL_NV_gpu_program_fp64</li>
<li>GL_NV_gpu_shader5</li>
<li>GL_NV_half_float</li>
<li>GL_NV_light_max_exponent</li>
<li>GL_NV_multisample_coverage</li>
<li>GL_NV_multisample_filter_hint</li>
<li>GL_NV_occlusion_query</li>
<li>GL_NV_packed_depth_stencil</li>
<li>GL_NV_parameter_buffer_object</li>
<li>GL_NV_parameter_buffer_object2</li>
<li>GL_NV_pixel_data_range</li>
<li>GL_NV_point_sprite</li>
<li>GL_NV_primitive_restart</li>
<li>GL_NV_register_combiners</li>
<li>GL_NV_register_combiners2</li>
<li>GL_NV_shader_buffer_load</li>
<li>GL_NV_texgen_reflection</li>
<li>GL_NV_texture_barrier</li>
<li>GL_NV_texture_compression_vtc</li>
<li>GL_NV_texture_env_combine4</li>
<li>GL_NV_texture_expand_normal</li>
<li>GL_NV_texture_multisample</li>
<li>GL_NV_texture_rectangle</li>
<li>GL_NV_texture_shader</li>
<li>GL_NV_texture_shader2</li>
<li>GL_NV_texture_shader3</li>
<li>GL_NV_transform_feedback</li>
<li>GL_NV_transform_feedback2</li>
<li>GL_NV_vertex_array_range</li>
<li>GL_NV_vertex_array_range2</li>
<li>GL_NV_vertex_attrib_integer_64bit</li>
<li>GL_NV_vertex_buffer_unified_memory</li>
<li>GL_NV_vertex_program</li>
<li>GL_NV_vertex_program1_1</li>
<li>GL_NV_vertex_program2</li>
<li>GL_NV_vertex_program2_option</li>
<li>GL_NV_vertex_program3</li>
<li>GL_NVX_conditional_render</li>
<li>GL_NVX_gpu_memory_info</li>
<li>GL_SGIS_generate_mipmap</li>
<li>GL_SGIS_texture_lod</li>
<li>GL_SGIX_depth_texture</li>
<li>GL_SGIX_shadow</li>
<li>GL_SUN_slice_accum</li>
<li>GL_WIN_swap_hint</li>
<li>WGL_EXT_swap_control</li>
<li>WGL_ARB_buffer_region</li>
<li>WGL_ARB_create_context</li>
<li>WGL_ARB_create_context_profile</li>
<li>WGL_ARB_create_context_robustness</li>
<li>WGL_ARB_extensions_string</li>
<li>WGL_ARB_make_current_read</li>
<li>WGL_ARB_multisample</li>
<li>WGL_ARB_pbuffer</li>
<li>WGL_ARB_pixel_format</li>
<li>WGL_ARB_pixel_format_float</li>
<li>WGL_ARB_render_texture</li>
<li>WGL_ATI_pixel_format_float</li>
<li>WGL_EXT_create_context_es2_profile</li>
<li>WGL_EXT_extensions_string</li>
<li>WGL_EXT_framebuffer_sRGB</li>
<li>WGL_EXT_pixel_format_packed_float</li>
<li>WGL_NVX_DX_interop</li>
<li>WGL_NV_DX_interop</li>
<li>WGL_NV_float_buffer</li>
<li>WGL_NV_multisample_coverage</li>
<li>WGL_NV_render_depth_texture</li>
<li>WGL_NV_render_texture_rectangle</li>


===================================[ NVIDIA CUDA Capabilities ]
- CUDA Device 0
- Device name: GeForce GT 440
- Compute Capability: 2.1
- Total Memory: 1023 MB
- Shader Clock Rate: 1620 MHz
- Multiprocessors: 2
- Warp Size: 32
- Max Threads Per Block: 1024
- Threads Per Block: 1024 x 1024 x 64
- Grid Size: 65535 x 65535 x 1
- Registers Per Block: 32768
- Texture Alignment: 512 byte
- Total Constant Memory: 64 Kb


===================================[ OpenCL Capabilities ]
- Num OpenCL platforms: 1
- Name: NVIDIA CUDA
- Version: OpenCL 1.0 CUDA 3.2.1
- Profile: FULL_PROFILE
- Vendor: NVIDIA Corporation
- Num devices: 1

- CL_DEVICE_NAME: GeForce GT 440
- CL_DEVICE_VENDOR: NVIDIA Corporation
- CL_DRIVER_VERSION: 266.58
- CL_DEVICE_PROFILE: FULL_PROFILE
- CL_DEVICE_VERSION: OpenCL 1.0 CUDA
- CL_DEVICE_TYPE: GPU
- CL_DEVICE_VENDOR_ID: 0x10DE
- CL_DEVICE_MAX_COMPUTE_UNITS: 2
- CL_DEVICE_MAX_CLOCK_FREQUENCY: 1620MHz
- CL_NV_DEVICE_COMPUTE_CAPABILITY_MAJOR: 2
- CL_NV_DEVICE_COMPUTE_CAPABILITY_MINOR: 1
- CL_NV_DEVICE_REGISTERS_PER_BLOCK: 32768
- CL_NV_DEVICE_WARP_SIZE: 32
- CL_NV_DEVICE_GPU_OVERLAP: 1
- CL_NV_DEVICE_KERNEL_EXEC_TIMEOUT: 1
- CL_NV_DEVICE_INTEGRATED_MEMORY: 0
- CL_DEVICE_ADDRESS_BITS: 32
- CL_DEVICE_MAX_MEM_ALLOC_SIZE: 262032KB
- CL_DEVICE_GLOBAL_MEM_SIZE: 1023MB
- CL_DEVICE_MAX_PARAMETER_SIZE: 4352
- CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE: 128 Bytes
- CL_DEVICE_GLOBAL_MEM_CACHE_SIZE: 32KB
- CL_DEVICE_ERROR_CORRECTION_SUPPORT: NO
- CL_DEVICE_LOCAL_MEM_TYPE: Local (scratchpad)
- CL_DEVICE_LOCAL_MEM_SIZE: 48KB
- CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE: 64KB
- CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS: 3
- CL_DEVICE_MAX_WORK_ITEM_SIZES: [1024 ; 1024 ; 64]
- CL_DEVICE_MAX_WORK_GROUP_SIZE: 1024
- CL_EXEC_NATIVE_KERNEL: 4755444
- CL_DEVICE_IMAGE_SUPPORT: YES
- CL_DEVICE_MAX_READ_IMAGE_ARGS: 128
- CL_DEVICE_MAX_WRITE_IMAGE_ARGS: 8
- CL_DEVICE_IMAGE2D_MAX_WIDTH: 4096
- CL_DEVICE_IMAGE2D_MAX_HEIGHT: 32768
- CL_DEVICE_IMAGE3D_MAX_WIDTH: 2048
- CL_DEVICE_IMAGE3D_MAX_HEIGHT: 2048
- CL_DEVICE_IMAGE3D_MAX_DEPTH: 16
- CL_DEVICE_MAX_SAMPLERS: 16
- CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR: 1
- CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT: 1
- CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT: 1
- CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG: 1
- CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT: 1
- CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE: 1
- CL_DEVICE_EXTENSIONS: 13
- Extensions:
- cl_khr_byte_addressable_store
- cl_khr_icd
- cl_khr_gl_sharing
- cl_nv_d3d9_sharing
- cl_nv_compiler_options
- cl_nv_device_attribute_query
- cl_nv_pragma_unroll
-
- cl_khr_global_int32_base_atomics
- cl_khr_global_int32_extended_atomics
- cl_khr_local_int32_base_atomics
- cl_khr_local_int32_extended_atomics
- cl_khr_fp64


===================================[ Misc. ]
- NVIDIA OGL_ThreadControl: Auto-Select


===================================[ NVIDIA Control Panel ]
- NVIDIA CPL: Core Temperature: 43 degrees
- NVIDIA CPL: Display Adapter: GeForce GT 440
- NVIDIA CPL: Display Board: [GeForce]
- NVIDIA CPL: Display Driver: 6.14.12.6658
- NVIDIA CPL: Bus Mode: PCI-Express
- NVIDIA CPL: Bus transfer rate: 16X
- NVIDIA CPL: Video Memory Size: 1024 MBytes
- NVIDIA CPL: Number of GPUs: 1
- NVIDIA CPL: Number of SLI GPUs: 1
- NVIDIA CPL: SLI rendering mode: DISABLED

Stereodude
5th March 2011, 14:37
In case my last post wasn't clear...

The first post should be updated to indicate the version numbers of AvsFilterNet and Cloo that it's intended to run with.

On my system It doesn't work with Cloo 0.9.2 alpha, but does with Cloo 0.8.2 (http://sourceforge.net/projects/cloo/files/0.8/Cloo-0.8.2.zip/download). It also doesn't seem to work with AvsFilterNet r62998 (.NET 4), but rather needs AvsFilterNet 1.0 beta 2 (.NET 2).

soulstaker
6th March 2011, 00:00
In case my last post wasn't clear...

The first post should be updated to indicate the version numbers of AvsFilterNet and Cloo that it's intended to run with.

On my system It doesn't work with Cloo 0.9.2 alpha, but does with Cloo 0.8.2 (http://sourceforge.net/projects/cloo/files/0.8/Cloo-0.8.2.zip/download). It also doesn't seem to work with AvsFilterNet r62998 (.NET 4), but rather needs AvsFilterNet 1.0 beta 2 (.NET 2).

Got it running with AvsFilterNet r62998 (.NET 4) here, but only when i downgraded Cloo to 0.8.2


Now let's test this bad boy :devil:

--edit--

Quick test with a DVD i'm playing right now

dgSource("D:\Encodes\AMS Ova\raw\megami_ova.dgi")
NLMeansCL()
trim(0,500)

========================

D:\Encodes\AMS Ova>avs2avi teste.avs -c null -o n

AVS2AVI v1.39 (c) 2002-2004:
Christophe Paris, David Leatherdale, int21h, Moitah
http://www.avs2avi.org/

Source:
* Filename: "D:\Encodes\AMS Ova\teste.avs"
* FourCC: YV12
* Frames: 501
* Resolution: 720x480
* Frame rate: 29.970 FPS
Compressor:
* No Recompression
Destination:
* Format: Null
* Pass 1/1: Finished in 00:00:26.535 (18.88 FPS)
* Frames: 501 (501 keyframes)
* Size: 247.69 MB

8600 GT + C2D E4300. Impressive =O

tormento
11th March 2011, 20:32
I'd like to see temporal part...

Dogway
11th March 2011, 21:46
Today magically this plugin gave me problems. I was just loading a heavy script into vdub, when prompted asking for msvcr100.dll. Once loaded, it failed when encoding. So I installed again the 2010 Redistributable and loading went fine but not encoding (avisynth), I checked and the guilty file was avsfilternet

I just read a few posts above and I also have the 62998 version. It would be nice some guidance about these two files (cloo, avsfilternet) in first post, as well as the limitation of the 7 pixel window for "a".

markanini
11th March 2011, 22:24
...the limitation of the 7 pixel window for "a".

This is news to me. What happens when you set it above 7?

mastrboy
9th April 2011, 14:29
Will this filter be able to take advantage of a Nvidia SLI setup?

Malcolm
9th April 2011, 20:45
No. AFAIK NVidias OpenCL driver does not support SLI. But even then, i don't have a SLI setup. So icannot test it. And i imagine that you don't get SLI support completely free without setting up some things in your filter first.

Hiritsuki
12th April 2011, 05:11
Now,the GPU's Filter is all only used in single card to compute.
I had tested.

tormento
12th April 2011, 09:14
I use the following code to offload some of the load from CPU to GPU:

LoadPlugin("D:\eseguibili\media\dgdecnv\x64\DGDecodeNV.dll")
DGSource("E:\….dgi")

SetMTMode(5,8)

sigma = 16
prefilter = FFT3Dgpu(sigma=sigma*0.8, sigma2=sigma*0.6, sigma3=sigma*0.4, sigma4=sigma*0.2, bw=32, bh=32, ow=8, oh=8, plane=0)

SetMTMode(2,8)

MCTemporalDenoise(settings="very high",useEEDI2=true,bwbh=32,owoh=8,p=prefilter,chroma=false,sharp=false,pel=1)

Do you think I could use NLMeansCL to replace FFT3DGPU and get similar results?

How could I parametrize sigma "general value" to get progressive NLMeansCL results?

TheProfileth
22nd April 2011, 19:07
Has Malcolm made any progress towards implementing a temporal mode yet?
Also I was wondering if he could release the source for this, might be useful for other people and lead to better gpu powered filters.

Malcolm
22nd April 2011, 21:38
There you go! Temporal mode. (See first post)

TheProfileth
23rd April 2011, 21:39
There you go! Temporal mode. (See first post)

awesome :cool:
will definitely give a try, will also test using it by mocomping it :devil:

tormento
24th April 2011, 08:28
awesome :cool:
will definitely give a try, will also test using it by mocomping it :devil:
Please post your working scripts ;)

Hiritsuki
25th April 2011, 04:26
What is Az?
It's useful for quality?

TheProfileth
26th April 2011, 00:44
What is Az?
It's useful for quality?
AZ= number of frames to process >1 should initiate temporal mode
speaking of which anything above az=2 causes a fantastical error to pop up, much like the ones previously shown.

sho_t
4th May 2011, 14:17
Thank you for a great filter!

By the way, will it work on Radeon in the near future?
Or do you recommend me to buy Geforce?

Dogway
4th May 2011, 16:31
My 2 favourite denoisers are dfttest and tnlmeans, this one because it produces more painterly denoise where dfttest tends to blur more, so it works pretty nice for 2D animation. But the main problem is, its SLOW!! so this GPU version was more than welcome. Still there are many drawbacks which refrains me from using it every time I give it a try. Here I made a list as for version v0.4.0 alpha:

b=1 still produces artifacts
GPU timeout error
can't use az>2
got some white stains artefacts in encodings, not in previews. Probably related to temporal mode.
stability

yup
4th May 2011, 17:42
@Dogway
Changes from v0.3.1 to v0.4.0 alpha
Implemented preliminary temporal version for Az=1 and Az=2
Az>2 not implemented.
I am using intermediate AVI lossless file before encoding, especially with high loaded CPU and GPU script.
yup.

Dogway
4th May 2011, 17:53
I didnt miss the reading, I just listed in a row some known facts as a reminder. I also encode lossless.
But temporal mode creates some artifactings, I will test more later on.

TheProfileth
4th May 2011, 23:16
AZ=2 produces weird edge artifacts that really have no actual reason other than either
A:poor implementation of temporal code
or
B:the gpu elements don't like this utilization of the code
or
C:(insert correct answer here)
anyways looking forward to having a gpupowered spatiotemporal filter that is not fft3dgpu :)

Dogway
6th May 2011, 23:53
some further testings:
I fixed the GPU timeout thing in regedit to discard errors.
One good point in using this fast GPU version is that now we can avoid using b=1 which is the cause of some artifacts (http://forum.doom9.org/showthread.php?p=1471712#post1471712). So these are my results:

when there is no az parameter b=0 works
when az=0, b=0 works but with (black) image artifacts
when az=1, hangs up.
az=2 and az=1 both produces artifacts if Im not wrong.

Here is my graphic card test with GPU Caps:
Geforce 9600M GT (http://www.mediafire.com/?55141k9df4w52qb)

Hiritsuki
20th May 2011, 01:54
May I ask how many GPU's rops filter support it?

Hiritsuki
21st May 2011, 03:56
BTW the GPU's rops is fallow the image.

http://imagewtf.com/12904.png/images/12904.png

Malcolm
21st May 2011, 21:03
May I ask how many GPU's rops filter support it?Ok, you cannot directly equate ROPs to computing cores, but without going too deep into the OpenCL / GPU computing details i can say the following: NLMeansCL uses as many ROPs as there are on your gfx card. That's because i let the OpenCL driver decide how to partition the video frame for processing (to optimally use the computing cores of the GPU). If not all ROPs are used, then because NVidias driver chose a partitioning that is not optimal (which indeed can occur). By hand tuning the partitioning for a specific GPU, you can get a performance gain of 5 - 10%. But you have to know what GPU to tune for. Letting the driver decide is the best way to support as many NVidia cards as possible with a speed that is ~95% at the maximum possible in average.

Hiritsuki
22nd May 2011, 02:56
So... I need to change the driver version to test which is the best support of OpenCL.

CruNcher
22nd May 2011, 12:06
The Nvidia driver is very modular build most components can be exchanged if they are from the same CUDA version without problems mostly but in this case im not sure if that would work painless but you could still try just to replace OpenCL.dll with another driver version (new or old driver) or copy the dll in the main directory of NLMeansCL it should load it then instead of the one in your system directory (current driver)

Hiritsuki
22nd May 2011, 15:06
Well, I'll follow this tip to test, wait for my report soon.

tormento
28th May 2011, 09:28
It's a real pity Az mode is not working.

Gerry62
27th June 2011, 20:10
Its not too bad!

I get 5-6fps on my 'steam powered, leather' computer.
Thats a jump from about 1fps, Need to play more.

Malcolm
8th August 2011, 20:19
I have decided to release the sources for version 0.3.1 to the public. See the first post.

VincAlastor
9th August 2011, 20:46
thank you malcolm!

i hope you will get the spartio-temporal mode to run. and would you implement a sharpener and maybe a banding protection if possible?

Malcolm
11th August 2011, 10:27
and would you implement a sharpener and maybe a banding protection if possible?Not very likely. I have no time at all atm.
My intention was to release the source code to help other people get started to write their own OpenCL plugins. :)

mastrboy
11th August 2011, 10:57
What is the reason that 0.4.0 sourcecode was not released?

Malcolm
12th August 2011, 13:52
What is the reason that 0.4.0 sourcecode was not released?
- Buggy
- individual algorithms needed for each value of Az (no generic algorithm for Az=n)

Zero1
14th August 2011, 03:51
Hi. Wanted to try your filter but unfortunately I ran into this error:
http://img810.imageshack.us/img810/775/capturexep.png

I have a Gefore GT330M GPU.
I am using avisynth 2.5.8, and have placed the plugins in the plugin folder so they auto load. I also installed Visual C redist 2010 since Virtualdub gave me a message about a missing dll at first (something like msvcr100.dll).

The versions I have are:
nlmeanscl: 0.4.0 (I also tried with 0.3.1 with the same error, but I do require the temporal cleaning if possible)
Cloo 0.9.0
avsfilternet 1.0.0.1

My nvida drivers are 267.76

I didn't install the ATI stream SDK because I was under the impression that was for if you wanted CPU rendering as opposed to GPU?

The AVS I am using is simply:
dgsource("live.dgi")
bilinearresize(1280,720)
NLMeansCL(A=4, S=2, B=1, aa=1.0, h=1.8, plane=4)
trim(14000,15000)
(The nlmeanscl args are just from an example you posted in the first post - I just wanted to check it worked before messing with stuff)

Finally, I've been testing the dither tools to output high bit depth for avs2yuv/x264 to encode. Do you think your function would work with the following?
dgsource("live.dgi")
Dither_convert_8_to_16 ()
Dither_resize16(1280,720, kernel="bilinear")
trim(14000,15000)
NLMeansCL(A=4, S=2, B=1, aa=1.0, h=1.8, plane=4)
Dither_convey_yuv4xxp16_on_yvxx()

Thanks a lot


Edit
Tried Cloo 0.8.2 and it works. It also seems to work with dither/16bit too. Thanks


While I am here, any advice for preventing this blotchy effect as seen in the right half processed image?
http://img835.imageshack.us/img835/5913/nlmeans.th.png (http://imageshack.us/photo/my-images/835/nlmeans.png/)

cretindesalpes
14th August 2011, 09:48
dgsource("live.dgi")
Dither_convert_8_to_16 ()
Dither_resize16(1280,720, kernel="bilinear")
trim(14000,15000)
NLMeansCL(A=4, S=2, B=1, aa=1.0, h=1.8, plane=4)
Dither_convey_yuv4xxp16_on_yvxx()

You shouldn't mix 8 and 16 bit processing like that. Process 16-bit clips only with filters designed for that. Here NLMeansCL will just screw up the LSB part with artifacts (this is probably one of the causes of the "blotchy effect"); the whole processing in 8 bits will give a better result.

If you still have visible blotchy effects, use a debanding filter such as GradFun3 or flash3kyuu_deband, or keep a bit of noise in the darkest parts of the picture.

Zero1
14th August 2011, 10:39
That particular screenshot was a pure 8 bit process. I ended up not bothering with it in 16 bit because I could forsee the problems you described (but it would be Ok to clean the source before it converts it to 16 bit I presume).

zys4416
2nd September 2011, 02:17
I have a problem with my Nvidia GT 520 cards, it throws the error:

http://imagewtf.com/14248.jpg/images/14248.jpg

I through all OpenCL testing of gpu_caps_viewer, and I updated the lastest drivers.

Malcolm
2nd September 2011, 09:16
Do you use this (http://sourceforge.net/projects/cloo/files/0.8/Cloo-0.8.2.zip/download) version of Cloo?

Malcolm
2nd September 2011, 21:07
I have updated NLMeansCL to version 0.3.2.
Please see the first post.

mastrboy
3rd September 2011, 14:58
Thanks :)

Will we see a update of the 0.4.x temporal version soon?

dispatcher7007
7th November 2011, 18:00
Is there any progress towards temporal denoising? The spatial version works fine. In fact there are just minor quality drawbacks towards MDegrainX (no vigorous testing!), so Im quite curious what the temporal implementation may be able to do...

BTW: Kudos! There are way to few GPU-Plugins out there, and this is a magnificent new approach...

Greetings, Dis!

Edit1:
PS:
Did some more tests and screenshots NLmeansCL vs MDegrain3 and original (just recoded from BR):
http://www.mediafire.com/file/k951brd1f4c54v2/screenshots.rar

The speed-value is not worth much, because it wasnt a real benchmark setting, with idle computer and several repeats. just for the clue.

original:
speed 100%
size 100%

NLmeansCL
Speed 105,8%
Size 73,45%

MDegrain3
Speed 106,6%
Size 62,89%

X264 commandline
x264.exe --preset slow --tune film --crf 18.0 --ref 8 --bframes 8 --subme 9 --output "output.mkv" "source.avs"

MDegrain3.avs
SetMTMode(2)
DGSource("test.dgi")
AssumeFPS(23.976)
ConvertToYV12()
Crop(0,140,-0,-140)
super = MSuper(pel=1, sharp=1)
backward_vec3 = MAnalyse(super, isb = true, delta = 3, overlap=4, blksize=16, truemotion=false)
backward_vec2 = MAnalyse(super, isb = true, delta = 2, overlap=4, blksize=16, truemotion=false)
backward_vec1 = MAnalyse(super, isb = true, delta = 1, overlap=4, blksize=16, truemotion=false)
forward_vec1 = MAnalyse(super, isb = false, delta = 1, overlap=4, blksize=16, truemotion=false)
forward_vec2 = MAnalyse(super, isb = false, delta = 2, overlap=4, blksize=16, truemotion=false)
forward_vec3 = MAnalyse(super, isb = false, delta = 3, overlap=4, blksize=16, truemotion=false)
MDegrain3(super, backward_vec1,forward_vec1,backward_vec2,forward_vec2,backward_vec3,forward_vec3,thSAD = 400)

NLmeansCL.avs
SetMTMode(2)
DGSource("test.dgi")
AssumeFPS(23.976)
ConvertToYV12()
Crop(0,140,-0,-140)
NLMeansCL(A=4, S=2, B=1, aa=1.0, h=1.8, plane=4)

Conclusions:
This first test was targeted towards conservation of detail, because the denoising-quality of MDegrain3 is out of question to me.
The results of NLmeansCL are a bit too smooth to me (tested just the suggestet settings from its website), especially if there is no impact on compressibility. I find MDegrain3 more natural, which is even smaller in size.

Remarkably is the lack of speed improvement, which may be caused by GPU decoding in addition to GPU filtering OR by the slow x264 settings. I guess its the last one.

Edit2: The Speed suffers from both things. Following tests are kind of synthetic, because nobody uses high-end filters with ultrafast x264-Settings:
While Mdegrain3 can profit by DGdecodeNV (GPU decoding and sourcefilter), NLmeansCL is bothered by GPU decoding, up to 50% slower than MDegrain3 at x264 ultrafast settings (18,29fps to 12,6 fps). Using FFMS NLmeansCL (20,21fps) is 10% faster than MDegrain3 with GPU decoding (18,29fps). With the real x264-settings, there is no Change in speed, whatever sourcefilter is used.

Nonetheless, there are no speed improvements compared to other high-end filters like MDegrain3. I use a GTX560, which should be fast enough anyway...

Fullmetal Encoder
13th November 2011, 01:28
Has there been any progress regarding these NLMeansCL initialization errors? I just recently downloaded updated drivers for my HD Radeon 5850 along with the AMD APP SDK (just in case).

I tried uploading an image of the error but the forum keeps telling me that it's not a valid image file.

I have installed Cloo version 0.8.2 and am using version 1.0.0.1 of AvsFilterNet.

I have also confirmed that my card does support images.

Also, can anyone tell me why the forum might be refusing any JPG or PNG images from my system?

If the error image is absolutely necessary I can try to get a file hosting site.

Thanks for any help with this.

Mounir
1st December 2011, 13:20
I have an initialisation error aswell, i thought i had installed everything right but it appears not.
I have downloaded:
- NLMEANS v0.4.0 alpha
- AvsFilterNet r62998 (.NET 4)
- Cloo 0.9.0

error message:
system reflection targetinvocationexception....."VoidCloo.computeContext".....

Any suggestion to solve this issue ?

Stereodude
2nd December 2011, 01:10
I have an initialisation error aswell, i thought i had installed everything right but it appears not.
I have downloaded:
- NLMEANS v0.4.0 alpha
- AvsFilterNet r62998 (.NET 4)
- Cloo 0.9.0

error message:
system reflection targetinvocationexception....."VoidCloo.computeContext".....

Any suggestion to solve this issue ?Try the older Cloo .8.2. I couldn't get it to work with the .9.2 alpha when I tried it months ago.

Keiyakusha
2nd December 2011, 03:28
don't use v0.4.0 alpha it was experimental and contains more bugs and it is older than v0.3.2. Because of that it doesn't supports Cloo 0.9.0 and AvsFilterNet r62998. just forget it.

Mounir
7th December 2011, 08:33
Ok well i tried with the following "filters" but it still don't work:
- Cloo 0.8.2
- AvsFilterNet r62998 (.NET 4) (version 1.0 beta)
- NLMEANS v0.3.2

The error: "There is no function named "NLMeansCL"

Keiyakusha
8th December 2011, 03:52
use Cloo 0.9.0 instead of Cloo 0.8.2
Basically you need nlmeanscl v0.3.2 and everything else to be latest

Mounir
21st December 2011, 09:38
I had no luck thus far ! I did like you suggested i always get an error "there is no function NLMeansCL()"

Perhaps it has something to do with the autoload thing, not sure