use crate::DType;
use numr::error::Result;
use numr::runtime::Runtime;
use numr::tensor::Tensor;
pub trait GreyMorphologyAlgorithms<R: Runtime<DType = DType>> {
fn grey_erosion(&self, input: &Tensor<R>, size: &[usize]) -> Result<Tensor<R>>;
fn grey_dilation(&self, input: &Tensor<R>, size: &[usize]) -> Result<Tensor<R>>;
fn grey_opening(&self, input: &Tensor<R>, size: &[usize]) -> Result<Tensor<R>>;
fn grey_closing(&self, input: &Tensor<R>, size: &[usize]) -> Result<Tensor<R>>;
fn morphological_gradient(&self, input: &Tensor<R>, size: &[usize]) -> Result<Tensor<R>>;
fn white_tophat(&self, input: &Tensor<R>, size: &[usize]) -> Result<Tensor<R>>;
fn black_tophat(&self, input: &Tensor<R>, size: &[usize]) -> Result<Tensor<R>>;
}