2016-10-04 2 views
4

Я хочу определить минимальный путь между двумя конкретными точками изображения, то есть путь, для которого сумма расстояний между смежными пикселями, взвешенными по интенсивности пикселей (оттенки серого), будет минимизирована. Например, эта картина показывает входное изображениеМинимальный путь с интенсивностью от 2 точек в полутоновом изображении

original image

и это (ручной тяге) минимальный путь в красный цвет, от UL к LR углу (черные границы служат в качестве нулевого веса прокладки):

example minimum path

Я обнаружил, что у Matlab есть функция graydist только для этого; есть что-то подобное в ndimage/scikit-image/что угодно? Я нашел scipy.ndimage.morphology.distance_transform_edt, но я не уверен, если и как использовать его для этой цели. Это нормально, если алгоритм возвращает только один из неуникальных минимумов.

Я не заинтересован в реализации намеков, это довольно простая задача алгоритмически (по крайней мере наивная реализация с использованием, например, динамического программирования), я ищу (сочетание) уже закодированных подпрограмм для этого.

+0

Может загружать/ссылку на исходное изображение? – Divakar

+0

@ Дивакар: добавлено в сообщение (возможно, немного подстрижено). – eudoxos

ответ

5

Этот тип динамического программирования доступен в scikit-изображения, как route_through_array и shortest_path: http://scikit-image.org/docs/dev/api/skimage.graph.html

+1

Интересно, почему большинство образов libs/packages/modules не показывают изображений в своих документах ?! :) Большое спасибо! – eudoxos

+0

Взгляните на нашу галерею: http://scikit-image.org/docs/dev/auto_examples/ У нас нет примеров для * all * функциональности, но, по крайней мере, для справедливого процента. –

+0

Будучи хранителем документации по другому проекту, я знаю, что это тяжелая работа, и я благодарен за ваши усилия. Хотя я имел в виду, должен иметь пример изображения (где применимо) в том же месте, где функция документирована сфинксом, а не все вместе в галерее. Matplotlib имеет примеры для большинства функций в документации API (например, [Axes API] (http://matplotlib.org/api/axes_api.html)), что очень удобно. – eudoxos

Смежные вопросы