суббота, 1 ноября 2014 г.

Начинает свою работу страница курса-факультатива "Компьютерное зрение".

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

Место и время проведения 

Физический факультет (1-ый учебный корпус), к. 306, каждую неделю по пятницам, с 17.30 до 19.30.

Темы лекционных занятий
  1. Введение и обзор материала курса (презентация .pptx). Tiny images - "крошки картинки" (ссылка). Awesome Terminator 2 Scenes - "сцены из потрясающего фильма Терминатор 2" (ссылка). Microsoft Kinect - "гаджет для Xbox 360" (ссылка). Камера Lytro и рефокусировка после съемки (ссылка). Лекции по истории фотографии от Андрея Пелюховского смотрим здесь.
  2. Формирование изображений. Камера и ее основные характеристики  (презентация .pptx)Awareness Test - "тест на внимательность" (ссылка). Дополнительные материалы из курса Irfan Essa "Computational Photography" на www.coursera.org можно скачать здесь. Что такое дифракция света? Вспоминаем курс "Оптика" (ссылка).
  3. Обработка цифровых изображений в среде Matlab (презентация .pptx). Seam Carving Algorithm - "контурное вырезание по шву" (описаниепрезентация .pptxпример реализации .rar). Оригинальную статью и видеоролик по данному алгоритму с конференции SIGGRAPH 2007 можно найти здесь и здесь  соответственно. По аналогичной тематике интересной для прочтения может быть следующая работа (ссылка). В англоязычных статьях информацию по алгоритмам реcайзинга изображений с учетом его содержимого следует искать по ключевым словам: Seam CarvingImage RetargetingContent-Aware Image ResizingContent-Aware ScalingLiquid ResizingLiquid Rescaling. Примеры реализации простейших алгоритмов компьютерного зрения в среде Matlab (примеры реализации .rar).
  4. Фильтрация и улучшение изображений. Часть 1 (презентация .pptx). Hybrid Images - "гибридные изображения" (описание). Дополнительную информацию про Bilateral Filter (билатеральный фильтр) и Non-Local Means Algorithm (алгоритм вычисления нелокальных средних) можно найти здесь и здесь соответственно.
  5. Фильтрация и улучшение изображений. Часть 2 (презентация .pptx). Гармонические базисные функция не являются единственными для представления цифровых сигналов в области трансформант. Читаем для обзора следующую статью (ссылка). Возможный интерес могут вызвать подходы построения базисных функций адаптивных по отношению к сигналу. Читаем, например, про анализ главных компонент (ссылка на лекцию №7 из курса Волохов В. "Методы машинного обучения", 2013. Лаборатория цифровые цепи и сигналы при физическом факультете ЯрГУ).
  6. Оценка качества цифровых изображений (дополнительная лекция, презентация .pptxm-файлы .rar). Описание и Matlab-реализацию Structural SIMilarity (SSIM) index - коэффициент структурного подобия (КСП) можно найти здесь. Рекомендации ITU-R BT.500-11 Methodology for the Subjective Assessment of the Quality of Television Pictures - методология для субъективной оценки качества телевизионных изображений (ссылка). Про субъективную оценку качества можно также почитать здесь.
  7. Цвет и обработка цветных изображений (презентация .pptx). Awareness Test - "тест на внимательность" (ссылка). Tiny images - "крошки картинки" (ссылка). Смотрим визуальные иллюзии на Planet Perplex (ссылка). Про трекинг глаз читаем здесь. Так же интересно почитать следующую книгу Yarbus Alfred L. Eye Movements and Vision. Plenum Press, 1967 (ссылка). Пример законченного кода для самостоятельного исследования по методу K-средних, а также анализу главных компонент из курса Andrew Ng "Machine Learning" на www.coursera.org (ссылка).
  8. Анализ бинарных изображений. Первое понятие о распознавании объектов (презентация .pptx).
  9. Алгоритмические и математические принципы систем автоматического распознавания номерных знаков (ссылкапрезентация .pptx). Интересный алгоритм детектирования номерных знаков (ссылка). Пример реализации простого алгоритма детектирования номерных знаков в среде Matlab (ссылка).
  10. Сегментация изображений. Часть 1 (презентация .pptx). Несколько интересных статей по теме лекции можно найти в источнике [18] (ссылка 1ссылка 2ссылка 3). Неплохая обзорная видеолекция на тему сегментации изображений и видео может быть найдена в online курсе Guillermo Sapiro "Image and video processing: From Mars to Hollywood with a stop at the hospital" (ссылка). Смотреть нужно лекцию №5, для просмотра нужна регистрация на сайте www.coursera.org. Пример законченного кода для самостоятельного исследования по методу K-средних, а также анализу главных компонент из курса Andrew Ng "Machine Learning" на www.coursera.org (ссылка).
  11. Сегментация изображений. Часть 2 (презентация .pptx). Обзорная видеолекция на тему выделения границ и детектирования линий на изображениях может быть найдена в online курсе Guillermo Sapiro "Image and video processing: From Mars to Hollywood with a stop at the hospital" (ссылка). Смотреть нужно лекцию №5, для просмотра нужна регистрация на сайте www.coursera.org. Про детектор Кэнни читаем оригинальную статью здесь. Про детектор линейных сегментов можно найти информацию на сайте научного журнала IPOL (Image Processing On Line) по обработке и анализу изображений (ссылка). Пример заполнения аккумулятора при выполнении преобразования Хафа можно найти здесь. Примеры Matlab-кодов, демонстрирующих работу детектора Кэнни и преобразования Хафа для детектирования прямых и окружностей, можно скачать здесь. Предлагаемые коды используют функции открытой библиотеки по компьютерному зрению OpenCV (ссылка). Для подключения OpenCV в Matlab необходимо ознакомиться с источником [27] в дополнительных материалах ниже.
  12. Машинное обучение. Часть 1 (презентация .pptx). Про автономный вертолет читаем здесь. Законченная реализация алгоритма линейной регрессии с одной и несколькими переменными из online курса Andrew Ng "Machine Learning" на www.coursera.org (ссылка). С оригинальным Стэнфордским курсом по машинному обучению Andrew Ng можно ознакомиться здесь или здесь. Неплохо написанную книжку по машинному обучению Stephen Marsland "Machine Learning: An Algorithmic Perspective" можно скачать здесь. Эта книга хорошо подходит для понимания базовых концепций в данной области. В ней есть примеры реализации алгоритмов машинного обучения на языке Python. Рекомендую ознакомиться с книжкой написанной Александром Борисовичем Мерковым (к.т.н., сотрудник Института системного анализа РАН) "Введение в методы статистического обучения" (ссылка). Книга написана просто, доступно и дает хороший обзор современных методов распознавания. Также рекомендуется ознакомиться с отечественным профессиональным информационно-аналитическим ресурсом, который посвящен машинному обучению, распознаванию образов и интеллектуальному анализу данных (ссылка).
  13. Машинное обучение. Часть 2 (презентация .pptx). Законченная реализация алгоритма логистической регрессии с регуляризацией и без нее из online курса Andrew Ng "Machine Learning" на www.coursera.org (ссылка).
  14. Машинное обучение. Часть 3 (презентация .pptx). Законченная реализация алгоритма логистической регрессии с регуляризацией и нейронной сети прямого распространения для решения задачи многоклассовой классификации на базе данных рукописных цифр MNIST из online курса Andrew Ng "Machine Learning" на www.coursera.org (ссылка). Обращаю внимание на то, что в предложенной реализации по умолчанию используется только 5000 тренировочных примеров (вместо изначальных 60000) из базы данных MNIST, а также на то, что тестирование рассматриваемых алгоритмов осуществляется на примерах, которые использовались на этапе обучения. Поэтому сравнить полученные результаты с уже имеющимися на аналогичной базе данных (ссылка) нельзя! Несколько баз данных для обучение, в том числе MNIST (в удобном, родном для Matlab формате mat) можно найти здесь. Интересно почитать следующую статью про сверточную нейронную сеть LeNet 5 (ссылка).
Темы практических занятий
  1. Введение в Matlab. Материалы практического занятия от 21.11.14 (ссылка). Замечание. Обратите внимание на использование Matlab-команды cd, которая позволяет изменять текущую директорию, а также эффективно прописать путь до папки с изображениями. Напоминаю, что для нормальной работы с файлами в Matlab вам необходимо либо все файлы скинуть в одну текущую директорию (подход для дилетантов :)),  либо произвести сортировку файлов в папках и прописать пути до этих папок, используя команду addpath.
  2. Реализация операции двумерной свертки в Matlab. Материалы практического занятия от 28.11.14 (ссылка). Замечание. В коде, который был написан на занятии действительно содержал небольшую ошибка! Это было видно из последнего результата, в котором расширение границы с краю происходило с точностью до наоборот. Ошибка была в строчках 21 и 22 (см. выложенный код). В строчке 21 нужно было заменить n_r на n_c, а в строчке 22 - наоборот. Обращаю ваше внимание на то, что написанный и запускающийся код еще не есть успех! Обязательно придумывайте систему тестов, которая позволит выявить проблемные участки в коде, в первую очередь смысловые! В приложенных кодах обратите внимание на оформление функции в Matlab (см. my_conv2.m) и ее вызов из файла problem_2_2.m.
  3. Реализация алгоритма цифровой хроматографии в Matlab. Материалы практического занятия от 19.12.14 (ссылка).
  4. Реализация простейших алгоритмов анализа бинарных изображений в среде Matlab. Материалы практического занятия от 27.02.15 (ссылка).
  5. Смешивание изображений. Материалы практического занятия от (13, 20, 27).03.15 (ссылка). Дополнительные материалы (для лучшего понимания процесса смешивания) из курса Irfan Essa "Computational Photography" на www.coursera.org можно скачать здесь.
Практические задания
  1. Фильтрация изображений (описание .pdfизображения .rar). Сроки решения произвольные.
  2. Цифровая хроматография изображений Российской Империи, полученных С.М. Прокудиным-Горским (описание .pdfизображения .rar). Сроки решения произвольные.
  3. Смешивание изображений (описание .rarизображения .rar). Сроки решения произвольные.
  4. Простой алгоритм распознавания номерных знаков (описаниетестовые изображения .rarизображения эталонов цифр .rar). Сроки решения произвольные.
Тестовые задания
  1. Тест № 1 (ссылка). Сроки решения произвольные.
  2. Тест № 2 (ссылка). Сроки решения произвольные.
  3. Тест № 3 (ссылка). Сроки решения произвольные.
  4. Тест № 4 (ссылка). Сроки решения произвольные.
  5. Тест № 5 (ссылка). Сроки решения произвольные.
  6. Тест № 6 (ссылка). Сроки решения произвольные.
  7. Тест № 7 (ссылка). Сроки решения произвольные.
  8. Тест № 8 (ссылка). Сроки решения произвольные.
  9. Тест № 9 (ссылка). Сроки решения произвольные.
  10. Тест № 10 (ссылка). Сроки решения произвольные.
Дополнительные материалы
  1. Szelicki R. Computer Vision: Algorithms and Applications. Springer, 2010 (ссылка).
  2. Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning: Data Mining, Inference, and Prediction. Springer, 2009 (ссылка).
  3. Конушин А. и др. Курс "Введение в компьютерное зрение", 2010. Лаборатория компьютерной графики при ВМК МГУ (ссылка).
  4. Конушин А. и др. Курс "Введение в компьютерное зрение", 2011. Лаборатория компьютерной графики при ВМК МГУ (ссылка).
  5. Конушин А. и др. Курс "Введение в компьютерное зрение", 2012. Лаборатория компьютерной графики при ВМК МГУ (ссылка).
  6. Конушин А. и др. Курс "Введение в компьютерное зрение", 2013. Лаборатория компьютерной графики при ВМК МГУ (ссылка).
  7. Конушин А. и др. Курс "Доп. главы компьютерного зрения", 2013. Лаборатория компьютерной графики при ВМК МГУ (ссылка).
  8. Kemelmacher I., Rao R., Seitz S., Shapiro L. Computer Vision (CSE 455), 2003 - 2010. University of Washington (ссылка).
  9. Lazebnik S. Computer Vision (COMP 776), 2008 - 2011. The University of North Carolina at Chapel Hill (ссылка).
  10. Thrun S. Computer Vision / Introduction to Computer Vision (CS 223b), 2004 - 2009. Stanford University (ссылка).
  11. Darrell T. Computer Vision (CS 280), 2009. University of California, Berkeley (ссылка).
  12. Duraiswami R. Fundamentals of Computer Vision (CMSC 828d), 2000 / Computer Vision (CMSC 426), 2005. UMIACS (ссылка). 
  13. Torralba A. Advances in Computer Vision (6.869), 2010. Massachusetts Institute of Technology (ссылка).
  14. Ng A. Machine Learning (CS 229), 2009. Stanford University (ссылка 1ссылка 2).
  15. Конушин A. Семантическая классификация изображений (видеолекции), 2010. Сomputer Science клуб при ПОМИ РАН (ссылка).
  16. Ерухимов В. Компьютерное зрение и библиотека OpenCV (видеолекции), 2011. Сomputer Science клуб при ПОМИ РАН (ссылка).
  17. Конушин А. Курсы "Введение в компьютерное зрение" и "Доп. главы компьютерного зрения" (видеолекции), 2011. Лаборатория компьютерной графики при ВМК МГУ (ссылка).
  18. Сетевой журнал "Компьютерная графика и мультимедиа" (ссылка).
  19. Efros A. Learning-Based Methods in Vision (16-721), 2009. Carnegie Mellon University (ссылка).
  20. Efros A. Computational Photography (15-463 / 15-862), 2010. Carnegie Mellon University (ссылка).
  21. Сайт научного журнала IPOL (Image Processing On Line) по обработке и анализу изображений (ссылка).
  22. Pattern Analysis, Statistical Modeling and Computational Learning Visual Object Classes Challenge (ссылка).
  23. Сайт Российской ассоциации искусственного интеллекта (ссылка).
  24. Конушин А. и др. Курс "Введение в компьютерное зрение", 2015. Лаборатория компьютерной графики при ВМК МГУ (ссылка 1ссылка 2).
  25. Васильева Н. Анализ изображений и видео (видеолекции), 2012. Сomputer Science Center (ссылка).
  26. Подключение открытой библиотеки по компьютерному зрению VLFeat в Matlab (ссылка).
  27. Подключение открытой библиотеки по компьютерному зрению OpenCV в Matlab (ссылка).
Online курсы

Информация по наиболее интересным online курсам приведена в первой презентации. Напоминаю, что с 2011 года ряд западных университетов начал практику создания online курсов (www.coursera.orgwww.udacity.org) по различным дисциплинам. Например, "Искусственный интеллект", "Машинное обучение", "Компьютерное зрение" и т.д. Для ознакомления с материалами курсов (видеолекциями, практическими заданиями и т.д.) нужна регистрация! Дополнительно необходимо отметить, что появились online лекции по курсу "Машинное обучение", читаемые сотрудниками ШАД (Школы анализа данных Яндекс). Ссылка на курс здесь.

Руководитель курса: доц. каф. ДЭС Волохов В.А.

понедельник, 8 сентября 2014 г.

Задачи для самостоятельного решения по курсу "Основы теории информации" 2014 можно скачать здесь. Список литературы доступен по следующей ссылке. Материалы лекции по алгоритму JPEG можно скачать здесь. Вопросы к экзамену можно скачать здесь. С уважением, Владимир Волохов.

Замечание. В задаче № 3 из лекции "Условная вероятность. Правило Байеса (Теорема Байеса)" были внесены изменения. Исправлены ошибки в условии задачи № 1 из лекции "Энтропия связанных источников".

воскресенье, 7 сентября 2014 г.

Начинает свою работу страница курса "Цифровая обработка изображений" специальности "Радиотехника".

В настоящем разделе размещена единая информация, затрагивающая лекционный материал и задания к практическим работам.

Место проведения: Физический факультет (2-ой учебный корпус), к. 111.

Время: Лекции и практические занятия каждую неделю с 12.00 до 13.35.

Темы лекционных занятий
  1. Введение и обзор материала курса (презентация .pptx). Чудеса фотографии "Восстановление фотографического наследия С.М. Прокудина-Горского" (ссылка1, ссылка2).
  2. Формирование изображений. Камера и ее основные характеристики  (презентация .pptx). Awareness Test - "тест на внимательность" (ссылка).
  3. Цифровая обработка изображений в среде Matlab (презентация .pptx). Seam Carving Algorithm - "контурное вырезание по шву" (описание, презентация .pptxпример реализации .rar).
  4. Фильтрация и улучшение изображений. Часть 1 (презентация .pptx). Hybrid Images - "гибридные изображения" (описание). Дополнительную информацию про Bilateral Filter (билатеральный фильтр) и Non-Local Means Algorithm (алгоритм вычисления нелокальных средних) можно найти здесь и здесь соответственно.
  5. Фильтрация и улучшение изображений. Часть 2 (презентация .pptx).
  6. Оценка качества цифровых изображений (презентация .pptxm-файлы .rar). Описание и Matlab-реализацию Structural SIMilarity (SSIM) index - коэффициент структурного подобия (КСП) можно найти здесь. Рекомендации ITU-R BT.500-11 Methodology for the Subjective Assessment of the Quality of Television Pictures - методология для субъективной оценки качества телевизионных изображений (ссылка). Про субъективную оценку качества можно также почитать здесь.
  7. Цвет и обработка цветных изображений (презентация .pptx). Awareness Test - "тест на внимательность" (ссылка). Tiny images - "крошки картинки" (ссылка). Смотрим визуальные иллюзии на Planet Perplex (ссылка). Про трекинг глаз читаем здесь. Так же интересно почитать следующую книгу Yarbus Alfred L. Eye Movements and Vision. Plenum Press, 1967 (ссылка). Пример законченного кода для самостоятельного исследования по методу K-средних, а также анализу главных компонент из курса Andrew Ng "Machine Learning" на www.coursera.org (ссылка).
  8. Сжатие изображений. Стандарт JPEG (презентация .pptx). Хорошо написанная статья и ссылки для самостоятельного изучения по стандарту JPEG могут быть найдены здесь. Стандарт JPEG (ссылка). Также рекомендуется проанализировать источники [7, 8] в дополнительных материалах.
  9. Вопросы к зачету (вопросы .pdf).
Практические задания
  1. Фильтрация изображений (описание .pdfизображения .rar). Срок сдачи задания - 05.11.2014.
  2. Цифровая хроматография изображений Российской Империи, полученных С.М. Прокудиным-Горским (описание .pdfизображения .rar). Срок сдачи задания - 19.11.2014.
  3. Смешивание изображений (описание .rarизображения .rar). Срок сдачи задания - 10.12.2014.
    Дополнительные материалы
    1. Peters R.A. Image Processing (EECE / CS 253) , 2007. Vanderbilt University School of Engineering (ссылка).
    2. Крылов А., Лукин А. Интегральные преобразования в обработке изображений, введение в цифровую обработку мультимедийной информации, 2011. МГУ им. М.В. Ломоносова (ссылка). Примечание: здесь можно послушать аудиозаписи лекторов, посмотреть соответствующие презентация, попробовать выполнить предлагаемые практические задания, ну и понять чему учат в МГУ по аналогичным курсам.
    3. Ватолин Д. Методы обработки и сжатия видео, 2010-2011. МГУ им. М.В. Ломоносова (ссылка).
    4. Волохов В. Курс "Цифровая обработка изображений" 2012. Лаборатория цифровые цепи и сигналы при физическом факультете ЯрГУ (ссылка).
    5. Волохов В. Курс "Цифровая обработка изображений" 2013. Лаборатория цифровые цепи и сигналы при физическом факультете ЯрГУ (ссылка).
    6. Волохов В. Курс Компьютерное зрение, 2012/2013 (факультатив). Лаборатория цифровые цепи и сигналы при физическом факультете ЯрГУ (ссылка).
    7. Приоров А.Л., Апальков И.В., Хрящев В.В. Цифровая обработка изображений: учебное пособие. - Ярославль: ЯрГУ, 2007 (ссылка).
    8. Wallace G.K. The JPEG Still Picture Compression Standard // IEEE Trans. Consumer Electronics. 1992. V. 38, №1. P. xviii - xxxiv (ссылка).
    9. Efros A. Computational Photography (15-463 / 15-862), 2013. Carnegie Mellon University (ссылка).
    Руководитель курса: доц. каф. ДЭС Волохов В.А.

    суббота, 6 сентября 2014 г.

    Начинает свою работу единая страница курсов "Цифровая фильтрация", "Основы цифровой обработки сигналов" специальности "Радиофизика и электроника" и направлений "Инфокоммуникационные технологии и системы связи" и "Радиотехника", соответственно.

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

    Место проведения: Физический факультет, к. 306, 1-ый учебный корпус (лабораторный практикум), к. 217, 2-ой учебный корпус (ИТС-31БО, РТ-31БО) или к. 111, 2-ой учебный корпус (РФ-41БО) (лекционные занятия).

    Время
    1. Направление "Радиофизика" (группа РФ-41БО) лабораторный практикум раз в две недели по средам с 14.15 до 15.50 (числитель), лекции каждую неделю по пятницам, с 12.00 до 13.35.
    2. Направление "Инфокоммуникационные технологии и системы связи" (группа ИТС-31БО) лабораторный практикум раз в две недели по средам, с 9.20 до 11.00 (числитель/знаменатель разделение на подгруппы), лекции каждую неделю по четвергам, с 12.00 до 13.35.
    3. Направление "Радиотехника" (группа РТ-31БО) лабораторный практикум раз в две недели по понедельникам, с 16.00 до 17.35 (числитель/знаменатель разделение на подгруппы), лекции каждую неделю по четвергам, с 12.00 до 13.35.
    Темы лекционных занятий
      1. Введение в курс "Цифровая фильтрация" ("Основы цифровой обработки сигналов"). Работу C.E. Shannon "A Mathematical Theory of Communication", написанную в 1948 г., можно найти здесь или здесь. Книгу P. Prandony, M. Vetterly "Signal Processing for Communications" можно найти здесь (версия в html) или здесь (версия в pdf). При решении задач по курсу рекомендуется использовать источник [15] в дополнительных материалах ниже. Пример проигрывания звукового фрагмента с разной частотой дискретизации (ссылка). Пример генерации звукового колебания на основе алгоритма Карплуса-Стронга (ссылка). Материалы курса P. Prandony, M. Vetterly "Digital Signal Processing" на www.coursera.org  можно найти здесь (для доступа к материалам нужна регистрация). "Машина для генерации значений комплексной экспоненты" (ссылка).
      2. Дискретное преобразование Фурье. Быстрое преобразование Фурье. Теория и задачи по настоящему занятию могут быть найдены в главе 7 источника [15] в дополнительных материалах ниже, а также в главе 6 книги Брюханов Ю.А., Приоров А.Л., Джиган В.И., Хрящев В.В. "Основы цифровой обработки сигналов". Книга доступна в печатном виде в библиотеке ЯрГУ. Пример вычисления дискретного преобразования Фурье (ДПФ) для изображения, демонстрирующий преимущество ДПФ перед каноническим базисом при передаче данных (ссылка). Про работу с платой Arduino можно почитать здесь. Про интеграцию платы Arduino и Matlab можно узнать на следующем сайте. Пример интеграции платы Arduino c Matlab, рассмотренный на лекции, можно найти здесь. Машина для предсказания приливов (ссылка).
      3. Оконное преобразование Фурье. Лекция посвящается Дню космических войск России. 4 октября 1957 г. в СССР был запущен первый искусственный спутник "Спутник-1", который вращался на орбите 3 месяца и издавал "бип-бип" звуковой сигнал не несущий какой-либо информации. Звуковой сигнал первого спутника, записанный с использованием аналогового магнитофона, не отличался особым качеством. Однако, существование этого сигнала было захватывающим (сигнал первого спутника). Факт, что спутник может быть размещен на орбите и способен посылать сигналы на Землю, продемонстрировал возможность использования спутников связи для радио, телевидения, передачи телефонных разговоров через океаны! Это был революционный прорыв в то время. Понадобилось еще одно десятилетие, чтобы то, что казалось когда-то фантастическим, стало реальностью, в то время как передача сигналов со спутников на сегодняшний день является обычным делом. Запуск первого спутника продемонстрировал возможность освоения космоса и способствовал гонке между СССР и США, связанной с запуском первого человека (космонавта / астронавта) в космос. Это произошло в апреле 1961 г. (Гагарин Ю.А.) и в мая 1961 г. (Шеппард А.). В июле 1969 г. экипаж корабля "Апполон-11" высадился на поверхность Луны. В заключении необходимо отметить, что запуск первого спутника привел к возникновению "Спутникового кризиса", который способствовал срочности финансирования правительством США области естественных наук, чтобы не отставать от СССР в математике и инженерных науках, которые имели решающее значение в холодной войне. 
        Гордитесь своей страной и помните о том, что у каждого человека есть свое место в жизни! Пример практического использования оконного преобразования Фурье к обработке сигнала первого спутника и двухтонального многочастотного сигнала в Matlab можно скачать здесь.
      4. Введение в цифровые фильтры. Цифровые фильтры могут использоваться для решения разнообразных задач. Рассмотрим одну из них на примере ЛИС-системы. Представим себе, что в качестве импульсной характеристики такой системы выступает импульсный отклик помещения. Этот отклик можно получить с использованием микрофона, который записывает звук, представляющий рассеивание импульсного источника звука. Примером подобного отклика может выступать импульсный отклик Лозаннского собора, который измерил Докманич И. (Dokmanic I.) и его коллеги, записав звук лопнувшего в соборе воздушного шарика. Скачать эту запись можно здесь. Выполнение операции свертки этой записи (импульсной характеристики собора), например, с записью музыкального фрагмента, полученного с использованием виолончели, позволяет искусственно пересоздать акустику большого пространства собора. Пример Matlab-кода, выполняющего подобную операцию, можно скачать здесь.
      5. КИХ-фильтры с линейной фазочастотной характеристикой (ФЧХ). Иногда, когда читаешь книжки по ЦОС встречаешься с такой фразой: "КИХ-фильтры с линейной ФЧХ не искажают фазовые соотношения между гармониками сигнала". Так же в книжках указано, что линейная ФЧХ у фильтров является хорошим свойством этих фильтров. Почему это так? Почему отсутствие искажений фазовых соотношений между гармониками сигнала настолько значимо? Давайте проведем некоторый эксперимент. Возьмем два изображения. Вычислим от каждого из них двумерное дискретное преобразование Фурье (ДПФ), а также амплитудные и фазовые спектры этих изображений. Поменяем фазовые спектры изображений местами, а амплитудные спектры оставим без изменений. Выполним обратное преобразование Фурье. Получим результат, представленный ниже.
        Два верхних изображения  - это исходные картинки, то есть до обработки. Два нижних изображения - это картинки, полученные после указанной выше процедуры. Видно, что, поменяв фазовые спектры местами, мы получили изменение структуры первой и второй картинок. Они поменялись местами. Отметим, что истинное распределение интенсивностей пикселей на изображениях изменилось, но структура сигнала находится именно в фазе. Фазовый спектр сигнала несет больше информации, чем амплитудный! Поэтому искажение фазовых соотношений между гармониками должно приводить к искажению структуры сигнала. Matlab-код, который позволяет повторить эксперимент, проведенный выше, можно скачать здесь.
      6. Всепропускающие фильтры. Хорошо описанный теоретический материал с примерами и задачами по данной теме можно найти в источнике [15] в дополнительных материалах ниже. Анализировать нужно стр. 193-194, 209-212. Дополнительно рекомендуется обратиться к источнику [16] (стр. 89-91).
      7. Минимально-фазовые системы. Хорошо описанный теоретический материал с примерами и задачами по данной теме можно найти в источнике [15] в дополнительных материалах ниже. Анализировать нужно стр. 194-195, 212-216. Дополнительно рекомендуется обратиться к источнику [16] (стр. 91-93).
      8. Системы с обратной связью. Хорошо описанный теоретический материал с примерами и задачами по данной теме можно найти в источнике [15] в дополнительных материалах ниже. Анализировать нужно стр. 195-196, 216-217. Дополнительно рекомендуется обратиться к источнику [16] (стр. 94-95). Долго думал над тем, какой анонс написать к этой лекции, которая мне очень близка по определенным причинам. Хотел рассказать про "роботов", которые собираю сам (один из примеров показан на рисунке ниже). Но мои достижения здесь невелики. Или рассказать про то, как можно управлять этими роботами. Но это заняло бы вечность, потому что теория управления динамическими системами огромна!
        Я решил поступить проще и привел для вас несколько замечательных примеров, которые вдохновляют меня в моих начинаниях, маленьких шажках, возможно, к чему-то большому! Первое видео, которое я вам рекомендую посмотреть находится здесь, второе - здесь, третье - здесь, а четвертое - здесь. И это еще не все. Удачного просмотра! Замечание. Коды, которые запускались на лекции при исследовании алгоритмов контроля скорости вращения двигателя, а также контроля угла, можно скачать здесь и здесь, соответственно. Детали для сборки мобильного робота, аналогичного представленному на фотографии выше, были приобретены на сайте amperka.ru. Для реализации управления с обратной связью использовались следующие колесные кодеры.
      9. Оживляем цифровую обработку сигналов! Этот материал на лекции выноситься не будет. Да и, наверное, рассказывать "online" про то, что описано ниже, было бы глуповато. Ведь этот курс не является кружком "Умелый руки" :) Некоторое время тому назад я решил задуматься над задачкой, которую, наверное, нужно было бы решать классе в седьмом. Но на тот момент времени у меня не было ни знаний, ни денег, ни подходящей элементной базы и, возможно, желания заняться сборкой простенького мобильного робота. Хотя, я с детства мечтал о машинке на пульте управления с привинченной камерой для наблюдения за окружающим пространством. И вот много лет спустя эта мечта сбылась. В настоящей теме я оставлю несколько ссылок и замечаний о том, с чего может начинаться элементарная робототехника и цифровая обработка сигналов. И так, цель состояла в том, чтобы собрать малогабаритного робота, который бы управлялся с использованием оператора по беспроводному каналу связи при использовании собранной своими руками управляющей платы. Для достижения указанной цели решались следующие задачи :) Знакомая фраза, не правда ли? Во-первых, поиск возможных решений (примеры роботов, принципиальных схем и т.п.). Прототипом для создания платформы послужил робот Pololu 3 pi, а для создания управляющей платы - всем известная плата Arduino.  Огромное количество видеороликов про Pololu 3 pi можно найти здесь . Правда, то, что получилось у меня, едва ли на него похоже :) Принципиальные схемы для сборки простейших управляющих плат оказались до боли однотипными. Использовал это (для сборки управляющей части) и это (для сборки схемы драйвера моторов) решения, как самые простые. Управляющая часть - это "мозг" робота, схема драйвера моторов - это промежуточное звено, которое позволяет связать электродвигатели и управляющую схему. Про сборку и прошивку управляющей части можно посмотреть следующие видеоролики тут и тут. Во-вторых, нужно было "раздобыть" элементную базу. "Шопинг" по радиодеталям не заставил себя долго ждать :) В г. Ярославле все необходимые компоненты можно было купить здесь. Я не буду описывать процесс сборки и необходимую элементную базу. Про это вы можете почитать в ссылках, означенных выше. Кратко скажу, что на одной макетной плате я разместил управляющую часть, построенную на базе микроконтроллера  ATMega 328P-PU, и схему драйвера моторов, построенную на базе микросхемы L298N MULTIWATT15. Дополнительно для работы с итоговой платой я купил USB-UART адаптер, который был приобретен в тех же радиодеталях. Последний позволяет взаимодействовать с платой через обычный ПК ("заливать" программный код и т.п.). В-третьих, собрать все вместе. Процесс пайки был долгим, но забавным :) Подробности я упущу. В-четвертых, нужно было разместить управляющую плату на чем-то. Основанием послужил не очень прочный пластик, который был найден в лаборатории и растрескался после первого заезда робота :) Колеса, электродвигатели, повышающий DC-DC преобразователь (для поднятия уровня входного напряжения) были заказаны на сайте amperka.ru. Четыре AAA аккумулятора я купил в ближайшем магазине цифровой техники, а боксы для них снова в "родных" радиодеталях. В-пятых, нужно было собрать все вместе. Здесь опять монтаж, как при создании кинофильма :) Итоговый результат моей работы представлен на рисунке ниже. 
        Как видно из фотографий, поверх управляющей платы расположено большое количество соединительных проводков, которые позволяют связать несколько частей платы воедино (схему питания, модуль беспроводной связи Bluethooth, заказанный на сайте amperka.ru, ультразвуковой дальномер, купленный в радиодеталях, управляющую часть и драйвер моторов). Рядом с каждой из ключевых частей платы напаяны контактные колодки, которые позволяют выполнить необходимые соединения элементов  по соответствующим принципиальным схемам. Дополнительной идеей, которую я преследовал, являлось создание маленького конструктора для школьников, который бы наглядно показывал основные составляющие управляющей платы и позволял их связать воедино самостоятельно. Напоминаю, что "мозгом" описанного робота является микроконтроллер, то есть микросхема, сочетающая в себе функции процессора, ОЗУ и т.п., которая позволяет выполнять цифровую обработку сигналов, поступающих на робота либо с ПК, либо с периферии, например, ультразвукового дальномера. Дополнительно отмечу, что серьезный подход к робототехнике требует не просто создания мобильного робота по чертежам и схемам. Серьезный подход требует создания алгоритмов, которые позволят "наделить" робота искусственным интеллектом. Про то как это делается, можно узнать, например, здесьздесь или здесь. Простенький код, который можно залить на плату через Arduino IDE, позволяющий выполнить удаленное управление роботом через Bluetooth, можно скачать здесь. Как-то так. Не бойтесь реализовать свою мечту и вы обязательно победите! Спасибо за внимание и удачи!
      10. Синтез цифровых КИХ-фильтров методом окон. Данной теме посвящена лабораторная работа № 1, поэтому весь необходимый теоретический материал, а также Matlab-коды, реализующие алгоритм синтеза, можно найти в ее описании. Дополнительно рекомендуется ознакомиться со стр. 358-362, 380-386 из источника [15] в дополнительных материалах ниже.
      11. Синтез цифровых БИХ-фильтров методом билинейного z-преобразования. Данной теме посвящена лабораторная работа № 2, поэтому весь необходимый теоретический материал, а также Matlab-коды, реализующие алгоритм синтеза, можно найти в ее описании. Дополнительно рекомендуется ознакомиться со стр. 375-377, 392-418 из источника [15] в дополнительных материалах ниже.
      12. Обработка сигналов в режиме реального времени на ПК. Материал настоящей лекции был рассмотрен в рамках лекции № 5 online курса Prandony, M. Vetterly "Digital Signal Processing" на www.coursera.org. Данный курс будет повторно запущен с 19.01.2015. Все желающие приглашаются к его прохождению. Материалы курса будут последовательно выкладываться здесь (для доступа к материалам нужна регистрация). Демонстрации на лекции выполнялись с использованием библиотеки PortAudio, написанной на C++. Основными файлами библиотеки являются: rtaudio.cpp - головной файл для запуска; portAudioPipe.cpp - цикл, который вызывает интерфейс PortAudio, извлекает входные отсчеты и помещает их в выходной буфер; soundProcessor.cpp - набор простейших алгоритмов для обработки входных данных. Многие из этих алгоритмов обсуждались в рамках текущей лекции. Откомпилированные коды можно запустить. Нажимая кнопки переключения на клавиатуре (цифры от 0 до 9) можно создавать различные звуковые эффекты. Для компиляции под Windows достаточно открыть соответствующий проект в Visual Studio, затем откомпилировать PortAudio (после компиляции появятся копии dll в текущей директории), а затем rtproc. Откомпилированный проект можно скачать здесь. Для запуска заходите в папку Release и там запускайте rtproc.exe. Да, предварительно не забудьте подключить микрофон или гитару. Звуковое колебание должно быть преобразовано в электрический сигнал перед оцифровкой :) Дополнительно в разделе ниже были выложены некоторые решенные задачи по теме лекции № 10. P.S. Особая благодарность при проведении занятия выражается студенту гр. ИТС-41 БО Антону Лебедеву! Огромное спасибо за помощь!
      13. Курс закончился. Всем спасибо за внимание. Если у вас остались какие-то пожелания, которые позволят улучшить состояние дел при прочтении данной дисциплины или просто что-то накипело :), пожалуйста, оставьте свои комментарии в рамках текущего поста. Я буду рад их прочитать, какими бы они не были. Не поленитесь :) Удачи и с наступающими новогодними праздниками! С уважением, Владимир Волохов.
        За предоставленные фотографии благодарность выражается студенту группы РТ-41 БО Роману Андрееву :) В ходе экспериментов никто не пострадал :) Да, и оборудование осталось целым! Ну и напоследок всем рекомендую посмотреть следующий видеоролик, наглядно демонстрирующий эффективность цифровой обработки сигналов в действии :)
      Задания для самостоятельного выполнения
      1. Тест № 1 (ссылка). Выполненное задание должно быть сдано не позднее 18.09.2014.
      2. Тест № 2 (ссылка). Выполненное задание должно быть сдано не позднее 09.10.2014. Замечание. В задачу № 3 внесено небольшое изменение. Для устранения каких-то неоднозначностей при ее решении явно указана длительность сигналов N = 64. Правильный ответ к вопросу №7 таков: при сложении двух гармонических колебаний с близкими частотами возникают биения. Они отчетливо заметны в примере Б, который и соответствует сигналу возврата вызова, используемому в США. Про биения читаем здесь, а программу для генерации биений скачиваем здесь. Дополнительно необходимо отметить то, что в амплитудном спектре сигнала из примера Б отчетливо наблюдаются две ярко выраженные спектральные составляющие, которые и являются откликом на две гармоники, присутствующие в сигнале. Помните то, что вы будущие инженеры, которые должны описывать полученный результат грамотно! Поэтому ответы на вопрос №7 в форме: "Я уже слышал сигнал из примера А в телефонной трубке", "Эквалайзер плеера показывает более простую структуру для сигнала А", "Сигнал в примере А не является дребезжащим", "У сигнала в примере А более чистое звучание""Сигнал в примере А у нас наиболее распространен, а мы - Европа!" или "В сигнале из примера А более прослушивается спектральная составляющая" и т.п. засчитаны не были. Удачи!
      3. Задачи для самостоятельного решения по теме "Дискретное преобразование Фурье. Быстрое преобразование Фурье" (ссылка). Задачи должны быть сданы на проверку в письменном виде не позднее 16.10.2014. При решении задач рекомендуется использовать источник [15] в дополнительных материалах ниже, а также вторую главу задачника Хрящев В.В., Приоров А.Л., Волохов В.А. "Основы теории цепей. Сборник задач" (ссылка). Последний источник можно найти в печатном виде в библиотеке ЯрГУ.
      4. Тест № 3 (ссылка). Выполненное задание должно быть сдано не позднее 16.10.2014Замечание. В задаче № 20 Matlab может выдать такую фразу: Error using imread (line 349). File "cameraman.tif" does not exist. Пугаться не нужно. Фраза означает, что изображение cameraman.tif не существует. Видимо, это зависит от версии пакета. Если такая проблема возникает, то скачайте это изображение здесь. Поместите его в текущую папку Matlab и вызовите в файле image_filtering.m такой командой: I = double(imread('Cameraman256.png'))/255; Удачи! Решение разностного уравнения из вопроса №18 можно скачать здесь.
      5. Тест № 4 (ссылка). Выполненное задание должно быть сдано не позднее 30.10.2014.
      6. Тест № 5 (ссылка). Выполненное задание должно быть сдано не позднее 06.11.2014Замечание. В задачу № 10 внесено небольшое изменение. Явно указано то, что тип идеального фильтра ФНЧ. При ответе на вопросы теста рекомендуется воспользоваться источниками [2, 15, 16] в дополнительных материалах ниже. Про операцию свертки в частотной и во временной области читаем, например, на стр. 64 источника [15]. Про каскадное и параллельное соединение ЛИС-систем читаем, например, на стр. 294-296 источника [15]. Замечание. При решении разностного уравнения из задачи № 8 во второй части задачи постарайтесь разбить решение на три случая: 1) решение при n < 0. Тут ответ очевиден, y(n) = 0; 2) решение при n = 0. Здесь просто подставляем значение n = 0 в исходное разностное уравнение, учитывая нулевые начальные условия, и считаем y(0); 3) решение при n > 0. Это самый сложный случай! Здесь мы сталкиваемся с неоднородным разностным уравнением вида: y(n) – y(n–1) + 0.25*y(n–2) = (0.5^n)*0.5*u(n–1), где u(n– это единичный скачок, про который можно забыть, помня о том, что n > 0. В правой части стоит неоднородность, которая была получена прямой подстановкой выражения для x(n) в исходное разностное уравнение. Для решения неоднородного уравнения используем источник [2] в дополнительных материалах ниже! Решаем через общее решение однородного и частное решение неоднородного уравнений. При поиске общее решение однородного уравнения учитываем то, что корень характеристического уравнения имеет кратность 2 (см. стр. 4 источника [2], пункт (б), внизу). Полученное решение будет содержать две константы, которые ищутся в самом конце задачи с учетом начальных условий для n > 0. При поиске частного решения неоднородного уравнения используем теорему 1.4 (см. стр. 5 источника [2], внизу). Объединяем общее решение однородного уравнения и частное решение неоднородного уравнения в итоговое решение исходного разностного уравнения путем суммирования. Дальше ищем константы, используя начальные условия. Здесь важное замечание! По условию задачи начальные условия нулевые, то есть y(–1) = y(–2) = 0. Но эти начальные условия использовать нельзя, так как решение разностного уравнения записано для n > 0. Пересчитываем начальные условия через исходного разностное уравнение, которое было задано в самом начале задачи. Получаем пересчитанные начальные условия y(1) = 5/4 и y(2) = 9/8. Для этих начальных условий составляем систему линейных уравнений на константы. Решаем ее любым известным методом, например, прямой подстановкой, Гаусса, Крамера, графически а для "лентяев" в Matlab (Octave, FreeMat). Пример похожей задачи разбирается на стр. 8-10 источника [2]. Как-то так. Удачи! Решение разностного уравнения в задаче № 8 можно скачать здесь.
      7. Тест № 6 (ссылка). Выполненное задание должно быть сдано не позднее 27.11.2014Решение задачи № 13 можно скачать здесь.
      8. Задачи для самостоятельного решения по темам "КИХ-фильтры с линейной ФЧХ", "Всепропускающие фильтры", "Минимально-фазовые системы", "Системы с обратной связью" можно найти в источнике [3] в дополнительных материалах ниже. Контрольную работу, соответствующую номеру вашего варианта, нужно сдать 04.12.2014. Список вариантов можно скачать здесь.
      9. Задачи для самостоятельного решения по теме "Синтез цифровых КИХ-фильтров методом окон" можно найти в источнике [4] в дополнительных материалах ниже. Контрольную работу, соответствующую номеру вашего варианта, нужно сдать 18.12.2014. Список вариантов можно скачать здесь.
      10. Задачи для самостоятельного решения по теме "Синтез цифровых БИХ-фильтров методом билинейного z-преобразования" можно найти в источнике [5] в дополнительных материалах ниже. Сдавать их не нужно! Решения некоторых из этих задач можно скачать здесь.
      Темы лабораторных работ
      1. Синтез цифровых КИХ-фильтров методом окон (описание .pdfприложение .pdf, m-файлы .rar).
      2. Синтез цифровых БИХ-фильтров методом билинейного z-преобразования (описание .pdfприложение .pdf, m-файлы .rar).
      3. Синтез оптимальных по Чебышёву КИХ-фильтров (описание .pdfприложение .pdf, m-файлы .rarмодель simulink .rar).
      4. Многоскоростная цифровая обработка сигналов (описание .pdf, m-файлы .rar).
      5. Обработка сигналов на основе вейвлет-преобразования (описание .pdf, приложение .pdfm-файлы .rar).
      6. Применение адаптивной фильтрации в обработке цифровых сигналов (описание .pdfm-файлы .rar).
      7. Список опечаток в книге Приоров А.Л., Волохов В.А., Лаврентьев А.М. Основы цифровой обработки сигналов. Лабораторный практикум.  Ярославль: ВУНЦ ВВС «ВВА им. профессора Н.Е. Жуковского и Ю.А. Гагарина» (филиал г. Ярославль), 2012 (список .pdf). Замечание: пожалуйста, в случае нахождения опечаток или неточностей в вышеозначенной книге, сообщите о них мне в комментах здесь или на электронную почту. Заранее спасибо!
      Дополнительные материалы
      1. Список рекомендуемой литературы (список .pdf).
      2. Волохов В.А. Лекция по разностным уравнениям. ЯрГУ, 2010 (описание .djvu).
      3. Хрящев В.В., Приоров А.Л., Волохов В.А. Основы теории цепей. Сборник задач. Глава 4. ЯрГУ, 2008 (описание .pdf).
      4. Волохов В.А. Синтез цифровых КИХ-фильтров методом окон. Сборник задач. ЯрГУ, 2010 (описание .pdf).
      5. Волохов В.А. Синтез цифровых БИХ-фильтров методом билинейного z-преобразования. Сборник задач. ЯрГУ, 2011 (описание .pdf).
      6. Лукин А.С., Крылов А.С. "Интегральные преобразования в обработке изображений, введение в цифровую обработку мультимедийной информации" 2011 (ссылка).
      7. Freeman D. Signal and Systems (6.003), 2010. Massachusetts Institute of Technology (ссылка).
      8. Lustig M. Digital Signal Processing (EE123), 2011. University of California, Berkeley (ссылка).
      9. Lustig M. Digital Signal Processing (EE123), 2012. University of California, Berkeley (ссылка).
      10. Kundur D. Real-Time Digital Signal Processing (ECEN448), 2011. Texas A&M University (ссылка).
      11. Gilbert S. Wavelets, Filter Banks and Application (18.327 / 1.130), 2003. Massachusetts Institute of Technology (ссылка).
      12. Gilbert S. Wavelets, Filter Banks and Application (18.327 / 1.130), 2004. Massachusetts Institute of Technology (ссылка). Примечание: здесь можно найти примеры Matlab-кодов по теме связанной с вейвлетами и вейвлет-преобразованием.
      13. Oppenheim A.V. Signals and Systems (6.007), 2011. Massachusetts Institute of Technology (ссылка).  Примечание: здесь можно найти видеолекции одного из ведущих специалистов в области "Цифровой обработки сигналов" - Алана Оппенгейма.
      14. Грибунин В.Г. Глоссарий по цифровой обработке сигналов (ссылка).
      15. Hayes M.H. Schaum’s Ouline of Theory and Problems of Digital Signal Processing. McGraw-Hill, 1999 (ссылка).
      16. Хрящев В.В., Приоров А.Л., Волохов В.А. "Основы теории цепей. Сборник задач".  Ярославль: ЯрГУ, 2008 (ссылка).
      Замечание: Вопросы, затрагивающие решение задач, описание лабораторного практикума, трудности возникающие при написании программной части лабораторных работ, разбор листинга языка пакета Matlab и т.п., могут быть заданы в комментариях настоящего раздела или присланы по электронной почте.

      Руководитель курса: доц. каф. ДЭС Волохов В.А.