обнаружить

Обнаружьте объекты с помощью детектора объекта ACF, сконфигурированного для монокулярной камеры

Синтаксис

bboxes = detect(detector,I)
[bboxes,scores] = detect(detector,I)
[___]= detect(detector,I,roi)
[___] = detect(___,Name,Value)

Описание

bboxes = detect(detector,I) обнаруживает объекты в изображении I с помощью детектора объекта совокупных функций канала (ACF), сконфигурированного для монокулярной камеры. Местоположения обнаруженных объектов возвращены как набор ограничительных рамок.

пример

[bboxes,scores] = detect(detector,I) также возвращает музыку уверенности обнаружения к каждой ограничительной рамке.

[___]= detect(detector,I,roi) обнаруживает объекты в прямоугольной поисковой области, заданной roi, с помощью любого из предыдущих синтаксисов.

[___] = detect(___,Name,Value) задает опции с помощью одного или нескольких аргументов пары Name,Value. Например, detect(detector,I,'WindowStride',2) устанавливает шаг раздвижного окна, используемого, чтобы обнаружить объекты к 2.

Примеры

свернуть все

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

Загрузите объект acfObjectDetector, предварительно обученный обнаружить автомобили.

detector = vehicleDetectorACF;

Смоделируйте монокулярный датчик камеры путем создания объекта monoCamera. Этот объект содержит камеру intrinsics и местоположение камеры на автомобиле, оборудованном датчиком.

focalLength = [309.4362 344.2161];    % [fx fy]
principalPoint = [318.9034 257.5352]; % [cx cy]
imageSize = [480 640];                % [mrows ncols]
height = 2.1798;                      % height of camera above ground, in meters
pitch = 14;                           % pitch of camera, in degrees
intrinsics = cameraIntrinsics(focalLength,principalPoint,imageSize);

monCam = monoCamera(intrinsics,height,'Pitch',pitch);

Сконфигурируйте детектор для использования с камерой. Ограничьте ширину обнаруженных объектов к типичной области значений для ширин автомобиля: 1.5-2.5 метра. Сконфигурированный детектор является объектом acfObjectDetectorMonoCamera.

vehicleWidth = [1.5 2.5];
detectorMonoCam = configureDetectorMonoCamera(detector,monCam,vehicleWidth);

Загрузите видео, записанное от камеры, и создайте видео читателя и проигрыватель.

videoFile = fullfile(toolboxdir('driving'),'drivingdata','caltech_washington1.avi');
reader = vision.VideoFileReader(videoFile,'VideoOutputDataType','uint8');
videoPlayer = vision.VideoPlayer('Position',[29 597 643 386]);

Запустите детектор в цикле по видео. Аннотируйте видео ограничительными рамками для обнаружений и очков уверенности обнаружения.

cont = ~isDone(reader);
while cont
   I = reader();

   % Run the detector.
   [bboxes,scores] = detect(detectorMonoCam,I);
   if ~isempty(bboxes)
       I = insertObjectAnnotation(I, ...
                           'rectangle',bboxes, ...
                           scores, ...
                           'Color','g');
   end
   videoPlayer(I)
   % Exit the loop if the video player figure is closed.
   cont = ~isDone(reader) && isOpen(videoPlayer);
end

Входные параметры

свернуть все

Детектор объекта ACF сконфигурирован для монокулярной камеры, заданной как объект acfObjectDetectorMonoCamera. Чтобы создать этот объект, используйте функцию configureDetectorMonoCamera с объектом monoCamera и обученным объектом acfObjectDetector как входные параметры.

Введите изображение, заданное как действительное, неразреженное, изображение RGB или полутоновый.

Типы данных: uint8 | uint16 | int16 | double | single | logical

Поисковая видимая область, заданная как [x y width height] вектор. Вектор задает левый верхний угол и размер области в пикселях.

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'NumScaleLevels',4

Количество уровней шкалы на октаву, заданную как пара, разделенная запятой, состоящая из 'NumScaleLevels' и положительного целого числа. Каждая октава является уменьшением масштаба степени двойки изображения. Чтобы обнаружить людей в более прекрасном шаге шкалы, увеличьте это число. Рекомендуемые значения находятся в области значений [4, 8].

Шагните для раздвижного окна, заданного как пара, разделенная запятой, состоящая из 'WindowStride' и положительного целого числа. Это значение указывает на расстояние для функции, чтобы переместить окно и в x и в направления y. Раздвижное окно сканирует изображения для обнаружения объектов.

Выберите самую сильную ограничительную рамку для каждого обнаруженного объекта, заданного как пара, разделенная запятой, состоящая из 'SelectStrongest' и или true или false.

  • tRUE Возвратите самую сильную ограничительную рамку на объект. Чтобы выбрать эти поля, detect вызывает функцию selectStrongestBbox, которая использует немаксимальное подавление, чтобы устранить перекрывающиеся ограничительные рамки на основе их очков уверенности.

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

Минимальный размер области, который содержит обнаруженный объект, заданный как пара, разделенная запятой, состоящая из 'MinSize' и [height width] вектор. Модули находятся в пикселях.

По умолчанию MinSize является самым маленьким объектом, который может обнаружить обученный detector.

Максимальный размер области, который содержит обнаруженный объект, заданный как пара, разделенная запятой, состоящая из 'MaxSize' и [height width] вектор. Модули находятся в пикселях.

Чтобы уменьшать время вычисления, установите это значение к известному максимальному размеру области для объектов, обнаруживаемых в изображении. По умолчанию 'MaxSize' установлен в высоту и ширину входного изображения, I.

Порог точности классификации, заданный как пара, разделенная запятой, состоящая из 'Threshold' и числового скаляра. Рекомендуемые значения находятся в области значений [–1, 1]. Во время многошкального обнаружения объектов пороговое значение управляет точностью и скоростью для классификации подобластей изображений или как объекты или как необъекты. Чтобы ускорить производительность рискуя тем, чтобы пропустить истинные обнаружения, увеличьте этот порог.

Выходные аргументы

свернуть все

Местоположение объектов обнаружило во входном изображении, возвращенном как M-by-4 матрица, где M является количеством ограничительных рамок. Каждая строка bboxes содержит четырехэлементный вектор формы [x y width height]. Этот вектор задает левый верхний угол и размер той соответствующей ограничительной рамки в пикселях.

Очки уверенности обнаружения, возвращенные как M-by-1 вектор, где M является количеством ограничительных рамок. Более высокий счет указывает на более высокую уверенность в обнаружении.

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

Приложения

Функции

Объекты

Введенный в R2017a