这是代码

  img = imread('imageName.jpg');
  redChannel = img(:,:,1);
  blackColor = zeros(size(redChannel));
  redImage = cat(3,redChannel,blackColor,blackColor);

我的想法是,我们首先读取图像并将其保存在变量中,然后

我们知道图片将是3个尺寸512x512x3

第三维与渠道有关

       1: red
       2: green
       3: blue

现在redChannel变量将采用图像的红色通道

所以,我的问题是,为什么我不能只使用

       image(redChannel)

显示图像? 问题是除了红色外它什么都没显示

现在他说

        blackColor = zeros(size(redChannel));
        redImage = cat(3,redChannel,blackColor,blackColor);

blackColor到处都有零,其大小将为512x512

与每个通道的大小相同

关于猫,我不明白他为什么这么做。

===============>>#1 票数:4 已采纳

让我们以该图像为例:

在此处输入图片说明

image(redChannel)将显示红色通道,但会截断0到63之间的值。使用默认的颜色栏,低值将为蓝色,高值将为红色。 您的问题是所有高于63的值都用相同的红色表示:

在此处输入图片说明

imagesc(redChannel)将做同样的事情,但是它将缩放颜色条,使得蓝色对应于redChannel的最小值,红色对应于其最大值(黄绿色是中间值):

在此处输入图片说明

imshow(redChannel)将为您显示红色通道,但以黑白显示imshow(redChannel)不会显示0-63伪像):

在此处输入图片说明

image(redImage)将向您显示相同的信息,但以黑色和红色代替黑色和白色。 基本上,它删除了红色的绿色和蓝色部分,因此您只剩下红色的通道显示为红色。 当输入具有1个通道或3个通道时, image实际上具有不同的行为。 当它具有一个通道时,它会将值截断为0-63并使用蓝红色彩条显示它。 当它具有3个通道时,它将显示为RGB彩色图像:

在此处输入图片说明

因此,在您的情况下:

   redImage = cat(3,redChannel,blackColor,blackColor);

redImage连接三个通道。 对于红色(第一个)通道,它将放置输入图像的红色通道。 对于绿色和蓝色(第二和第三)通道,它仅置零。 因此,基本上, redImage类似于img ,但是绿色和蓝色通道设置为零。

  ask by John John translate from so

未解决问题?本站智能推荐:

3回复

如何在张量流中计算图像中每个通道的均值

在张量流中计算图像中每个通道的均值的正确方法是什么? 任何帮助深表感谢!!
1回复

将数组转换为单通道图像

我是一个Xcode初学者,我正在开发一个项目,我必须将float[x][y]数组转换为单通道(灰度)图像。 然后创建一个方法,将此图像转换回float[x][y]; 我们非常感谢您对该主题的任何帮助,如果可能的话,请尽可能详细地说明您的答案。 先感谢您 更新1:x和y是行和行的坐标。
1回复

使用Matlab Simulink尝试通过DVB-T频道进行多媒体文件传输

我在Matlab Simulink模型仿真中遇到麻烦。 我正在尝试通过Simulink中的DVB-T类型通道实现视频文件的传输。 我使用Matlab的DVB-T演示: 演示中的Matlab DVB-T频道模型概述 但是我无法通过该通道发送实际文件。 我只是尝试用“来自多媒体文件
1回复

如何在MATLAB中读取双声道音频文件

当我用[y, Fs] = wavread(filename)读取音频文件时,它返回一个Nx2矩阵。 这些“渠道”的含义是什么? 他们是左右吗? 如果是这样,我应该如何组合它们? 我会对它们进行平均,但外部代码使用x(:,1) ,我无法理解为什么。 那么如何正确读取此信号呢?
1回复

MATLAB-有人可以解释一下这些代码行吗

嗨,有人可以帮我解决这段代码,我知道它读取图像并在RGB图像的直方图上显示红色通道(Fruits1)。
1回复

有人可以向我解释这个Matlab代码吗?

以下MATLAB代码做什么?
3回复

为什么我在matlab中使用这个短代码来获取蓝色,绿色或红色通道?

当我把它放在图像是灰色,而不是绿色或蓝色或红色。 这是为什么? 难道我做错了什么?
5回复

如何在Matlab中显示图像的红色通道?

我有一个3D矩阵im表示RGB图像。 我可以 显示图像。 我想一次只显示一个RGB通道:我想显示红色通道,我希望它显示为红色。 我试过了 但它显示灰度图像(这不是我想要的)。 如何显示红色通道并使其显示为红色?
1回复

为什么红色,绿色,蓝色图像通道是灰度级的(Matlab)?

Matlab将图像存储为三维数组。 前两个维度对应于上图的轴上的数字。 每个像素由图像的第三维中的三个条目表示。 三个层中的每一个代表像素阵列中的红色,绿色和蓝色的强度。 我们可以通过以下方式提取出图像的独立红绿蓝成分: 例如原始图像是: 如果您显示红色绿色和蓝色通道,
2回复

Matlab在所有红色图像中检测到较暗的红色

我想通过从该图像中分割较深的红色来分析医学图像,因为较深的红色表示内部出血。 (对不起,如果图像看起来令人毛骨悚然)。 这里的问题是,如果您看到原始图像,则可以在右上角看到较深的红色,而在中间的肿胀部分上则看到深红色的细线,这是我想要得到的内部出血...但是我不能得到它。 有没有