Как сравнить данные двух волн? - PullRequest
1 голос
/ 01 июля 2010

Я получил данные измерений с изображения. Я имею в виду данные сканирования профиля. (значения интенсивности изображения, взятые вдоль одной линии) И я хочу получить данные из строки другого изображения и сравнить их вместе. Я хочу знать, похожи они или нет. Например я получил:

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

И я хочу сравнить их. Если они не похожи, я хотел бы знать самую длинную часть этих данных, которые похожи друг на друга. Например, может случиться так, что data1 и data2 не похожи, если мы посмотрим на них с индексами от 0 до N - 1, но могут быть при индексах 100 ... N - 56 они почти одинаковы. Под сходством я подразумеваю: если мы представляем данные1 и данные2 в форме волн, тогда сходство означает, что они ведут себя почти одинаково, но иногда могут немного отличаться. Я имею в виду формы волн почти одинаковы.

1 Ответ

1 голос
/ 01 июля 2010

Очевидно, что точная реализация будет чем-то более сложным, чем то, что я опишу ниже, но, возможно, она предложит отправную точку:

Поскольку вы говорите об интенсивности изображения, может быть целесообразно нормализовать дванаборы необработанных данных интенсивности в первую очередь.(Таким образом, вы должны быть в состоянии распознать что-то, где data1 последовательно составляет две трети значения data2.) Я бы, вероятно, начал с присвоения значения (например) 100 наиболее интенсивной части исходного изображения и 0 -наименее интенсивный - корректировка всех других значений в соответствии с этим масштабом.

После нормализации данных следующий шаг, вероятно, будет таким же простым, как итерация нормализованных массивов с использованием некоторого простого сравнения (например, Abs(data1[n] - data2[n]) < SomeThreshold).Каждый раз, когда проходит сравнение, увеличивается «длина совпадения».Если длина совпадения была равна нулю, вы также можете установить переменную «начальный индекс».Если сравнение не удается, обновите информацию о «наилучшем совпадении», а затем обнулите счетчик «длины» до нуля.

Я бы порекомендовал упростить замену функции сравнения.Я не знаю наверняка, но если вы пытаетесь выполнить какой-либо тип сопоставления изображений, я не удивлюсь, если вам придется использовать более сложный механизм сравнения (например, вам может понадобиться пороговое значение для «дрейфа»).если, например, основное изображение такое же, но одно из них было подвергнуто последующей обработке, чтобы сделать одну сторону более яркой, чем оригинал).

...