Why doesn't bwconncomp detect each connected component as expected?

3 次查看(过去 30 天)
Hi everyone!
I have the following binary image M
I have a problem with bwconncomp. My aim is to generate Voronoi diagrams using as input not single points but blobs/connected components. However the command bwconncomp fails to detect each connected component as expected; as you can see from the following figure, it seems to calculate the centroid of every cluster of pixels, which is not what I want because I would obtain the voronoi diagram around the yellow shapes of the first figure, not around a single centroid point. How can I solve this? I attach an extract of my code and a zip file containing the functions and the main code called codice_gvd.m. Thanks in advance
%% Pose
% Initial Pose
xs = 70; ys = 76; % valori iniziali 55 e 33
% Goal Pose
xg = 50; yg = 50; % valori iniziali 50 e 50
% Pose Matrix
pose = zeros(sz(1),sz(2));
pose(ys,xs) = 1;
pose(yg,xg) = 1;
%% Voronoi Road Map
figure('color','k');
hold on;
set(gcf, 'InvertHardCopy', 'off');
CC = bwconncomp(M);
p = CC.PixelIdxList;
m = zeros(length(p), 2);
for ii = 1:length(p)
[r, c] = ind2sub(size(M), p{ii});
m(ii,:) = [mean(c), mean(r)];
end
voronoi(m(:,1), m(:,2));
title({'Voronoi Road Map';'* - Represents Starting and Goal Position '},'color','w');
spy(pose,'*r')
  2 个评论
Walter Roberson
Walter Roberson 2022-6-6
CC = bwconncomp(hit);
we need hit for testing purposes. Also if hit is derived from something else it would help to see the logic chain
Loren99
Loren99 2022-6-6
@Walter Roberson I have uploaded the zip file containing the main code 'codice_gvd' and other folders that are the functions and class functions needed to run the main code

请先登录,再进行评论。

回答(1 个)

Image Analyst
Image Analyst 2022-6-6
Your binary image, hit, is a 1-D vector, not really an image. So not sure why you seem to be expecting that it's a 2-D image.
  4 个评论
Loren99
Loren99 2022-6-6
@Image Analyst exactly! I would like to obtain the skiz (voronoi diagram) around these several irregularly shaped blobs. I have tried several algorithms: with the algorithm used here https://it.mathworks.com/matlabcentral/answers/1734135-how-to-eliminate-some-useless-lines-in-an-image there is the problem that even if I obtain the lines around the irregular shapes, I do not know how to do a pruning to remove the useless lines (the ones that are directly attached to the shapes). So I have tried another algorithm (the one that I have posted here and in the zip file) using bwconncomp, thinking that in this way creating connected components, maybe the in-built function voronoi does not generate that useless lines. Instead what happens is that bwconncomp generates the centroids of the irregular shapes and the voronoi diagram is created around these points, not around the shapes. I hope this is clear now, sorry

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 3-D Volumetric Image Processing 的更多信息

产品


版本

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by