问题标签 [morphological-analysis]
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.
matlab - 使用 bwlabel 计算最大的连接对象/组件
假设我有一个二值图像BW
,我用bwlabel
它来查找 1 的连接区域。我想找到这个结果的最大组(不是 0)以及这个组在图片中的位置。这个怎么做?
matlab - Matlab ordfilt2 或加权局部最大值的替代方案
我想在 Matlab 中计算向量的加权最大值。对于加权最大值,我打算如下:
2*N+1
给定一个权重向量W={w[-N], w[-N+1] .. w[0] .. w[N]}
和一个输入序列A
,加权最大值是一个向量 M
,其中 m[i]=max(w[-N]*a[i-N], w[-N+1]*a[i-N+1], ... w[N]*a[i+N])
因此,例如给定一个向量A= [1, 4, 12, 2, 4]
和权重W=[0.5, 1, 0.5]
,加权最大值将是M=[2, 6, 12, 6, 4]
。
这可以使用 来完成ordfilt2
,但ordfilt2
使用权重作为加法而不是乘法。
我实际上正在研究 4D 矩阵,但任何 1D 解决方案都可以工作,因为 4D 权重矩阵是可分离的。
我目前的解决方案是生成输入数组的移位副本,A
根据移位对它们进行加权并最大化所有数组。Shift 是使用circshift
并且是过程中的瓶颈来执行的。事实证明,通过索引“手动”生成移位矩阵甚至更慢。
您能提出任何更有效的解决方案吗?
编辑:对于一个积极的 A,M=exp(ordfilt2(log(A), length(W), ones(size(W)), log(W)))
可以完成这项工作,但仍然需要比上述circshift
解决方案更长的时间。我仍在寻找更有效的解决方案。
matlab - Matlab中的多尺度形态图像简化
大家好,我目前正在尝试在 Dorini 使用论文“Multiscale Morphological Image Simplification”的 SMMT 算子。由于没有订阅就无法访问该页面,因此我在此处发布相关详细信息:
请注意,我将相关文章的部分内容作为图片发布。我不知道如何在 stackoverflow.com 中编写方程式。我想将此 SMMT 运算符用作图像处理中的预处理步骤。我写下的代码如下:
代码的结果应该是这样的:(再次来自论文)
:。
我的结果是这样的:- 。
我的实现是否正确?可以进一步改进吗??任何建议都会有所帮助。提前感谢您的帮助!有关详细信息,请参阅Dorini 免费访问
arrays - 使用形态学数据执行线性判别分析 (LDA)
我有一堆使用包收集的形态学数据geomorph
。这些数据如下所示:
259 个矩阵(每个人一个文件)x
和y
20 个地标的坐标(列)。
该软件包geomorph
包含执行主成分分析 (PCA) 的工具,但我认为它不包含任何用于线性判别分析 (LDA) 的工具。还是有什么?
如何对此类数据执行 LDA?
解决方案可能来自包geomorph
或来自另一个包。修改geomorph
包中的功能plotTangentSpace
(例如功能。这个包的功能通常不是很长!)以创建我需要的功能。或者,也许这只是转换数据的问题,以便使用 MASS:::lda 可行(请参阅评论中的讨论)
笔记:
在上面列出的 20 个地标中,我有 4 个半地标(滑块)!半地标用于评估的不是点位置而是曲线。下面是我的矩阵,其中包含半地标的信息。该矩阵被调用semi$sliders
并用作 `gpagen 函数的参数,如下所示:
3D_Array_With_All_Individuals
是一个 3D 数组,其中每一层都是 259 个矩阵之一。
c++ - OpenCV 分水岭:4 点连接
我正在为 OpenCV 中的分水岭编写代码。
但我希望分水岭边界是 4 点连接而不是 8 点。
目前这是界面:
有人对此有任何解决方案吗?
此外,是否有任何简单的方法可以在 opencv 中执行形态分水岭以进行自动过度分割,当前的方法需要用户输入?
matlab - 清洁形态学操作
在 MATLAB 文档中,我可以在这里看到干净的形态学操作。问题是我无法使用它。我知道如何使用结构化元素,但是如果我输入imclean(img,SE)
or clean(img,SE)
,我会得到一个未定义函数的错误。该功能应该如何使用?
matlab - 在 MATLAB 中使用大小为 nxn 的邻域对灰度图像进行形态膨胀
扩张过程是通过将结构元素 B 放在图像 A 上并以类似于卷积的方式在图像上滑动来执行的。
我了解灰度图像的数学形态膨胀背后的主要概念,但我仍然有一个问题:
用户可以不选择结构元素的值吗?换句话说,我们可以通过选择结构元素的大小和形状而不指定其元素来对图像执行膨胀处理吗?
为了更精确,我将通过一个例子很好地解释我的问题:假设一个灰度图像I
要160 x 160
处理(在这种情况下是扩大)大小为 8 x 8 的邻域。我没有指定这个邻域的元素,所以它们的元素来自图像本身。例如我写了下面的matlab代码:
其中函数max_filter是:
这仍然被认为是形态扩张操作吗?回想一下,我使用了一个大小为 8 x 8 的结构元素。
matlab - 缩小时间序列的差距
我想合并右边的块(由两个较小的块组成)看起来与左边的两个块完全一样。我在考虑形态学操作,但这些往往会改变原始形状,从而失去准确性。是否有任何其他信号处理工具可以提供帮助?数据以时间序列的形式呈现。
shapes - 从图像中减少噪音/改善形状
使用图像分割,我从网络摄像头分割对象。但是由于光线不好,我在照片中得到了很多噪点。我现在想改进找到的对象的形状。我发现的唯一方法是图像打开和关闭,但结果没有我希望的那么好。有人知道其他方法吗?
在这个文件夹中,我有分割后的原始图像,关闭后的图像,以及我正在寻找什么样的图片的图片。
提前致谢