Курс: Современные проблемы информатики и вычислительной техники

План занятий

       1. Ознакомиться со следующими курсами:

      а) OpenCV шаг за шагом:
http://robocraft.ru/page/opencv/

      б) Курс: Aнaлиз изoбpажeний и видеo (лектор: H.C. Bacильeвa). Пpeзeнтaции:
https://compscicenter.ru/courses/images-and-video-1/2013-autumn/classes/
или
      Курс: Aнaлиз изoбpажeний и видеo (лектор: A.C. Apтамoнoв). Пpeзeнтaции и Bидеo лeкции:
https://compscicenter.ru/courses/images-and-video-1/2019-autumn/classes/

      в) Курс: Aнaлиз изoбpажeний и видеo 2 (лектор: H.C. Bacильeвa и A.C. Apтамoнoв). Пpeзeнтaции:
https://compscicenter.ru/courses/images-and-video-2/2016-spring/classes/


       2. Выбрать, сформулировать и согласовать практическое задание.

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

       4. Пройти тест по курсу: "Современные проблемы информатики и вычислительной техники" на iq.karelia.ru набрав не менее 3.50 баллов (тест составлен по материалам лекции и курсов представленных выше).

      Посещение занятий ОБЯЗАТЕЛЬНОЕ ! Не посещать можно только тому, кто все сделал и сдал.
      Ко всем нарушившим какие-либо сроки или правила оформления, а также имеющим прогулы (безделие и уход с занятий приравниваются к прогулам) - будут применяться санкции, в виде дополнительных заданий и расширенной отчетности. За каждое нарушение будет даваться доп. задание, все эти задания необходимо будет выполнить и представить к финальному отчету. Поэтому просьба отнестись ко всем требованиям серьезно!

Задания для практических занятий

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

      Ниже предложены варианты заданий, также можно придумать собственный вариант задания. Для выполнения сложного задания возможно объединение в группу (2-3 студента). Выбранное задание требуется конкретизировать для определенной задачи, распределить задачи между исполнителями и обязательно согласовать с преподавателем.

      В результате выполнения задания оформляется отчет и представление работы программы.

      На выбор задания, формулировку и согласование отводится 2 недели (c 6.02.2023). К 21 Февраля задание должно быть выбрано, конкретно сформулировано, согласовано и с указанием Фамилии, Имени, Отчества и номера группы исполнителей (с распределением конкретных работ между исполнителями) выслано мне на почту.

      До 4 Апреля 2023 необходимо представить промежуточные результаты работы над заданием (промежуточный отчет должен быть выслан на почту). Тем, кто к этому моменту уже выполнит задание полностью - необходимо предоставить только отчет (промежуточный отчет не нужен).

      Отчет должен быть выслан почту не позже чем за неделю до представления результатов работы на занятии (9 Мая последний срок когда принимаются отчеты).

      Представление результатов своей работы преподавателю (после принятого отчета), с пояснениями по содержанию отчета и исходникам, делается на занятиях до 16 Мая (включительно).
      Обращаю внимание, что 16 Мая 2023 года (до 16:50) - последний срок сдачи работ, после этого, работы не принимаются!

До окончания приема работ осталось:

Требования к отчету

      Отчет выполняется в электронном виде (в формате MS Word), оформляется как отчет по проекту или программе и помимо формальных частей таких как: Титульный лист, Содержание, Введение и т.д. должен содержать:

- формулировку (постановку) задачи;
- описание объема выполненной работы каждым исполнителем по отдельности. Должно быть конкретно описано кто и что делал, вплоть до перечисления частей кода, процедур/функций, скриптов, алгоритмов, частей интерфейса, схем и т.д. В общем так, чтобы из отчета сразу было ясно - какой объем работы выполнил каждый исполнитель;
- описание алгоритма и методов решения, каким образом реализовано (взаимодействие программ, библиотек, скриптов и всего того что использовалось, порядок их выполнения, какие части для чего и что в них делается, требования для работы скриптов и программ, какие параметры и каким образом передаются и т.д.), какие среды разработки и библиотеки использовались, на заимствованный код или часть кода необходимо ОБЯЗАТЕЛЬНО предоставить ссылку - откуда взят, приведены все необходимые формулы и расчеты;
- представлен внешний вид передней панели программы с описанием ее элементов или описание параметров командной строки (если передняя панель отсутствует);
- Руководство Пользователя по работе с разработанной программой, порядок действий, описание всех необходимых параметров, ограничений и т.п.;
- представлен отчет о тестировании программы, с приведением результатов этого тестирования, подтверждающих работоспособность программы;
- в Заключении, по результатам проделанной роботы, должны быть сделаны выводы, с описанием возможных применений данной программы, указаны преимущества и недостатки использованного алгоритма, как можно было бы улучшить данный алгоритм или метод, что можно было бы еще добавить или изменить;
- список использованной литературы (ссылки на источники, которые использовались для создания программы);
- исходный код, обязательно снабженный подробными комментариями;
- к отчету прилагаются сами исходники и готовые программы, выполненного задания (без мультимедия приложений - картинок, видео и музыки) и все это отправляется на почту, после этого на занятии делается представление своей работы преподавателю, с комментариями по исходникам.

      Правила оформления программной документации можно посмотреть здесь.

Варианты заданий

       1. Поиск по образцу или Фотороботу (найти - есть ли на фотографии образец поиска). Поиск: людей на фотографии, лиц, глаз, носа, волос, губ и других объектов. Задача - найти и выделить объект или объекты на картинке. В результате должны быть получены координаты объекта или объектов, в виде координат описывающего его прямоугольника (например, координат левого, верхнего и правого, нижнего угла) или круга центр которого находится в центре найденного объекта или небольшого количества каких-то связанных линий описывающих объект или сегментация объекта - выделение всех пикселей принадлежащих объекту и т.д.

       2. Задача на фильтрацию изображения (должна быть достаточно сложная задача, требующая применения специальных алгоритмов или совокупности алгоритмов), улучшение характеристик изображения для дальнейшего поиска объектов на нем, например:
  a) убирание цвета (задается порог или выбирается автоматически);
  b) выделение границ, углов изображений;
  c) повышение яркости, контрастности, резкости и т.д.;
  d) разделение картинки на разные цветовые каналы;
  e) убирание, сглаживание шумов (методы медианной фильтрации или еще какие).

       3. Распознавание последовательности символов (набора символов и т.д.) "взлом каптчи". Взять за основу картинку, на которой присутствует зашумленный символьный код (с реальных сайтов с реализованной защитой от автоматического входа), отфильтровать, проанализировать и вывести код в виде распознанных символов.

       4. Распознавание штрих-кодов: Линейных или двумерных.

  a) Линейный штрих-код позволяет получать информацию по объекту: Что это? EAN-8, EAN-13.
http://ru.wikipedia.org/wiki/Universal_Product_Code
http://ru.wikipedia.org/wiki/EAN-8
http://ru.wikipedia.org/wiki/Сравнение_характеристик_штрихкодов

  b) Двумерный штрих-код (QR-код) позволяет получать информацию по объекту:
Кто это? Что это? Какие свойства? Кто это сделал? Откуда перемещается? Куда перемещается?
Примеры двумерных штрихкодов: PDF417, DataMatrix, Matrixcode, QR, DataGlyph, AztecCode.
http://ru.wikipedia.org/wiki/Aztec_Code
http://ru.wikipedia.org/wiki/Data_Matrix

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

       5. Распознавание отпечатков пальцев. Требуется сначала предоставить образец отпечатка, а затем программа должна распознавать, соответствует ли отпечаток образцу или нет.

       6. Распознавание сигналов, голоса и т.п. Представить образец сигнала для анализа и осуществлять поиск в текущем сигнале. Сигнал может содержать несколько частот. Программа должна сообщать, когда образец сигнала соответствует текущему сигналу.

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

       8. Анализ видеоизображения неподвижного или движущего объекта и улучшение качества изображения заданной (на видео) части объекта (например, улучшение качества изображения номерного знака движущегося автомобиля, при этом номерной знак на каждом в отдельности кадре может быть не читаемым, но при сложении всего видеоряда, на котором присутствует искомый объект изображение должно становиться более четким). При этом нужно максимально учитывать четкие части искомого изображения и не учитывать нечеткие (на уровне шумов).

       9. Обнаружение и распознавание текста. Задача обнаружить текст на картинке и распознать его, т.е. перевести в ASCII-текст.

       10. Сформулировать свое собственное задание, соответствующее тематики данного курса. Сформулированное задание необходимо согласовать!


       Выбранную задачу нужно четко сформулировать и согласовать!


       Для выполнения заданий возможно использование любых сред программирования: Pascal, С++, PHP, Java, Phyton, Delphy, Visual С++, LabVIEW и т.д. Настоятельно рекомендуется ознакомиться и использовать библиотеку OpenCV.

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

Желающие могут установить себе OpenCV самостоятельно по следующей инструкции:

       Установка OpenCV (на примере OpenCV-2.4.3) и настройки для Visual Studio Express 2008 ver.9 (VC9). Инструкция для настроек под Windows.


Основная и дополнительная литература

       1. Могилев А. В., Хеннер Е. К., Пак Н. И. Информатика : учебное пособие для студентов высших педагогических учебных заведений / под ред. А. В. Могилева. - М. : Акаде-мия, 2008. - 345 с.

       2. Передача данных в компьютерных сетях : электронный учебник / Е. Д. Жиганов. - Петрозаводск: ПетрГУ 2007 - 320 с.

       3. Васильева Н.С., Анализ изображений и видео [Электронный ресурс] / Computer Science клуб. - Электрон. дан. - [Без места], 2007 - : - 2012. - Режим доступа: http://logic.pdmi.ras.ru/csclub/courses/videoimageanalysis, свободный. - Яз. англ., рус. - (Дата обращения: 11.12.2012).

       4. Фигурнов В. Э. IBM PC для пользователя. От начинающего до опытного. - 7-е изд., перераб. и доп. - М. : Инфра-М, 2006. - 640 с.

       5. Петров М. Н., Молочков В. П. Компьютерная графика : учебник для вузов. - СПб. : Питер, 2004. - 654 с.

       6. Телекоммуникационные сети : электронный учебник / В. А. Галкин, Ю. А. Григорьев. - М. : Издательство МГТУ им. Н. Э. Баумана, 2003. - 321 с.

       7. iXBT.com - Сайт о высоких технологиях, оперативные новости индустрии, тестовые испытания и обзоры оборудования
http://www.ixbt.com

       8. 3DNews - самые интересные и оперативные новости из мира высоких технологий. На нашем портале - все о компьютерном железе, гаджетах, ноутбуках и других цифровых устройствах. А также обзоры новых игр, достижения современной науки и самые любопытные онлайн-проекты.
http://www.3dnews.ru

Литература по OpenCV и ссылки на источники

       1. OpenCV шаг за шагом:
http://robocraft.ru/page/opencv/

       2. Обработка изображений и распознавание образов с использованием OpenCV (с примерами):
http://recog.ru/category/opencv/

       3. Описание по OpenCV (на английском):
http://opencv.org

       4. Пример - Распознавание плоских объектов OpenCV 2.4 (на русском):
http://habrahabr.ru/post/155651/

       5. Примеры использования OpenCV:
http://robocraft.ru/tag/OpenCV/

       6. Compvision.ru - Сайт о машинном зрении:
http://www.compvision.ru/forum/

       7. И.М.Журавель "Краткий курс теории обработки изображений":
http://matlab.exponenta.ru/imageprocess/book2/index.php

Вопросы для тестирования по курсу: "Современные проблемы информатики и вычислительной техники" на iq.karelia.ru