ORBPoints

Объект для хранения ORB keypoints

Описание

ORBPoints объектно-ориентированная память Ориентированный FAST и вращаемый BRIEF (ORB) keypoints в изображении. Можно задать keypoints и сохранить их как объект ORBPoints. Можно также использовать функцию detectORBFeatures, чтобы обнаружить ORB keypoints в изображении. Функция detectORBFeatures хранит обнаруженный ORB keypoints как объект ORBPoints. Используйте Функции объекта, чтобы построить, выбрать и управлять обнаруженным ORB keypoints.

Создание

Синтаксис

points = ORBPoints
points = ORBPoints(location)
points = ORBPoints(location,Name,Value)

Описание

points = ORBPoints создает объект ORBPoints со значениями свойств по умолчанию.

пример

points = ORBPoints(location) создает объект ORBPoints из набора координат места, заданных location. Местоположение ввело, устанавливает свойство Location.

пример

points = ORBPoints(location,Name,Value) свойства наборов объекта с помощью одного или нескольких аргументов пары "имя-значение". Заключите каждое имя свойства в кавычки. Например, ORBPoints(location,'Count',15) создает объект ORBPoints с набором свойств Count к 15.

Свойства

развернуть все

Это свойство доступно только для чтения.

Местоположение keypoints, заданного как M-by-2 матрица. Каждая строка имеет форму [x y] и представляет местоположение keypoint. M является количеством keypoints. Вы не можете установить это свойство как пару "имя-значение". Используйте входной параметр location.

Это свойство доступно только для чтения.

Сила keypoints, заданного как одно из этих значений:

  • Скаляр — Обнаруженные keypoints имеют ту же силу. В этом случае объект присваивает то же значение Metric всему keypoints.

  • M - вектор элемента — Обнаруженный keypoints имеет различные значения силы. В этом случае объект присваивает различное значение Metric каждому keypoint. M является количеством keypoints.

Пример: ORBPoints(location,'Metric',0.5)

Типы данных: single

Это свойство доступно только для чтения.

Количество keypoints сохранено объектом, заданным как неотрицательное целое число.

Это свойство доступно только для чтения.

Масштабный коэффициент, заданный как одно из этих значений:

  • Скаляр — Все keypoints обнаруживаются на том же уровне разложения. В этом случае объект присваивает то же значение Scale всему keypoints.

  • M - вектор элемента — keypoints обнаруживается на разных уровнях разложения. В этом случае объект присваивает различное значение Scale каждому keypoint. M является количеством keypoints.

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

Пример: ORBPoints(location,'Scale',1.2)

Типы данных: single

Это свойство доступно только для чтения.

Угол keypoints в радианах, заданных как одно из этих значений:

  • Скаляр — Обнаруженные keypoints имеют ту же ориентацию. В этом случае объект присваивает то же значение Orientation всему keypoints.

  • M - вектор элемента — Обнаруженный keypoints имеет различную ориентацию. В этом случае объект присваивает различное значение Orientation каждому keypoint. M является количеством keypoints.

Угол, сделанный keypoint, задан со ссылкой на горизонтальную ось изображения. Координата keypoint установлена как источник оси.

Пример: ORBPoints(location,'Orientation',0.7854)

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Функции объекта

isemptyОпределите, пуст ли объект точек
lengthКоличество сохраненных точек
plotПостройте точки
selectStrongestВыберите точки с самыми сильными метриками
sizeВозвратите размер объекта точек
selectUniformВыберите равномерно распределенное подмножество характерных точек

Примеры

свернуть все

Считайте изображение в рабочую область.

I = imread('licensePlates.jpg');

Преобразуйте изображение в полутоновое изображение.

I = rgb2gray(I);

Задайте местоположение keypoints в изображении.

location = [400 398;485 343;274 323;274 367;241 313;302 213];  

Создайте объект ORBPoints и отобразите его свойства.

points = ORBPoints(location)
points = 
  6×1 ORBPoints array with properties:

       Location: [6×2 single]
         Metric: [6×1 single]
          Count: 6
          Scale: [6×1 single]
    Orientation: [6×1 single]

Осмотрите свойства Scale и Orientation объекта ORBPoints.

points.Scale
ans = 6×1 single column vector

     1
     1
     1
     1
     1
     1

points.Orientation
ans = 6×1 single column vector

     0
     0
     0
     0
     0
     0

Задайте значение шкалы для каждого keypoint.

scale = [2.1 2.5 2.5 4 2.3 3.9];

Задайте угловые значения для keypoints как 0,7854 радиана.

angle = 0.7854;

Создайте объект ORBPoints с keypoints и обновленной шкалой и угловыми значениями. Вывод является объектом ORBPoints, содержащим keypoints с измененными свойствами Scale и Orientation.

points = ORBPoints(location,'Scale',scale,'Orientation',angle);

Осмотрите обновленные значения Scale.

points.Scale
ans = 6×1 single column vector

    2.1000
    2.5000
    2.5000
    4.0000
    2.3000
    3.9000

Осмотрите обновленные значения Orientation. Поскольку значение Orientation является скаляром, объект присваивает то же значение всему keypoints.

points.Orientation
ans = 6×1 single column vector

    0.7854
    0.7854
    0.7854
    0.7854
    0.7854
    0.7854

Отобразите изображение и постройте ORB keypoints на изображении.

figure
imshow(I)
hold on
plot(points)

Считайте изображение в рабочую область.

I = imread('cameraman.tif');

Используйте функцию detectORBFeatures, чтобы обнаружить ORB keypoints в изображении. Функция возвращает обнаруженный ORB keypoints как объект ORBPoints.

points = detectORBFeatures(I);

Используйте функцию объекта selectUniform, чтобы выбрать 10 ORB keypoints. Вывод функции объекта selectUniform является объектом ORBPoints.

newPoints = selectUniform(points,10,size(I))
newPoints = 
  10×1 ORBPoints array with properties:

       Location: [10×2 single]
         Metric: [10×1 single]
          Count: 10
          Scale: [10×1 single]
    Orientation: [10×1 single]

Отобразите местоположение и шкалу выбранного keypoints на изображении.

figure
imshow(I)
hold on
plot(newPoints)

Отобразитесь (x, y) координаты выбранного keypoints.

x = newPoints.Location(:,1);
y = newPoints.Location(:,2);
[x y]
ans = 10×2 single matrix

   147    62
   111    63
   143    67
   127    89
    47   124
    34   154
   183   205
   113   206
   111   207
   148    66

Отобразите ориентацию выбранного keypoints.

newPoints.Orientation
ans = 10×1 single column vector

    5.4682
    0.7888
    5.3084
    6.2443
    2.8221
    3.8440
    6.1212
    6.0344
    4.8840
    5.5535

Советы

Несмотря на то, что ORBPoints может содержать много точек, это - скалярный объект. Поэтому numel(ORBPoints) всегда возвращается 1. Это значение может отличаться от length(ORBPoints), который возвращает истинное число точек, сохраненное объектом.

Ссылки

[1] Rublee, E., В. Рабо, К. Конолидж и Г. Брадский. "ORB: Эффективная Альтернатива, чтобы ОТСЕЯТЬ или SURF". В Продолжениях 2 011 Международных конференций по вопросам Компьютерного зрения, стр 2564–2571. Барселона, Испания: IEEE, 2011.

Расширенные возможности

Введенный в R2019a