Я нахожу тонны документации и примеров сложных и - в моем случае - перегруженных библиотек/пакетов, посвященных теме классификаторов форм. С начала 2000-х годов я время от времени читал и лишь частично понимал! такие работы, как работы Нормана Маклеода о собственных формах (знаменитая серия лекций «Палеомат-101»). Моя последняя книга — Salili-James et al. (2022).
Моя цель не особенно амбициозна. Из личного интереса я хотел бы понять, какой простейший алгоритм может успешно сгруппировать очертания ракушек близкородственных и очень похожих видов.
Прямо сейчас я получил возможность начать с фотографии раковины и генерировать одномерные массивы из 100 элементов, представляющие столько же евклидовых расстояний от центроида до равномерно расположенных точек на контуре внешнего края. При этом размер всех изображений изменяется до одинакового размера, чтобы обнаружению одинаковых форм не мешали различия в размерах образцов.
Контур раковины со 100 равномерно расположенными точками
1D-массивы из 100 элементов можно представить в виде кривых, которые можно считать точным представлением формы. Пожалуйста, наберитесь терпения и проверьте прилагаемые изображения, которые говорят сами за себя (я не уверен, что мой язык подходит).
Вектор на расстоянии 100 от центроида - кривая, которая возобновляет типичную форму ракушки
Прежде чем начать систематическую работу по фотографированию ракушек и сохранению векторов со 100 значениями, я хочу решить, что будет дальше. Опять же, мне нужна какая-то эмбриональная форма неконтролируемого классификатора, который, как я надеюсь, мог бы составить что-то очень простое, решение с наименьшими усилиями, которое могло бы привести к некоторой форме «группировки по сходству» моих кривых (вы видели, что я не очень строг в своих объяснениях...).
Итак, мне нужны два отдельных совета:
- сравнение... что?? Должен ли я сравнить каждую кривую с 99 другими кривыми (и количество результатов резко возрастет!) или мне следует создать второй член сравнения? Другими словами, если каждая кривая в моем наборе содержит один член сравнения, должен ли я усреднить все кривые и построить «среднюю морскую ракушку», а затем использовать его в качестве второго члена сравнения для всех моих кривых?
- сравнивать... как? Я могу работать как в Python, так и в среде RStudio. Все библиотеки/пакеты, которые я нахожу, кажутся мне излишними. Пока я не найду лучшую идею, я бы начал с чего-то элементарного (например, суммы квадратов поиндексных различий по всей длине кривых). Какое самое простое программное решение для генерации «значений сходства», которые можно использовать для разделения кривых в дискретные группы по сходству?
Чезаре
Подробнее здесь: https://stackoverflow.com/questions/798 ... mplest-sol
Мобильная версия