【发布时间】: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) 可以工作