首页 > 解决方案 > 如何在 MATLAB 上使用 imshowpair 调整棋盘图案的大小?

问题描述

我写了以下代码:

imageResult = imshowpair(brain1, brain2,'checkerboard');

但这并不能控制棋盘格的大小。

如何指定棋盘格正方形的大小是多少?文档对此imshowpair并不清楚。如果您知道其他方式,请随时提出建议!

标签: imagematlabimage-processing

解决方案


我认为没有自动执行此操作的选项。

但是您可以使用 kronecker 张量积手动创建棋盘索引。

ind = kron(eye(2,2),ones(5,5))

生成一个网格大小为 5 的 2x2 棋盘:

   1   1   1   1   1   0   0   0   0   0
   1   1   1   1   1   0   0   0   0   0
   1   1   1   1   1   0   0   0   0   0
   1   1   1   1   1   0   0   0   0   0
   1   1   1   1   1   0   0   0   0   0
   0   0   0   0   0   1   1   1   1   1
   0   0   0   0   0   1   1   1   1   1
   0   0   0   0   0   1   1   1   1   1
   0   0   0   0   0   1   1   1   1   1
   0   0   0   0   0   1   1   1   1   1

您现在可以复制此模式 N 次。

例如,我们将此模式复制 10 次。

ind = kron(ones(10,10),ind)

如果您的图像是 3D 图像,您仍然可以复制此矩阵 3 次:

ind = repmat(ind,1,1,3);

所以你得到一个2X5X10 x 2X5X10 (500x500)棋盘矩阵

现在你可以组合你的两张图片,这也需要是 500x500:

IMG1 = IMG1(logical(ind)) = 0  % an index need to be of type logical.
IMG2 = IMG1(logical(~ind)) = 0

IMG = IMG1+IMG2

如果由于您的图像有奇数列或奇数行而无法获得正确大小的棋盘矩阵,您可以随时对原始矩阵进行采样

subind = ind(1:size(IMG1,1),1:size(IMG1,2))

3D 索引也是如此:

subind = ind(1:size(IMG1,1),1:size(IMG1,2),:)

推荐阅读