我有一张图片让我们说 a=imread('example.bmp'我从它得到了所有三个通道:
R=a(:,:,1);
G=a(:,:,2);
B=a(:,:,3);
我有它的灰色图像:
igray=rgb2gray(a);
我可以从灰色图像中获得红色分量吗?
我有一张图片让我们说 a=imread('example.bmp'我从它得到了所有三个通道:
R=a(:,:,1);
G=a(:,:,2);
B=a(:,:,3);
我有它的灰色图像:
igray=rgb2gray(a);
我可以从灰色图像中获得红色分量吗?
该rgb2gray
函数有效地对每个 RGB 像素(类型edit rgb2gray
)执行此操作:
Gray = 0.298936021293776*Red+0.587043074451121*Green+0.114020904255103*Blue;
如果你只有Gray
在上面的等式中,那么你就有一个包含三个未知数的等式。需要更多信息来解决Red
.
如果您只想要一个 RGB 图像,其中每个通道都具有相同的组件,即由 创建的组件rgb2gray
,那么使用
igray(:,:,3) = rgb2gray(a); % Set last component first to fully allocate array
igray(:,:,1) = igray(:,:,3);
igray(:,:,2) = igray(:,:,3);
或者所有通道都等效于红色通道的 RGB 图像:
igray(:,:,3) = a(:,:,1);
igray(:,:,1) = a(:,:,1);
igray(:,:,2) = a(:,:,1);
repmat
如果您愿意,也可以使用该功能。
不,你不能,因为 igray 将是一个二维图像(a 是三维的,第三维是颜色平面),只包含每个像素的强度值。
要将 RGB 图像转换为灰度图像,rbg2gray 使用您可以在此处找到的公式
如您所见,这是一个 3 变量方程,因此您无法单独使用强度值找到它们。
While nothing in horchler's very long answer is incorrect, I think you just want to get the red channel from the rgb image which is very easy.
A=imread('colorImg.jpg')
redChannel=A(:,:,1)
That's it!
That will return a matrix of type uint8, to convert to double, just do double(redChannel) and you can multipy/divide it by 255 as necessary.