如何在MATLAB上使用imshowpair调整棋盘图案的大小?

时间:2018-07-10 09:06:48

标签: image matlab image-processing

我编写了以下代码:

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

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

   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),:)

答案 1 :(得分:-1)

您可以使用checkerboard函数来生成适当大小的棋盘。例如

I = checkerboard(5);

将制作一个正方形棋盘,每个正方形为5 * 5。您可以进一步调整输入以使其也为矩形,例如如果您要使用5x8的棋盘而不是8x8的棋盘

I = checkerboard(5,5,8);

注意:如果要使用二进制棋盘格,只需使用以下命令调整命令

I = checkerboard(5)>0.5;