Watershed не может правильно сегментировать объектыPython

Программы на Python
Ответить
Anonymous
 Watershed не может правильно сегментировать объекты

Сообщение Anonymous »

В настоящее время я работаю над обнаружением объектов для подсчета количества объектов, представленных в кадре. Некоторые из них я уже успешно разделяю. Еще есть какой-то объект, который находится очень близко друг к другу, и он превращается в одну каплю. Я до сих пор не знаю, как правильно его разделить, поскольку другой соприкасающийся объект, который можно отделить только кончиком. Также есть объекты, которые в моей визуализации преобразования расстояния выглядят довольно четко, но почему-то функция Peak_local_max() не распознала объект, поэтому она не дает правильные координаты пика, а затем на участке водораздела этот объект исчезает. Есть ли что-то, что я сделал не так? Вот мое изображение для отладки.
Изображение

Вот мой образец_изображения, если вы хотите попробовать.
Изображение

Мой код водораздела прост, я использую ndimage вспомогательного scipy
mask_filled = cv2.erode(mask_filled, kernel=np.ones((2,2), np.uint8), iterations=1)

dist = ndimage.distance_transform_edt(mask_filled.copy())
peaks = peak_local_max(dist, min_distance=40, labels=mask_filled.copy())
dist_visual = cv2.normalize(dist, None, 0, 255, cv2.NORM_MINMAX).astype(np.uint8)

peak_map = cv2.cvtColor(dist_visual.copy() * 255, cv2.COLOR_GRAY2BGR)
for (py, px) in peaks:
cv2.circle(peak_map, (px, py), 3, (0, 0, 255), -1)

local_max = np.zeros_like(dist, dtype=bool)
local_max[tuple(peaks.T)] = True
markers = ndimage.label(local_max)[0]
labels = watershed(-dist, markers, mask=mask_filled.copy())

watershed_vis = np.zeros((mask_filled.copy().shape[0], mask_filled.copy().shape[1], 3), dtype=np.uint8)
for label in np.unique(labels):
if label == 0:
continue
# generate random color for each region
color = np.random.randint(15, 255, size=(3,), dtype=np.uint8)
watershed_vis[labels == label] = color


Подробнее здесь: https://stackoverflow.com/questions/798 ... ed-objects
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»