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