diff options
author | Alex <colomar.6.4.3@gmail.com> | 2019-05-20 22:27:11 +0100 |
---|---|---|
committer | Alex <colomar.6.4.3@gmail.com> | 2019-05-20 22:27:11 +0100 |
commit | 8af71ac6c88e2d10fc5105f3ce0c107f64e83d8b (patch) | |
tree | c54594244fe4a61e4e1afce71d027287740411cb | |
parent | 741e6f10e2ca070dc0b6e985754d7bc3f32f0e76 (diff) |
Improve coins algorithm
-rw-r--r-- | src/image/alx.cpp | 21 | ||||
-rw-r--r-- | src/proc/coins.cpp | 2 |
2 files changed, 11 insertions, 12 deletions
diff --git a/src/image/alx.cpp b/src/image/alx.cpp index 966c746..ce3d450 100644 --- a/src/image/alx.cpp +++ b/src/image/alx.cpp @@ -106,9 +106,9 @@ static void img_alx_local_max (class cv::Mat *imgptr) const ptrdiff_t cols = imgptr->cols; const ptrdiff_t step = imgptr->step; /* Minimum distance between local maxima */ - const int dist = 4; + const int dist = 2; /* Minimum value of local maxima */ - const uint8_t val_min = 16; + const uint8_t val_min = 1; class cv::Mat imgtmp; int arr_tmp[rows][cols]; bool wh; @@ -129,11 +129,10 @@ static void img_alx_local_max (class cv::Mat *imgptr) img_pix = imgptr->data + i*step + j; if (*img_pix < val_min) continue; - - for (ptrdiff_t k = (i + dist + 1); k >= (i - dist - 1); k--) { - for (ptrdiff_t l = (j + dist + 1); l >= (j - dist - 1); l--) { - if ((k > 0) && (k < rows)) { - if ((l > 0) && (l < cols)) { + for (ptrdiff_t k = (i + dist); k >= (i - dist); k--) { + for (ptrdiff_t l = (j + dist); l >= (j - dist); l--) { + if ((k >= 0) && (k < rows)) { + if ((l >= 0) && (l < cols)) { near_pix = imgptr->data + k*step + l; if (*near_pix > *img_pix) goto not_maxima; @@ -158,10 +157,10 @@ not_maxima: img_pix = imgptr->data + i*step + j; if (arr_tmp[i][j] != MAYBE_LOCAL_MAX) continue; - for (ptrdiff_t k = (i+dist+1); k >= (i-dist-1); k--) { - for (ptrdiff_t l = (j+dist+1); l >= (j-dist-1); l--) { - if ((k > 0) && (k < rows)) { - if ((l > 0) && (l < cols)) { + for (ptrdiff_t k = (i+dist); k >= (i-dist); k--) { + for (ptrdiff_t l = (j+dist); l >= (j-dist); l--) { + if ((k >= 0) && (k < rows)) { + if ((l >= 0) && (l < cols)) { near_pix = imgptr->data + k*step + l; if (*near_pix == *img_pix) { if (!arr_tmp[k][l]) diff --git a/src/proc/coins.cpp b/src/proc/coins.cpp index 4451b2d..78849d5 100644 --- a/src/proc/coins.cpp +++ b/src/proc/coins.cpp @@ -176,7 +176,7 @@ static void coins_segmentate (void) proc_threshold(cv::THRESH_BINARY_INV, IMG_IFACE_THR_OTSU); proc_distance_transform(); proc_local_max(); - proc_dilate(6); + proc_dilate(1); proc_save_mem(1); } |