可以通过MATLAB 的bwboundaries函数标记二进制图像的边界.
如何获得所有段的边界作为二进制图像应该怎么做?
我已经对图像进行了分割,并想知道是否有办法在每个相邻段之间标记边界,而不对每个段应用形态学操作.
我添加了图像来说明我想要做的事情.实际上我想获得一个二进制图像,在所有段之间保持粉红色边界标记像素.因此,我可以借助Steve Eddins的imoverlay功能将它们与原始图像叠加在一起.
分割结果的随机彩色标记:

细分之间有明显标记的粉红色边界:

在 OpenCV 中处理带有文本的图像时,我的打开操作不会导致正确的输出数据。该问题与本文中描述的问题非常相似:http : //www.cpe.eng.cmu.ac.th/wp-content/uploads/CPE752_06part2.pdf
我所看到的,人们建议使用重建操作。OpenCV 或一些已知的库/代码中是否有任何内置机制来实现这一点?
如果轮廓勾勒出字母S的边缘(例如,在漫画中),我怎么能沿着这个字母的书脊获得一系列点,以便稍后使用直线,三次样条或其他曲线表示技术来表示这个形状? 我想在Python/OpenCV中使用30-40个点来处理和表示形状.
形态骨架化可能有助于此,但操作似乎总是产生错误的分支.有没有更好的方法将轮廓折叠成字母的'S'形状?

在下面的例子中,您可以看到错误的"蛇的舌头",就像形态骨架化产生的分支一样.我不知道如果这是算法应该做的事情是否错误是公平的,但对我来说,我不希望他们在那里.

以下是漫画sans字母:

骨架化的另一个问题是它的计算成本很高,但是如果你知道一种方法可以使它像分支一样形成"蛇舌",那么我会尝试一下.
python opencv image-processing computer-vision morphological-analysis
我有一个二进制图像的牌照.

我对图像进行了扩张,使边缘变粗,然后"填充",最后是减薄的侵蚀:

但我希望我的输出是这样的:

有人可以帮帮我吗?并告诉我如何获得所需的输出.
ab=imread('test1.png');
level=graythresh(ab);
ab=im2bw(ab,level);
se=strel('disk',1);
ab=imdilate(ab,se);
ab=imfill(ab,'holes');
ab=bwmorph(ab,'thin',1);
ab=imerode(ab,strel('line',3,90));
figure();imshow(ab,[]); title('floodFilling');
Run Code Online (Sandbox Code Playgroud) algorithm matlab image-processing flood-fill morphological-analysis
我想从它的形态骨架中创建一个物体的图像.MATLAB或C,C++代码中是否有任何功能?提前致谢.
原始图像及其骨架(使用获得bwmorph(image,'skel',Inf)):

我有兴趣为我的整个二进制图像找到坐标(X,Y),而不是每个组件的CoM分别找到.我怎样才能有效地做到这一点?我想使用regionprops,但找不到正确的方法.
我注意到各种面向Python科学图形的软件包之间的骨架几何存在显着差异。
使用OpenCV-Python的骨架:

使用pymorph的骨架:

使用scikit-image的骨骼:

可以观察到,OpenCV-Python和pymorph产生相同的骨架,而scikit-image则不然。骨骼差异的原因是什么?哪一个是合适的骨架?
我想从 NLTK 对非空白字符串获取形态分析结果。
例如:
字符串是"societynamebank".
我想要得到['society', 'name', 'bank']
如何在 NLTK 上获得该结果?
matlab ×4
python ×3
c++ ×2
opencv ×2
algorithm ×1
boundary ×1
c ×1
flood-fill ×1
nltk ×1
scikit-image ×1