How to detect frequency of noise and how to get rid of it in a set of images?

9 views (last 30 days)
Hello Everyone,
I hope that you all are doing great. I am developing a program to process IR images of nerve fibers. Our end goal is to measure the area of the flare (see dark organge arrow shown in the image below) evoked in these fibers over time. The area of the flare is being affected by noise evoked from blood pulsation (which has a frequency; see light orange arrow shown in image below), patients's movement, and other types of involuntary movement.
I would like to identify the frequency of the noise (we can seee in the graph below that some of the noise has a frequency) and get rid of it. I also would like to get suggestions about how to wisely remove other artifacts caused by iregular movement.
Your suggestions and help will be highly appreciated. I attached to this post a sample of the data and files you can use to check out the data.
If you have questions, please let me now. Thank you!
LINK FOR ACCESSING DATA: https://uofu.box.com/v/matlabquestion
SAMPLE IMAGES
The following image shows one of the frames negatively affected by motion. It shows how the pulsation increases the size of the flare. The light orange arrow points at the origin of the pulsation while the dark orange arrow points at the flare ( what we want to measure).
The following is the frame right after the one shown above. Note that this frame is not negatively affected by motion.
  4 Comments
Image Analyst
Image Analyst on 9 Dec 2023
Edited: Image Analyst on 9 Dec 2023
OK, masking is easy (see attached demos). And getting area after thresholding is easy.
% Find bright things.
brightPixels = grayImage > someThreshold;
% Get rid of everything outside the mask, which is where the flare is.
mask = brightPixels & handDrawnMask;
props = regionprops(mask, grayImage, 'Area', 'MeanIntensity');
The hard part is to know how much brighter the pulsation causes the flare to be so we can correct for it by darkening the flare area. Do you have any ideas about that? Otherwise if we just used the raw intensity and got the area from that, which may make it a little bit larger, then maybe there is a way to look at the areas over time and somehow figure out which ones were affected by pulsation and which were not.
Can you attach an original frame, in gray scale not pseudocolored, so I can show you how to do masking, thresholding, and to obtain the area?
Miguel
Miguel on 11 Dec 2023
Edited: Miguel on 11 Dec 2023
Hello Image Analyst,
Thank you for your comments and help. Masking and measuring area are things I have already accomplished. The part where I am stuck and would like to get some indeas about is how to get rid of the effect that pulsation (involuntary movement) and also voluntary movement have on the flare size and intensity.
Additionally, I would like to find a systematic way to get the frequency of the regular noise we have on the images. This will help us find possible origins for the noise.
Were you able to access the files I attached to my first post? There you can find the raw image arrays I work with. Note that the values are not intensity values but perfusion values which is a different type of information. For the purpose of helping helping me out, you can treat them as intensity values. You probably want to rescale the images at your convenience.

Sign in to comment.

Answers (0)

Categories

Find more on Images in Help Center and File Exchange

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!