Я помогаю ветеринарной клинике, измеряю давление под лапой собаки. Я использую Python для анализа данных, и теперь я застрял, пытаясь разделить лапы на (анатомические) части.
Я сделал двумерный массив каждой лапы, который состоит из максимальных значений для каждого датчика, который лапа нагружала с течением времени. Вот пример одной лапы, где я использовал Excel для рисования областей, которые хочу «обнаружить». Это прямоугольники 2 на 2 вокруг датчика с локальными максимумами, которые вместе имеют наибольшую сумму.
Итак, я попробовал немного поэкспериментировать и решил просто искать максимумы каждого столбца и строки (не могу смотреть в одном направлении из-за формы лапы). Кажется, что это довольно хорошо «определяет» расположение отдельных пальцев, но также отмечает соседние датчики.
Итак, как лучше всего сказать Python, какие из этих максимумов мне нужны?
Примечание: квадраты 2x2 не могут перекрываться, так как они должны быть отдельными пальцами!
Также я взял 2x2 для удобства, любое более продвинутое решение приветствуется, но я просто занимаюсь изучением движений человека, поэтому я не настоящий программист или математик, поэтому, пожалуйста, сохраняйте его «простым».
Вот версия , которую можно загрузить с помощью np.loadtxt
Результаты
Итак, я попробовал решение @ jextee (см. Результаты ниже). Как видите, он хорошо работает на передних лапах, но хуже работает на задних.
Точнее говоря, он не может распознать маленькую вершину четвертого пальца ноги. Очевидно, это связано с тем, что цикл смотрит сверху вниз в сторону самого низкого значения, не принимая во внимание, где оно находится.
Кто-нибудь знает, как настроить алгоритм @jextee, чтобы он мог найти и четвертый палец?
Поскольку я еще не обработал никаких других испытаний, я не могу предоставить другие образцы. Но данные, которые я привел ранее, были средними для каждой лапы. Этот файл представляет собой массив с максимальными данными 9 лап в порядке их соприкосновения с пластиной.
На этом изображении показано, как они были распределены в пространстве по пластине.
Обновление:
Я создал блог для всех, кого интересует и Я установил SkyDrive со всеми необработанными измерениями. Итак, для всех, кто запрашивает дополнительные данные: подробнее власть тебе!
Новое обновление:
Итак, после того, как я получил помощь с моими вопросами относительно обнаружения лапы и сортировки лапы, я наконец смог проверить обнаружение пальцев для каждой лапы! Оказывается, это не так хорошо работает ни с чем, кроме размеров лап, как в моем собственном примере. Конечно, оглядываясь назад, я сам виноват в том, что выбрал 2x2 так произвольно.
Вот хороший пример того, где что-то пошло не так: гвоздь распознается как палец, а «пятка» настолько широкая, что распознается дважды!
Лапа слишком велика, поэтому если взять размер 2x2 без перекрытия, некоторые пальцы будут обнаружены дважды. Наоборот, у маленьких собак часто не удается найти пятый палец, что, как я подозреваю, вызвано слишком большой площадью 2x2.
После опробования текущего решения на всех моих измерениях я пришел к ошеломляющему выводу, что почти у всех моих маленьких собак пятый палец не обнаруживается и что более чем в 50% ударов для большие собаки найдут больше!
Очевидно, мне нужно это изменить. Мое собственное предположение заключалось в изменении размера neighborhood
на что-то меньшее для маленьких собак и больше для больших собак. Но generate_binary_structure
не позволил мне изменить размер массива.
Таким образом, я надеюсь, что у кого-нибудь есть лучший совет по расположению пальцев ног, возможно, у него есть масштаб площади пальца в зависимости от размера лапы?
Я так понимаю, запятые - это десятичные знаки, а не разделители значений?
Да, это запятые. И @Christian, я пытаюсь вставить его в легко читаемый файл, но даже это у меня не получается :(
Если кому-то нужна дополнительная информация, Я открыл для него чат
Я просто заметил, что нижнее изображение зеркально отражено по сравнению с примером Excel. Глупая ориентация!
@Ivo: Какова цель этого анализа? Вы говорите, что хотите определить анатомические подобласти. Это связано с ненормальным распределением нагрузки? Относительное расположение колодок?
Пока я делаю технико-экономическое обоснование, все идет реально. Поэтому я ищу как можно больше способов определения давления, включая субрегионы. Также мне нужно уметь различать стороны «большого пальца» и «мизинца», чтобы оценить ориентацию. Но так как этого не делали раньше, неизвестно, что мы можем найти :-)
@Daniyar: изображения - это просто imshow () массива (за исключением первого из Excel). @Ron: на данный момент я не обрабатывал никаких других измерений, но это одно измерение фактически имеет 9 полных контактов. Я загружу их через секунду
@Ron: одна из целей этого исследования - выяснить, для какого размера / веса собак подходит эта система, так что да, пока эта собака весила около 20 кг. У меня есть такие, которые значительно меньше (и больше), и я ожидаю, что не смогу сделать то же самое с настоящими маленькими.
Частичный дубликат: coderhelper.com/questions/1713335/…
Классный вопрос. Почему связанные данные представляют собой трехмерный массив np, а не двухмерный?
@frank лапы измеряются во времени, отсюда 3-е измерение. Однако они не двигаются со своего места (условно говоря), поэтому меня больше всего интересует, где расположены пальцы ног в 2D. После этого 3D-аспект предоставляется бесплатно.
Для меня неясно, описано ли Новое обновление в ответах ниже ?!
Пожалуйста, проясните, решено это в достаточной степени или нет. Вы упомянули "решение jextee", где оно? Кто-то изменил его имя?