pub mod convolution;
pub mod kernel;
pub mod padding;
pub mod window;
pub use kernel::{calculate_kernel_size, generate_gaussian_kernel, separable_gaussian_blur};
pub use convolution::memory_efficient_convolution;
pub use padding::{get_window, pad_array};
pub use window::apply_window_function;
use scirs2_core::ndarray::{Array, Dimension};
use scirs2_core::numeric::{Float, FromPrimitive};
use std::fmt::Debug;
use super::BorderMode;
use crate::error::{NdimageError, NdimageResult};
use crate::utils::safe_f64_to_float;
#[allow(dead_code)]
pub fn safe_usize_to_float<T: Float + FromPrimitive>(value: usize) -> NdimageResult<T> {
T::from_usize(value).ok_or_else(|| {
NdimageError::ComputationError(format!("Failed to convert usize {} to float type", value))
})
}