如何将图像划分为相同大小的块



我有一个图像,我想把它分成相同大小的块。例如,图像大小为16。我想划分我的图像,他们在每个块上应用函数(如SVD、DWT、傅立叶变换)来搜索哪些块彼此相似。例如,我可以复制图像的一部分并将其粘贴到图像的另一部分,使块彼此相似,我想搜索那些相似的块。

我是Matlab的新手,如果有人能帮助我如何分割图像,我真的很感激。感谢

您可以使用blockprocim2col。有关示例,请参阅blockproc的文档。

我无法提供matlab的答案,但您可以研究图像分割(在谷歌上搜索示例)。有很多不同的方法可以做到这一点,这取决于你想要什么样的细分市场。

你也可以看看论文《单个图像的超分辨率》,该论文描述了一种在不同尺度上搜索图像本身重复出现的块的方法。链接论文还描述了如何从多个图像中的小特征创建图像数据库。

我有一个用python编写的解决方案,您可以将其转换为对您有用的形式。

rsize = 4   #row size of the kernel
csize = 4   #column size of the kernel
for r in range(0,resized.shape[0] - rsize, rsize):
    for c in range(0,resized.shape[1] - csize, csize):
        window = resized[r:r+rsize,c:c+csize]

我假设图像的大小是17 x 17。在这里,图像的最后一列和最后一行可以用零填充,这样代码就可以很好地工作。

您可以将此逻辑应用于MATLAB。

最新更新