|
|
1
359
我用激光探测到了这些峰
局部最大滤波器
. 以下是您的第一个4爪数据集的结果:
我还对第二个数据集9爪和 it worked as well . 以下是您的操作方法:
你需要做的就是使用
注意 邻里 . 如果峰值大小发生变化,则需要对其进行调整(应保持大致成比例)。 |
|
|
2
55
解决方案paw.txt . 源代码:
一些评论
为了更好地理解它,请对3x3阵列进行成像:
现在想象一下,将它们一个叠在另一个之上,并在相同的位置对元素求和。这些总和将完全相同的总和超过2x2平方与左上角在同一位置:
当求和超过2x2平方时,可以使用
为了记住峰值的位置,我将每个值(和)与其在平坦数组中的顺序位置进行耦合(参见
笔记我允许2x2正方形重叠。编辑后的版本会过滤掉其中一些,这样结果中只会出现不重叠的正方形。 选手指(一个主意)另一个问题是如何从所有的峰值中选择可能是什么。我有个主意,也许行得通,也许不行。我现在没有时间实现它,所以只需要伪代码。 我注意到,如果前面的手指停留在一个几乎完美的圆,后面的手指应该在这个圆里面。另外,前面的手指或多或少是等间距的。我们可以尝试使用这些启发式属性来检测手指。 伪代码:
这是一种暴力手段。如果N相对较小,那么我认为它是可行的。对于N=12,共有C{12^5=792个组合,乘以5种方法来选择一个后指,因此每只爪子要评估3960个病例。 |
|
|
3
35
这是一个 image registration problem
这里有一个粗略的方法
为了解决方向问题,可以为基本方向(北、东北等)设置8个左右的初始设置。单独运行每一个并丢弃两个或多个脚趾在同一像素处结束的任何结果。我会考虑更多,但这种事情仍在图像处理研究-没有正确的答案! 稍微复杂一点的想法:(加权)K-均值聚类。 没那么糟。
然后迭代直至收敛:
这种方法几乎肯定会给出更好的结果,你可以得到每个簇的质量,这可能有助于识别脚趾。 很抱歉,缺少实现细节或其他细节。我本想把它编出来的,但我还有最后期限。如果下星期没有别的办法奏效,请告诉我,我会试试看的。 |
|
|
4
23
这是本文中描述的峰值检测方法的2D版本 SO answer . 上图只是显示了按持久性排序的0维持久同源类。 我确实使用scipy.misc.imresize调整大小(). 但是,请注意,我确实将四个paws视为一个数据集;将其拆分为四个将使问题更容易解决。 方法论。
现在考虑一个高度为255的水位,它不断下降到较低的水位。在当地的马克西马群岛弹出(出生)。在鞍点两个岛屿合并;我们认为较低的岛屿合并到较高的岛屿(死亡)。所谓的持久性图(第0维同源类,我们的岛屿)描述了所有岛屿的死亡-出生值:
这个 一个岛屿的高度就是出生和死亡水平之间的差异;一个点到灰色主对角线的垂直距离。该图通过减少持久性来标记这些岛屿。 第一张照片显示了这些岛屿的出生地点。该方法不仅给出了局部极大值,而且通过上述持久性来量化它们的“显著性”。然后,我们将过滤掉所有持久性太低的孤岛。但是,在您的示例中,每个岛(即每个本地最大值)都是您要查找的峰值。 Python代码可以找到 here . |
|
|
5
18
ROOT . 看看这个 TSpectrum 课程(尤其是 TSpectrum2 参考文献:
…对于那些无法订阅NIM的用户: |
|
|
6
13
这里有一个想法:计算图像的(离散)拉普拉斯函数。我希望它是(消极的)最大,在一种方式,这是更戏剧性的比原来的形象大。因此,maxima可能更容易找到。
|
|
|
7
12
|
|
|
8
12
另外,它是在Scipy中实现的,这非常好( http://docs.scipy.org/doc/scipy/reference/cluster.vq.html ).
你想做的是有点不同(2D和包括压力值),但我仍然认为你可以尝试一下。 |
|
|
9
10
谢谢你的原始数据。我在火车上,这是我到的最远的地方(我的站快到了)。我用regexps处理了你的txt文件,并用一些javascript将它放到一个html页面中进行可视化。我在这里分享它是因为像我这样的一些人可能会发现它比python更容易被破解。 我认为一个好的方法是尺度和旋转不变性,我的下一步将是研究高斯混合。(每个爪垫是高斯曲线的中心)。
|
|
10
8
物理学家的解决方案:
(
现在是时候做一些大都会黑斯廷斯魔术了:
|
|
|
11
8
我只想告诉你们有个很好的选择
还是为了撇渣
http://scikit-image.org/docs/0.8.0/api/skimage.feature.peak.html |
|
|
12
6
下面是另一种方法,我在对大型望远镜进行类似操作时使用: 1) 搜索最高像素。 一旦你有了这个,搜索2x2的最佳拟合(也许最大化2x2和),或者在4x4的子区域内做一个2d高斯拟合,以最高像素为中心。
返回到1)并重复,直到最高峰值降至噪声阈值以下,或者您拥有所需的所有脚趾 |
|
|
13
6
|
|
|
14
6
大概的轮廓。。。 您可能希望使用连接组件算法来隔离每个paw区域。wiki对此有很好的描述(带有一些代码): http://en.wikipedia.org/wiki/Connected_Component_Labeling 你必须决定是使用4还是8连接性。就我个人而言,对于大多数问题,我更喜欢6连接性。不管怎样,一旦你把每个“爪印”分离出来作为一个连通的区域,遍历这个区域并找到最大值就足够容易了。一旦找到了最大值,就可以迭代地放大区域,直到达到预定的阈值,以便将其识别为给定的“脚趾”。 这里的一个微妙问题是,一旦你开始使用计算机视觉技术来识别右/左/前/后爪,并开始观察单个脚趾,你就必须开始考虑旋转、倾斜和平移。这是通过分析所谓的“时刻”来实现的。在视觉应用中,有几个不同的时刻需要考虑: 归一化矩:缩放和平移不变性 hu矩:平移、缩放和旋转不变 有关时刻的更多信息可以通过在wiki上搜索“图像时刻”找到。 |
|
|
15
5
也许你可以使用高斯混合模型。下面是一个用于执行GMMs的Python包(刚刚进行了Google搜索) http://www.ar.media.kyoto-u.ac.jp/members/david/softwares/em/ |
|
|
16
4
|
|
|
17
4
有趣的问题。我想尝试的解决方案如下。
这应该给你最大的位置,而不是有多个候选人是紧密在一起。只是澄清一下,步骤1中遮罩的半径也应该与步骤2中使用的半径相似。这个半径可以选择,或者兽医可以事先明确测量它(它会随着年龄/品种等而变化)。 建议的一些解决方案(均值漂移、神经网络等)可能会在某种程度上起作用,但过于复杂,可能并不理想。 |
|
|
18
3
好吧,这里有一些简单而不是非常有效的代码,但是对于这样大小的数据集来说,这是很好的。
我基本上只是用左上角的位置和每个2x2平方的和做一个数组,然后按和排序。然后我把2x2平方和的最大值从争用中取出来,放到
除了最后一只爪子(第一张图片中最右边和最小的一只爪子)之外,它似乎工作得很好,结果发现还有另外两个合格的2x2平方和更大(它们的和彼此相等)。其中一个仍然是从2x2正方形中选择一个正方形,但另一个在左侧关闭。幸运的是,幸运的是,我们可以从你想要的东西中选择更多,但这可能需要一些其他的想法来得到你一直想要的东西。 |
|
|
19
1
|
|
|
20
1
我不确定这是否回答了这个问题,但似乎你可以只寻找没有邻居的n个最高峰。 Here is the gist. 注意,它是用Ruby编写的,但是这个想法应该很清楚。
|
|
|
21
1
https://photutils.readthedocs.io/en/stable/detection.html#local-peak-detection [在这里重复他们的简短示例代码似乎有点粗鲁。] 下面给出了一个不完整的和有点偏颇的可能感兴趣的技术/包/链接列表-请在评论中添加更多内容,我会根据需要更新这个答案。当然,精度和计算资源之间有一个权衡。[老实说,像这样的一个答案中有太多的代码示例,所以我不确定这个答案会不会飞起来。] 源提取器 https://www.astromatic.net/software/sextractor 多巢 https://github.com/farhanferoz/MultiNest [+pyMultiNest] ASKAP/EMU寻源挑战: https://arxiv.org/abs/1509.03931 您还可以搜索普朗克和/或WMAP源提取挑战。
|
|
|
22
0
如果您一步一步地进行:首先定位全局最大值,如果需要,处理给定值的周围点,然后将找到的区域设置为零,然后重复下一个区域。 |
|
|
VeceluXa · 在Android中将黑白位图转换为单通道JPEG 2 年前 |
|
|
Mohamed Obeid · 在灰度图像上散射网格 3 年前 |
|
|
Pete · 三维体积与其主轴对齐 3 年前 |
|
|
Doofenmirtz Mirtz · 录制视频中特定对象的角度检测 3 年前 |