diff options
author | Tomas Farago <sensej007@email.cz> | 2019-07-12 12:23:24 +0200 |
---|---|---|
committer | Tomas Farago <sensej007@email.cz> | 2020-02-05 10:16:26 +0100 |
commit | 456a63362c84b3295ddc0445531d338c62d48fd8 (patch) | |
tree | 21dd27b3a10e909f9ccb9b00f72ac482cbdf1aa2 | |
parent | 0a427ea1dbba853f7c5e411c628119bb21672aea (diff) | |
download | ufo-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.c | 4 |
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); |