This question already has an answer here:
Access RGB channels in an image in MATLAB

(1 个回答)


4年前关闭。




我正在处理与此类似的图像: a cell image ,我只想提取红色-粉色部分。截至目前,我正在使用 img(:,:,1) 来提取红色值,但这会产生一个二进制图像。我想知道是否有办法提取“红色”值并根据它们的“红色”或强度程度生成灰度图像。任何帮助都是极好的。

最佳答案

您可能会使用 imshow 来可视化结果,它会自动将轴的颜色限制设置在 01 之间。您的图像是 RGB,红色 channel 的值将从 0255 。因此,如果您只为 imshow 指定一个输入,您将获得一张图像,其中所有值 > 1 将显示为白色,所有零值都将显示为黑色。所以你的图像并不是真正的二进制,它只是看起来那样。

您想使用 imagesc 显示您的图像,它会自动缩放颜色限制以匹配您的数据:

imagesc(img(:,:,1));
colormap gray

或者,您可以指定 imshow 的第二个输入,使其也缩放以适合您的数据范围:
imshow(img(:,:,1), [])

当您可视化所有 channel 时,这不是问题的原因是,如果您指定红色、绿色和蓝色 channel ,这将被视为真彩色图像,并且所有轴的颜色限制都将被忽略。

关于matlab - 根据一个颜色 channel 的强度将RGB图像转换为灰度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38573288/

10-11 22:32
查看更多