首先声明一下,我知道有函数可以帮我完成这个任务,但我想手动操作一遍,以便更好地理解其中的细节。
我的目标是读入一张RGB图像并将其转换为灰度图像。到目前为止,我所有的图像处理工作都是基于灰度图像完成的,所以我有点迷茫。
我尝试过先通过以下代码读入图像:
fid = fopen('color.raw');
myimage = imread(fid, [512 384], 'uint8');
fclose(fid);
但我的图像最终变成了一个空的0 x 0矩阵。我认为我需要为每个像素分配一个“R”“G”和“B”值,从而为每个像素赋予三个颜色值,但我不确定是否正确,甚至不知道如何尝试。
我的问题是:如何读取RGB图像然后将其转换为灰度图像。
编辑:因此,在获取R,G和B值后,我理解如何将RGB转换为灰度,但我似乎无法让Matlab读入图像,有人可以提供任何帮助吗?使用imread似乎是最合适的,但
[pathname] = ...
uigetfile({'*.raw';'*.mdl';'*.mat';'*.*'},'File Selector');
fid = fopen(pathname);
myimage = imread(fid);
fclose(fid);
出现问题了,我收到了一个fopen无效文件名的错误提示,但我真的不理解为什么会这样。
red = average
,green = average
和blue = average
。您不需要制作4张图片,只需在输出之前平均每个像素的组件即可。是的,Shaun314正确指出,加权平均值会产生更真实的对比度。我有点困惑你到底在做什么。导出的图像应该具有a == g == b,因此根本没有色调。 - RutledgePaulVcolormap gray
命令。在Matlab中可能会有括号包围着gray,我已经有一段时间没有使用过了。 - Kyle Heuton