问题标签 [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 投票
2 回答
960 浏览

python - 在大图像中绘制边界框

在此处输入图像描述

我有一个大的二进制图像(4k x 7k pix),我想从中提取整个黄色部分作为一个矩形。我尝试了二元腐蚀以平衡黄色区域内的特征。然后我使用了 的bbox方法,skimage.regionprops但对于带有一个大 bbox 的大图像,它似乎不够快。你有什么建议吗?

0 投票
3 回答
1604 浏览

python - 怎么求这4个方格外角的坐标?(如果图像旋转,形态关闭/打开不保存正方形)

我正在编码的工具中的第一个处理步骤是找到 4 个黑色大方块的外角的坐标。然后,它们将用于进行单应变换,以对图像进行歪斜/反旋转(也称为透视变换),最终得到一个矩形图像。这是一个旋转和嘈杂输入的示例(在此处下载链接):

在此处输入图像描述

为了只保留大方块,我使用了诸如关闭/打开之类的形态转换:

输入文件(下载链接):

在此处输入图像描述

形态变换后的输出:

在此处输入图像描述

问题:输出的正方形不再是正方形,因此正方形左上角的坐标根本不精确

我可以减小内核大小,但它会保留更多不需要的小元素。

问题:如何更好地检测正方形的角?


笔记:

  • 由于形态闭合只是膨胀+侵蚀,我找到了罪魁祸首:

    这一步之后,还是没问题的:

    在此处输入图像描述

    然后

    在此处输入图像描述

    现在不行了!

0 投票
1 回答
2064 浏览

python - 在 python 中命中或错过形态以查找图像中的结构并没有给出所需的结果

我正在使用形态学包来创建我们正在使用的图像的骨架化版本。我们能够检测骨架化版本中的末端,但也希望能够检测结构产生新分支的点。我们开始尝试使用 3 个不同的矩阵来检测它们,命名为 h1,h2,h3。目前我们没有为过滤填充未命中矩阵,这是我们稍后将尝试添加的内容。如果我们想稍后尝试过滤,我们将使用 5x5 矩阵以便于编辑。

问题是即使矩阵 h1 和 h2 中的模式存在于骨架化版本中,它也无法检测到它们。矩阵 h3 确实有效。我似乎无法找到为什么会发生这种情况。

我们拍摄的原始图像。

图片:

骨架化的照片,我们还使用修剪使末端(分支的终点)更平滑。

0 投票
2 回答
2304 浏览

python-2.7 - 如何在骨架迷宫图像中找到最短路径?

我正在使用图像处理NetworkX搜索算法解决迷宫问题,需要找到这些线上两点之间的最短连接路径。

当我运行上面的代码时,我得到以下输出。

原始输入迷宫图像:

原始输入迷宫图像 --

处理图像后:

图像处理后--

XY 坐标上的节点点:

XY 坐标上的节点点--

路径信息:

路径信息

我可以成功执行图像处理操作,但是搜索算法会找到两个节点之间最短的鸟类飞行距离。我想找到沿着骨架的最短路径。

当我在这个github repo上工作时, 向我展示了使用 NetworkX 库解决这个问题,但我无法解决它,因为它没有提供任何细节。

如何使用图像处理和任何搜索算法找到沿着迷宫图像骨架的最短路径?

提前致谢。

0 投票
1 回答
2020 浏览

python - matlab 函数 strel("line") 到 python

我想在 python 中使用 matlab 函数 strel("line")

我找到了像scikit-learn / opencv / mahotas这样的 python 库

但我找不到它。

最后,我在pymorph 'seline'中发现了类似的函数,但它与 matlab strel 函数不同。


具体来说,我想使用(或实现) strel("line") 并旋转它。

像 strel("line", length, degree )


Matlab 示例 输出是

在此处输入图像描述

在此处输入图像描述

像这样。

谁知道matlab的strel("line",length,degree)函数的算法或者python库等于strel("line",length,degree)的,请告诉我。谢谢你。

0 投票
1 回答
1277 浏览

python-3.x - cv2.MORPH_CLOSE 将字母连接在一起


我正在使用 Opencv 对图像进行一些形态学操作: 输入 但是当我检测到它的轮廓时,它将一些字母连接在一起会产生问题。例如:

连体字

我可以用我的代码做一些调整来解决这个问题还是我必须以不同的方式来做这个?(但它必须是一个关闭算法或函数,因为它在预处理中非常有帮助)。

我正在使用的代码如下:

0 投票
2 回答
425 浏览

matlab - 如何在彩色图像上应用清除边界和去除小物体等形态学操作?

我有一个彩色图像:

图片

然后我应用了 k-means 算法并选择了这张图片作为合适的集群:

所选图像

我想使用 MATLAB 应用形态学操作,例如清理边界、填充孔和删除小对象,但这些操作仅适用于 MATLAB 中的灰度或二值图像。

我想只选择图像中间的单元格并提取轮廓作为最后一步。

代码是:

0 投票
1 回答
289 浏览

c++ - 二维字符数组的膨胀/腐蚀

我试图弄清楚为什么我的扩张图像功能没有产生正确的输出。

我的目标是变成这样:

进入这个:

对于每个扩张周期。

我没有想到它,但我也需要逆向侵蚀。

到目前为止,这就是我想出的(程序在命令行中使用用户输入argv):

dialationn到目前为止我实现的函数使用双循环循环遍历二维数组,当它找到应该被扩张的字符时,它会检查边界是否在附近并相应地设置坐标。

0 投票
1 回答
286 浏览

matlab - 提取图像中特定线或线段的一般方法

我有这个示例裁剪图像:

在此处输入图像描述

我需要使黑色粗线(水平和垂直)消失或提取,同时保持所有其他信息完好无损。这些特定的线条是 4 或 5 像素厚。我试过了:

  1. 如果图像被读取为 NumPy 数组,则对具有更多零/一的行进行简单过滤,但过滤条件不会终止,直到单行剩下零或一。
  2. 使用简单内核 (3,3) 进行侵蚀,但会留下一些噪音,因为有些符号也是厚黑色
  3. 使用图像宽度宽度的线结构元素进行膨胀,但连接不同符号的线段大小存在压倒性变化,导致每个小线段的基本信息丢失。

有人可以就什么样的结构元素、应该考虑什么样的形态学操作或任何其他聪明的启发式方法提供见解或指导?如果完成了粗黑线的提取,则输出将类似于以下随机线段网格: 在此处输入图像描述

0 投票
1 回答
393 浏览

python - numpy 向量化/更有效的 for 循环

我正在对图像进行侵蚀。图像已相应填充。简而言之,我有一个交叉元素(+),我将它放在图像的每个像素上,并从上方、下方、右、左和其自身的像素中选择该像素的最低值。

它效率低下,我无法找出矢量化版本。这必须是可能的,因为所有计算都是相互独立完成的。

基本上:

最终图像中的每个像素 = 原始图像的 min(pixel, above, below, left, right)

这就是我现在所拥有的。还是2圈。