summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex <colomar.6.4.3@gmail.com>2019-05-20 22:27:11 +0100
committerAlex <colomar.6.4.3@gmail.com>2019-05-20 22:27:11 +0100
commit8af71ac6c88e2d10fc5105f3ce0c107f64e83d8b (patch)
treec54594244fe4a61e4e1afce71d027287740411cb
parent741e6f10e2ca070dc0b6e985754d7bc3f32f0e76 (diff)
Improve coins algorithm
-rw-r--r--src/image/alx.cpp21
-rw-r--r--src/proc/coins.cpp2
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);
}