python实现图像金字塔数据可视化,直观理解特征金字塔思想

对于从事目标检测工作的人来说特征金字塔一定不陌生,在深度学习中这是一种很有效的特征融合手段,这里主要是想从直观的图像数据层面来去理解可视化这个过程。为了可视化,我们生成了一个合成图像,其行数与源图像相同,但列数为cols+pyramid[1].shape[1]。然后,我们有空间将所有向下采样的图像堆叠到原始图像的右侧。当image.shape[0]不是2的幂时,金字塔中所有下采样图像的行数之和有时可能会超过原始图像大小。为了说明这一点,我们根据需要稍微扩展了组合中的行数。还需要扩展到原始行数之外,以覆盖缩小<2的情况。

直接看下效果:

原图:

结果图:

原图:

效果图:

核心实现如下:

pyramid = tuple(pyramid_gaussian(image, downscale=2, multichannel=True))
composite_image = np.zeros((rows, cols + cols // 2, 3), dtype=np.double)
composite_image[:rows, :cols, :] = pyramid[0]

可以说是很精简了,composite_image是堆叠后的图像。

接下来对单张图像进行可视化:

for p in pyramid[1:]:
    n_rows, n_cols = p.shape[:2]
    composite_image[i_row:i_row + n_rows, cols:cols + n_cols] = p
    i_row += n_rows
plt.clf()
plt.imshow(composite_image)
plt.show()

这里我对原始图像进行了resize操作,在resize操作中有一个参数interpolation可以指定插值的算法,主要包括:INTER_AREA、INTER_LINEAR、INTER_NEAREST、INTER_CUBIC、INTER_LANCZOS4这五种,为了直观对比不同插值算法的效果,这里对其进行了整体的对比可视化,

效果如下:

肉眼基本上区分不出来的感觉。

猜你喜欢

转载自blog.csdn.net/Together_CZ/article/details/129406823
今日推荐