【问题标题】:Can you make a 3d matrix from one 2d matrix repeated a set number of times?你能从一个重复一定次数的 2d 矩阵中制作一个 3d 矩阵吗?
【发布时间】:2016-02-21 04:51:17
【问题描述】:

我正在尝试创建灰度函数。该函数采用一个 3D 矩阵,该矩阵由每个像素的 RBG 值组成,并返回另一个表示 3D 图像的 3D 矩阵。我让它与这段代码一起工作

function [ gray ] = convertImageToGrayscale(orig)

    page = 0.299*orig(:,:,1) + 0.587*orig(:,:,2) + 0.114*orig(:,:,3);

    gray(:,:,1) = page;
    gray(:,:,2) = page;
    gray(:,:,3) = page;

end

每个 RBG 值必须相同,并且“page”变量保存它们在每个像素处应该是什么。接下来的三行使用新的 RGB 强度创建一个灰色图像。

有没有更快的方法来制作那个灰色矩阵?也许有一种方法可以遍历灰色矩阵的每一页并将其替换为我的“页面”变量。我不应该使用循环,所以有一种方法可以对我有用的代码进行矢量化。

【问题讨论】:

  • 您真的需要复制吗?在 matlab 中,灰度图像通常是 [n m 1] 而不是 [n m 3]。只用第一行试试。
  • 你可以尝试使用连接操作得到3d矩阵
  • gray = cat (3, page, page, page) 可以工作

标签: matlab matrix


【解决方案1】:

试试

gray = repmat( page, [1 1 3] );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    • 2016-06-12
    • 2015-06-16
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多