ORBPoints

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

Описание

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

Создание

Описание

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 = im2gray(I);

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

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

Задайте значение шкалы для каждого 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 = 6x1 single column vector

    2.1000
    2.5000
    2.5000
    4.0000
    2.3000
    3.9000

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

points.Orientation
ans = 6x1 single column vector

    0.7854
    0.7854
    0.7854
    0.7854
    0.7854
    0.7854

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

figure
imshow(I)
hold on
plot(points)

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

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

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 = 
  10x1 ORBPoints array with properties:

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

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

figure
imshow(I)
hold on
plot(newPoints)

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

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

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

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

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., В. Рабо, К. Конолидж и Г. Брадский. "ORB: Эффективная Альтернатива SIFT или SURF". В Продолжениях 2 011 Международных конференций по вопросам Компьютерного зрения, стр 2564–2571. Барселона, Испания: IEEE, 2011.

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

Введенный в R2019a