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
impl ORB
pub const kBytes: i32 = 32i32
Sourcepub 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>>
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
Sourcepub fn create_def() -> Result<Ptr<ORB>>
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
impl AlgorithmTrait for ORB
Source§impl AlgorithmTraitConst for ORB
impl AlgorithmTraitConst for ORB
fn as_raw_Algorithm(&self) -> *const c_void
Source§fn write(&self, fs: &mut impl FileStorageTrait) -> Result<()>
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<()>
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<()>
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<()>
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>
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<()>
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>
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
impl Boxed for ORB
Source§unsafe fn from_raw(ptr: <ORB as OpenCVFromExtern>::ExternReceive) -> Self
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
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
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
fn as_raw_mut(&mut self) -> <ORB as OpenCVTypeExternContainer>::ExternSendMut
Return the underlying mutable raw pointer Read more
Source§impl Feature2DTrait for ORB
impl Feature2DTrait for ORB
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<()>
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<()>
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<()>
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<()>
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<()>
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<()>
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<()>
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<()>
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
fn read(&mut self, file_name: &str) -> Result<()>
fn read_from_node(&mut self, unnamed: &impl FileNodeTraitConst) -> Result<()>
Source§impl Feature2DTraitConst for ORB
impl Feature2DTraitConst for ORB
fn as_raw_Feature2D(&self) -> *const c_void
fn descriptor_size(&self) -> Result<i32>
fn descriptor_type(&self) -> Result<i32>
fn default_norm(&self) -> Result<i32>
fn write(&self, file_name: &str) -> Result<()>
fn write_to_storage(&self, unnamed: &mut impl FileStorageTrait) -> Result<()>
fn get_default_name(&self) -> Result<String>
fn write_to_storage_with_name( &self, fs: &mut impl FileStorageTrait, name: &str, ) -> Result<()>
fn write_to_storage_ptr_with_name( &self, fs: &Ptr<FileStorage>, name: &str, ) -> Result<()>
Source§impl ORBTrait for ORB
impl ORBTrait for ORB
fn as_raw_mut_ORB(&mut self) -> *mut c_void
fn set_max_features(&mut self, max_features: i32) -> Result<()>
fn set_scale_factor(&mut self, scale_factor: f64) -> Result<()>
fn set_n_levels(&mut self, nlevels: i32) -> Result<()>
fn set_edge_threshold(&mut self, edge_threshold: i32) -> Result<()>
fn set_first_level(&mut self, first_level: i32) -> Result<()>
fn set_wta_k(&mut self, wta_k: i32) -> Result<()>
fn set_score_type(&mut self, score_type: ORB_ScoreType) -> Result<()>
fn set_patch_size(&mut self, patch_size: i32) -> Result<()>
fn set_fast_threshold(&mut self, fast_threshold: i32) -> Result<()>
Source§impl ORBTraitConst for ORB
impl ORBTraitConst for ORB
fn as_raw_ORB(&self) -> *const c_void
fn get_max_features(&self) -> Result<i32>
fn get_scale_factor(&self) -> Result<f64>
fn get_n_levels(&self) -> Result<i32>
fn get_edge_threshold(&self) -> Result<i32>
fn get_first_level(&self) -> Result<i32>
fn get_wta_k(&self) -> Result<i32>
fn get_score_type(&self) -> Result<ORB_ScoreType>
fn get_patch_size(&self) -> Result<i32>
fn get_fast_threshold(&self) -> Result<i32>
fn get_default_name(&self) -> Result<String>
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<Mat> ModifyInplace for Matwhere
Mat: Boxed,
impl<Mat> ModifyInplace for Matwhere
Mat: Boxed,
Source§unsafe fn modify_inplace<Res>(
&mut self,
f: impl FnOnce(&Mat, &mut Mat) -> Res,
) -> Res
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