Upload
others
View
77
Download
0
Embed Size (px)
Citation preview
1 © 2013 The MathWorks, Inc.
Обработка изображений и
видео в MATLAB
Михаил Шпак
Инженер департамента
MathWorks
2
Ключевые отрасли
Авиа, космос и оборонная промышленность
Автомобильная промышленность
Образование
Электроника и полупроводники
Связь
Финансовый сектор
Автоматизация промышленного оборудования
ТЭК
Биотехнологии и фармацевтика
3
Code and Applications
Files
Software
Hardware
Доступ к
данным
Code & Applications
Анализ
Моделирование
и анализ данных
Разработка
алгоритма
Разработка
приложения
Отчеты и
документация
Выходные данные
для разработки
Развертывание
Совместная
работа
Процесс решения инженерной задачи
Автоматизация
4 © 2013 The MathWorks, Inc.
Обработка изображений в
MATLAB
5
Где может использоваться обработка
изображений?
6
Основные сферы применения обработки
изображений
Сегментация
Восстановление резкости шумоподавление
Измерение элементов изображений
Детектирование границ объектов
Морфологические операции
Усиление контраста
Регистрация изображений
Геометрические трансформации
7
Сложности, возникающие при работе с
изображениями
Чтение и запись файлов различных форматов
Визуализация изображений и промежуточных
результатов
Тестирование пробных сценариев обработки
Определение причин неработоспособности алгоритмов
Работа с большими изображениями при ограниченной
оперативной памятью
Ускорение алгоритмов
8
Image Processing Toolbox
Предназначен для обработки, анализа, визуализации изображений и разработки алгоритмов
Анализ изображений
Улучшение изображений
Геометрические преобразования
Совмещение изображений
Морфологические операции
Выделение объектов
Воспроизведение и исследование изображений
9
Простые примеры: Цветовое
детектирование
10
Простые примеры: Морфологические
операции
Поиск пути в совершенном лабиринте:
• 1 вход, 1 выход
• единственный вариант решения
11
Пример: Моделирование работы
процессора фотокамеры
От сенсора к экрану
Объект Его изображение
12
Эталонные значения для цветовой таблицы
R G B 115 81 67
196 149 129
93 123 157
90 108 65
130 129 176
99 191 171
220 123 45
72 92 168
195 84 98
91 59 105
160 189 62
229 161 41
43 62 147
71 149 72
176 48 56
238 200 22
188 84 150
0 136 166
245 245 240
200 201 201
160 161 161
120 121 121
83 84 85
50 50 50
13
Снимок цветовой таблицы
14
Поиск центра каждой ячейки
15
Нахождение кривой для сопоставления
данных с камеры эталонным значениям
16
1. Шумоподавление
2. Интерполяция
3. Отображение цветов
4. Баланс белого
5. Коррекция яркости
Итого по примеру: Работа процессора
камеры
17
В каких областях работают с большим
изображениями?
Спутниковые снимки
Аэрофотосъёмка
Сверхвысокое разрешение
Стеки и наборы изображений
Объёмные данные
Мультиспектральные и
гиперспектральные изображения
Коллажи и панорамные изображения
18
Частые проблемы при работе с
большими изображениями
Ошибки “Out of memory”
Медленная работа
19
Как с ними правильно работать?
С помощью команды memory можно посмотреть
доступные ресурсы
Выделять память для переменных
Используйте меньшие типы данных
Загружайте изображение порциями
Визуализируйте только то, что необходимо
Используйте дополнительные аппаратные ресурсы
Может привести
к усложнению
кода
20
Последствия динамического изменения
размера массивов
>> x = 4
>> x(2) = 7
>> x(3) = 12
0x0000
0x0008
0x0010
0x0018
0x0020
0x0028
0x0030
0x0038
0x0000
0x0008
0x0010
0x0018
0x0020
0x0028
0x0030
0x0038
0x0000
0x0008
0x0010
0x0018
0x0020
0x0028
0x0030
0x0038
4 4
4
7
4
7
4
7
12
X(3) = 12 X(2) = 7
21
Что дает предварительное выделение
памяти
>> x = zeros(3,1)
>> x(1) = 4
>> x(2) = 7
>> x(3) = 12
0x0000
0x0008
0x0010
0x0018
0x0020
0x0028
0x0030
0x0038
0
0
0
0x0000
0x0008
0x0010
0x0018
0x0020
0x0028
0x0030
0x0038
0
0
0
0x0000
0x0008
0x0010
0x0018
0x0020
0x0028
0x0030
0x0038
0x0000
0x0008
0x0010
0x0018
0x0020
0x0028
0x0030
0x0038
4
0
0
4
7
0
4
7
12
22
blockproc и rsetwrite
Блочная обработка
– Автоматически делит изображение
на блоки для обработки
– Уменьшает использование памяти
– Позволяет обрабатывать сколь
угодно большие изображения
Понижение разрешения
– Позволяет избежать
переполнения памяти при
визуализации больших изображений
23
Пример: Блочная сегментация с blockproc
24
Увеличение производительности
MATLAB
– Выделение памяти
– Определение узких мест с помощью Profiler-а
– Векторизация кода
Image Processing Toolbox
– Скорость работы многих функций увеличивается от релиза к
релизу
Parallel Computing Toolbox
– Использование многоядерных процессоров, кластеров и GPU
25
Worker Worker
Worker
Worker
Worker Worker
Worker
Worker
Parallel Computing Toolbox
Выходя за пределы последовательных
вычислений в приложениях MATLAB
TOOLBOXES
BLOCKSETS
26
Parallel Computing позволяет…
Larger Compute Pool Larger Memory Pool
11 26 41
12 27 42
13 28 43
14 29 44
15 30 45
16 31 46
17 32 47
17 33 48
19 34 49
20 35 50
21 36 51
22 37 52
Ускорять вычисления Работать с большими
массивами данных
27
Увеличение вычислительного пула
Время Время
Проц
ессы
28
Пример: Моделирование работы процессора
фотокамеры и параллельные вычисления
29
Поддержка GPU
Поддержка встроенных функций MATLAB для
работы с GPU – conv2, filter2, …
Поэлементное выполнение поддерживаемого кода
MATLAB на GPU – arrayfun
Создание CUDA-ядер из существующего кода
CUDA и PTX файлов
Запуск CUDA-ядер на GPU из MATLAB
30
В чем выгода использования GPU?
Ускорение выполнения задач с большим
количеством вычислений
например:
– Производительность: A\b с двойной точностью
31
Image Acquisition Toolbox
Передача изображений и видео сразу в MATLAB и Simulink
Настройка конфигурации камеры
Фоновая передача
Синхронизация многомодовых устройств
Конфигурирование, получение и предпросмотр видеоданных в реальном времени через графический интерфейс
32
Поддерживаемые устройства в
Image Acquisition Toolbox
Поддержка промышленных стандартов:
– Frame grabbers
Analog
Camera Link
– DCAM compatible FireWire (IIDC 1394)
– GigE Vision
– Common OS webcam interfaces
Поддержка
операционных систем
– Windows
– Linux
– Macintosh
33
Производители:
– Allied Vision Technologies
– Basler
– Baumer
– DALSA
– FLIR
– Hamamatsu
– Lumenera
– Matrox Imaging
– National Instruments
– PixeLINK
– Point Grey
– Qimaging
– Sony
Дополнительная информация на сайте MathWorks
Поддерживаемые устройства в
Image Acquisition Toolbox
34
В чём преимущества MATLAB
для обработки изображений?
Поддержка множество форматов файлов
Интерактивные визуализация и анализ изображений
Прямое подключение к камерам и платам захвата
изображения
Большая библиотека встроенных функций
Быстрое построение пользовательских алгоритмов
обработки изображений
Блочная обработка чтобы избежать проблем с
нехваткой памяти
Ускорение работы с изображениями с помощью
многоядерных машин и кластеров
35 © 2013 The MathWorks, Inc.
Обработка видео и
компьютерное зрение в
MATLAB
36
Типичные задачи обработки видео
Преобразование между
цветовыми пространствами
Повышение контраста видео
Выполнение сегментации
Устранение чересстрочной развёртки
Сбор видео статистики
Наложение текста и графики
37
Сложности обработки видео
Доступ к видео данным и их анализ
Управление буферами и промежуточного
хранения данных
Тестирование и верификация в
условиях реального мира
Использование стандартных видео алгоритмов
Отображение промежуточных результатов
38
Пример: Работа с видео в MATLAB
Чтение и запись данных с помощью VideoReader и
VideoWriter
Что произойдёт в случае очень длинного видео или
большого размера кадра?
39
Источник
MATLAB
Алгоритм
обработки
память
Загрузка целого файла и обработка его за раз …
Пакетная обработка
40
MATLAB Память
Потоковый
источник
4
0
Обработка одного кадра за раз…
Потоковая
обработка
Потоковая обработка
41
4
1
Создание и настройка объекта reader = vision.VideoReader(‘viptraffic.avi’)
Выполнение в цикле step(reader)
Другие доступные методы Reset, isDone, close
Системные объекты (System objects)
Определение
“Объекты MATLAB которые представляют
собой алгоритмы, источники или
приемники, привязанные к времени и
управляемые данными”
42
Обычная обработка видео в MATLAB
Необходимость
поддерживать буфер
Явная индексация
Явное управление состояниями
myVid = VideoReader(‘myvideofile.avi’);
numFrames = myVid.NumberOfFrames;
numIter = 10;
opticalFlowIn = zeros([size(currentFrame) 5]);
opticalFlowOutput = zeros([size(currentFrame) numFrames]);
i = 1;
while i <= numFrames
opticalFlowIn(:,:,2:end) = opticalFlowIn(:,:,1:end-1);
opticalFlowIn(:,:,1) = read(myVid,i);
flow = opticalFlow(opticalFlowIn(:,:,1),opticalFlowIn(:,:,5),…
‘horn-schunck’,numIter,‘magitude-squared’);
opticalFlowOutput(:,:,i) = flow;
i = i+1;
end
implay(opticalFlowOutput,30)
43
Обработка видео с использованием
System Objects
Инициализация
объектов
Код “внутри цикла” намного проще
Неявные состояния, буферизация и
индексация
Видеоплеер работает в цикле
reader = vision.VideoFileReader
reader.Filename = ‘myvideofile.avi’;
viewer = vision.DeployableVideoPlayer(‘framerate’,30);
optical = vision.OpticalFlow
optical.Method = ‘horn-schunck’;
optical.OutputValue = ‘Magitude-squared’;
optical.ReferenceFrameDelay = 3;
optical.MaximumIterationCount = 10;
while ~isDone(reader)
currentFrame = step(reader);
OF = step(optical, currentFrame);
step(viewer, OF);
end
44
Типичные стадии работы алгоритма
компьютерного зрения
1. Захват изображения/видео
2. Предварительная обработка
3. Определение признаков
4. Выделение признаков
5. Сопоставление признаков
6. Использование признаков
– Стабилизация, монтаж
– Построение стерео-изображения
7. Классификация признаков
Image Acquisition Toolbox
Statistics Toolbox
Image Processing Toolbox
Computer Vision
System Toolbox
47
Ввод/вывод мультимедиа файлов
Отображение видео
Наложение текста и графики
Пре-процессинг и пост-
процессинг
Обработка движущихся объектов
Обнаружение и отслеживание
объектов
Распознавание объектов
Компьютерное зрение
47
Разработка и моделирование систем
обработки видео и изображений
Computer Vision System Toolbox
Примеры использования системных объектов
48
Пример: Детектирование объектов с
использованием оптического потока
Используется оптический поток для определения
и подсчёта движущихся автомобилей на шоссе
49
Особенности объектов используемые в
задачах детектирования
Грани
Углы
Шаблоны
SURF
MSER
50
Пример: Создание мозаичного изображения
• Поиск узловых точек
• Поиск соответствий в узлах двух
изображений
• Оценка геометрических искажений
• Наложение двух изображений
51
Пример: Стабилизация движения камеры
• Шаблон – рамка номера
автомобиля
• Поиск только по определённой
динамической области
• Определение смещения
объекта между кадрами
• Стабилизация
52 © 2013 The MathWorks, Inc.
От алгоритма
-
к внедрению
53
MATLAB Compiler
COM
Excel Add-in
Java www
.NET .exe .dll
.lib
COM Excel Add-in
Java www
MATLAB Builder EX
MATLAB Builder NE
MATLAB Builder JA
.NET .exe .dll
.lib
MATLAB Compiler
From MATLAB to Implementation
C
Code
Simulink
Coder
HDL
Code
C
Code
MATLAB Coder
.exe .dll
.mex
Simulink HDL Coder
Simulink & Stateflow
54
MATLAB Compiler
Автоматический перевод ваших программ на
MATLAB в независимые приложения и разделяемые
библиотеки
Полная поддержка языка MATLAB и большинства
тулбоксов
Безвозмездное распространение
55
MATLAB Coder
Генерация C и C++ кода из кода MATLAB
Работа с проектом в MATLAB
Быстрый перевод в C/C++
Верификация сгенерированного кода
Ускорение вычислительно
интенсивных частей кода MATLAB
Систематическое тестирование
Использование времени не на
низкоуровневое программирование,
а на улучшение алгоритмов в MATLAB
Совместим с Computer Vision
System Toolbox
56
MATLAB Compiler
.exe .dll
MATLAB Coder
.exe .lib
MATLAB Compiler и MATLAB Coder
.dll
57
Java
visualization
graphics
nested functions
sparse
variable-sized data
arrays
struct
numeric
fixed-point
functions
complex
System objects
global
persistent
malloc
classes
Поддерживаемые конструкции языка
MATLAB для генерации кода
58
Поддерживаемые возможности и
функции MATLAB
Широкий набор поддерживаемых возможностей и
функций/системных объектов для генерации кода
Матрицы и
массивы Типы данных
Программные
конструкции Функции
• Матричные
операции
• N-мерные массивы
• Индексация
• Фреймы
• Хранимые
переменные
• Глобальные
переменные
• Комплексные числа
• Целочисленная
арифметика
• Двойная/одинарная
точность
• Операции с
фиксированной точкой
• Символы
• Структуры
• Числа
• Данные переменного
размера
• MATLAB Class (MCOS)
• Системные объекты
• Арифметические,
сравнительные,
логические операторы
• Циклы
(if, for, while, switch)
• Функции и подфункции MATLAB
• Переменный размер числа
аргументов
• Function handles
Поддерживаемые алгоритмы
• > 400 операторов и функций
MATLAB
• > 200 системных объектов для
• Обработки сигналов
• Систем связи
• Компьютерного зрения
59
MATLAB Compiler и MATLAB Coder
Вывод Исполняемый файл или
библиотека/компонент
Портируемый и
читаемый C код
Поддержка языка MATLAB Полная Сокращенная
Дополнительные
библиотеки
MATLAB Compiler
Runtime (MCR) Нет
Поддерживаемые
тулбоксы Большинство тулбоксов Некоторые тулбоксы
Схема лицензирования Безвозмездная Безвозмездная
Расширения Builder Products Embedded Coder
MATLAB Compiler MATLAB Coder
60 © 2013 The MathWorks, Inc.
Запуск моделей Simulink на целевых
платформах
61
>> targetinstaller
62
Installed Components Simulink Block Libraries
63
BeagleBoard
BeagleBoard – недорогая плата на основе процессора
TI ARM-Cortex A8 для обработки сигналов и видео
64
BeagleBoard
BeagleBoard xM поддерживает аудио входы-выходы,
Web-камеры и видео-выходы, Ethernet и несколько USB
65
Обучение в ходе реализации проектов Почему это интересно?
BeagleBoard
– Эффективный способ обучения методом проектов,
реализация работы с аудио и видео
– Недорогой, одноплатный компьютер созданный для
обработки аудио, видео и других цифровых сигналов
– Внедрение промышленных методик по использованию
Simulink для разработки алгоритмов и дальнейшей их
проверке на «железе»
66
От модели к встраиваемым приложениям
67
Задача детектирования объектов
68
Семейство продуктов MathWorks
Семейство продуктов Simulink Сферы применения
Семейство продуктов MATLAB
69
Контактная информация департамента
The Mathworks
Web: www.sl-matlab.ru,
E-mail: [email protected]
Тел: +7 (495) 232 00 23 доб. 0609
Дополнительная информация: www.mathworks.com