ORBPoints

Объект для хранения точек ключа ORB

Описание

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

Создание

Описание

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

пример

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

пример

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

Свойства

расширить все

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

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

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

Сила точек ключа, заданная как одно из следующих значений:

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

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

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

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

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

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

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

Масштабный коэффициент, заданный в качестве одного из следующих значений:

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

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

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

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

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

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

Угол точек ключа в радианах, заданный как одно из следующих значений:

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

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

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

Пример: 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 = im2gray(I);

Укажите местоположение точек ключа в изображении.

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

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

points = ORBPoints(location)
points = 
  6x1 ORBPoints array with properties:

       Location: [6x2 single]
         Metric: [6x1 single]
          Count: 6
          Scale: [6x1 single]
    Orientation: [6x1 single]

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

points.Scale
ans = 6x1 single column vector

     1
     1
     1
     1
     1
     1

points.Orientation
ans = 6x1 single column vector

     0
     0
     0
     0
     0
     0

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

scale = [2.1 2.5 2.5 4 2.3 3.9];

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

angle = 0.7854;

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

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

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

points.Scale
ans = 6x1 single column vector

    2.1000
    2.5000
    2.5000
    4.0000
    2.3000
    3.9000

Смотрите обновленные Orientation значения. Начиная с Orientation значение является скаляром, объект присваивает то же значение всем ключевым точкам.

points.Orientation
ans = 6x1 single column vector

    0.7854
    0.7854
    0.7854
    0.7854
    0.7854
    0.7854

Отобразите изображение и постройте графики точек ключа ORB на изображении.

figure
imshow(I)
hold on
plot(points)

Figure contains an axes. The axes contains 3 objects of type image, line.

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

I = imread('cameraman.tif');

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

points = detectORBFeatures(I);

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

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

       Location: [10x2 single]
         Metric: [10x1 single]
          Count: 10
          Scale: [10x1 single]
    Orientation: [10x1 single]

Отображение местоположения и шкалы выбранных точек ключа на изображении.

figure
imshow(I)
hold on
plot(newPoints)

Figure contains an axes. The axes contains 3 objects of type image, line.

Отображение координат (x, y) выбранных точек ключа.

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

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

Отображение ориентации выбранных точек ключа.

newPoints.Orientation
ans = 10x1 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., V. Rabaud, K. Konolige, and G. Bradski. ORB: эффективная альтернатива SIFT или SURF. В материалах Международной конференции по компьютерному зрению 2011 года, стр. 2564-2571. Барселона, Испания: IEEE, 2011.

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

.
Введенный в R2019a