【问题标题】:How can I concatenate images in one matrix in MATLAB?如何在 MATLAB 中将图像连接到一个矩阵中?
【发布时间】:2019-09-11 11:45:43
【问题描述】:

我有 64 张图片(它们的名字是这样的:00001.jpg, ... , 00064.jpg)。我想用这些图像创建一个矩阵,结果如下:

[img1 img2 ... img8
 img9 img10 ...img16
 ...
 img57 ........img64]

我尝试过 horzcat()、imtile()、montage() 方法,但这些方法给了我不想要的结果。

我期望一个带有图像的 8x8 矩阵。我想使用 Matlab 以编程方式执行上述操作,但找不到任何解决方案。

我怎样才能做到这一点?谢谢!

【问题讨论】:

  • 所有 64 张图像的长度是否相同?那些也总是一个常数吗?
  • 您的图片尺寸是多少?你是什​​么意思你想用图像创建一个 8x8 矩阵?将所有图像放在一个 8x8 单元格中,以便您可以通过索引检索它们,例如imageCollection{1}?考虑提供更详细的MCVE
  • imtile 似乎正是这样做的。你遇到的具体问题是什么?请发布相关代码以获得更多帮助。另外,8x8矩阵是什么意思?你会得到一个 (8*N)x(8*N) 大小的图像,其中 NxN 是原始图像大小

标签: image matlab image-processing matrix


【解决方案1】:

函数 imtile 是你想要的。您对 8x8 尺寸的期望是不正确的。举个例子。

A = magic(2);

>> imtile({A,A,A,A})

ans =

 1     3     1     3
 4     2     4     2
 1     3     1     3
 4     2     4     2

由于 imtile 接受 ImageDatastore,最简单的做法是:

imds = imageDatastore(pathToYourImages)
tiledImage = imtile(imds);

【讨论】:

    【解决方案2】:

    图像基本上是一个矩阵。

    这就是连接 2 个矩阵的方式 (link)

    A = ones(1,4);
    B = zeros(1,4);
    C = [A B];  //Horizontal
    D = [A; B]; //Vertical
    

    使用此逻辑水平和垂直连接您的矩阵。

    也就是说,您应该注意矩阵大小及其不匹配问题。

    【讨论】:

      猜你喜欢
      • 2012-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-28
      • 2013-11-18
      • 2011-07-04
      • 2016-10-22
      • 1970-01-01
      相关资源
      最近更新 更多