【发布时间】:2013-08-12 21:08:30
【问题描述】:
我有一个任务需要分析一个填充有彩色形状的图像并突出显示图像中的蓝色圆圈。为此,我将图像拆分为其 RGB 通道,并创建了仅包含蓝色像素的二值图像。使用斑点检测,我设法分割图像并找到每个形状的圆度。但是,当我尝试在圆形上放置边界线时,它会将边界放置在所有形状周围,而不仅仅是圆形。相关部分代码如下所示;
imshow(BBinEro)
for cnt = 1:length(BlueProps)
%disp(score);
if score(cnt) >= 0.98 %
text(BlueProps(cnt).Centroid(1),BlueProps(cnt).Centroid(2),num2str(score(cnt)),'color','red');
boundaries = bwboundaries(BBinEro);
numberOfBoundaries = size(boundaries);
hold on
for k = 1 : numberOfBoundaries
thisBoundary = boundaries{k};
if score(cnt) >= 0.98 %Only showing for circles
plot(thisBoundary(:,2), thisBoundary(:,1), 'g', 'LineWidth', 2);
end
end
hold off
end
end
“分数”是对 blob 圆形度的度量。分数为 1 表示该 blob 是完美的圆形。程序显示圆形在其质心处的圆度;使用相同的 if 语句,我尝试在它们周围插入一条边界线。任何关于如何修复此代码以使其仅显示圆圈边界的建议或意见将不胜感激。
所附图片显示了程序当前正在执行的操作。我想摆脱三角形和正方形周围的绿色边界。
【问题讨论】:
-
您应该更具体地了解代码中变量的含义,并特别指出哪些变量是特定于单个形状的,哪些是引用所有形状的向量。
标签: matlab image-processing binary blob boundary