首页 > 解决方案 > 图像与自身的二维相关函数给出错误值

问题描述

由于我的样本在帧之间移动,我试图找到两个显微镜图像中的相对移动。此代码用于查找两个图像之间的 2D 相关性。然后我使用这个相关数组并确定最大值在哪里,并使用它来移动两个翻译后的图像,但即使对于同一个图像,我也会得到一个有限的移位值。第二个片段是翻译值代码。

from scipy.signal.signaltools import correlate2d as c2d
import cv2
def cross_image_3(im1, im2):
    im1 = cv2.normalize(im1, None, alpha = 0, beta = 65535, norm_type = cv2.NORM_MINMAX, dtype = cv2.CV_16U)
    im2 = cv2.normalize(im2, None, alpha = 0, beta = 65535, norm_type = cv2.NORM_MINMAX, dtype = cv2.CV_16U)
    c12 = c2d(im1, im2, mode='same', boundary='symm')
    return c12
img_centre = np.array([*np.shape(mycamera.frames[0])])/2
shift = np.zeros((n, 2))
for i in range(n):
    corr_img = cross_image(mycamera.frames[0], mycamera.frames[i])
    corr_centre = np.asarray([*np.unravel_index(np.argmax(corr_img), corr_img.shape)])
#     print('Brightest spot in corr', corr_centre)
#     print('Center of image', img_centre)
#     print('Shift in pixels', img_centre - corr_centre)
    shift[i] = img_centre - corr_centre
print(shift)

标签: pythonimageopencvscipycorrelation

解决方案


推荐阅读