На примере пилотного проекта (далее - проект, проект "Мидия", http://pvn.org.ru/www_JS/pvn.org/www/mytilus_NIR/) показывается возможность создания системы для морфометрических измерений раковины черноморской мидии по фотоснимкам и традиционным линейным промерам на основе подхода WEB2.0 (облачные вычисления). На настоящий момент готовы для демонстрации примеры вычисления площади и периметра плоских изображений (снимков) раковины с использованием HTML5 API и Javascript.
Фотоснимки и значения промеров выбираются из базы данных, создаваемой студентами кафедры "Водные биоресурсы и аквакультура", с использованием Apache, pHp и mySQL. Для реализации клиент-серверного взаимодействия используется технология AJAX. Проект "Мидия" использует ресурсы бесплатного хостинга ho.ua
В последнее время для морфометрических измерений в гидробиологии всё чаще используются новые технические и математические средства (например, контурный анализ [3]), объединяемые направлением "геометрическая морфометрия" [6] (можно также упомянуть параллельно развиваемую "стереологию", для нас её методы похожи).
Получаемые при этом результаты позволяют извлекать новую информацию о формообразовании организмов, реализуя давнюю мечту гидробиологов-морфометристов, хорошо обозначенную в известном труде Томпсона [5].
К сожалению, многие методы геометрической морфометрии в учебном процессе университета трудно использовать из-за отсутствия необходимых приборов и соответствующим образом спланированных наблюдений.
В то же время, некоторые результаты можно получить, дополнив традиционные [4] измерения линейных размеров цифровыми фотоснимками, обрабатываемыми средствами компьютерной 2D-графики [1].
Кроме этого, наблюдения и измерения зачастую делаются в полевых условиях, где невозможно использование стационарных компьютеров. В этой связи, особый интерес представляют возможности веб-технологий для использования в так называемых "облачных, web2" вычислениях.
Для проверки возможности реализации идеи задуман пилотный проект "Мидия". Проект предполагается развивать силами студентов направления "Водные биоресурсы" в рамках учебного процесса по дисциплинам "ВТ и программирование", "Статистические методы обработки данных", "Моделирование технологических процессов".
В докладе демонстрируются "инструменты" проекта, реализованные на настоящий момент, и предназначенные для вычисления площади и периметра плоских изображений (снимков) раковины с использованием HTML5 API и Javascript.
Фотоснимки и значения промеров выбираются из базы данных, создаваемой студентами кафедры "Водные биоресурсы и аквакультура" в процессе занятий на кафедре "Информатика и прикладная математика", с использованием Apache, pHp и mySQL. Для реализации клиент-серверного взаимодействия используется технология AJAX. Проект "Мидия" использует ресурсы бесплатного хостинга ho.ua и открыт для свободного доступа.
Итак, цель доклада: проиллюстрировать возможность создания WEB2-системы для морфометрических исследований черноморской мидии на действующем примере, уже сейчас полезном для гидробиолога-морфометриста.
Основная задача этого (пилотного) проекта - показать возможность построения WEB2-системы, предназначенной для морфометрических измерений раковин двустворчатых моллюсков. Однако предполагается, что уже этот, пилотный, проект будет обладать всеми необходимыми инструментами, тестирование которых позволит сделать вывод об их приемлемости на примере черноморской мидии (Mytilus galloprovincialis).
Ниже приводится предполагаемый перечень инструментов:
Алгоритмы определения площади, периметра и максимальных погрешностей из-за использования растра, неточностей инструмента (штангенциркуля) и методов подробно доложены студентами группы МК-1 в докладе от 13.04.13 г. (переход к докладу студентов ...) со ссылкой на действующий пример для демонстрации подробностей (переход к примеру студентов ...).
В докладе студентов работоспособность алгоритмов показана вначале на тестовой фигуре (эллипс), а затем на тестовых снимках раковин.
Напомним, что на первом этапе мы используем холст (HTML5 Canvas) с предварительно нарисованным и закрашенным контуром эллипса, а на последующих двух этапах берём прямоугольную картинку (растровое изображение) с этого холста. На этой картинке контур нарисованной ранее фигуры надо каким-то образом снова выделить. При выделении контура по растровому изображению неизбежно вносится какая-то дополнительная ошибка.
Предлагаемые алгоритмы выделения контура и расчёта площади и периметра является оригинальной разработкой, учитывающей особенности формы раковины черноморской мидии. По классификации алгоритмов выделения контуров [1,7,8] настоящий алгоритм следует отнести к сканирующим алгоритмам. С учётом типа исследуемых фигур использование алгоритмов этого типа представляется более оправданным, чем отслеживающих алгоритмов (или алгоритмов обхода контура, алгоритмов "жука").
Алгоритм включает два последовательно выполняемых блока. Вначале определяются крайние точки внешнего контура фигуры: левая, верхняя, правая и нижняя. Затем начинается проверка каждого пиксела на предмет его принадлежности фигуре: вначале от левой до верхней точки контура, затем от верхней до правой и так до замыкания контура.
Кратко о решении проблем, которые возникли при разработке этого алгоритма:
Порядок вычислительной сложности алгоритма (под сложностью будем понимать время, затрачиваемое на вычисления) удалось снизить не менее чем до величины ~O(N2/3) за счёт того, что просматривались лишь пиксели вокруг внешнего контура фигуры и не затрагивались точки внутри контура. Поскольку фигуры исследуемых объектов занимают обычно не менее трети холста (для эллипса - π/4), то в результате имеем указанную выше оценку вычислительной сложности. Под N можно понимать средние геометрические размеры фигуры.
Выпуклой называется такая фигура, которой принадлежат все точки отрезка, соединяющего любые ее две точки. Исследуемые фигуры раковин моллюсков не всегда являются выпуклыми. По этой причине просмотр (или сканирование) пикселей, например только лишь по горизонтали, может привести к неверным результататам. Для раковины мидии невыпуклость может появляться примерно в одних и тех же секторах при используемом методе поиска точек контура. Поэтому сектор с возможной невыпуклостью контура разбивается на два сектора и сканирование пикселей в этих "полусекторах" выполняется в разных направлениях. Многочисленные случаи проверки алгоритма на снимках реальных раковин не выявил ошибок при наличии невыпуклости.
Поскольку растровые фигуры имеют ступенчатый контур, то простой подсчёт пикселей контура не будет равен периметру исходной фигуры.В используемом здесь алгоритме ступенчатый контур аппроксимируется ломаной линией. Конечно, это даёт возможность более точно определить длину контура отображаемой фигуры, но также с некоторой погрешностью, максимальная величина которой оценивается экспериментально.
В процессе работы алгоритма изображение вначале копируется с первого холста на другой холст, а затем контур фигуры выделяется фильтром на изображении. Таким образом, мы как-бы моделируем фотоснимки раковины, проверяя возможные результаты на тестовых фигурах.
Для копирования используется новая возможность HTML5 - поддержка интернет-адресов (или путей к файлу) типа dataURL (URL с данными-закодированными изображениями). То есть, такие адреса содержат не только пути (ссылки) к изображению, но сами изображения в закодированном виде (обычно Base64). Поэтому мы имеем возможность превратить содержимое холста в такой адрес с изображением (метод toDataURL("MIME-тип_изображения")), загрузить его в объект-изображение, не отображая это изображение, и затем загрузить и отобразить на холсте (метод drawImage(адрес_изображения, 0, 0)).
Для выделения используется упрощённый вариант фильтра Собела [10,11]. Фильтр Собела по существу состоит в вычислении и анализе градиента перепада цветов. Упрощение заключается в том, что мы вычисляем лишь модуль градиента, без учёта направления. Такое упрощение оправдано тем, что мы имеем дело с предварительно обработанными изображениями (фон одного цвета), а само изображение обладает "гладким" и достаточно резко выделяющимся контуром. Тем не менее, без использования подобного фильтра обойтись не удаётся, поскольку на изображении могут быть участки, которые необходимо отфильтровать (кроме возможности обнаружения перепадов цвета, фильтр обладает сглаживающими свойствами).
Ошибка определения площади и периметра для всех браузеров на различных типах мониторов [12÷16] снижается при увеличении размера изображения, но уже при размере более 170 пикселей ошибка уменьшается незначительно. На основании подобных экспериментов можно сделать вывод, что не имеет смысла делать снимки более 170 px, поскольку точность определения площади и периметра для снимков большего разрешения существенно не улучшится. В то же время небольшие размеры изображений позволят существенно уменьшить размер файлов базы данных для их хранения.
Следует отметить, что динамика и знак ошибок в Google Chrome заметно отличается от остальных браузеров. В этом браузере расчётные значения площади и периметра превышают истинные (ошибаемся в сторону увеличения площади и периметра) и при увеличении разрешения снимка остаются на достаточно большом уровне (около 0.3% для площади и 0.2% для периметра), тогда как для остальных браузеров ошибка приближается к нулю. Наилучшими показателями для нашей задачи обладает Safari.
Проводились также одиночные эксперименты со смартфонами и планшетами, работающие с браузерами Opera и Chrome. Предварительно можно сказать, что получаются аналогичные результаты, но величина ошибок колеблется для различных масштабов изображений, так как приходится использовать zoom.
На основании экспериментов, выполненных студентами, сделан вывод, что размеры изображения для измерения площади должны быть около 270 пикселей. Изображения больших размеров не следует делать в целях экономии места базы данных, предназначенной для хранения изображений.
При этом, уровень погрешностей, соответствуют 100%-ному масштабу изображения. При изменении масштаба (zoom, зуммировании) уровень ошибок колеблется. Причина таких колебаний - изменения размера виртуального пиксела при изменении масштаба изображения [9,10]. Более точные результаты получаются при совпадении физического и виртуального пикселей, то есть, когда совпадает разрешение монитора и разрешение изображения. Менее точные, - когда на виртуальный пиксел приходится не целое число физических пикселей. Поэтому на втором и третьем этапах лучше проводить расчёты площади и периметра без масштабирования (зуммирования) изображения.
Последнее правило легко соблюдать для десктопов. Для планшетов и мобильных устройств с маленькими экранами определение площади и периметра также возможно, но требуется доработка по автоматизации изменения масштаба изображения в зависимости от характеристик дисплея [10]).
В работе студентов исследовано также влияние ошибок измерения ширины и высоты эллипса. Для изображения со средними размерами в 270 пикселей, являющегося оптимальным для нашей задачи, относительные ошибки определения площади равны примерно 0.3% для площади и 0.2% для периметра. Поэтому можно потребовать, чтобы ошибки площади и периметра за счёт ошибок измерения не превышали соответственно 0.3% и 0.2%. Эти условия выполняются при следующих соотношениях размеров фигур и точности измерений:
Этот результат использован при проведении измерений размеров раковины.
При выполнении измерений с рекомендуемой точностью для изображений с размерами 270 и более пикселей суммарные относительные ошибки расчёта площади и периметра не должны превышать соответственно 0.6% и 0.4%. При желании, проверку выполнения полученных нами результатов можно сделать с помощью этапа 3 веб-инструмента.
Проверку выводов предыдущих разделов доклада можно выполнить, используя действующий пример на снимках и по результатам измерений раковин мидий из базы данных, наполняемой в настоящее время студентами группы МК-5 в рамках некоторых курсовых работ.
В дополнение к линейным размерам обмерялись также периметры контуров изображений, которые использовались в качестве тестовых значений. Расхождения между вычисляемыми и тестовыми значениями периметров не превышают расчётных значений ошибок.
Продолжение последует ...
В результате проделанной работы: