1pub mod core;
65pub mod diagnostics;
66pub mod pipeline;
67pub mod prelude;
68pub mod propose;
69pub mod refine;
70pub mod support;
71
72#[cfg(feature = "affine")]
73pub mod affine;
74
75pub use crate::core::circle_fit::{fit_circle, fit_circle_weighted};
79pub use crate::core::coords::PixelCoord;
80pub use crate::core::error::{RadSymError, Result};
81pub use crate::core::geometry::{Annulus, Circle, Ellipse};
82pub use crate::core::gradient::{
83 compute_gradient, compute_gradient_f32, scharr_gradient, scharr_gradient_f32, sobel_gradient,
84 sobel_gradient_f32, GradientField, GradientOperator,
85};
86pub use crate::core::homography::{rectified_circle_to_image_ellipse, Homography, RectifiedGrid};
87pub use crate::core::image_view::{ImageView, OwnedImage};
88pub use crate::core::nms::NmsConfig;
89pub use crate::core::polarity::Polarity;
90pub use crate::core::pyramid::{
91 pyramid_level_owned, OwnedPyramidLevel, PyramidLevelView, PyramidWorkspace,
92};
93
94pub use crate::propose::extract::{extract_proposals, suppress_proposals_by_distance, ResponseMap};
96pub use crate::propose::frst::{
97 frst_response, frst_response_single, multiradius_response, FrstConfig,
98};
99pub use crate::propose::homography::{
100 extract_rectified_proposals, frst_response_homography, rerank_proposals_homography,
101 HomographyProposal, HomographyRerankConfig, RectifiedResponseMap, RerankedProposal,
102};
103pub use crate::propose::remap::{remap_proposal_to_image, remap_proposals_to_image};
104pub use crate::propose::rsd::{rsd_response, rsd_response_fused, RsdConfig};
105pub use crate::propose::seed::{Proposal, ProposalSource, SeedPoint};
106
107pub use crate::support::annulus::AnnulusSamplingConfig;
109pub use crate::support::evidence::SupportEvidence;
110pub use crate::support::hypothesis::{
111 AnnulusHypothesis, CircleHypothesis, ConcentricPairHypothesis, EllipseHypothesis,
112};
113pub use crate::support::score::{
114 score_circle_support, score_ellipse_support, score_rectified_circle_support, ScoringConfig,
115 SupportScore,
116};
117
118pub use crate::refine::circle::{refine_circle, CircleRefineConfig};
120pub use crate::refine::ellipse::{refine_ellipse, EllipseRefineConfig};
121pub use crate::refine::homography::{
122 refine_ellipse_homography, HomographyEllipseRefineConfig, HomographyRefinementResult,
123};
124pub use crate::refine::radial_center::{
125 radial_center_refine, radial_center_refine_from_gradient, RadialCenterConfig,
126};
127pub use crate::refine::result::{RefinementResult, RefinementStatus};
128
129pub use crate::pipeline::{detect_circles, DetectCirclesConfig, Detection};
131
132pub use crate::diagnostics::heatmap::{response_heatmap, Colormap, DiagnosticImage};
134pub use crate::diagnostics::overlay::{overlay_circle, overlay_ellipse};
135
136#[cfg(feature = "image-io")]
138pub use crate::core::io::load_grayscale;
139#[cfg(feature = "image-io")]
140pub use crate::diagnostics::export::{save_diagnostic, save_grayscale, save_response_map};