pub struct StereoRectifier {
pub calib: StereoCalibration,
pub map_left: Option<(Vec<f32>, Vec<f32>)>,
pub map_right: Option<(Vec<f32>, Vec<f32>)>,
pub r_left: [[f64; 3]; 3],
pub r_right: [[f64; 3]; 3],
}Expand description
Computes and applies stereo rectification maps.
After calling compute_maps, use remap_left / remap_right to
obtain the rectified images.
§Example
use scirs2_vision::stereo::calibration::StereoCalibration;
use scirs2_vision::stereo::rectification::StereoRectifier;
let cal = StereoCalibration::from_baseline(500.0, 500.0, 32.0, 24.0, 0.1);
let mut rect = StereoRectifier::new(cal);
rect.compute_maps(64, 48);
assert!(rect.map_left.is_some());Fields§
§calib: StereoCalibrationStereo calibration parameters.
map_left: Option<(Vec<f32>, Vec<f32>)>Rectification map for the left image: (map_x, map_y) in pixels.
map_right: Option<(Vec<f32>, Vec<f32>)>Rectification map for the right image: (map_x, map_y) in pixels.
r_left: [[f64; 3]; 3]The 3×3 left rectification homography (row-major).
r_right: [[f64; 3]; 3]The 3×3 right rectification homography (row-major).
Implementations§
Source§impl StereoRectifier
impl StereoRectifier
Sourcepub fn new(calib: StereoCalibration) -> Self
pub fn new(calib: StereoCalibration) -> Self
Create a rectifier from calibration data.
Sourcepub fn compute_maps(&mut self, width: usize, height: usize)
pub fn compute_maps(&mut self, width: usize, height: usize)
Compute the rectification maps for an image of size width × height.
Uses a simplified Bouguet decomposition:
- If the cameras are already parallel (no rotation), the maps reduce to identity (no warping needed).
- Otherwise a axis-angle half-rotation is applied to each camera so both look in a common direction with horizontal epipolar lines.
Sourcepub fn remap_left(&self, image: &[u8], width: usize, height: usize) -> Vec<u8> ⓘ
pub fn remap_left(&self, image: &[u8], width: usize, height: usize) -> Vec<u8> ⓘ
Apply the left rectification map to a grayscale image.
Auto Trait Implementations§
impl Freeze for StereoRectifier
impl RefUnwindSafe for StereoRectifier
impl Send for StereoRectifier
impl Sync for StereoRectifier
impl Unpin for StereoRectifier
impl UnsafeUnpin for StereoRectifier
impl UnwindSafe for StereoRectifier
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.