summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomas Farago <sensej007@email.cz>2019-07-12 12:23:24 +0200
committerTomas Farago <sensej007@email.cz>2020-02-05 10:16:26 +0100
commit456a63362c84b3295ddc0445531d338c62d48fd8 (patch)
tree21dd27b3a10e909f9ccb9b00f72ac482cbdf1aa2
parent0a427ea1dbba853f7c5e411c628119bb21672aea (diff)
downloadufo-filters-456a63362c84b3295ddc0445531d338c62d48fd8.tar.gz
ufo-filters-456a63362c84b3295ddc0445531d338c62d48fd8.tar.bz2
ufo-filters-456a63362c84b3295ddc0445531d338c62d48fd8.tar.xz
ufo-filters-456a63362c84b3295ddc0445531d338c62d48fd8.zip
NLM: Use sigma as in the literature
i.e. pass 1/sigma to the kernel because there it's used in a multiplicative way.
-rw-r--r--src/ufo-non-local-means-task.c4
1 files changed, 3 insertions, 1 deletions
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);