Получение изображений в реальном времени, обработка изображений и Blob-анализ фиксированной точки для анализа учебной стрельбы

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

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

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

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

  • Калибровка фотоаппарата, чтобы определить мировые координаты точек изображений

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

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

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

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

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

Камеры

Image Acquisition Toolbox™ позволяет вам получить изображения и видео от камер и устройств захвата изображения непосредственно в MATLAB® и Simulink®. Используя Пакет Поддержки Image Acquisition Toolbox для Оборудования GigE Vision® или MATLAB® Support Package для Веб-камер 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 папка.

Настройка

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

Алгоритм

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

Калибровка камеры - это процесс оценки параметров объектива и датчика изображения. Эти параметры измеряют объекты, полученные камерой. Используйте приложение Camera Calibrator, чтобы обнаружить шаблон шахматной доски в конце цели и удалить любое искажение. Определите порог рассеянного света на цели. Вы, возможно, должны настроить настройки камеры или подсветку так, чтобы изображение не насыщалось. Используйте 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 или веб-камеру. Пример затем предлагает вам вводить расстояние от стрелка к цели (метры) и имя стрелка.

Используйте различную камеру

Чтобы настроить пример с помощью собственной камеры, используйте приложение Camera Calibrator, чтобы обнаружить шахматную доску в конце цели и удалить искажение. Сохраните калибровочные переменные в MAT-файле. Калибровочные переменные для камеры Видения GigE и веб-камеры сохранены в следующих 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

Смотрите также

| | |

Похожие темы