[Image Analysis] Detect bright targets in images by gradient direction and intensity patterns (or any other applicable approach)

25 次查看(过去 30 天)
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 个评论
KALYAN ACHARJYA
KALYAN ACHARJYA 2023-5-13
编辑:KALYAN ACHARJYA 2023-5-13
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?
Simone A.
Simone A. 2023-5-13
编辑:Simone A. 2023-5-13
Hi @KALYAN ACHARJYA thanks a lot for your time.
Short answer: there can be different targets (or features) within an image that i need to identify. These can vary both in sizes and shapes (i.e., the figures above, or the figure below).
To provide a bit of context: These are satellite scenes (acquistion frequency ~3 scenes per week), and I am trying to identify the features that are hotter (thus brighter) than surrounding. The aim is to identify wildfires and lava flows.
What I need to detect: The fatures that should be considered, are those showing a steep temperature increase and where the gradient is converging toward the hottest point (or the ottest region), like in the first 4 pictures above.
*EDIT: although the gradient seem to be a fair way of recognising such bright areas, that is not mandatory and any other approach is more than welcome!
I have attached another scene to this comment (img). This scene shows an eruption with a lava flow. As you can see there are two major hot patches (they both need to be detected). Besides, (indicated by the blue arrows), you can see some sligthly brighter areas (i.e., cooling flows). As these are linked to the brightest region, they should be all detected as "hot".
I hope this was clear enough, and I do apologise in advance for any confusion my explanation might have caused.
If I can make it any clearer or provide more scenes please do not hesitate to ask.
Any help would be immensily appreciated.
Kindest regards.

请先登录,再进行评论。

回答(1 个)

Ayush
Ayush 2023-8-25
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:
  1. 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
  2. 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
  3. 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

产品


版本

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by