Необходимо оценить реализуемость и стоимость создания ПО для выполнения такой задачи:
Предпочтительный инструмент Delphi 7 или Visual Studio 2010.
В дальнейшем предусматривается дополнительный блок работ по расширению функционала.
Запуск из командной строки. Интерфейс на данном этапе не нужен.
Существует несколько снимков фасада здания.
Снимки:
Выполнены с различных углов
Имеют трапециевидные искажения из-за перспективы
Могут содержать участки соседних зданий
Могут быть сняты с некоторым наклоном до 25 градусов
Выполняются с 25-30 процентным наложением соседних областей
Один фасад может быть снят или днём или ночью. Но не предполагается соединение снимков, снятых в различное время суток. Снимки могут отличаться освещённостью.
Необходимо собрать единый паззл фасада:
Привести все снимки к квадратному виду устранить искажения перспективы. Критерием приведения к квадратному виду является то, что большинство линий стали горизонтальными или вертикальными. Т.е. если в кадр попала часть перпендикулярного фасада, то будет "оквадрачена" часть с большей площадью снимка.
Математически это превращение параллелепипеда в квадрат. Преобразованные снимки сохраняются рядом с добавлением у имени файла основного снимка. Области, незаполненные изображением, заливаются чёрным цветом.Рядом в csv файле сохраняются математические коэффициенты преобразования.
Каждый снимок обрабатывается, выделяется N типовых зон на снимке (углы, пересечения, дефекты, швы, кондиционеры). Здесь возможно формирование хеш-функции данной зоны для поиска подобия.
Выполняется поиск снимка с углом здания или с краем здания. Принимается за точку отсчёта. (??)
Производится сбор паззла: Проверяется совпадение типовых зон, в т.ч. с изменённым масштабом.
Происходит совмещение снимков. Из нескольких вариантов выбирается вариант с наибольшим разрешением.
Формируется итоговый "паззл" из фотографий. Для каждой зоны целевого снимка хранится область из исходного снимка, которая был использована
При наложении используется блок информации с максимальным разрешением это значит, что некоторые блоки результирующего изображения будут растянуты из исходных, а области с максимальным качеством будут отображаться 1 к 1. Математика соединения снимков сохраняются в отдельном файле. Т.е. на выходе необходимо получить:
1) общий паззл
2) паззл с линиями соединения снимков
3) файл с математикой соединения. Т.е. чтобы можно было посчитать, путь от пикселя на целевом пазле до исходной картинки.
4) оценку качества соединения некую оценку, показывающую качество сбора итоговой картинки.Были ли пропущены картинки и какие.
В качестве реализации предлагается использовать библиотеку OpenCV. Она позволяет выделять контуры, проводить ресайзинг и искать наложения.
Пример съёмки фасада (59 Мб):
yadi.sk/d/xpfPhQyLQgUZj предполагается, что снимки будут примерно разрешении 640Х480, т.е. около 0,3 Мп
Может быть снято от 2-х до 100 снимков для одного фасада.