gpt4 book ai didi

matlab - 如何在 matlab 中使用 "bwlabel"分别标记图像(文本图像)中的单独线条?

转载 作者:行者123 更新时间:2023-12-02 02:58:56 26 4
gpt4 key购买 nike

我已经识别并标记了图像中完全由文本组成的对象。您可以在所附图像中看到对象被标记为红色。所以,我想将第二行(或更多行)中的对象与第一行分开并给它们不同的颜色(每行会有不同的颜色)但我不能那样做。你有什么主意吗?感谢所有答案。这是我进行标记的 ma​​tlab 代码的一部分:

%% Label connected components
[L, Ne]=bwlabel(imagen);
%% Measure properties of image regions
propied=regionprops(L,'BoundingBox');
hold on
%% Plot Bounding Box
for n=1:size(propied,1)
rectangle('Position',propied(n).BoundingBox,'EdgeColor','r','LineWidth',2)
end

这是一个标签图像,不同行中的所有对象都具有相同的标签(相同的颜色=红色)。 enter image description here

最佳答案

如果线条不太弯曲,我认为以下方法应该有效。

  • 找到边界框的质心,或从 regionprops 本身获取质心,然后使用 k = 2 的 kmeans 对它们的 y 坐标进行聚类。结果并不完美,但很好。也许您可以将曲线拟合到聚类点,并去除异常值(例如 RANSAC)

cluster

  • 通过填充边界框来准备新图像。 filled

  • 准备一个矩形结构元素,其高度为1,宽度为最宽边界框的宽度。

  • 使用此结构元素对填充图像执行形态学闭合。这将水平连接区域。现在你得到一个分隔两个区域的 mask 。 closed

生成的图像是使用 opencv 获得的(我没有发布代码,因为它太乱了。希望说明足够清楚)。

关于matlab - 如何在 matlab 中使用 "bwlabel"分别标记图像(文本图像)中的单独线条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47697097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com