Extracting coordinates values for the line.

Hi,
I want to extract the coordinates for the white points along the main line where I am getting bit of noise around with additional 1 or 2 points in some columns just around the central line. I extracted the data by applying sobel filter on a displacement field and then removed some extra noisy data using bwareopen but now I am stuck with these extra points and am unable to get rid of these. Any suggestions regarding this? I have attached the displacement field matrix in .mat file.
Annotation 2019-09-03 215357.png

3 Commenti

The attached data seems to be an original gray-scale image, as shown below. You mean, you would like to extract the coordinates of the border line between dark and light color highlighted in the red ellipse?
load('v.mat')
imshow(v,[])
sampleImg.png
If so, that's very easy, just threshold and scan across columns using find() on every column to find the first row with something in it.
Whoever told beginners that the first step to successful image analysis, and the easiest way to proceed, is to do edge detection, should be take out behind the woodshed and beaten. Is there a concerted effort by professors to spew this nonsense? It makes it unnecessarily hard for beginners.
@akira Yes! this is the area I am interested in to get just a single point in each column which would give me the original crack shape.
@Image Analyst. I tried to look for some solutions on the forum and read a comment somewhere which suggested to use edge detectors. Are you talking about multithresholding?

Accedi per commentare.

 Risposta accettata

How about the following?
% Load data and convert to gray-scale image
load('v.mat');
Igray = mat2gray(v);
% Apply multilevel (N = 2) image thresholds
th = multithresh(Igray,2);
Iseg = imquantize(Igray,th);
% Extract the edge between Iseg == 1 and Iseg == 2
se = strel('disk',1);
BW1 = bwperim(Iseg == 1);
BW1 = imdilate(BW1,se);
BW2 = bwperim(Iseg == 2);
BW2 = imdilate(BW2,se);
BWedge = BW1 & BW2;
BWedge = bwmorph(BWedge,'skel',Inf);
% Show the result
figure
imshow(BWedge)
edge.png

1 Commento

Hi Akira,
I am trying the code that you shared for another data set with almost the same configuration but somehow the technique is not robust. Any ideas on how to make it more versatile rather than just a particular case?

Accedi per commentare.

Più risposte (0)

Richiesto:

il 3 Set 2019

Commentato:

il 12 Ott 2019

Community Treasure Hunt

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

Start Hunting!

Translated by