Я помогаю ветеринарной клинике измерять давление под лапой собаки. Я использую Python для анализа данных, и теперь я застрял, пытаясь разделить лапы на (анатомические) субрегионы.
Я сделал двумерный массив каждой лапы, который состоит из максимальных значений для каждого датчика, который был загружен лапой с течением времени. Вот пример одной лапы, где я использовал Excel, чтобы нарисовать области, которые я хочу «обнаружить». Это 2 на 2 поля вокруг датчика с локальными максимумами, которые вместе имеют наибольшую сумму.
Поэтому я попытался поэкспериментировать и решил просто искать максимумы каждого столбца и строки (не могу смотреть в одном направлении из-за формы лапы). Похоже, это «хорошо» определяет местоположение отдельных пальцев, но также отмечает соседние датчики.
Итак, что будет лучшим способом сказать Python, какие из этих максимумов те, которые я хочу?
Примечание: квадраты 2х2 не могут перекрываться, так как они должны быть отдельными пальцами!
Кроме того, я взял 2x2 для удобства, любое более продвинутое решение приветствуется, но я просто ученый по человеческому движению, поэтому я не являюсь настоящим программистом или математиком, поэтому, пожалуйста, держите его «простым».
Вот версия, которая может быть загружена сnp.loadtxt
Результаты
Поэтому я попробовал решение @ jextee (см. Результаты ниже). Как вы можете видеть, он очень хорошо работает на передних лапах, но хуже работает на задних лапах.
Более конкретно, он не может распознать маленький пик, который является четвертым пальцем ноги. Это, очевидно, присуще тому факту, что цикл смотрит сверху вниз в направлении наименьшего значения, не принимая во внимание, где это находится.
Кто-нибудь знает, как настроить алгоритм @ jextee, чтобы он тоже мог найти 4-й палец?
Поскольку я еще не обработал другие испытания, я не могу предоставить другие образцы. Но данные, которые я давал раньше, были средними для каждой лапы. Этот файл представляет собой массив с максимальными данными 9 лап в порядке их контакта с пластиной.
Это изображение показывает, как они были пространственно распределены по пластине.
Обновить:
Я создал блог для всех, кто интересуется, и я установил SkyDrive со всеми необработанными измерениями. Так что для любого, кто запрашивает больше данных: больше власти для вас!
Новое обновление:
Таким образом , после помощи я получил мои вопросы , касающиеся обнаружений лапы и лапа сортировка , я, наконец , смог проверить обнаружение схождения для каждой лапы! Оказывается, это ни на что не годится, кроме лап размером с ту, что была в моем собственном примере. Конечно, задним числом, я сам виноват в том, что выбрал 2х2 произвольно.
Вот хороший пример того, как все идет не так, как надо: гвоздь распознается как носок, а пятка такая широкая, что его распознают дважды!
Лапа слишком большая, поэтому размер 2х2 без перекрытия приводит к тому, что некоторые пальцы ног обнаруживаются дважды. С другой стороны, у маленьких собак часто не удается найти пятый палец, что, как я подозреваю, вызвано слишком большой площадью 2х2.
После пробного текущего решения на всех моих измерениях я пришел к ошеломляющему выводу , что для почти всех моих маленьких собак он не нашел 5 - й палец и что в более чем 50% от последствий для больших собак были бы найти больше!
Ясно, что мне нужно это изменить. Мое собственное предположение было изменение размера neighborhood
на что-то меньшее для маленьких собак и больше для больших собак. Но generate_binary_structure
не позволил бы мне изменить размер массива.
Поэтому я надеюсь, что у кого-то еще есть лучшее предложение для расположения пальцев ног, возможно, с масштабом области пальцев ног в зависимости от размера лап?