exponenta event banner

Сбор изображений в реальном времени, обработка изображений и анализ больших двоичных объектов с фиксированной точкой для целевого практического анализа

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

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

  • Анализ больших двоичных объектов с фиксированной точкой для сбора измерений

  • Получение изображений в реальном времени

  • Калибровка камеры для определения мировых координат точек изображения

  • Корректные изображения для искажения объектива для обеспечения точности собранных измерений в мировых единицах измерения

  • Определение мировых координат точек изображения путем сопоставления местоположений пикселей с местоположениями в реальных единицах измерения

Весь код для этого примера хранится в папке примеров. Чтобы изменить код, перейдите в эту папку.

cd(fullfile(docroot,'toolbox','fixpoint',...
'examples','laser_target_example'));
Копировать +LaserTargetExample в доступное для записи расположение.

Настройка оборудования

Фотоаппараты

Toolbox™ получения изображений позволяет получать изображения и видео с камер и захватчиков кадров непосредственно в MATLAB ® и Simulink ®. С помощью пакета поддержки инструментария для получения изображений GigE Vision ® или пакета поддержки MATLAB ® для веб-камер USB настройте камеру для получения изображений в реальном времени для выполнения анализа.

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

Цель

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

distance = 10; % meters
offset_mm = 0; % mm
print_target = true;
LaserTargetExample.make_target_airpistol10m(distance, ...
offset_mm, print_target)

Предварительно созданные цели можно найти в +LaserTargetExample/targets_for_printing папка.

Установка

Настройте камеру так, чтобы она была обращена к шашечной стороне цели. Стрелок оказывается лицом к цели. Цель и камеру можно оставить в фиксированном положении, установив их на плате.

Алгоритм

Калибровка изображения

Калибровка камеры - это процесс оценки параметров объектива и датчика изображения. Эти параметры измеряют объекты, захваченные камерой. Используйте приложение Camera Calibrator (Computer Vision Toolbox), чтобы обнаружить шахматный рисунок на задней стороне цели и удалить любое искажение. Определите порог окружающего света на цели. Возможно, потребуется настроить параметры камеры или освещения таким образом, чтобы изображение не было насыщенным. Используйте pointsToWorld функция для определения мировых координат точек изображения.

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

Поиск и оценка выстрела

Алгоритм оценивает выстрелы, обнаруживая яркий свет лазерного пистолета. Во время съемки получить кадр и обнаружить, есть ли светлое пятно. Если над заданным порогом имеется яркое пятно, обработайте этот кадр.

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

Выполнить пример

Добавьте код примера к пути.

addpath(fullfile(docroot,'toolbox','fixpoint',...
'examples','laser_target_example'));

Запустите моделирование, выполнив команду run сценарий, хранящийся в +LaserTargetExample папка.

LaserTargetExample.run
(1) gigecam
(2) webcam
(3) simulation
Enter the number of the source type:

Сценарий предлагает выбрать источник для моделирования. Войти 3 для просмотра моделирования ранее записанного сеанса. Имеется восемь ранее зарегистрированных моделей. Введите число (от 1 до 8) для начала моделирования.

(1) saved_shots_20170627T201451
(2) saved_shots_20170627T201814
(3) saved_shots_20170702T153245
(4) saved_shots_20170702T153418
(5) saved_shots_20170702T162503
(6) saved_shots_20170702T162625
(7) saved_shots_20170702T162743
(8) saved_shots_20170702T162908
Enter number of file from list:

Вход 1 или 2 предлагает установить камеру GigE Vision или веб-камеру. Затем в примере предлагается ввести расстояние от стрелка до цели (метров) и имя стрелка.

Использование другой камеры

Чтобы настроить пример с помощью собственной камеры, используйте приложение Camera Calibrator (Computer Vision Toolbox) для обнаружения шашки на задней стороне цели и удаления искажения. Сохраните калибровочные переменные в MAT-файле. Калибровочные переменные для камеры GigE Vision и веб-камеры сохраняются в следующих MAT-файлах.

  • +LaserTargetExample/gigecam_240x240_calibration_parameters.mat

  • +LaserTargetExample/webcam_LifeCam_480x480_camera_parameters.mat

Отредактируйте один из следующих файлов, заменяющих настройки соответствующими значениями для камеры.

  • +LaserTargetExample/gigecam_setup.m

  • +LaserTargetExample/webcam_setup.m

Изучение данных

База данных снимков

Каждый раз при съемке хиты записываются в файл с именем ShotDatabase.csv. Данные можно загрузить в объект таблицы с помощью readtable для визуализации. Например, после съемки, которая заполняет ShotDatabase.csv следующий код отображает центр группы из нескольких снимков.

T = readtable('ShotDatabase.csv');
LaserTargetExample.make_target_airpistol10m;
LaserTargetExample.plot_shot_points(T.X, T.Y);
ax = gca;
line(mean(T.X)*[1,1], ax.YLim);
line(ax.XLim, mean(T.Y)*[1,1]);
grid on;

Записи моделирования

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

Переменная frames содержит первый кадр, который использовался для калибровки, плюс десять кадров для каждого обнаруженного снимка. Первый кадр в каждой серии из десяти - это место, где был обнаружен выстрел. Вы можете видеть движение руки в последующих кадрах. Можно создать короткую анимацию данных, используя следующий код.

d = dir(fullfile('simulation_recordings','*.mat'));
record = load(fullfile(d(1).folder, d(1).name));
t = LaserTargetExample.SerialDateNumber_to_seconds(...
    record.times);
t = t-t(1);
figure
for k = 1:size(record.frames, 3)
    imshow(record.frames(:,:,k), ...
        'InitialMagnification','fit');
    title(sprintf('Time since beginning of round: %.3f seconds',...
        t(k)))
    drawnow
end

См. также

(Панель инструментов компьютерного зрения) | (Панель инструментов компьютерного зрения) | (Панель инструментов компьютерного зрения) | (Панель инструментов компьютерного зрения)

Связанные темы