Как найти корреляцию между двумя изображениями с помощью Numpy - PullRequest
1 голос
/ 01 октября 2019

Это вдохновлено этим вопросом .

Я пытаюсь найти корреляцию между двумя изображениями в оттенках серого, используя Numpy. Используя SciPy correlate2d, мы можем найти это. Я нашел Numpy's corrcoef, но результаты отличаются, когда я сравниваю с correlate2d. Отсюда вопрос: есть ли correlate2d эквивалент в Numpy?

1 Ответ

1 голос
/ 01 октября 2019

Насколько я могу судить, это дает тот же результат, что и scipy.correlate2d(), где img1 и img2 - это 2-мерные массивы, представляющие полутоновые (то есть одноканальные) изображения:

import numpy as np

pad = np.max(img1.shape) // 2
fft1 = np.fft.fft2(np.pad(img1, pad))
fft2 = np.fft.fft2(np.pad(img2, pad))
prod = fft1 * fft2.conj()
result_full = np.fft.fftshift(np.fft.ifft2(prod))
corr = result_full.real[1+pad:-pad+1, 1+pad:-pad+1]

Настройка однопиксельного кадрирования не очень элегантна, но для вас это БПФ: просто.

Я просто хочу сказать, что scipy идеально подходит для использования, и я настоятельно рекомендую его. Сказав это, кажется, что этот подход намного быстрее для одного случая, который я пробовал.

...