这个图像核相关矩阵代表什么?
What does this image-kernel correlation matrix represent?
我正在试验一些计算机视觉技术,特别是特征检测。我正在尝试通过在图像和特征内核之间进行自动关联来识别特征。
但是,生成的相关矩阵对我来说没有意义...任何人都可以帮助我了解如何解释或可视化该矩阵,以便清楚地了解特征所在的位置吗?
特征内核:
原图:
代码:
import cv2
import pprint
import numpy
import scipy.ndimage
from matplotlib import pyplot as plt
import skimage.feature
# load the image
img = cv2.imread('./lenna.jpg')[:,:,0]
f_kernel = cv2.imread('./lenna_feature.jpg')[:,:,0]
def matched_filter(img, f_kernel, detect_thres):
result = scipy.ndimage.correlate(img, f_kernel)
print("Feature Match Template")
plt.imshow(skimage.feature.match_template(img, f_kernel))
plt.show()
return result
plt.imshow(matched_filter(img,f_kernel,1))
print("Correlation Matrix")
plt.show()
结果:
因此,在第一个结果图像中,在 (150,200) 处有一个明显的最大值点。我将此解释为该功能最有可能的位置。
然而,在第二个结果图像,相关矩阵结果中,没有明显的模式。我原以为会有一些明显的高相关点。
帮忙?
我无法重现您的结果。对我来说,第二张图的形状有点像莉娜。
反正你不想用相关性,你想用相关系数做模板匹配。纯相关性未归一化,因此它更像是一个平均滤波器而不是模板匹配。
编辑:添加了相关图像
skimage.feature.match_template
computes the normalized cross correlation。也就是说,对于图像上的每个位置,图像块和模板都被归一化(减去均值并除以标准差),然后相乘并取平均值。这将计算图像块和模板的相关系数。相关系数是介于 1 和 -1 之间的值。相关系数为 1 表示图像块是模板的线性修改(即 constant1 * template + constant2
)。
scipy.ndimage.correlate
计算相关性(与卷积相同,但不镜像内核)。也就是说,这里我们不首先对图像补丁进行归一化。图像具有较高值的地方也会自动具有较高的相关性,即使与模板完全不相似。
我正在试验一些计算机视觉技术,特别是特征检测。我正在尝试通过在图像和特征内核之间进行自动关联来识别特征。
但是,生成的相关矩阵对我来说没有意义...任何人都可以帮助我了解如何解释或可视化该矩阵,以便清楚地了解特征所在的位置吗?
特征内核:
原图:
代码:
import cv2
import pprint
import numpy
import scipy.ndimage
from matplotlib import pyplot as plt
import skimage.feature
# load the image
img = cv2.imread('./lenna.jpg')[:,:,0]
f_kernel = cv2.imread('./lenna_feature.jpg')[:,:,0]
def matched_filter(img, f_kernel, detect_thres):
result = scipy.ndimage.correlate(img, f_kernel)
print("Feature Match Template")
plt.imshow(skimage.feature.match_template(img, f_kernel))
plt.show()
return result
plt.imshow(matched_filter(img,f_kernel,1))
print("Correlation Matrix")
plt.show()
结果:
因此,在第一个结果图像中,在 (150,200) 处有一个明显的最大值点。我将此解释为该功能最有可能的位置。
然而,在第二个结果图像,相关矩阵结果中,没有明显的模式。我原以为会有一些明显的高相关点。
帮忙?
我无法重现您的结果。对我来说,第二张图的形状有点像莉娜。
反正你不想用相关性,你想用相关系数做模板匹配。纯相关性未归一化,因此它更像是一个平均滤波器而不是模板匹配。
编辑:添加了相关图像
skimage.feature.match_template
computes the normalized cross correlation。也就是说,对于图像上的每个位置,图像块和模板都被归一化(减去均值并除以标准差),然后相乘并取平均值。这将计算图像块和模板的相关系数。相关系数是介于 1 和 -1 之间的值。相关系数为 1 表示图像块是模板的线性修改(即 constant1 * template + constant2
)。
scipy.ndimage.correlate
计算相关性(与卷积相同,但不镜像内核)。也就是说,这里我们不首先对图像补丁进行归一化。图像具有较高值的地方也会自动具有较高的相关性,即使与模板完全不相似。