@@ -29,17 +29,19 @@ First, let's create synthetic data that mimics photon-limited imaging:
2929
3030``` python
3131# Parameters for synthetic data
32- n_frames = 100
33- height, width = 512 , 512
34- mean_photons = 50 # Average photons per pixel
35- zero_level = 100 # Camera baseline
36- conversion_gain = 2.5 # ADU per photon
32+ n_frames = 30
33+ height, width = 120 , 120
34+ mean_photon_rate = 5.0 # Average photons per pixel (exponential distribution of rates)
35+ zero_level = - 10.0 # camera baseline
36+ conversion_gain = 2.5 # levels per photon
3737
3838# Generate Poisson-distributed photon counts
39- photon_counts = np.random.poisson(lam = mean_photons, size = (n_frames, height, width))
39+ photon_rate = np.random.exponential(scale = 5 , size = (1 , height, width))
40+ photon_counts = np.random.poisson(lam = np.tile(photon_rate, (n_frames, 1 , 1 )))
41+ measured_signal = photon_counts + np.random.randn(* size) * 0.2
4042
41- # Convert to camera signal (ADU)
42- camera_signal = (photon_counts * conversion_gain + zero_level).astype(' int16' )
43+ # Convert to camera signal
44+ camera_signal = (measured_signal * conversion_gain + zero_level).astype(' int16' )
4345
4446print (f " Data shape: { camera_signal.shape} " )
4547print (f " Data range: [ { camera_signal.min()} , { camera_signal.max()} ] " )
@@ -58,16 +60,16 @@ estimated_gain = result['sensitivity']
5860estimated_zero = result[' zero_level' ]
5961
6062print (f " \n True parameters: " )
61- print (f " Conversion gain: { conversion_gain:.3f } ADU /photon " )
62- print (f " Zero level: { zero_level:.1f } ADU " )
63+ print (f " Conversion gain: { conversion_gain:.3f } units /photon " )
64+ print (f " Zero level: { zero_level:.1f } " )
6365
6466print (f " \n Estimated parameters: " )
65- print (f " Conversion gain: { estimated_gain:.3f } ADU /photon " )
66- print (f " Zero level: { estimated_zero:.1f } ADU " )
67+ print (f " Conversion gain: { estimated_gain:.3f } units /photon " )
68+ print (f " Zero level: { estimated_zero:.1f } " )
6769
6870print (f " \n Estimation error: " )
69- print (f " Gain error: { abs (estimated_gain - conversion_gain):.3f } ADU /photon " )
70- print (f " Zero level error: { abs (estimated_zero - zero_level):.1f } ADU " )
71+ print (f " Gain error: { abs (estimated_gain - conversion_gain):.3f } units /photon " )
72+ print (f " Zero level error: { abs (estimated_zero - zero_level):.1f } units " )
7173```
7274
7375## Visualize Noise Model
0 commit comments