Я допомагаю ветеринарній клініці вимірювати тиск під лапою собак. Я використовую Python для аналізу даних, і тепер я застряг, намагаючись розділити лапи на (анатомічні) субрегіони.
Я створив 2D масив кожної лапи, який складається з максимальних значень для кожного датчика, який завантажений лапою з часом. Ось приклад однієї лапи, де я використовував Excel для малювання областей, які я хочу «виявити». Це 2 на 2 поля навколо датчика з локальними максимумами, які разом мають найбільшу суму.
Тому я спробував поекспериментувати і вирішив просто шукати максимум кожного стовпця та рядка (не можу дивитись в одну сторону через форму лапи). Це, здається, досить добре «визначає» розташування окремих пальців, але це також позначає сусідні датчики.
Отже, що було б найкращим способом сказати Python, який із цих максимумів - це те, що я хочу?
Примітка: квадрати 2х2 не можуть перетинатися, оскільки вони повинні бути окремими пальцями!
Також я сприйняв 2x2 як зручність, будь-яке вдосконалене рішення вітається, але я просто вчений з людського руху, тому я не є справжнім програмістом чи математиком, тому, будь ласка, тримайте це "просто".
Ось версія, яку можна завантажитиnp.loadtxt
Результати
Тому я спробував рішення @ jextee (дивіться результати нижче). Як бачите, він дуже добре працює на передніх лапах, але при цьому менше працює на задні лапи.
Більш конкретно, він не може розпізнати маленьку вершину, яка є четвертим пальцем. Це, очевидно, властиво тому, що цикл дивиться зверху вниз до найнижчого значення, не враховуючи, де це.
Хтось знає, як налаштувати алгоритм @ jextee, щоб він міг знайти і 4-й палець?
Оскільки я ще не обробив жодних інших випробувань, я не можу надати жодних інших зразків. Але дані, які я наводив раніше, були середніми для кожної лапи. Цей файл - це масив із максимальними даними 9 лап у порядку, з яким вони встановили контакт із табличкою.
На цьому зображенні показано, як вони просторово розкладалися по тарілці.
Оновлення:
Я створив блог для всіх, хто цікавиться, і я налаштував SkyDrive з усіма необмеженими вимірами. Тож тому, хто вимагає більше даних: більше енергії для вас!
Нове оновлення:
Тож після допомоги я отримав свої запитання щодо виявлення лапи та сортування лап , я нарешті змогла перевірити виявлення пальців ніг на кожній лапі! Виявляється, це не так добре працює ні в чому, окрім лап розміром, як у мого власного прикладу. Зрозуміло, позаду, я сама винна в тому, що я вибрала 2x2 довільно.
Ось чудовий приклад того, як воно піде не так: ніготь розпізнається як носок, а «п’ята» настільки широка, що її впізнають двічі!
Лапа занадто велика, тому розмір 2х2 без перекриття призводить до виявлення деяких пальців ніг удвічі. І навпаки, у маленьких собак це часто не вдається знайти 5-й палець, який, як я підозрюю, викликаний тим, що зона 2х2 занадто велика.
Після випробування поточного рішення на всіх моїх вимірах я прийшов до приголомшливим висновку , що для майже всіх моїх маленьких собак він не знайшов 5 - й палець і що в більш ніж 50% від наслідків для великих собак були б знайти більше!
Так чітко мені потрібно це змінити. Моя власна здогадка, була зміна розміру neighborhood
на щось менше для маленьких собак і більшого для великих собак. Але generate_binary_structure
не дозволив би мені змінити розмір масиву.
Тому я сподіваюся, що хтось інший має кращу пропозицію щодо розміщення пальців ніг, можливо, маючи масштаб області пальця ноги з розміром лапи?