如何使用Matlab将图像裁剪为重叠的块?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Matlab将图像裁剪为重叠的块?相关的知识,希望对你有一定的参考价值。

我有一张图片,我想提取重叠的补丁。每个补丁的大小为16x16,重叠像素为10。我需要将每个提取的补丁保存为图像,并用数字重命名。我在Matlab中使用了以下代码。我需要重叠的像素为10,所以,我使用了stepsize = 10,这个stepsize的值是不是意味着重叠像素为10,或者我应该使用另一个值作为stepsize?我不确定该值是否可以正确执行此任务。有人可以帮我吗?

% Read input image.
rgbImage = imread('4.png');
figure;imshow(rgbImage);

[rows, columns, numColorChannels] = size(rgbImage);
stepSize = 10;
subImageWidth = 16;

 count=0;
% extract overlapping patches
for row = 1 : stepSize : rows
    row2 = min(row + subImageWidth - 1, rows);

    for col = 1 : stepSize : columns
         col2 = min(col + subImageWidth - 1, columns);
        subImage = rgbImage(row:row2, col:col2, :);

        baseFileName = sprintf('%d.jpg', count);
        Foldername='D:/input patches' ;
        fullFileName = fullfile(Foldername, baseFileName);
        imwrite(subImage, fullFileName);
        count=count+1;
    end
end
答案

stepSize = 10给出6个像素的重叠。例如,第二张图像从column=11开始,因此重叠的列为11到16。请尝试

stepSize = subImageWidth-overlap

overlap=10

其余代码看起来不错。

以上是关于如何使用Matlab将图像裁剪为重叠的块?的主要内容,如果未能解决你的问题,请参考以下文章

使用 MATLAB 将图像分成大小相等的块并使用 Gabor 滤波器

图像拼接基于matlab最低能量线裁剪图像拼接含Matlab源码 2127期

图像拼接基于matlab最低能量线裁剪图像拼接含Matlab源码 2127期

怎么用matlab对图像进行裁剪

不使用内置函数进行图像裁剪的matlab代码

如何有效地处理类似于 Matlab 的 blkproc (blockproc) 函数的块中的 numpy 数组