Я разделил изображение на объекты (кусочки), используя метод, любезно предоставленный unutbu и Джо Кингтоном в этом вопросе: Прямоугольная ограничительная рамка вокруг капель в монохромном изображении с использованием python и у меня есть список этихобъекты, которые принимают следующую форму:
the_blobs = [(slice(dy.start, dy.stop, None), slice(dx.start, dx.stop, None))]
dy.start дает начальное значение y-пикселя, а dy.stop дает конечное значение y-пикселя и ту же самую сделку для dx.
В списке есть несколько объектов, которые перекрываются, т.е. один крошечный объект (квадрат) находится внутри более крупного объекта, такого как круг.Когда это происходит, я хочу удалить «вложенный» объект из списка (потому что круг уже включил его), например,
текущий список
the_blobs = [(slice(100L, 1000L, None), slice(100L, 1000L, None)),
(slice(150L, 220L, None), slice(150L, 220L, None)),
(slice(1001L, 2000L, None), slice(1500L, 1700L, None)),
(slice(2001L, 2200L, None), slice(1800L, 1890L, None))]
идеальный список (с удаленным объектом)
the_blobs = [(slice(100L, 1000L, None), slice(100L, 1000L, None)),
(slice(1001L, 2000L, None), slice(1500L, 1700L, None)),
(slice(2001L, 2200L, None), slice(1800L, 1890L, None))]
Следует отметить, что в рамках вышеупомянутого вопроса было предложено использовать следующий код:
data_slices = ndimage.find_objects(coded_paws)
for s in data_slices:
filled[s] = True
coded_paws, num_paws = ndimage.label(filled)
data_slices = ndimage.find_objects(coded_paws)
Однакопохоже, это не работает в 100% случаев, и это действительно был вклад, выходящий за рамки первоначального вопроса, поэтому я вновь открываю эту часть как отдельный, конкретный вопрос.
Любойидеи о том, как мне этого добиться?
РЕДАКТИРОВАТЬ: Вот фактический пример изображения, который не работает с приведенным выше кодом
обработка этого возврата
и
В идеале я хотел бы удалить последнее изображение изсписок ломтиков