From 456a63362c84b3295ddc0445531d338c62d48fd8 Mon Sep 17 00:00:00 2001 From: Tomas Farago Date: Fri, 12 Jul 2019 12:23:24 +0200 Subject: NLM: Use sigma as in the literature i.e. pass 1/sigma to the kernel because there it's used in a multiplicative way. --- src/ufo-non-local-means-task.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ufo-non-local-means-task.c b/src/ufo-non-local-means-task.c index 405b2d1..1192320 100644 --- a/src/ufo-non-local-means-task.c +++ b/src/ufo-non-local-means-task.c @@ -127,19 +127,21 @@ ufo_non_local_means_task_process (UfoTask *task, cl_command_queue cmd_queue; cl_mem in_mem; cl_mem out_mem; + gfloat sigma; priv = UFO_NON_LOCAL_MEANS_TASK_GET_PRIVATE (task); node = UFO_GPU_NODE (ufo_task_node_get_proc_node (UFO_TASK_NODE (task))); cmd_queue = ufo_gpu_node_get_cmd_queue (node); in_mem = ufo_buffer_get_device_image (inputs[0], cmd_queue); out_mem = ufo_buffer_get_device_array (output, cmd_queue); + sigma = 1 / priv->sigma; UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->kernel, 0, sizeof (cl_mem), &in_mem)); UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->kernel, 1, sizeof (cl_mem), &out_mem)); UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->kernel, 2, sizeof (cl_sampler), &priv->sampler)); UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->kernel, 3, sizeof (guint), &priv->search_radius)); UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->kernel, 4, sizeof (guint), &priv->patch_radius)); - UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->kernel, 5, sizeof (gfloat), &priv->sigma)); + UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->kernel, 5, sizeof (gfloat), &sigma)); profiler = ufo_task_node_get_profiler (UFO_TASK_NODE (task)); ufo_profiler_call (profiler, cmd_queue, priv->kernel, 2, requisition->dims, NULL); -- cgit v1.2.1