detect

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

Описание

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 объект. Этот объект содержит характеристики камеры и местоположение камеры на автомобиль , оборудованный датчиком.

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 = VideoReader(videoFile);
videoPlayer = vision.VideoPlayer('Position',[29 597 643 386]);

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

cont = hasFrame(reader);
while cont
   I = readFrame(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 = hasFrame(reader) && isOpen(videoPlayer);
end

release(videoPlayer);

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

свернуть все

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

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

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

Необходимая область поиска, определенная как [<reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reservedrangesplaceholder0>] вектор. Вектор задает верхний левый угол и размер области в пикселях.

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

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

Введенный в R2017a