问题标签 [mathematical-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.
algorithm - 数蜥蜴的鳞片
我的一个生物学家朋友问我是否可以帮助他编写一个程序来计算蜥蜴的鳞片(这是正确的翻译吗?)。
他给我发了一些图片,我在 Matlab 上尝试了一些东西。对于某些图像,它比其他图像更难,例如当有较暗(黑色)区域时。至少按照我的方法。我相信我可以在这里得到一些有用的帮助。我应该如何改进这一点?我采取了正确的方法吗?
这些是一些图像。
通过使用 MATLAB进行图像处理和计数,我得到了最好的结果。它基本上是将图像变成黑白,然后对其进行阈值处理。但我确实添加了一些侵蚀。
这是代码:
这些是一些结果。一个左上角你可以看到有多少被计算在内。
另外,我认为将计数元素标记为绿色很有用,这样至少用户可以知道哪些元素必须手动计数。
image-processing - 为什么同一个内核的多次打开/关闭没有效果?
我知道关闭和打开,但我还有一个问题!根据冈萨雷斯的“数字图像处理,第 3 版”,开/关的多次应用在第一次应用后没有任何效果!我想不通?任何人都可以帮忙吗?
python - 使用python来挑选图像中对象上不同部分的形态
我有一个图像分析/形态学问题,我需要一个基于 python 的解决方案。我是一名天文学家,试图从我的图像中掩盖宇宙射线轨迹(从 1 到 100 像素长的条纹)。我使用带有阈值的过滤技术挑选出曲目。它工作得很好,除非轨道碰到一个物体(恒星或星系)。正如您在下面看到的那样,我的轨迹上出现了斑点(如左图中的那个)和环(如右图中的那个)。
在这些图像中,您可以忽略波浪线和“X”,黑框是我的蒙版像素。我想做的是将轨道(长条纹)与斑点和环分开(仅供参考,环出现是因为过滤提高了对象边缘的重要性)。所以我的问题是如何对面具某些部分的形态进行分类并将斑点/环与轨道分开。
如果这样可以更容易地回答问题,这里是左侧图像的掩码:
理想情况下,我希望掩盖轨道,并且当它们与对象完全相交时,如右图所示,我想掩盖整个轨道,穿过对象,而不掩盖对象中不受影响的部分由轨道。所以我希望最终的蒙面结果看起来像这里显示的白色轨道:
谢谢!-亚当
image-processing - 二值和灰度图像的腐蚀/膨胀
我正在尝试找出二进制和灰度图像的侵蚀和膨胀之间的区别。
据我所知,这是二进制图像的腐蚀/膨胀......
侵蚀:如果SE索引对应的每个像素为1,则输出1。否则为0。
Dilation:如果与具有 1 的 SE 索引对应的至少一个像素为 1,则输出 1。否则为 0。
我的问题是,这对 16 位 (0, 65535) 灰度图像有何作用?
computer-vision - 从图像中提取石头
关于从这样的图像中提取石头的算法有什么想法吗?
石头 http://www.highdesertlapidary.com/media/5/a2079181363c96d4d9c754_s.JPG
石头都是不同的颜色。我需要将它们与背景和可能存在的任何标尺分开。
谢谢你。
image-processing - 二元腐蚀查询
我查看了这个链接:http ://en.wikipedia.org/wiki/Erosion_(morphology)#Grayscale_erosion
我可以理解,当您使用该结构元素查看像素时,原点周围的所有像素值都必须为 1,以便相关像素为 1。
但是,如果我的结构元素是:这种二元侵蚀将如何工作:
重新表述这个问题。位于十字架上的每个像素是否都需要为 1 才能使相关的原始像素为 1?
image-processing - Matlab,找到两个任意区域的交集
我有两个二进制图像,A 和 B(A 和 B 大小相同但对象不同)。每个图像中有许多区域。现在我想找到 A 中任何区域的邻居。我在 matlab 中使用 imdilate - 膨胀函数。因为扩张后 A 的区域会增加,所以这可能与 B 中的区域相连。我将 B 的区域添加到 A 并继续这样做。当我们无法将 B 的任何区域添加到 A 时,我将停止。
我不知道如何编码?你能帮助我吗。太感谢了 ?计算会花费很多时间吗?
python - Scipy ndimage 形态运算符使我的计算机内存 RAM (8GB) 饱和
我需要使用半径为 17 或更大的 3D 结构元素计算 3D 形状数组 (400,401,401) 的形态开口,大小为 64320400 字节。结构元素 ndarray 的大小为 42875 字节。使用scipy.ndimage.morphology.binary_opening
,整个过程消耗 8GB RAM。
我在 GitHub 上读过scipy/ndimage/morphology.py
,据我所知,形态侵蚀算子是用纯 C 实现的。我很难理解ni_morphology.c
源代码,所以我没有找到这段代码的任何部分导致这种情况巨大的内存利用率。添加更多 RAM 不是一个可行的解决方案,因为内存使用量可能会随着结构元素半径呈指数增长。
要重现问题:
这需要大约 7GB RAM。
有人对上述示例中如何计算形态学有一些建议吗?
matlab - 使用 Matlab 进行形态学操作
这是问题所在:
照相机拍摄了I
位于白色背景上的一分钱、一角硬币和四分之一硬币的图像,并且硬币不重叠。假设阈值B
处理成功创建了一个二进制图像,硬币区域为 1,背景为 0。
d_p
给定硬币、d_d
和以像素为单位的已知直径d_q
(注意d_d < d_p < d_q
)。如何使用形态学运算(膨胀、腐蚀、开运算和闭运算)以及逻辑和集合运算(AND、OR、NOT 和集合差)来生成三个二进制输出图像P
、D
和Q
,其中P
应该只包含一分钱,D
应该只包含一角钱,Q
应该只包含四分之一?
任何人都可以提供代码或一些提示吗?提前致谢!