Skip to content
Snippets Groups Projects
Commit 893bceea authored by Nicolas Pope's avatar Nicolas Pope
Browse files

Add skip bad colour

parent 71d3c8c4
No related branches found
No related tags found
2 merge requests!116Implements #133 point alignment,!114Ongoing #133 improvements
Pipeline #14658 passed
...@@ -57,6 +57,7 @@ ILW::ILW(nlohmann::json &config) : ftl::Configurable(config) { ...@@ -57,6 +57,7 @@ ILW::ILW(nlohmann::json &config) : ftl::Configurable(config) {
params_.flags = 0; params_.flags = 0;
if (value("ignore_bad", false)) params_.flags |= ftl::cuda::kILWFlag_IgnoreBad; if (value("ignore_bad", false)) params_.flags |= ftl::cuda::kILWFlag_IgnoreBad;
if (value("ignore_bad_colour", false)) params_.flags |= ftl::cuda::kILWFlag_SkipBadColour;
if (value("restrict_z", true)) params_.flags |= ftl::cuda::kILWFlag_RestrictZ; if (value("restrict_z", true)) params_.flags |= ftl::cuda::kILWFlag_RestrictZ;
on("ignore_bad", [this](const ftl::config::Event &e) { on("ignore_bad", [this](const ftl::config::Event &e) {
...@@ -64,6 +65,11 @@ ILW::ILW(nlohmann::json &config) : ftl::Configurable(config) { ...@@ -64,6 +65,11 @@ ILW::ILW(nlohmann::json &config) : ftl::Configurable(config) {
else params_.flags &= ~ftl::cuda::kILWFlag_IgnoreBad; else params_.flags &= ~ftl::cuda::kILWFlag_IgnoreBad;
}); });
on("ignore_bad_colour", [this](const ftl::config::Event &e) {
if (value("ignore_bad_colour", false)) params_.flags |= ftl::cuda::kILWFlag_SkipBadColour;
else params_.flags &= ~ftl::cuda::kILWFlag_SkipBadColour;
});
on("restrict_z", [this](const ftl::config::Event &e) { on("restrict_z", [this](const ftl::config::Event &e) {
if (value("restrict_z", false)) params_.flags |= ftl::cuda::kILWFlag_RestrictZ; if (value("restrict_z", false)) params_.flags |= ftl::cuda::kILWFlag_RestrictZ;
else params_.flags &= ~ftl::cuda::kILWFlag_RestrictZ; else params_.flags &= ~ftl::cuda::kILWFlag_RestrictZ;
......
...@@ -63,7 +63,7 @@ __global__ void correspondence_energy_vector_kernel( ...@@ -63,7 +63,7 @@ __global__ void correspondence_energy_vector_kernel(
const float v = (i / COR_WIN_RADIUS) - (COR_WIN_RADIUS / 2); const float v = (i / COR_WIN_RADIUS) - (COR_WIN_RADIUS / 2);
const float3 world2 = make_float3(p2.tex2D(screen2.x+u, screen2.y+v)); const float3 world2 = make_float3(p2.tex2D(screen2.x+u, screen2.y+v));
if (params.flags & ftl::cuda::kILWFlag_IgnoreBad && world2.x == MINF) continue; if ((params.flags & ftl::cuda::kILWFlag_IgnoreBad) && world2.x == MINF) continue;
const uchar4 colour2 = c2.tex2D(screen2.x+u, screen2.y+v); const uchar4 colour2 = c2.tex2D(screen2.x+u, screen2.y+v);
// Determine degree of correspondence // Determine degree of correspondence
...@@ -71,8 +71,10 @@ __global__ void correspondence_energy_vector_kernel( ...@@ -71,8 +71,10 @@ __global__ void correspondence_energy_vector_kernel(
// Point is too far away to even count // Point is too far away to even count
if (world2.x != MINF && cost == 1.0f) continue; if (world2.x != MINF && cost == 1.0f) continue;
// Mix ratio of colour and distance costs // Mix ratio of colour and distance costs
cost = params.cost_ratio * (1.0f - ftl::cuda::colourWeighting(colour1, colour2, params.colour_smooth)) + (1.0f - params.cost_ratio) * cost; const float ccost = 1.0f - ftl::cuda::colourWeighting(colour1, colour2, params.colour_smooth);
if ((params.flags & ftl::cuda::kILWFlag_SkipBadColour) && ccost == 1.0f) continue;
cost = params.cost_ratio * (ccost) + (1.0f - params.cost_ratio) * cost;
//cost /= 2.0f; //cost /= 2.0f;
++count; ++count;
......
...@@ -18,6 +18,7 @@ struct ILWParams { ...@@ -18,6 +18,7 @@ struct ILWParams {
static const uint kILWFlag_IgnoreBad = 0x0001; static const uint kILWFlag_IgnoreBad = 0x0001;
static const uint kILWFlag_RestrictZ = 0x0002; static const uint kILWFlag_RestrictZ = 0x0002;
static const uint kILWFlag_SkipBadColour = 0x0004;
void correspondence_energy_vector( void correspondence_energy_vector(
ftl::cuda::TextureObject<float4> &p1, ftl::cuda::TextureObject<float4> &p1,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment