[Image Analysis] Detect bright targets in images by gradient direction and intensity patterns (or any other applicable approach)
28 views (last 30 days)
Show older comments
Dear all,
I have tried quite a lot of approaches, but I still couldn't find something that actually works consistently accross all scenes.
I've got 100s of images to process (sample attached), where I need to detect brighter targets (with changable size). These however have complex backgrounds, change spatially, and have different intensities.
Anything you can think of would be massively appreciated. I have tried top hat, segmentation, k-clustering, but none of them seem to work.
I have noticed however that gradients might work(?):
[FX,FY] = gradient(I(:,:,1))
By looking at the gradient patterns, they seem to "detect" these patches relatively well by mean of their intensity and direction (converging toward the brightest (central) pixel). The problem is, I don't know how to extract these (brighter/anomalous) pixels (or flag it - i.e., 0= no target - 1=target) .
What I am trying to extract (and what I need to avoid) is well summarised in the schematic representations below:
Thank you very much in advance for any help!
To make it clearer you can see below some examples of the scenes I am dealing with (and what I am trying to extract):
This is the central brighter pixel and the single one on its left:
and this is the bigger patch on the left (please note, the red boundary is not accurate, assume +- 1 pixel):
And some more scenes:
5 Comments
KALYAN ACHARJYA
on 13 May 2023
Edited: KALYAN ACHARJYA
on 13 May 2023
Is it for a single point per frame (as shown in the first image) or can there be multiple? If multiple cases, can you explain please, which should be considered?
Answers (1)
Ayush
on 25 Aug 2023
Hey Simon,
I understand that you have 100’s of images (satellite scenes) to process which have complex backgrounds, different intensities and they change spatially. You need to identify brighter features than surroundings which depicts wildfires and lava flows. You already tried gradient approach for the same and you are looking for some more approaches for detecting the same.
Given the context, here are some specific techniques which are available in MATLAB that can be useful for you:
- Temperature Gradient Analysis: Use MATLAB's built-in functions to calculate the temperature gradient within the images. You can compute the gradient using functions like “imgradient” or “imgradientxy” . This will help in identifying regions where the temperature increases sharply. Link : https://www.mathworks.com/help/images/ref/imgradient.html
- Region Growing: Implement a region growing algorithm in MATLAB to identify regions with a converging temperature gradient. Start from the hottest point or region and iteratively expand the region by adding neighboring pixels that meet certain criteria (e.g., temperature difference threshold). This can be done using functions like “regiongrowing” or by implementing your own algorithm. Link : https://www.mathworks.com/matlabcentral/fileexchange/32532-region-growing-2d-3d-grayscale
- Change Detection: Utilize MATLAB's change detection algorithms to compare multiple satellite scenes acquired over time. By analyzing the temperature differences between consecutive scenes, you can identify regions where the temperature has significantly increased. Functions like “imabsdiff”or “imsubtract” can be used for image differencing. Link: https://www.mathworks.com/help/images/ref/imabsdiff.html
You can adapt these techniques to your specific dataset and experiment with different parameters to achieve the best results.
Hope that helps!!
Regards,
Ayush Goyal
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!