From 368d214ee0ce65cea8566829c0d44dcc033eea4e Mon Sep 17 00:00:00 2001 From: David Hilvert Date: Wed, 9 May 2007 07:57:00 +0000 Subject: [PATCH] d2::align::diff_stat_t::run::sample(): Sample removal gradients. darcs-hash:20070509075755-d1b56-ba773d8e8a96032cf2cc1647639782e26fe093c9.gz --- d2/align.cc | 2 +- d2/align.h | 21 ++++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/d2/align.cc b/d2/align.cc index 93f3503..e72b203 100644 --- a/d2/align.cc +++ b/d2/align.cc @@ -279,7 +279,7 @@ void *d2::align::diff_stat_t::diff_subdomain(void *args) { && r[1] <= c.input->width() - 1)) r = point::undefined(); - sargs->runs.back().sample(f, c, i, j, q, r); + sargs->runs.back().sample(f, c, i, j, q, r, runs.front()); } return NULL; diff --git a/d2/align.h b/d2/align.h index da8abd0..9e8c02b 100644 --- a/d2/align.h +++ b/d2/align.h @@ -852,7 +852,8 @@ private: return 0; } - void sample(int f, scale_cluster c, int i, int j, point t, point u) { + void sample(int f, scale_cluster c, int i, int j, point t, point u, + const run &comparison) { pixel pa = c.accum->get_pixel(i, j); @@ -967,6 +968,24 @@ private: de_centroid_v += de * t.lengthto(u); de_sum += de; + + removal_pair rp; + + rp.error[0] = this_result[0]; + rp.error[1] = this_result[1]; + rp.divisor[0] = this_divisor[0]; + rp.divisor[1] = this_divisor[1]; + + ale_accum result_approx = comparison.result; + ale_accum divisor_approx = comparison.divisor; + + rp.zero_favorability_gradient = + (result_approx - rp.error[1]) + / (divisor_approx - rp.error[1]) + - (result_approx - rp.error[0]) + / (divisor_approx - rp.error[0]); + + add_removal(rp); } result += (this_result[0]); -- 2.11.4.GIT