pub struct RetinaFastToneMapping { /* private fields */ }
Expand description
a wrapper class which allows the tone mapping algorithm of Meylan&al(2007) to be used with OpenCV.
This algorithm is already implemented in thre Retina class (retina::applyFastToneMapping) but used it does not require all the retina model to be allocated. This allows a light memory use for low memory devices (smartphones, etc. As a summary, these are the model properties:
- 2 stages of local luminance adaptation with a different local neighborhood for each.
- first stage models the retina photorecetors local luminance adaptation
- second stage models th ganglion cells local information adaptation
- compared to the initial publication, this class uses spatio-temporal low pass filters instead of spatial only filters. this can help noise robustness and temporal stability for video sequence use cases.
for more information, read to the following papers : Meylan L., Alleysson D., and Susstrunk S., A Model of Retinal Local Adaptation for the Tone Mapping of Color Filter Array Images, Journal of Optical Society of America, A, Vol. 24, N 9, September, 1st, 2007, pp. 2807-2816Benoit 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 regarding spatio-temporal filter and the bigger retina model : 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.
Implementations§
Trait Implementations§
source§impl AlgorithmTraitConst for RetinaFastToneMapping
impl AlgorithmTraitConst for RetinaFastToneMapping
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 RetinaFastToneMapping
impl Boxed for RetinaFastToneMapping
source§unsafe fn from_raw(
ptr: <RetinaFastToneMapping as OpenCVFromExtern>::ExternReceive,
) -> Self
unsafe fn from_raw( ptr: <RetinaFastToneMapping as OpenCVFromExtern>::ExternReceive, ) -> Self
source§fn into_raw(
self,
) -> <RetinaFastToneMapping as OpenCVTypeExternContainer>::ExternSendMut
fn into_raw( self, ) -> <RetinaFastToneMapping as OpenCVTypeExternContainer>::ExternSendMut
source§fn as_raw(
&self,
) -> <RetinaFastToneMapping as OpenCVTypeExternContainer>::ExternSend
fn as_raw( &self, ) -> <RetinaFastToneMapping as OpenCVTypeExternContainer>::ExternSend
source§fn as_raw_mut(
&mut self,
) -> <RetinaFastToneMapping as OpenCVTypeExternContainer>::ExternSendMut
fn as_raw_mut( &mut self, ) -> <RetinaFastToneMapping as OpenCVTypeExternContainer>::ExternSendMut
source§impl Debug for RetinaFastToneMapping
impl Debug for RetinaFastToneMapping
source§impl Drop for RetinaFastToneMapping
impl Drop for RetinaFastToneMapping
source§impl From<RetinaFastToneMapping> for Algorithm
impl From<RetinaFastToneMapping> for Algorithm
source§fn from(s: RetinaFastToneMapping) -> Self
fn from(s: RetinaFastToneMapping) -> Self
source§impl RetinaFastToneMappingTrait for RetinaFastToneMapping
impl RetinaFastToneMappingTrait for RetinaFastToneMapping
fn as_raw_mut_RetinaFastToneMapping(&mut self) -> *mut c_void
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§impl RetinaFastToneMappingTraitConst for RetinaFastToneMapping
impl RetinaFastToneMappingTraitConst for RetinaFastToneMapping
fn as_raw_RetinaFastToneMapping(&self) -> *const c_void
impl Send for RetinaFastToneMapping
Auto Trait Implementations§
impl Freeze for RetinaFastToneMapping
impl RefUnwindSafe for RetinaFastToneMapping
impl !Sync for RetinaFastToneMapping
impl Unpin for RetinaFastToneMapping
impl UnwindSafe for RetinaFastToneMapping
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 unsafe in a general case as it leads to having non-exclusive mutable access to the internal data,
but it can be useful for some performance sensitive operations. One example of an OpenCV function that allows such in-place
modification is imgproc::threshold
. Read more