Struct opencv::bioinspired::Retina
source · pub struct Retina { /* private fields */ }
Expand description
class which allows the Gipsa/Listic Labs model to be used with OpenCV.
This retina model allows spatio-temporal image processing (applied on still images, video sequences). As a summary, these are the retina model properties:
- It applies a spectral whithening (mid-frequency details enhancement)
- high frequency spatio-temporal noise reduction
- low frequency luminance to be reduced (luminance range compression)
- local logarithmic luminance compression allows details to be enhanced in low light conditions
USE : this model can be used basically for spatio-temporal video effects but also for : _using the getParvo method output matrix : texture analysiswith enhanced signal to noise ratio and enhanced details robust against input images luminance ranges _using the getMagno method output matrix : motion analysis also with the previously cited properties
for more information, reer to the following papers : Benoit A., Caplier A., Durette B., Herault, J., “USING HUMAN VISUAL SYSTEM MODELING FOR BIO-INSPIRED LOW LEVEL IMAGE PROCESSING”, Elsevier, Computer Vision and Image Understanding 114 (2010), pp. 758-773, DOI: http://dx.doi.org/10.1016/j.cviu.2010.01.011 Vision: Images, Signals and Neural Networks: Models of Neural Processing in Visual Perception (Progress in Neural Processing),By: Jeanny Herault, ISBN: 9814273686. WAPI (Tower ID): 113266891.
The retina filter includes the research contributions of phd/research collegues from which code has been redrawn by the author : take a look at the retinacolor.hpp module to discover Brice Chaix de Lavarene color mosaicing/demosaicing and the reference paper: B. Chaix de Lavarene, D. Alleysson, B. Durette, J. Herault (2007). “Efficient demosaicing through recursive filtering”, IEEE International Conference on Image Processing ICIP 2007 take a look at imagelogpolprojection.hpp to discover retina spatial log sampling which originates from Barthelemy Durette phd with Jeanny Herault. A Retina / V1 cortex projection is also proposed and originates from Jeanny’s discussions. more informations in the above cited Jeanny Heraults’s book.
Implementations§
source§impl Retina
impl Retina
sourcepub fn create(input_size: Size) -> Result<Ptr<Retina>>
pub fn create(input_size: Size) -> Result<Ptr<Retina>>
Constructors from standardized interfaces : retreive a smart pointer to a Retina instance
§Parameters
- inputSize: the input frame size
- colorMode: the chosen processing mode : with or without color processing
- colorSamplingMethod: specifies which kind of color sampling will be used :
- cv::bioinspired::RETINA_COLOR_RANDOM: each pixel position is either R, G or B in a random choice
- cv::bioinspired::RETINA_COLOR_DIAGONAL: color sampling is RGBRGBRGB…, line 2 BRGBRGBRG…, line 3, GBRGBRGBR…
- cv::bioinspired::RETINA_COLOR_BAYER: standard bayer sampling
- useRetinaLogSampling: activate retina log sampling, if true, the 2 following parameters can be used
- reductionFactor: only usefull if param useRetinaLogSampling=true, specifies the reduction factor of the output frame (as the center (fovea) is high resolution and corners can be underscaled, then a reduction of the output is allowed without precision leak
- samplingStrength: only usefull if param useRetinaLogSampling=true, specifies the strength of the log scale that is applied
§Overloaded parameters
sourcepub fn create_ext(
input_size: Size,
color_mode: bool,
color_sampling_method: i32,
use_retina_log_sampling: bool,
reduction_factor: f32,
sampling_strength: f32
) -> Result<Ptr<Retina>>
pub fn create_ext( input_size: Size, color_mode: bool, color_sampling_method: i32, use_retina_log_sampling: bool, reduction_factor: f32, sampling_strength: f32 ) -> Result<Ptr<Retina>>
Constructors from standardized interfaces : retreive a smart pointer to a Retina instance
§Parameters
- inputSize: the input frame size
- colorMode: the chosen processing mode : with or without color processing
- colorSamplingMethod: specifies which kind of color sampling will be used :
- cv::bioinspired::RETINA_COLOR_RANDOM: each pixel position is either R, G or B in a random choice
- cv::bioinspired::RETINA_COLOR_DIAGONAL: color sampling is RGBRGBRGB…, line 2 BRGBRGBRG…, line 3, GBRGBRGBR…
- cv::bioinspired::RETINA_COLOR_BAYER: standard bayer sampling
- useRetinaLogSampling: activate retina log sampling, if true, the 2 following parameters can be used
- reductionFactor: only usefull if param useRetinaLogSampling=true, specifies the reduction factor of the output frame (as the center (fovea) is high resolution and corners can be underscaled, then a reduction of the output is allowed without precision leak
- samplingStrength: only usefull if param useRetinaLogSampling=true, specifies the strength of the log scale that is applied
§C++ default parameters
- color_sampling_method: RETINA_COLOR_BAYER
- use_retina_log_sampling: false
- reduction_factor: 1.0f
- sampling_strength: 10.0f
sourcepub fn create_ext_def(input_size: Size, color_mode: bool) -> Result<Ptr<Retina>>
pub fn create_ext_def(input_size: Size, color_mode: bool) -> Result<Ptr<Retina>>
Constructors from standardized interfaces : retreive a smart pointer to a Retina instance
§Parameters
- inputSize: the input frame size
- colorMode: the chosen processing mode : with or without color processing
- colorSamplingMethod: specifies which kind of color sampling will be used :
- cv::bioinspired::RETINA_COLOR_RANDOM: each pixel position is either R, G or B in a random choice
- cv::bioinspired::RETINA_COLOR_DIAGONAL: color sampling is RGBRGBRGB…, line 2 BRGBRGBRG…, line 3, GBRGBRGBR…
- cv::bioinspired::RETINA_COLOR_BAYER: standard bayer sampling
- useRetinaLogSampling: activate retina log sampling, if true, the 2 following parameters can be used
- reductionFactor: only usefull if param useRetinaLogSampling=true, specifies the reduction factor of the output frame (as the center (fovea) is high resolution and corners can be underscaled, then a reduction of the output is allowed without precision leak
- samplingStrength: only usefull if param useRetinaLogSampling=true, specifies the strength of the log scale that is applied
§Note
This alternative version of Retina::create_ext function uses the following default values for its arguments:
- color_sampling_method: RETINA_COLOR_BAYER
- use_retina_log_sampling: false
- reduction_factor: 1.0f
- sampling_strength: 10.0f
Trait Implementations§
source§impl AlgorithmTrait for Retina
impl AlgorithmTrait for Retina
source§impl AlgorithmTraitConst for Retina
impl AlgorithmTraitConst for Retina
fn as_raw_Algorithm(&self) -> *const c_void
source§fn write(&self, fs: &mut impl FileStorageTrait) -> Result<()>
fn write(&self, fs: &mut impl FileStorageTrait) -> Result<()>
source§fn write_1(&self, fs: &mut impl FileStorageTrait, name: &str) -> Result<()>
fn write_1(&self, fs: &mut impl FileStorageTrait, name: &str) -> Result<()>
source§fn write_with_name(&self, fs: &Ptr<FileStorage>, name: &str) -> Result<()>
fn write_with_name(&self, fs: &Ptr<FileStorage>, name: &str) -> Result<()>
source§fn write_with_name_def(&self, fs: &Ptr<FileStorage>) -> Result<()>
fn write_with_name_def(&self, fs: &Ptr<FileStorage>) -> Result<()>
§Note
source§fn empty(&self) -> Result<bool>
fn empty(&self) -> Result<bool>
source§fn save(&self, filename: &str) -> Result<()>
fn save(&self, filename: &str) -> Result<()>
source§fn get_default_name(&self) -> Result<String>
fn get_default_name(&self) -> Result<String>
source§impl Boxed for Retina
impl Boxed for Retina
source§unsafe fn from_raw(ptr: <Retina as OpenCVFromExtern>::ExternReceive) -> Self
unsafe fn from_raw(ptr: <Retina as OpenCVFromExtern>::ExternReceive) -> Self
source§fn into_raw(self) -> <Retina as OpenCVTypeExternContainer>::ExternSendMut
fn into_raw(self) -> <Retina as OpenCVTypeExternContainer>::ExternSendMut
source§fn as_raw(&self) -> <Retina as OpenCVTypeExternContainer>::ExternSend
fn as_raw(&self) -> <Retina as OpenCVTypeExternContainer>::ExternSend
source§fn as_raw_mut(&mut self) -> <Retina as OpenCVTypeExternContainer>::ExternSendMut
fn as_raw_mut(&mut self) -> <Retina as OpenCVTypeExternContainer>::ExternSendMut
source§impl RetinaTrait for Retina
impl RetinaTrait for Retina
fn as_raw_mut_Retina(&mut self) -> *mut c_void
source§fn get_output_size(&mut self) -> Result<Size>
fn get_output_size(&mut self) -> Result<Size>
source§fn setup_from_file(
&mut self,
retina_parameter_file: &str,
apply_default_setup_on_failure: bool
) -> Result<()>
fn setup_from_file( &mut self, retina_parameter_file: &str, apply_default_setup_on_failure: bool ) -> Result<()>
source§fn setup_from_file_def(&mut self) -> Result<()>
fn setup_from_file_def(&mut self) -> Result<()>
source§fn setup_from_storage(
&mut self,
fs: &mut impl FileStorageTrait,
apply_default_setup_on_failure: bool
) -> Result<()>
fn setup_from_storage( &mut self, fs: &mut impl FileStorageTrait, apply_default_setup_on_failure: bool ) -> Result<()>
source§fn setup_from_storage_def(
&mut self,
fs: &mut impl FileStorageTrait
) -> Result<()>
fn setup_from_storage_def( &mut self, fs: &mut impl FileStorageTrait ) -> Result<()>
source§fn setup(&mut self, new_parameters: impl RetinaParametersTrait) -> Result<()>
fn setup(&mut self, new_parameters: impl RetinaParametersTrait) -> Result<()>
source§fn get_parameters(&mut self) -> Result<RetinaParameters>
fn get_parameters(&mut self) -> Result<RetinaParameters>
source§fn print_setup(&mut self) -> Result<String>
fn print_setup(&mut self) -> Result<String>
source§fn setup_op_land_ipl_parvo_channel(
&mut self,
color_mode: bool,
normalise_output: bool,
photoreceptors_local_adaptation_sensitivity: f32,
photoreceptors_temporal_constant: f32,
photoreceptors_spatial_constant: f32,
horizontal_cells_gain: f32,
hcells_temporal_constant: f32,
hcells_spatial_constant: f32,
ganglion_cells_sensitivity: f32
) -> Result<()>
fn setup_op_land_ipl_parvo_channel( &mut self, color_mode: bool, normalise_output: bool, photoreceptors_local_adaptation_sensitivity: f32, photoreceptors_temporal_constant: f32, photoreceptors_spatial_constant: f32, horizontal_cells_gain: f32, hcells_temporal_constant: f32, hcells_spatial_constant: f32, ganglion_cells_sensitivity: f32 ) -> Result<()>
source§fn setup_op_land_ipl_parvo_channel_def(&mut self) -> Result<()>
fn setup_op_land_ipl_parvo_channel_def(&mut self) -> Result<()>
source§fn setup_ipl_magno_channel(
&mut self,
normalise_output: bool,
parasol_cells_beta: f32,
parasol_cells_tau: f32,
parasol_cells_k: f32,
amacrin_cells_temporal_cut_frequency: f32,
v0_compression_parameter: f32,
local_adaptintegration_tau: f32,
local_adaptintegration_k: f32
) -> Result<()>
fn setup_ipl_magno_channel( &mut self, normalise_output: bool, parasol_cells_beta: f32, parasol_cells_tau: f32, parasol_cells_k: f32, amacrin_cells_temporal_cut_frequency: f32, v0_compression_parameter: f32, local_adaptintegration_tau: f32, local_adaptintegration_k: f32 ) -> Result<()>
source§fn setup_ipl_magno_channel_def(&mut self) -> Result<()>
fn setup_ipl_magno_channel_def(&mut self) -> Result<()>
source§fn run(&mut self, input_image: &impl ToInputArray) -> Result<()>
fn run(&mut self, input_image: &impl ToInputArray) -> Result<()>
source§fn apply_fast_tone_mapping(
&mut self,
input_image: &impl ToInputArray,
output_tone_mapped_image: &mut impl ToOutputArray
) -> Result<()>
fn apply_fast_tone_mapping( &mut self, input_image: &impl ToInputArray, output_tone_mapped_image: &mut impl ToOutputArray ) -> Result<()>
source§fn get_parvo(
&mut self,
retina_output_parvo: &mut impl ToOutputArray
) -> Result<()>
fn get_parvo( &mut self, retina_output_parvo: &mut impl ToOutputArray ) -> Result<()>
source§fn get_parvo_raw_to(
&mut self,
retina_output_parvo: &mut impl ToOutputArray
) -> Result<()>
fn get_parvo_raw_to( &mut self, retina_output_parvo: &mut impl ToOutputArray ) -> Result<()>
source§fn get_magno(
&mut self,
retina_output_magno: &mut impl ToOutputArray
) -> Result<()>
fn get_magno( &mut self, retina_output_magno: &mut impl ToOutputArray ) -> Result<()>
source§fn get_magno_raw_to(
&mut self,
retina_output_magno: &mut impl ToOutputArray
) -> Result<()>
fn get_magno_raw_to( &mut self, retina_output_magno: &mut impl ToOutputArray ) -> Result<()>
source§fn set_color_saturation(
&mut self,
saturate_colors: bool,
color_saturation_value: f32
) -> Result<()>
fn set_color_saturation( &mut self, saturate_colors: bool, color_saturation_value: f32 ) -> Result<()>
source§fn set_color_saturation_def(&mut self) -> Result<()>
fn set_color_saturation_def(&mut self) -> Result<()>
source§impl RetinaTraitConst for Retina
impl RetinaTraitConst for Retina
fn as_raw_Retina(&self) -> *const c_void
source§fn write(&self, fs: &str) -> Result<()>
fn write(&self, fs: &str) -> Result<()>
source§fn write_to_storage(&self, fs: &mut impl FileStorageTrait) -> Result<()>
fn write_to_storage(&self, fs: &mut impl FileStorageTrait) -> Result<()>
impl Send for Retina
Auto Trait Implementations§
impl Freeze for Retina
impl RefUnwindSafe for Retina
impl !Sync for Retina
impl Unpin for Retina
impl UnwindSafe for Retina
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
source§impl<Mat> ModifyInplace for Matwhere
Mat: Boxed,
impl<Mat> ModifyInplace for Matwhere
Mat: Boxed,
source§unsafe fn modify_inplace<Res>(
&mut self,
f: impl FnOnce(&Mat, &mut Mat) -> Res
) -> Res
unsafe fn modify_inplace<Res>( &mut self, f: impl FnOnce(&Mat, &mut Mat) -> Res ) -> Res
Mat
or another similar object. By passing
a mutable reference to the Mat
to this function your closure will get called with the read reference and a write references
to the same Mat
. This is of course unsafe as it breaks the Rust aliasing rules, but it might be useful for some performance
sensitive operations. One example of an OpenCV function that allows such in-place modification is imgproc::threshold
. Read more