How to Properly Normalize Noisy Image Frames in Dataset ?

4 Ansichten (letzte 30 Tage)
Miguel
Miguel am 17 Jul. 2023
Kommentiert: Miguel am 29 Jul. 2023
Hello everyone!
I hope that you all are doing great. Using an infrared camera, I recorded 15 mins (about 2300 frames) of how a certain nerve reacts to an applied stimulus. Motion of the patient introduced some motion artifacts, particularly in the first 400 frames of the recording (see screenshot 1). What is the best way to normalize those noisy frames and potentially all the frames collected? My goal is to dimisnish noise from all frames without negatively affecting my ROI which is the hot spot circled with purple in screenshot 3. The end goal is to track this ROI over time.
I have been trying different ways where I use samples from the frames not affected by motion to normalize the frames affected by motion but what I have done does not convince me as a proper approach. Any insights you can share with me will be highly appreciated. If you want a sample of the dataset, just let me know. Thanks for your attention and help!
Screenshot 1 = the mean intensity of each of the 2300 frames recorded. Note: The peaks obsevred in the graph below are caused by the applied stimulus (I do not need to normalize this).
Screenshot 2 = One of the 400 frames affected by motion.
Screenshot 3 = One of the frames not affected by motion.

Akzeptierte Antwort

Image Analyst
Image Analyst am 27 Jul. 2023
What I'd try is to pick some small rectangle of the image that you think should not be affected by whatever is going on in the image (what you hope to measure, not the flashes). Let's say that intensity, measured from a "good" frame is 50. But for bright flashing images it might be 200. So you'd need to divide by 200 to get it to the range 0-1, then multiply by 50 to get it into the range it should be. So
% Get intensity of a good frame in the upper left 50x50 pixel region.
refIntensity = mean(RefThermalImage(1:50, 1:50), 'all')
% Then for all frames (put this in the loop over all your movie frames).
thisIntensity = mean(thisThermalImage(1:50, 1:50), 'all')
thisThermalImage = double(thisThermalImage) * refIntensity / thisIntensity

Weitere Antworten (0)

Produkte


Version

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by