Azzera filtri
Azzera filtri

How can i detect the boundary using bwtraceboundary function ??

4 visualizzazioni (ultimi 30 giorni)
I want to detect the seperate two boundaries (inner and outer boundary) in our case.. I want to seperately detect inner and outer boundary and calculate the distance between them along the boundaries. In the image.png, I shown the exmple how will i want to do seperate the boundary (red and green colour boundary) which i want to seperate into inner and outer boundary. please give me a solution so i can automatically select the starting point and store the boundary data into two matrix.
Thank you for help

Risposte (2)

Antoni Garcia-Herreros
Antoni Garcia-Herreros il 2 Mag 2023
Hello Surendra,
You can take a look at this thread.
But the general idea would be to:
  1. Crop ROI
  2. Segment your image
  3. Obtain the boundaries and calculate thickness
clear all
close all
I=imread('Original_image (2).png');
%% Crop region
%% Segment
se = strel('disk',5);
skelImage = bwskel(BWc, 'MinBranchLength', 10); % First guess. Strangely bwskel() doesn't seem to have any short spurs, no matter what MinBranchLength is.
imshow(imoverlay(BWc, skelImage, 'r'));
title('Binary image with skel')
%% Obtain distances
edtImage = bwdist(~BWc); %Distance of to nearest 0 value
radii = edtImage(skelImage); % Extract the distances only along the skeleton
% These are the half widths. Multiply by 2 to get the full widths.
averageWidth = 2 * mean(radii)
averageWidth = single 11.9689
%% Find the boundaries
E=edge(BWc); % Find the edges
CC = bwconncomp(E); % Isolate the different components
Pout1=[rowOut1,colOut1]; % Pixels forming Outer boundary 1
Pin=[rowIn,colIn]; % Pixels forming Inner boundary 1
Pout2=[rowOut2,colOut2]; % Pixels forming Outer boundary 2
hold on
Hope this helps
  3 Commenti
Image Analyst
Image Analyst il 5 Mag 2023
Then why did you accept the answer? It's not how I would have done it. I don't know whether to give you my solution or not -- maybe you've already solved it yourself since it's rather easy if you use bwboundaries instead of bwtraceboundary. Let me know if you need my solution.
Surendra Ratnu
Surendra Ratnu il 5 Mag 2023
Hi Image Analyst.... I used bwboundaries instead of bwtraceboundary but in bwbouries it dectect all boundaries but i need to trace inner and outer boundary seperately and need the co-ordinate of the inner and outer boundary seperately. Please give me the your solution it will be great help for me. Can you just eloborate on " how to seperate the inner and outer boundary seperately using bwboundries ??".
Thank you for your answer.

Accedi per commentare.

Image Analyst
Image Analyst il 5 Mag 2023
Look at the documentation for bwboundaries. If you get all the output variables, you'll know which are exterior or interior/nested boundaries.


Scopri di più su Parallel Computing Fundamentals in Help Center e File Exchange




Community Treasure Hunt

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

Start Hunting!

Translated by