How can i detect the boundary using bwtraceboundary function ??

4 vues (au cours des 30 derniers jours)
Surendra Ratnu
Surendra Ratnu le 1 Mai 2023
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

Réponses (2)

Antoni Garcia-Herreros
Antoni Garcia-Herreros le 2 Mai 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 commentaires
Image Analyst
Image Analyst le 5 Mai 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 le 5 Mai 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.

Connectez-vous pour commenter.

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


En savoir plus sur Parallel Computing Fundamentals dans Help Center et File Exchange




Community Treasure Hunt

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

Start Hunting!

Translated by