matlab - 如何从二进制图像中删除圆圈但保留线条?

标签 matlab image-processing

在下图中,如何去除圆圈以仅保留线条?

http://s4.postimage.org/wndlnwph9/morph.png

最佳答案

使用足够的结构元素进行形态学开运算:

enter image description here

打开[f, DiskMatrix[7]]

要完成整个任务,有几种方法,一些方法是从先前的结果(您可能会试验)中减去输入图像,还有一些不同的方法。其中一个截然不同的方法是先细化输入图像,将不与线条重叠的圆圈减少到单个像素(或接近单个像素,因为圆圈不完美),您可以轻松删除这些像素。然后你修剪这个图像并检测线(如下右图)。

enter image description here enter image description here

f = ImageCrop[Binarize[Import["http://i.stack.imgur.com/AurlZ.png"]]] (* Input *)
g = SelectComponents[Thinning[f], "Count", #1 > 10 &]          (* Second image *)
h = Pruning[g, 9];
lines = ImageLines[h, 0.1, Method -> "RANSAC", Segmented -> True];
Show[Dilation[h, 3], Graphics[{Thick, Red, Line /@ lines}]]    (* Third image *)

您可以尝试通过考虑显示的第一张图像中检测到的圆以及接近给定圆的线段的方向来补充给定连接组件中的红线。

关于matlab - 如何从二进制图像中删除圆圈但保留线条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14712699/

相关文章:

matlab - 应用函数在 Matlab 中获得多个状态

两个自变量(x,y 坐标)的带约束条件的 Matlab 最小二乘近似

image - RGB图像转二值图像

python - 如何检测连接图像上元素的角 "joints"?

c++ - 将几个 ROI 发送到另一个方法/函数来计算直方图?

matlab - 在 Matlab 中量化数据

image - MATLAB 阈值处理

matlab - 在 Matlab 独立 GUI.exe 中包含多个文件夹(包含图像、脚本等)

Matlab,创建额外向量的替代方法?

Python OpenCV : inverting colors in a numpy image array