2 заметки с тегом

ошибки

Провал первой попытки прослеживания путей перемещения протист

Профессор Плейшнер шел по улице. Проходя мимо явочной квартиры, он мельком взглянул на окно. Занавеска была отодвинута. На подоконнике стояло семнадцать утюгов и один цветок. «Явка провалена», — понял Плейшнер.


Это третья, аналитическая заметка из серии об анализе траектории движения протист.

В первой заметке объяснил, как с помощью ffmpeg осветлить видео снятое на фотоаппарат, соединенный с микроскопом.

Здесь рассказываю, что полученное видео не подошло для прослеживания траекторий, нужно дальше работать над его качеством и, хоть немного, разобраться в методах анализа изображений и прослеживания траекторий.

Напомню, что видео необходимо для построения траекторий движения микроорганизмов.




Для решения задачи использую Трекмейт (TrackMate).

Трекмейт — это плагин к Фи-джи (Fiji), который предназначен для прослеживания, визуализации, редактирования и анализа траекторий движения объектов, снятых на видео. Интерфейс Трекмейта состоит из последовательности диалоговых окон, в которых необходимо выбрать алгоритмы обработки видеоизображений и указать параметры этих алгоритмов.


Мои попытки научить Трекмейт проследить траектории микроорганизмов провалились.




Так вышло потому, что Трекмейт неверно выделил объекты предустановленными методами, то есть неверно выполнил сегментацию изображений.

Пробовал пороговую сегментацию (tresholding detector) и методы сегментации по инвариантным точкам (invariant feature detectors): LoG (Laplassian of Gaussian, Лапласиан Гаусиана :), DoG (differences of Gaussians, разница Гаусианов), Hessian (детектор Гессе).

Пороговая сегментация нашла всего один объект, а алгоритмы сегментации по инвариантным точкам приняли за объект каждое пятнышко.

Детектор Гессе приметил каждое пятнышко

Другие доступные методы сегментации не попробовал.




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

Однако их траектории проследить не удалось.

Трекинг построил слишком короткие пути и не все относятся к протистам.

Много коротких, частично некорректных треков — это провал




Cделал следующие выводы:

  1. Необходимо хотя бы в общих чертах понимать, как работают алгоритмы сегментации и трекинга, как на них влияют параметры и когда их стоит применять, а когда нет.
  2. Качество видеоизображений следует еще более улучшить: повысить контраст между подвижными организмами и статичным фоном, фон сгладить или вообще удалить.
  3. Желательно автоматически создать маску, на которой организмы будут отмечены цветом, а фон будет белым.
  4. Следует попробовать иные способы сегментации или другие программы выделения треков.

Об этом расскажу в другой раз.




Всем прочитавшим — Лаплассиана Гауссинана :)

Ошибки программирования. Забыл про юникод

В коде повторяю одни и те же ошибки. Из-за них ничего не работает. Вот одна.

При сравнении строк без учета регистра забыл, что у меня юникод.

if (strtolower($input_name) == $name) { ... }

В результате функция strtolower вместо строчных русских букв выдала мусор. Сравнение не сработало. Процесс пошел по другой ветке. Пользователь в панике.

А правильно использовать mb_strtolower.

if (mb_strtolower($input_name) == $name) { ... }

То же самое относиться и к другим функциям работы со строками. При юникоде и других кодировках использовать функции с префиксом mb_.

Успехов.