我有一个图像,我想把它分成相同大小的块。例如图像大小为 16。我想划分我的图像,他们在每个块上应用函数(例如 SVD、DWT、傅里叶变换)来搜索哪些块彼此相似。例如,我可以复制图像的一部分并将其粘贴到图像的另一部分,以便块彼此相似,我想搜索那些相似的块。
我是 Matlab 的新手,如果有人能帮助我如何划分图像,我真的很感激。谢谢
我有一个图像,我想把它分成相同大小的块。例如图像大小为 16。我想划分我的图像,他们在每个块上应用函数(例如 SVD、DWT、傅里叶变换)来搜索哪些块彼此相似。例如,我可以复制图像的一部分并将其粘贴到图像的另一部分,以便块彼此相似,我想搜索那些相似的块。
我是 Matlab 的新手,如果有人能帮助我如何划分图像,我真的很感激。谢谢
您可以使用blockproc
或im2col
。有关示例,请参见文档。blockproc
我无法提供 matlab 答案,但您可以查看图像分割(以谷歌为例)。有许多不同的方法可以做到这一点,具体取决于您想要的细分类型。
您还可以查看论文Super-Resolution from a Single Image,该论文描述了一种在各种尺度上搜索自身重复出现的图像块的方法。链接的论文还描述了如何从多个图像中的小特征创建图像数据库。
我有一个用 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。