- If two different detector elements observe the same part of the scene but produce different outputs, then that difference is due to fixed pattern noise.
- By detecting such inconsistencies across multiple observations like over time as the scene shifts, the parameters to compensate for the noise can be learnt.
Scene based correction in thermal imaging using matlab
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I want to do a project on scene-based correction techniques, where information from the observed scene itself is used to reduce fixed pattern noise. For example, two different detector elements that observe the same part of the scene should produce the same output. If not, correction parameters can be slightly adjusted to compensate.Pls guide me how can I develop such code.
0 Commenti
Risposte (1)
Abhipsa
il 12 Giu 2025
Modificato: Abhipsa
il 12 Giu 2025
I understand that you want to develop a scene-based correction technique that reduces fixed pattern noise using information from the observed scene itself. Just to elaborate the understanding:
You can refer to the below code snippet that demonstrates the same:
% Parameters
scene_size = 100; % Scene has 100 pixels
num_detectors = 10; % 10 detectors observing the same scene
num_iterations = 1000; % Total iterations to simulate
learning_rate = 0.01; % Rate at which offsets are corrected
% Create synthetic 1D scene, this could be random or real values
scene = sin(linspace(0, 2*pi, scene_size)); % Example: smooth pattern
% Simulate detector offsets (fixed pattern noise)
true_offsets = 0.2 * randn(1, num_detectors); % Each detector has its own offset
% Initialize estimated offsets (to be learned)
estimated_offsets = zeros(1, num_detectors);
% For visualization
offset_history = zeros(num_iterations, num_detectors);
% Simulate observations and corrections
for iter = 1:num_iterations
% Randomly select a scene location
scene_idx = randi(scene_size);
true_value = scene(scene_idx);
% Randomly pick 2 detectors to observe the same point
d1 = randi(num_detectors);
d2 = randi(num_detectors);
while d2 == d1
d2 = randi(num_detectors);
end
% Simulate raw outputs with FPN (true + true offset)
output1 = true_value + true_offsets(d1);
output2 = true_value + true_offsets(d2);
% Simulate corrected outputs (what we are learning)
corrected1 = output1 - estimated_offsets(d1);
corrected2 = output2 - estimated_offsets(d2);
% Compute error between corrected outputs
diff = corrected1 - corrected2;
% Adjust estimated offsets to reduce mismatch
estimated_offsets(d1) = estimated_offsets(d1) + learning_rate * diff;
estimated_offsets(d2) = estimated_offsets(d2) - learning_rate * diff;
% Save for plotting
offset_history(iter, :) = estimated_offsets;
end
I hope this resolves your query.
0 Commenti
Vedere anche
Categorie
Scopri di più su Sequence and Numeric Feature Data Workflows in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!