如何在MATLAB中访问图像的特定块? (不裁剪)

时间:2018-05-04 15:48:54

标签: matlab

对于大学作业,我的任务是将效果应用于尺寸为512x512的图像的三个独立区域。如下图所示

enter image description here

但是我不确定我应该如何访问图像的特定区域。我无法使用裁剪,因为我需要稍后进一步转换和重建图像,以便我可以验证效果是否已正确应用。但不做:

imageSize = size(I,1);
imageSizeHalf = imageSize/2;
imageSizeQuarter = imageSize/4;
imageSizeEighth = imageSize/8;

然后尝试以这种方式访问​​矩阵维度(我甚至不知道该怎么做,我需要做什么来实现这个目标?)我不确定我应该如何访问这三个图像的特定区域。

1 个答案:

答案 0 :(得分:0)

使这个更整洁的一种方法是定义一个函数,该函数返回特定块的行和列的索引。

function [rows, cols] = get_block_indices(block_row, block_col, block_size)
    rows = (1:block_size) + block_size*(block_row-1);
    cols = (1:block_size) + block_size*(block_col-1);  

然后,您可以访问块网格的第1行第2列的块W1,如下所示

[rows, cols] = get_block_indices(1, 2, block_size);
I(rows, cols) = your_effect_function(I(rows, cols));

假设block_size = size(I,1)/4