- binarize image first
- remove noise using bwareaopen
- use edge
- remove noise if needed using bwareaopen
How to detect a curve (surface roughness) from image?
15 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Sepehr Simaafrookhteh
am 4 Apr. 2021
Kommentiert: Sepehr Simaafrookhteh
am 17 Apr. 2021
I am working with a stack of 2D projections from X-ray microCT. I am going to find the coordinates of surface roughnesses curvature on 2D images and then extend it to 3D to have a cloud of points.
Images are like this:
I used "edge" function with different methods, but the results are not perfect, there are some separated lines and noises. I appreicate any better solution for this purpose and how can I get the coordinates of the detected curve? I assume then I have to apply a loop to get the results for the whole volume.
Thank you in advance for your help/comments.
0 Kommentare
Akzeptierte Antwort
darova
am 4 Apr. 2021
Bearbeitet: darova
am 4 Apr. 2021
7 Kommentare
darova
am 6 Apr. 2021
Let's say A is your image
A = sprintf('image.png'); % read first image to get size
[m,n] = size(A);
ix1 = 1:n; % value for interpolation
Z = zeros(500,n); % create matrix for 500 images profiles
for i = 1:500
s = sprintf('image%d.png',i);
A = imread(s); % read binary image
[~,y] = max(A); % find max index (ones)
ix = find(y); % find non-zero elements
y1 = interp1(ix,y(ix),x1); % inteprolate zero values
Z(i,:) = y1; % fill 2d matrix
end
surf(Z)
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Image Processing Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!