问题标签 [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.
imagemagick - 为什么 Imagemagick 的形态膨胀算法与数学定义不同?
原始图像
生成者:
膨胀过程
使用一个 2x1 矩形作为中心点 (0,0) 的内核:
处理者:
预期产出
实际输出
问题
为什么输出出乎意料?我想知道 ImageMagick 如何处理膨胀。
以下是我的理解:
当内核的中心点迭代到原图的位置(0,1)时:
我认为 (0,1) 应该1
在 AND 操作之后。
python - 仅在一个方向上使用膨胀?
这是我在 Stack Overflow 上的第一篇文章,如果问题没有得到足够的定义,我很抱歉。
我目前正在从图像中提取表格数据,我需要一种仅在垂直方向上扩展文本的方法,以便获得清晰的列表示,用于进一步分割。
去除水平和垂直线并按位变换图像后,我处于这个阶段:
这个问题的理想目标是:
有没有对我的情况有帮助的方法或算法?
python - 如何从 opencv 的 morhpologyEx 获得关于图像边界的预期行为?
我正在使用 opencv(版本 4.1.0,带有 Python 3.7)对二进制图像执行形态关闭。使用大的关闭内核时,我遇到了边界问题。
我的代码是:
我读了这个问题和这个问题,还有文档,这导致我也尝试
像这样改变borderValue
论点morphologyEx()
但是这两种方法都不会导致我想要的。我在下图中总结了他们的行为。
我的原始图像在顶部。我期望的行为是两个点对于小内核(例如,内核 = 1)保持分离,并为足够大的内核合并在一起。
如您所见,对于默认边界(图像的左列),当 kernel = 6 时合并是正确的,但是一旦它变大,点就开始与边界合并。
使用恒定的边界(图像的右列),可以使用更大的内核,但是对于非常大的内核(例如内核 = 20),仍然会发生意外行为,其中点消失。
关闭内核作为最终软件中的用户参数保留,以便能够合并可能非常远的点。所以理想情况下,我需要能够处理比对象和边界之间的距离更大的平滑内核。
python - 使用 OpenCV 保持图像中线条的“连通性”
我正在研究手写数字识别问题,使用 OpenCV 进行预处理,使用 Keras/Tensorflow 进行推理。我在预处理中丢失某些功能时遇到问题,这些功能大致包括:
- 大津门槛
- 膨胀(使数字厚度与我用来预训练神经网络的另一个数据集相同)
- 使用 cv2.INTER_AREA 缩小到 28x28 像素(再次匹配预训练数据)
这是一个特征损失的例子:
这意味着是一个 2,顶部循环中的微小间隙对于帮助将其与 9 或 8 区分开来很重要。但是我的预处理版本失去了间隙,所以循环看起来是封闭的。
我已经问过一个类似的问题来保留漏洞并得到了很好的答案,尽管我认为我需要对其进行更多概括。
就像我自己的一个想法一样:也许有一种方法可以在膨胀操作中添加第二个更大的内核。该内核将具有与膨胀内核相同的形状,但只有轮廓(未填充)。然后,如果该轮廓触及原始图像中的任何白色像素,则取消该位置的膨胀动作。
注意:请随意发表评论,以更好的方式提出该标题(“连通性”是我能想到的全部)。
python - 自适应灰度膨胀实现
给定一个值从 0 到 的 2D 数组n
,我想通过每个像素包含的值来扩展每个像素,较高的值应该在扩张期间覆盖较低的值。
也就是说,半径内与像素值相等的任何像素,如果它们的值较小,则继承该值。例如,如果输入为[0 1 0 2 0 0]
,则输出为[1 2 2 2 2 2 ]
。
这怎么可能实现?
python - 删除二值图像中的单个像素
假设我有一个二进制图像,表示为一个numpy
矩阵,其中一个像素是背景 (0) 或前景 (1)。我正在寻找一种方法来删除前景中没有任何最近邻居的所有像素。
假设,图像矩阵为:
单像素删除后的结果图像应该是
到目前为止,我的方法是对所有可能的方向进行开口组合:
另一种方法是标记连接的组件并按索引删除它们,但是当涉及到计算复杂性时,这些解决方案感觉不是最佳的。
python - 形态闭合的迭代
我有一个像这样的代码:
我得到以下输出:
关闭块1:
关闭块2:
但后来我看到了这个。它说:
根据冈萨雷斯的“数字图像处理,第 3 版”,开/关的多次应用在您第一次应用后没有任何效果!
但这不是我得到的结果。我得到 1 对 3 次迭代,并得到不同的结果。我做错了什么或误解了什么?