diff --git a/src/noise.rs b/src/noise.rs index 613211ad..5ebcb04e 100644 --- a/src/noise.rs +++ b/src/noise.rs @@ -33,6 +33,68 @@ where } } +/// Adds multiplicative speckle noise to an image with the given mean and standard deviation. +/// Noise is added per pixel for realistic sensor noise simulation. +pub fn speckle_noise
(image: &Image
, mean: f64, stddev: f64, seed: u64) -> Image
+where
+ P: Pixel,
+ P::Subpixel: Into (image: &mut Image , mean: f64, stddev: f64, seed: u64)
+where
+ P: Pixel,
+ P::Subpixel: Into (image: &Image , mean: f64, stddev: f64, seed: u64) -> Image
+where
+ P: Pixel,
+ P::Subpixel: Into (image: &mut Image , mean: f64, stddev: f64, seed: u64)
+where
+ P: Pixel,
+ P::Subpixel: Into (image: &Image , rate: f64, seed: u64) -> Image
@@ -84,4 +146,22 @@ mod benches {
});
black_box(image);
}
+
+ #[bench]
+ fn bench_speckle_noise_mut(b: &mut Bencher) {
+ let mut image = GrayImage::new(100, 100);
+ b.iter(|| {
+ speckle_noise_mut(&mut image, 0.0, 0.4, 1);
+ });
+ black_box(image);
+ }
+
+ #[bench]
+ fn bench_speckle_noise_per_channel_mut(b: &mut Bencher) {
+ let mut image = GrayImage::new(100, 100);
+ b.iter(|| {
+ speckle_noise_per_channel_mut(&mut image, 0.0, 0.4, 1);
+ });
+ black_box(image);
+ }
}