Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

АВТОНОМНОЕ ОБЩЕОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

МУНИЦИПАЛЬНОГО ОБРАЗОВАНИЯ

ГОРОДА ДОЛГОПРУДНОГО

ЛИЦЕЙ №11 «ФИЗТЕХ»

XII научно-практическая конференция

Старт в инновации

Удаление подвижных объектов при фотосъёмке

Автор работы: Белов Артем, Скуратов Николай, 10 класс

Научный руководитель С.

2013 г.

Оглавление.

1. Введение

2. OpenCV

3. Язык С++

4. Алгоритм

5. Заключение

6. Литература

7.Приложение

Введение

В современном мире перед людьми расстилается море возможностей: техника шагает семимильными шагами, нам необходимо осваивать и модернизировать цифровые технологии.

Кто из нас не стоял перед выбором цифровой техники, собираясь путешествовать. Самые интересные места для путешествий доступны, как никогда: достаточно сесть в самолет. Как следствие, туризм становится очень популярен. Но с этим связаны многочисленные проблемы. Основной из них, конечно, является то, что все эти блага цивилизации доступны не только Вам, но и другим людям.

Наверняка, каждый из нас хотел когда-либо сфотографировать достопримечательность, историческое место или интересное архитектурное строение без сотен туристов, которые попадают в кадр. Как правило, вокруг нашедшего хороший ракурс для съёмки фотографа, сразу материализуются разнообразные прохожие, автомобили и даже животные, что не позволяет сделать достойный снимок с первой попытки. Это явление очень даже раздражительно.

Мы решили разобраться с этой проблемой и создали программу для обработки фотографий: Вы на месте сумеете насладиться отсутствием прохожих, автомобилей и других подвижных объектов, которые так и норовят влезть в кадр. Возможно, это приложение заинтересует не только рядовых туристов, но профессионалов фотографии.

НЕ нашли? Не то? Что вы ищете?

Цель работы – создать программу на языке программирования С++, которую в ближайшем времени можно будет импортировать на мобильную платформу. С её помощью можно будет обработать несколько снимков сделанных с одинакового ракурса в короткий промежуток времени и получить на выходе фотографию без «лишних» объектов.

Open CV

OpenCV - Библиотека компьютерного зрения с открытым исходным кодом (Open Source Computer Vision Library), содержащая более 500 функций, заточенных под выполнение в реальном времени. Библиотека содержит алгоритмы для обработки, реконструкции и очистки изображений, распознания образов, захвата видео, слежения за объектами, калибровки камер и др.

Изначально перед OpenCV ставились следующие цели:

§  Исследование машинного зрения, разработка и оптимизация кода.

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

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

Для загрузки доступны версии для Windows, Mac, Linux. Поддерживается множество языков, включая C/C++, Python, Java.

OpenCV состоит из нескольких модулей:

§  CXCORE – Ядро, содержит:

§  Базовые структуры

§  Матричную алгебру

§  Алгоритмы работы с памятью

§  Алгоритмы преобразования типов

§  Алгортмы для обработки ошибок

§  Функции для записи/чтения XML файлов

§  Функции для работы с 2D графиками

§  CV – Модуль обработки изображений, работа с компьютерным зрением, содержит:

§  Функции для работы с изображениями (преобразование, фильтрация и т. д.)

§  Функции для анализа изображений (поиск контуров, гистограммы и т. д.)

§  Алгоритмы анализа движений, слежение за объектами

§  Алгоритмы распознания объектов (лиц, предметов)

§  Алгоритмы для калибровки камер

§  ML – Машинное обучение:

§  Функции для классификации и анализа данных

§  HighGUI – Модуль для создания пользовательского интерфейса, отвечает за:

§  Создание окон

§  Вывод изображений

§  Захват видео из файлов и камер

§  Чтение/Запись изображений

§  CVCAM – Захват видео с цифровых камер

§  CVAUX – Устаревшие функции:

§  Пространственное зрение

§  Нахождение и описание черт лица

§  Поиск стерео соответствий

§  Описание текстур

Поддерживаемые компиляторы:

§  Windows - Microsoft Visual C++, Borland C++, Intel Compiler, MinGW

§  Linux - GCC, Intel Compiler

§  Mac - Intel Compiler, Carbon и др.

Язык С++

Для создания любой программы мы используем языки программирования. Что такое язык С++?

Язык С++ - это универсальный язык программирования с акцентом на системном программировании, и который:

§  Лучше, чем язык С

§  Поддерживает абстракции данных,

§  Поддерживает объектно-ориентированное программирование,

§  Поддерживает обобщенное программирование.

С++ является языком общего назначения, цель которого – сделать работу серьезного программиста более приятной. За исключением некоторых деталей, С++ является надмножеством языка программирования С. Помимо возможностей языка С, С++ предоставляет гибкие и эффективные средства для определения новых типов. Программист сможет сегментировать приложение на фрагменты, определив для этого новые типы, отвечающие концепциям приложения. Такую технику программирования часто называют абстракцией данных. Объекты пользовательских типов типов содержат информацию, характерную для этих типов. Такие объекты можно с удобством и безопасностью использовать в контекстах, когда их тип неизвестен на этапе компиляции. Программы, использующие такого рода объекты, часто называют объектными. При надлежащем применении такая техника ведет к более коротким программам, более понятным и более удобным в сопровождении.

Ключевой концепции языка С++ является класс. Класс – это тип, определяемый пользователем. Классы обеспечивают сокрытие данных, гарантированную инициализацию данных, неявное преобразование между пользовательскими типами, динамическое определение типа, контролируемое управление памятью и механизмы перегрузки операций. С++ гораздо лучше контролирует типы, чем С, а также позволяет достичь более высокой модульности. Он также содержит улучшения, не имеющие прямого отношения к классам, такие как символические константы, встраиваемые функции, аргументы функций по умолчанию, перезагрузка имен функций, операции по управлению выделением памяти, а также ссылки. С++ сохраняет возможности языка С по возможности языка С по эффективной работе с низкоуровневыми аппаратнозависимыми базовыми типами (битами, байтами, словами, адресами, и т. д.). Это позволяет реализовать пользовательские типы с высокой эффективностью.

Алгоритм

Как любая программа на любом языке программирования, наш проект нуждался в создании алгоритма. Именно о нем будет идти речь в этом разделе. При реализации алгоритма мы использовали многие особенности библиотеки Open CV, что позволило сделать программу проще.

Суть его в следующем: мы подаём на вход программе N-ое количество фотографий одного разрешения. Одинаковый «размер» снимков играет важную роль: фото с разной детализацией не обработаются. Однако, конкретного значения для этого параметра нет. Главное – совпадение «калибра» всех входных данных. Программа поочередно сравнивает полученные изображения, при этом создавая карты различий для каждой из этих пар. Карты различий – это черно-белые фотографии, на которых мы четко видим наши, так называемые, подвижные объекты. На этом этапе начинается использование ресурсов библиотеки OpenCV. С помощью ее функций мы можем сравнивать снимки не попиксельно, но областями. Эти области находятся при помощи функции, распознающей контуры на снимках. Так находятся места, где «средние значения» для пикселей различаются – они наносятся белыми пятнами на черную карту различий (см. приложение рис. 1).

Конечно, это спасает нас от большинства непроизвольных движений, совершаемых фотографом во время его работы, но, несмотря на все наши усилия, на карте различий всё равно остаются длинные белые полоски. Здесь мы используем арсенал возможностей Open CV еще раз – он позволяет нам сравнить площадь и периметр белых пятен, получив отношение «площадь/периметр». Если оно мало, значит белое пятно – длинная полоска. От нее мы вправе избавиться, ведь она появилась вследствие дрожания камеры. Также с карты различий удаляются фигуры с малой площадью: пара пикселей ничего не решает, но без их замены фото не станет «лоскутным одеялом».

И только затем, сравнивая белые области на картах, программа удаляет лишние объекты. “Как программа удаляет лишние объекты?” – спросите вы.

Каждое из оставшихся белых пятен мы «вписываем» в квадрат, а затем с другой фотографии вырезаем такой же кусок и вставляем его на место оригинала. Вот результаты таких операций над изображениями (см. приложение рис. 2).

Заключение

Как видно из названия раздела, речь пойдёт о перспективах развития нашего проекта.

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

Конечно, такого рода приложения для профессиональных фотографов наверняка уже существуют, но пользоваться ими можно только на полноценном компьютере — например, это специальные плагины к Photoshop (единственное упоминание о подобного рода программах, найденное нами в Интернете). Преимущество нашего приложения перед этим самым плагином будет в мгновенной обработке снимков, прямо на месте съемки.

Мы надеемся, что эта программа будет полезной и не заставит вас искать удачный ракурс для съёмки достопримечательностей.

See you on Android Market!

Список литературы

1. [Электронный источник] (http://*****/wiki)

2. [Электронный источник] (http://ru.wikipedia.org/wiki/OpenCV)

3. Язык программирования С++ [Книга] – 2010

4.   Язык программирования C [Книга] - 2001

Приложение

C:\Users\Home\Desktop\0.jpg

Рис. 1

C:\Users\Dj $Krowos-Dogg$\Desktop\RylKwt91Yhg.jpg

Рис. 2