- •Введение
- •Литературный обзор
- •Методы анализа
- •Common arc
- •Постановка задачи
- •Эксперименты
- •Выбор программной среды и языка программирования
- •ПО для обработки изображений
- •Общая схема программы
- •Вычисление общей дуги
- •Подготовка данных
- •Поиск общих дуг и построение корреляционного графа
- •Выделение корневой структуры
- •Поиск неизвестных абсолютных ориентаций
- •Итерационное восстановление фазы
- •Визуализация
- •Полученные результаты
- •Заключение
3.Эксперименты
3.1Выбор программной среды и языка программирования
Всвоих прежних работах, автор использовал большое количество разнообразных языков и сред программирования для решения широкого спектра задач. Ниже приведены и разобраны по схеме “плюсы/минусы” те языки и платформы, которые могли бы быть выбраны для написания дипломной работы (в порядке освоения):
C/C++
Использовались для: задач, связанных с математическими рассчетами, программированием трехмерной графики с использованием OpenGL, написанием трехмерного игрового движка.
Плюсы: компиляция в машинный код, высокая скорость исполнения кода, контроль за ресурсами, выделением и распределением памяти.
Минусы: большое количество кода, скорость разработки, разработка структур данных и логики классов, не имеющей непосредственного отношения к решению задачи.
JavaScript/NodeJS + HTML/CSS
Использовались для: задач, связанных с программированием интерфейсов, web-frontend разработкой, написанием серверов и приложений - менеджеров задач, метапрограммированием.
Плюсы: простота разработки, удобство синтаксических конструкций. Минусы: скорость исполнения виртуальной JavaScript машины, неопти-
мальное использование ресурсов виртуальной машиной.
13
C#
Использовался для: задач, связанных с программированием пользовательских интерфейсов и игровой логики.
Плюсы: удобство языка как такого, удобство работы с интерфейсами, скорость исполнения виртуальной машины.
Минусы: все еще существенно медленнее, чем скомпилированный машинный код, неудобен для рассчетных задач.
Python + Numpy/SciPy/PyCUDA
Использовался для: программирования задач, связанных с обработкой данных, написанием распределенных алгоритмов и высокопараллельных вычислений
Плюсы: удобство языка, удобство работы с массивами данных, большое количество встроенных математических преобразований для массивов данных, обсчет данных с помощью вызова нативных модулей
Минусы: низкая скорость исполнения непосредственно python-кода, большой overhead
Основываясь на вышеуказанных тезисах, в качестве среды и языка разработки был выбран язык программирования Python, поскольку он предлагает широкий спектр удобных синтаксических конструкций, лексически удобный для чтения код, для чтения которого не требуются специальные навыки. Также, важным и одним из основных критериев выбора языка являются библиотеки NumPy и SciPy, имеющие широкий спектр методов для работы с массивами данных, преобразования этих данных, а также подсчета разнообразных статистических данных на их основе. Также важным элементом является библиотека matplotlib, способствующая быстрому и удобному построению графиков.
14