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

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

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

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

  • Сбор изображений в реальном времени

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

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

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

Весь код для этого примера хранится в папке examples. Для редактирования кода перейдите к этой папке.

cd(fullfile(docroot,'toolbox','fixpoint',...
'examples','laser_target_example'));
Скопируйте +LaserTargetExample папка в место с возможностью записи.

Setup оборудования

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

Image Acquisition Toolbox™ позволяет вам получать изображения и видео с камер и кадровых захватов непосредственно в MATLAB ® и Simulink ®. Использование пакета поддержки Image Acquisition Toolbox для GigE Vision® Оборудование или MATLAB® Пакет поддержки для веб-камер USB, настройте камеру, чтобы получить изображения в реальном времени, чтобы выполнить анализ.

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

Цель

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

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

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

Setup

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

Алгоритм

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

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

Для получения дополнительной информации смотрите Что такое калибровка камеры? (Computer Vision Toolbox).

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

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

Используйте анализ больших двоичных объектов, чтобы найти центр яркого пятна и переместить положение от пиксельных координат к мировым координатам. Анализ больших двоичных объектов выполняется в фиксированной точке, потому что изображение сохранено в виде 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

См. также

(Computer Vision Toolbox) | (Computer Vision Toolbox) | (Computer Vision Toolbox) | (Computer Vision Toolbox)

Похожие темы