1

我从图像中得到数据测量值。我的意思是配置文件扫描数据。(沿一条线拍摄的图像强度值)我想要的是从另一张图像的线中获取数据并将它们一起比较。我想知道它们是否相似。例如我得到:

int data1[N];
int data2[N];

我想比较它们。如果它们不相似,我想知道该数据中最长的部分,它们彼此相似。例如,如果我们在从 0 到 N - 1 的索引处查看它们,可能会发生 data1 和 data2 不相似,但可能在索引 100 ... N - 56 处它们几乎相同。我所说的相似性是指:如果我们以波的形式表示 data1 和 data2,那么相似性意味着它们的行为几乎相同,但有时可能会有所不同。我的意思是波浪的形式几乎相似。

4

1 回答 1

1

显然,确切的实现将比我在下面描述的更复杂,但也许它会提供一个起点:

由于您在谈论图像强度,因此首先对两组原始强度数据进行归一化可能是合适的。(这样,您应该能够识别出 data1 始终是 data2 值的三分之二的东西。)我可能会首先将(例如)100 分配给源图像的最密集部分,将 0 分配给最不强烈的 - 调整所有其他值以适应该比例。

标准化数据后,下一步可能就像使用一些简单的比较(例如Abs(data1[n] - data2[n]) < SomeThreshold)遍历标准化数组一样简单。每次比较通过时,都会增加“匹配长度”。如果匹配长度为零,您可能还需要设置“起始索引”变量。当比较失败时,更新“最佳匹配”信息,然后将“长度”计数器重置为零。

我建议您轻松更换比较功能。我不确定,但是如果您尝试进行某种类型的图像匹配,如果您必须使用更复杂的比较机制(例如,您可能需要阈值来“漂移”),我不会感到惊讶例如,如果基本图像相同,但其中一张经过后期处理,使一侧比原始图像更亮)。

于 2010-07-01T03:01:20.037 回答