问题标签 [image-morphology]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
583 浏览

python - OpenCV - 形态关闭正在删除图像边框

我从显微断层扫描中获得了一张非常嘈杂的图像,我需要获得一般形状才能获得质心作为对齐点。我正在使用经过多次迭代的形态闭合来仅获得一个具有良好结果的轮廓,但该操作正在删除图像的边界;因此,当形状不在中心时,我会丢失数据。

我尝试使用不同的边框类型,但总是得到与您在图像示例中看到的相同的结果。我可以在不丢失边界数据的情况下使用此算法吗?是否存在另一种获取这些图像质心的方法?

对于不同的“噪声形状”,系统必须是自主的。

图片示例: https ://www.dropbox.com/sh/xaalq70skq2fgm2/AABOnfvLKXteavCPMX42Zvzca?dl=0

代码:

0 投票
2 回答
373 浏览

matlab - 仅水平垂直线

我是matlab的新手。我有一个图像块,如下图所示: 在此处输入图像描述

白色显示它们的值等于的1像素,黑色显示它们的值等于的像素0

我想得到vertical only lines。这意味着应删除水平线,如下图所示:

在此处输入图像描述

我也想得到horizontal only lines. 这意味着应删除垂直线,如下图所示:

在此处输入图像描述

我该怎么做Matlab?我更喜欢形态学操作。

0 投票
2 回答
945 浏览

matlab - 去除单个像素 Matlab

我有一个二进制图像。我在图像中有几个单个像素。单个像素是白色 (1),它们的所有邻域都是黑色 (0)。例如,下图显示了一个像素(中心)和两个像素(左下角):

0 0 0 0 0 0
0 0 0 0
0 0 1 0 0
0 0 0 0 0
1 1 0 0 0

如何在 Matlab 中通过形态学运算去除单个像素?

0 投票
1 回答
82 浏览

opencv - 我可以使用哪些操作来从此图像中提取硬边/线

我能够使用形态梯度很好地检测图像中的主要硬边缘 - 见下图。如何处理此图像以仅提取最硬/最白的边缘?阈值化要么导致图像非常嘈杂,要么导致缺乏细节/过度侵蚀的硬边缘。

在此处输入图像描述

我的阈值结果: 在此处输入图像描述

我的目标是这样的: 在此处输入图像描述

*注意:我正在尝试使用形态梯度操作作为一种轻量级的方法来检测图像中的硬/主要边缘。OpenCV 代码将在 raspberry pi 机器人上运行,因此我正在努力提高我的资源的效率 - 因此我使用的是形态梯度而不是 Canny 等。

原图: 在此处输入图像描述

0 投票
0 回答
60 浏览

matlab - matlab平滑垂直和水平矩形

有人可以帮我找到应该使用哪些形态学操作来平滑此图像上的垂直和水平矩形

在此处输入图像描述

更准确地说,我想要的是白色矩形变得连续。最终的应用是检测图像中的垂直线和水平线,实际上这个图像是一张地图,其中白色元素代表障碍物,我想检测墙壁。

所以我想要的结果应该是这样的:

在此处输入图像描述

0 投票
1 回答
38 浏览

matlab - 骨架化对象的重建

使用 matlab,我尝试将一个正方形和一个圆形物体变薄。它们的骨架几乎相同,形状像“X”。那么我可以假设,不能保证重建一个细化的对象吗?(而且我期待圆形物体的骨架只有一个像素宽的点,但我不知道这可能是因为一些噪音)

0 投票
0 回答
201 浏览

python - 数学形态学 - 盒子中球体的开运算

结构元素(球)半径为 1 的开运算的输出我在一个盒子里的一个球体上应用打开操作。框中的球体由应用了开口的二值图像表示。我使用的结构元素是一个不同半径的球。在应用打开操作时,如果我的结构元素(球)的半径小于球体的半径,那么我应该取回原始图像。但是,如果球的半径等于或大于球体,则输出图像应为空白。这是开盘操作应该做的。但是,当球半径小于球体半径时,我不会取回原始图像。我通过比较输入和输出球体的体积来知道这一点。我应该期待这样的结果还是我做错了什么?我正在使用 skimage 库来执行打开操作。我在下面附上了图片。输入和输出图像之间存在差异(应用打开操作后,某些点丢失。) TIA

半径为 2 的输入球体

这是我正在使用的一段代码。

0 投票
1 回答
476 浏览

python - 使用 Sci-Kit Image 包中的二进制打开操作进行粒度测量时出现内存错误

当我在 scikit-image 包中使用打开操作时出现内存错误(它使我的 RAM 饱和)。对于半径为 16 或更大的球体/球的 3-D 结构元素会发生此内存错误。我正在尝试使用粒度测量来测量图像(3D 数组)中对象的大小分布,因此我需要增加半径的结构化元素。内存需求也呈指数增长,我找不到解决办法。这个问题是否有一个简单的解决方案,以便我可以使用更大半径的结构元素?图像尺寸为 200X200X200。TIA

0 投票
2 回答
1095 浏览

matlab - 分割出那些有洞的物体

我有一个二进制图像,里面有圆圈和正方形。

在此处输入图像描述

一些圆形和正方形中有小孔,基于此,我必须生成一个图像,其中只有那些有孔/缺失点的圆形和正方形。我该如何编码?

目的:稍后,regionprops在 MATLAB 中使用,我将从这些对象中提取信息,即有多少是圆形和正方形。

0 投票
2 回答
445 浏览

matlab - 图像分割 Matlab

我有这个 BW 图像:

蒙版对象已连接

并使用函数 RegionProps,它显示一些对象是连接的:区域道具

所以我使用像 imerode 这样的形态学操作来分离对象以获得它们的质心:对象分离 质心

现在我将每个物体的所有质心都分开了,但是在侵蚀该区域时我丢失了很多信息,就像你在图 3 和图 1 中看到的那样。所以我在想是否有任何“扩张”图片 3 直到更接近图片 1,但没有再次连接对象。