mrgloom 242 Жалоба Опубликовано October 29, 2013 В продолжение темы, задача примерно та же самая только доп. условие, что объекты у нас имеют круглую форму. Используя матлаб CircularHough_Grd(red, [3 35],20, 15, 1); Используя cv2.HoughCircles import cv, cv2 import numpy as np im = cv2.imread("C:/1.jpg") grey = cv2.cvtColor(im, cv.CV_RGB2GRAY) blur= grey #blur = cv2.GaussianBlur(grey, (0,0), 10) circles = cv2.HoughCircles(blur, cv2.cv.CV_HOUGH_GRADIENT, 1, 16, np.array([]), 15, 36, 9, 35)#params? if circles is not None: for c in circles[0]: cv2.circle(im, (c[0],c[1]), c[2], (0,255,0),2) edges = cv2.Canny( blur, 40, 80 ) cv2.imwrite("C:/circle.jpg",im) cv2.imwrite("C:/canny.jpg",edges) Используя ImageJ watershed, предобработка CLAHE, adaptive threshold, fill holes. в итоге результаты далеки от идеала, надо либо еще дополнительно подбирать параметры, хотя не особо понятно по каким признакам, либо сделать несколько проходов одним и тем же алгоритмом, но с разными параметрами, но как потом сливать результаты не очень понятно. еще есть это, но у меня сразу не заработало https://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_imgproc/py_watershed/py_watershed.html Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано October 29, 2013 Можно попробовать еще по бликам выделять, достаточно давно где-то видел подобную идею. Наверное на них хорошо должны surf/sift срабатывать. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано October 29, 2013 Согласен с бликами, попробуй посмотреть на результат после увеличения контраста (CLAHE), а после применить Top hat и Black hat. Дальше действовать по результату (бинаризация и т.п.): должны получиться вложенные объекты, которые и выделять. Если клетки выделяются уверенно (без ложных положительных срабатываний), то можно ещё работать итеративно: выделил, закрасил фоном, применил дополнительный фильтр к результату, чтобы приблизить изображение к идеальному, но при этом не испортить обнаружение тех объектов, которые и так хорошо детектируются. Слипшиеся остатки делить вообще по третьему алгоритму. На практике как правило наилучший результат как раз и дают такие комбайны, а не одна мат модель, так как можно охватить большее количество граничных условий. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано October 29, 2013 Еще одна технология вспомнилась, использовал как то в детекторе глаз, погуглите статью: "Accurate Eye Center Location and Tracking Using Isophote Curvature.pdf". Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано October 30, 2013 еще нашел с обучением для более общего случая http://www.robots.ox.ac.uk/~vgg/software/cell_detection/ 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах