Delete selected image in 2D array imtool

Hello,
below is the values in my 2D array represented using imtool. Is there a way to select one of the curve to be deleted but keep the rest the same (index and values of the curve that is not deleted the same). I need to do some calculations on one curve at a time without having the other curve values influence the calculation. Is there a way? Thanks so much.

7 Comments

Please attach an example array. How do you identify the set of points that correspond to a curve?
attached is the array
Looks like the "curves" are made up of the points with negative values. Do you already have an algorithm for distinguishing the points that are in each individual curve?
Jon
Jon on 1 Nov 2023
Edited: Jon on 1 Nov 2023
Actually, looking closer I see that the boundaries of the "curves" are the negative values, but the "curves" have some width. For example on the right hand edge we have a negative pixel at (48,168), but also one a little below that at (52,168). So what exactly do you mean by removing a curve? Is it all the pixels included between the boundaries as well as the boundary pixels?
In any case, how do you propose to identify the points that are in one "curve" from the points that are in the other "curve". Easy to see with the human eye, but what will you algorithm be?
I need to remove one "curve" - all pixels included between boundaries as well as the boundary pixels of that curve. I could do it in paint to color one of the "curve" with the same backround (black) for example so that there's only 1 curve that has different values than the background. Then I can read back that manipulated image. I'm just wondering if there's an easier way to do it all in matlab (such as imfreehand for example - but can it be done in imtool image?).
I don't have an algorithm to distinguish between those 2 curves since they're captured data.
Is the situation always quite similar to the one shown in the example image, that is, two similarly shaped "curves" with one translated vertically relative to the other?
in this test case, yes.

Sign in to comment.

 Accepted Answer

No, there is no way to "paint" or mask pixels using imtool. You'll have to write a script for that. Demo attached.

3 Comments

Jon
Jon on 2 Nov 2023
Edited: Jon on 2 Nov 2023
For future reference, is there some algorithmic approach that could be used to automate the op's task? It's interesting that it is immediately clear to a human how that there are two translated "curves" in this image, and a human could easily, "paint" over the pixels in one of the "curves", but is not obvious (at least to me) how/if you could automate this.
@Jon yes, there are automatic ways. I made a partial stab at it but it's not done. It's only partially working and I don't have time to finish it. I've attached as far as I got. It will take maybe another half hour or hour to finish it and I don't have time. Finish it if you want.
Hi @Image AnalystThanks for sharing your code. It seemed like a challenging problem and I was interested to see how you would approach it. I will look through your code so I can learn more about how this type of problem can be solved.

Sign in to comment.

More Answers (0)

Categories

Products

Release

R2023b

Asked:

DB
on 1 Nov 2023

Commented:

Jon
on 3 Nov 2023

Community Treasure Hunt

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

Start Hunting!