pub struct ChessDetector;Expand description
Zero-sized DenseDetector implementor for the ChESS kernel.
Wraps the canonical 16-sample ring response
(crate::detect::chess::response::chess_response_u8) and the
threshold + NMS + cluster-filter peak detector
(crate::detect::detect_peaks_from_response). Subpixel
refinement (center-of-mass, Förstner, saddle-point) is a separate
detector-agnostic stage; see
crate::detect::refine_corners_on_image.
Trait Implementations§
Source§impl Clone for ChessDetector
impl Clone for ChessDetector
Source§fn clone(&self) -> ChessDetector
fn clone(&self) -> ChessDetector
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ChessDetector
impl Debug for ChessDetector
Source§impl Default for ChessDetector
impl Default for ChessDetector
Source§fn default() -> ChessDetector
fn default() -> ChessDetector
Returns the “default value” for a type. Read more
Source§impl DenseDetector for ChessDetector
impl DenseDetector for ChessDetector
Source§type Params = ChessParams
type Params = ChessParams
Detector-specific tuning parameters.
Source§type Buffers = ChessBuffers
type Buffers = ChessBuffers
Reusable scratch buffers. Allocated once via
Default::default and reused across compute_response
calls to avoid per-frame allocation.Source§type Response<'a> = &'a ResponseMap
type Response<'a> = &'a ResponseMap
Native response representation. May be owned (a borrow of an
owned
ResponseMap in Self::Buffers) or a transient
view (RadonResponseView) over the same scratch. The
borrow lifetime ties the response back to the buffers that
produced it.Source§fn compute_response<'a>(
&self,
view: ImageView<'_>,
params: &Self::Params,
buffers: &'a mut Self::Buffers,
) -> Self::Response<'a>
fn compute_response<'a>( &self, view: ImageView<'_>, params: &Self::Params, buffers: &'a mut Self::Buffers, ) -> Self::Response<'a>
Compute the dense response over
view, writing into
buffers and returning a borrowed handle.Source§fn detect_corners(
&self,
response: &Self::Response<'_>,
params: &Self::Params,
refine_border: i32,
) -> Vec<Corner>
fn detect_corners( &self, response: &Self::Response<'_>, params: &Self::Params, refine_border: i32, ) -> Vec<Corner>
Extract corner peaks from
response. Positions are in the
input-image frame (the same frame view was passed in at
Self::compute_response). Read moreSource§fn compute_response_patch<'a>(
&self,
base: ImageView<'_>,
roi: (i32, i32, i32, i32),
params: &Self::Params,
buffers: &'a mut Self::Buffers,
) -> Self::Response<'a>
fn compute_response_patch<'a>( &self, base: ImageView<'_>, roi: (i32, i32, i32, i32), params: &Self::Params, buffers: &'a mut Self::Buffers, ) -> Self::Response<'a>
Compute the dense response over the sub-rectangle
[x0..x1) × [y0..y1) of base, where the ROI is given as the
tuple (x0, y0, x1, y1). The returned response is sized to
the ROI; any Corner positions produced from it by
Self::detect_corners are patch-local (origin = ROI’s
top-left), and the caller is responsible for shifting them
back into base-image coordinates by adding (x0, y0). Read moreSource§fn roi_border(&self, params: &Self::Params) -> i32
fn roi_border(&self, params: &Self::Params) -> i32
Detector-specific safety border (in base-image pixels) the
orchestrator must keep around each seed when carving an ROI.
Typically the sum of the detector’s response-support radius
(e.g. ChESS ring radius, Radon ray radius) and its NMS
half-window — i.e. the minimum margin needed for
Self::compute_response_patch + Self::detect_corners to
return a non-trivial peak inside the ROI.Source§fn refine_peaks_on_image(
&self,
corners: Vec<Corner>,
image: ImageView<'_>,
response: &Self::Response<'_>,
refiner: &mut dyn CornerRefiner,
) -> Vec<Corner>
fn refine_peaks_on_image( &self, corners: Vec<Corner>, image: ImageView<'_>, response: &Self::Response<'_>, refiner: &mut dyn CornerRefiner, ) -> Vec<Corner>
Apply a detector-appropriate image-domain refinement step to
the peaks produced by
Self::detect_corners. Read moreSource§fn refines_on_image(&self) -> bool
fn refines_on_image(&self) -> bool
Whether
Self::refine_peaks_on_image actually consumes the
orchestrator-supplied refiner. When false, the orchestrator
must not include the refiner’s patch radius in the per-seed
ROI margin — otherwise a no-op refiner choice would still
shrink the valid seed area near the image border (a tunable
silently coupling to an unused setting). Read moreimpl Copy for ChessDetector
Auto Trait Implementations§
impl Freeze for ChessDetector
impl RefUnwindSafe for ChessDetector
impl Send for ChessDetector
impl Sync for ChessDetector
impl Unpin for ChessDetector
impl UnsafeUnpin for ChessDetector
impl UnwindSafe for ChessDetector
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<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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 more