-2

我将 rgb 图像转换为灰度图像,然后我在 3 个 3D 矩阵中分别检索了 R、G、B 通道..有没有办法连接这 3 个 3D 矩阵(R、G、B)以获得单个matlab中的RGB图像?

编辑

示例代码(从评论添加):

让我们I成为 rgb 图像

gr=rgb2gray(I); 
blank = zeros(size(gr),'uint8'); 
r = cat(3,gr,blank,blank); 
g = cat(3,blank,gr,blank); 
b = cat(3,blank,blank,gr); 
imshow(r); 
figure(2),imshow(g); 
figure(3),imshow(b);
4

2 回答 2

0

由于 Matlab 的 rgb2gray 使用 rgb2ntsc 来提取灰度信息(source),您可以使用 rgb2ntsc 代替 rgb2gray 并分离出灰度图像,以某种方式存储其他两个通道以供以后重建(使用 ntsc2rgb)。

I2 = rgb2ntsc(I);  %I2 and I are both n x m x 3 images
gr = I2(:,:,1); % now gr is your n x m grayscale image
notgr = I2(:,:,2:3); % these are required to reconstruct image later
于 2013-05-07T16:26:46.857 回答
0

将 RGB 图像转换为灰色 ( gr = rgb2gray(I)) 你会丢失很多信息。
没有(简单的)方法可以从gr图像返回到原始 RGB I
图像r gb您创建的图像除了gr帮助您恢复原始图像外没有“额外”信息I

你可以做的是

r = 0*I;
r(:,:,1) = I(:,:,1); % take only red channel to r
g = 0*I;
g(:,:,2) = I(:,:,2);
b = 0*I;
b(:,:,3) = I(:,:,3);
figure;
subplot(131);imshow(r);title('red channel');
subplot(132);imshow(g);title('green channel');
subplot(132);imshow(b);title('blue channel');

% recovering I
recover = cat(3, r(:,:,1), g(:,:,2), b(:,:,3) );
figure;
imshow( recover ); title('recovered RGB image');
于 2013-05-07T13:52:54.347 回答