opencv::features2d

Struct ORB

Source
pub struct ORB { /* private fields */ }
Expand description

Class implementing the ORB (oriented BRIEF) keypoint detector and descriptor extractor

described in RRKB11 . The algorithm uses FAST in pyramids to detect stable keypoints, selects the strongest features using FAST or Harris response, finds their orientation using first-order moments and computes the descriptors using BRIEF (where the coordinates of random point pairs (or k-tuples) are rotated according to the measured orientation).

Implementations§

Source§

impl ORB

Source

pub const kBytes: i32 = 32i32

Source

pub fn create( nfeatures: i32, scale_factor: f32, nlevels: i32, edge_threshold: i32, first_level: i32, wta_k: i32, score_type: ORB_ScoreType, patch_size: i32, fast_threshold: i32, ) -> Result<Ptr<ORB>>

The ORB constructor

§Parameters
  • nfeatures: The maximum number of features to retain.
  • scaleFactor: Pyramid decimation ratio, greater than 1. scaleFactor==2 means the classical pyramid, where each next level has 4x less pixels than the previous, but such a big scale factor will degrade feature matching scores dramatically. On the other hand, too close to 1 scale factor will mean that to cover certain scale range you will need more pyramid levels and so the speed will suffer.
  • nlevels: The number of pyramid levels. The smallest level will have linear size equal to input_image_linear_size/pow(scaleFactor, nlevels - firstLevel).
  • edgeThreshold: This is size of the border where the features are not detected. It should roughly match the patchSize parameter.
  • firstLevel: The level of pyramid to put source image to. Previous layers are filled with upscaled source image.
  • WTA_K: The number of points that produce each element of the oriented BRIEF descriptor. The default value 2 means the BRIEF where we take a random point pair and compare their brightnesses, so we get 0/1 response. Other possible values are 3 and 4. For example, 3 means that we take 3 random points (of course, those point coordinates are random, but they are generated from the pre-defined seed, so each element of BRIEF descriptor is computed deterministically from the pixel rectangle), find point of maximum brightness and output index of the winner (0, 1 or 2). Such output will occupy 2 bits, and therefore it will need a special variant of Hamming distance, denoted as NORM_HAMMING2 (2 bits per bin). When WTA_K=4, we take 4 random points to compute each bin (that will also occupy 2 bits with possible values 0, 1, 2 or 3).
  • scoreType: The default HARRIS_SCORE means that Harris algorithm is used to rank features (the score is written to KeyPoint::score and is used to retain best nfeatures features); FAST_SCORE is alternative value of the parameter that produces slightly less stable keypoints, but it is a little faster to compute.
  • patchSize: size of the patch used by the oriented BRIEF descriptor. Of course, on smaller pyramid layers the perceived image area covered by a feature will be larger.
  • fastThreshold: the fast threshold
§C++ default parameters
  • nfeatures: 500
  • scale_factor: 1.2f
  • nlevels: 8
  • edge_threshold: 31
  • first_level: 0
  • wta_k: 2
  • score_type: ORB::HARRIS_SCORE
  • patch_size: 31
  • fast_threshold: 20
Source

pub fn create_def() -> Result<Ptr<ORB>>

The ORB constructor

§Parameters
  • nfeatures: The maximum number of features to retain.
  • scaleFactor: Pyramid decimation ratio, greater than 1. scaleFactor==2 means the classical pyramid, where each next level has 4x less pixels than the previous, but such a big scale factor will degrade feature matching scores dramatically. On the other hand, too close to 1 scale factor will mean that to cover certain scale range you will need more pyramid levels and so the speed will suffer.
  • nlevels: The number of pyramid levels. The smallest level will have linear size equal to input_image_linear_size/pow(scaleFactor, nlevels - firstLevel).
  • edgeThreshold: This is size of the border where the features are not detected. It should roughly match the patchSize parameter.
  • firstLevel: The level of pyramid to put source image to. Previous layers are filled with upscaled source image.
  • WTA_K: The number of points that produce each element of the oriented BRIEF descriptor. The default value 2 means the BRIEF where we take a random point pair and compare their brightnesses, so we get 0/1 response. Other possible values are 3 and 4. For example, 3 means that we take 3 random points (of course, those point coordinates are random, but they are generated from the pre-defined seed, so each element of BRIEF descriptor is computed deterministically from the pixel rectangle), find point of maximum brightness and output index of the winner (0, 1 or 2). Such output will occupy 2 bits, and therefore it will need a special variant of Hamming distance, denoted as NORM_HAMMING2 (2 bits per bin). When WTA_K=4, we take 4 random points to compute each bin (that will also occupy 2 bits with possible values 0, 1, 2 or 3).
  • scoreType: The default HARRIS_SCORE means that Harris algorithm is used to rank features (the score is written to KeyPoint::score and is used to retain best nfeatures features); FAST_SCORE is alternative value of the parameter that produces slightly less stable keypoints, but it is a little faster to compute.
  • patchSize: size of the patch used by the oriented BRIEF descriptor. Of course, on smaller pyramid layers the perceived image area covered by a feature will be larger.
  • fastThreshold: the fast threshold
§Note

This alternative version of ORB::create function uses the following default values for its arguments:

  • nfeatures: 500
  • scale_factor: 1.2f
  • nlevels: 8
  • edge_threshold: 31
  • first_level: 0
  • wta_k: 2
  • score_type: ORB::HARRIS_SCORE
  • patch_size: 31
  • fast_threshold: 20

Trait Implementations§

Source§

impl AlgorithmTrait for ORB

Source§

fn as_raw_mut_Algorithm(&mut self) -> *mut c_void

Source§

fn clear(&mut self) -> Result<()>

Clears the algorithm state
Source§

fn read(&mut self, fn_: &impl FileNodeTraitConst) -> Result<()>

Reads algorithm parameters from a file storage
Source§

impl AlgorithmTraitConst for ORB

Source§

fn as_raw_Algorithm(&self) -> *const c_void

Source§

fn write(&self, fs: &mut impl FileStorageTrait) -> Result<()>

Stores algorithm parameters in a file storage
Source§

fn write_1(&self, fs: &mut impl FileStorageTrait, name: &str) -> Result<()>

Stores algorithm parameters in a file storage Read more
Source§

fn write_with_name(&self, fs: &Ptr<FileStorage>, name: &str) -> Result<()>

@deprecated Read more
Source§

fn write_with_name_def(&self, fs: &Ptr<FileStorage>) -> Result<()>

👎Deprecated:

§Note

Deprecated: ## Note This alternative version of AlgorithmTraitConst::write_with_name function uses the following default values for its arguments: Read more
Source§

fn empty(&self) -> Result<bool>

Returns true if the Algorithm is empty (e.g. in the very beginning or after unsuccessful read
Source§

fn save(&self, filename: &str) -> Result<()>

Saves the algorithm to a file. In order to make this method work, the derived class must implement Algorithm::write(FileStorage& fs).
Source§

fn get_default_name(&self) -> Result<String>

Returns the algorithm string identifier. This string is used as top level xml/yml node tag when the object is saved to a file or string.
Source§

impl Boxed for ORB

Source§

unsafe fn from_raw(ptr: <ORB as OpenCVFromExtern>::ExternReceive) -> Self

Wrap the specified raw pointer Read more
Source§

fn into_raw(self) -> <ORB as OpenCVTypeExternContainer>::ExternSendMut

Return the underlying raw pointer while consuming this wrapper. Read more
Source§

fn as_raw(&self) -> <ORB as OpenCVTypeExternContainer>::ExternSend

Return the underlying raw pointer. Read more
Source§

fn as_raw_mut(&mut self) -> <ORB as OpenCVTypeExternContainer>::ExternSendMut

Return the underlying mutable raw pointer Read more
Source§

impl Debug for ORB

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for ORB

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl Feature2DTrait for ORB

Source§

fn as_raw_mut_Feature2D(&mut self) -> *mut c_void

Source§

fn detect( &mut self, image: &impl ToInputArray, keypoints: &mut Vector<KeyPoint>, mask: &impl ToInputArray, ) -> Result<()>

Detects keypoints in an image (first variant) or image set (second variant). Read more
Source§

fn detect_def( &mut self, image: &impl ToInputArray, keypoints: &mut Vector<KeyPoint>, ) -> Result<()>

Detects keypoints in an image (first variant) or image set (second variant). Read more
Source§

fn detect_multiple( &mut self, images: &impl ToInputArray, keypoints: &mut Vector<Vector<KeyPoint>>, masks: &impl ToInputArray, ) -> Result<()>

Detects keypoints in an image (first variant) or image set (second variant). Read more
Source§

fn detect_multiple_def( &mut self, images: &impl ToInputArray, keypoints: &mut Vector<Vector<KeyPoint>>, ) -> Result<()>

@overload Read more
Source§

fn compute( &mut self, image: &impl ToInputArray, keypoints: &mut Vector<KeyPoint>, descriptors: &mut impl ToOutputArray, ) -> Result<()>

Computes the descriptors for a set of keypoints detected in an image (first variant) or image set (second variant). Read more
Source§

fn compute_multiple( &mut self, images: &impl ToInputArray, keypoints: &mut Vector<Vector<KeyPoint>>, descriptors: &mut impl ToOutputArray, ) -> Result<()>

Computes the descriptors for a set of keypoints detected in an image (first variant) or image set (second variant). Read more
Source§

fn detect_and_compute( &mut self, image: &impl ToInputArray, mask: &impl ToInputArray, keypoints: &mut Vector<KeyPoint>, descriptors: &mut impl ToOutputArray, use_provided_keypoints: bool, ) -> Result<()>

Detects keypoints and computes the descriptors Read more
Source§

fn detect_and_compute_def( &mut self, image: &impl ToInputArray, mask: &impl ToInputArray, keypoints: &mut Vector<KeyPoint>, descriptors: &mut impl ToOutputArray, ) -> Result<()>

Detects keypoints and computes the descriptors Read more
Source§

fn read(&mut self, file_name: &str) -> Result<()>

Source§

fn read_from_node(&mut self, unnamed: &impl FileNodeTraitConst) -> Result<()>

Source§

impl Feature2DTraitConst for ORB

Source§

fn as_raw_Feature2D(&self) -> *const c_void

Source§

fn descriptor_size(&self) -> Result<i32>

Source§

fn descriptor_type(&self) -> Result<i32>

Source§

fn default_norm(&self) -> Result<i32>

Source§

fn write(&self, file_name: &str) -> Result<()>

Source§

fn write_to_storage(&self, unnamed: &mut impl FileStorageTrait) -> Result<()>

Source§

fn empty(&self) -> Result<bool>

Return true if detector object is empty
Source§

fn get_default_name(&self) -> Result<String>

Source§

fn write_to_storage_with_name( &self, fs: &mut impl FileStorageTrait, name: &str, ) -> Result<()>

Source§

fn write_to_storage_ptr_with_name( &self, fs: &Ptr<FileStorage>, name: &str, ) -> Result<()>

Source§

impl From<ORB> for Algorithm

Source§

fn from(s: ORB) -> Self

Converts to this type from the input type.
Source§

impl From<ORB> for Feature2D

Source§

fn from(s: ORB) -> Self

Converts to this type from the input type.
Source§

impl ORBTrait for ORB

Source§

fn as_raw_mut_ORB(&mut self) -> *mut c_void

Source§

fn set_max_features(&mut self, max_features: i32) -> Result<()>

Source§

fn set_scale_factor(&mut self, scale_factor: f64) -> Result<()>

Source§

fn set_n_levels(&mut self, nlevels: i32) -> Result<()>

Source§

fn set_edge_threshold(&mut self, edge_threshold: i32) -> Result<()>

Source§

fn set_first_level(&mut self, first_level: i32) -> Result<()>

Source§

fn set_wta_k(&mut self, wta_k: i32) -> Result<()>

Source§

fn set_score_type(&mut self, score_type: ORB_ScoreType) -> Result<()>

Source§

fn set_patch_size(&mut self, patch_size: i32) -> Result<()>

Source§

fn set_fast_threshold(&mut self, fast_threshold: i32) -> Result<()>

Source§

impl ORBTraitConst for ORB

Source§

impl TryFrom<Feature2D> for ORB

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(s: Feature2D) -> Result<Self>

Performs the conversion.
Source§

impl Send for ORB

Auto Trait Implementations§

§

impl Freeze for ORB

§

impl RefUnwindSafe for ORB

§

impl !Sync for ORB

§

impl Unpin for ORB

§

impl UnwindSafe for ORB

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<Mat> ModifyInplace for Mat
where Mat: Boxed,

Source§

unsafe fn modify_inplace<Res>( &mut self, f: impl FnOnce(&Mat, &mut Mat) -> Res, ) -> Res

Helper function to call OpenCV functions that allow in-place modification of a Mat or another similar object. By passing a mutable reference to the Mat to this function your closure will get called with the read reference and a write references to the same Mat. This is unsafe in a general case as it leads to having non-exclusive mutable access to the internal data, but it can be useful for some performance sensitive operations. One example of an OpenCV function that allows such in-place modification is imgproc::threshold. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.