How to automatically detect the patterns in the plot?

Is it possible to make a matlab code that can automatically detect the patterns in the plot?
In the plot attached below, we can see some sharp protruding features (indicated by red lines). I would like to generate the MATLAB code to detect the X, Y and Z values of these features. These are dispersive patterns. I have 1000's of images and would like to automate the program to obtain the detect these features in each plot.
Any help will be greatly appriciated.

Answers (1)

I'd scan down the image using bwareafilt to get the largest stretch of white in each line. Then record the endpoints. Then use findpeaks to find the peaks (where you put your red lines.) Here's a start, assuming your data is a matrix and the value of the white region is 255.
binaryImage = grayImage == 255;
% Extract two largest blobs only.
binaryImage = bwareafilt(binaryImage, 2);
imshow(binaryImage);
[rows, columns] = size(binaryImage)
leftEdges = nan(rows, 1);
rightEdges = nan(rows, 1);
for row = 1 : rows
thisRow = binaryImage(row, :);
% Get the largest white blob.
biggestBlob = bwareafilt(thisRow, 1);
% Find the left edge
leftEdges(row) = find(biggestBlob, 1, 'first') - 1;
% Find the right edge
rightEdges(row) = find(biggestBlob, 1, 'last') + 1;
end
% Find peaks
[leftPeaks, leftIndexes] = findpeaks(leftEdges);
% Find right peaks - need to invert the signal so we actually find the
% valleys, which are peaks pointing to the left.
[rightPeaks, rightIndexes] = findpeaks(-rightEdges);
rightPeaks = -rightPeaks;

4 Comments

Hey thanks for your reply, but I am not able to undestand anything.
Do I need to input jpg image? or my actual data?
I attached data for the first plot. Could you please try it on this data and explain to me what I have to do? Use pcolor to plot the data and view at 90x270 angle
Could you please try.
I think it's easiest if it's laid out on a grid, in an image like you did with pcolor. What do the x, y, and z represent? Can you use griddedInterpolant or scatteredInterpolant to get them into a 2-D array?
Demo attached.
I am sorry but I do not have image processing toolbox!
If you need to do image processing work, you really should get Image Processing Toolbox.

Sign in to comment.

Asked:

MP
on 29 Jul 2022

Commented:

on 3 Aug 2022

Community Treasure Hunt

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

Start Hunting!