将RGB图像的左半部分转换为灰度(Matlab)

时间:2016-04-24 21:38:25

标签: matlab

我需要一个Matlab代码才能将我的RGB图像的左半部分转换为灰度图像,并保留右半部分的原样?
我已经知道如何使用“rgb2gray”命令将整个图像转换为灰度,但我想只将左半部分或右半部分转换为灰色。

1 个答案:

答案 0 :(得分:0)

由于Matlab中的图像本质上可以被视为(像素)矩阵(与具有3个深度层的RGB相比,灰度的单个深度层),您可以将它们视为这样,在这种情况下构建分割图像简化为矩阵上的一些简单操作:

  • 计算图像的灰度矩阵
  • 并构建一个新的矩阵(即你的分割图像),其中左半部分使用灰度图像用于所有3个图层,而右半部分使用3个RGB图层。

E.g。

imgRGB = imread('peppers.png');
imgGray = rgb2gray(imgRGB);

[r, c, ~] = size(imgRGB);
c = round(c/2);

imgSplit = imgRGB;
for i = 1:3
  imgSplit([1:r],[1:c],i) = imgGray([1:r],[1:c]);
end

imshow(imgSplit)
%// imwrite(imgSplit,'imgSplit.png')

enter image description here

或者,如果您不希望两个新图像矩阵(imgGrayimgRGB)的空间开销,您可以直接改变rgb图像矩阵,产生与上面相同的结果。

imgRGB = imread('peppers.png');

[r, c, ~] = size(imgRGB);
c = round(c/2);

imgRGB([1:r],[1:c],1) = rgb2gray(imgRGB([1:r],[1:c],:)); 
for i = 2:3
  imgRGB([1:r],[1:c],i) = imgRGB([1:r],[1:c],1);
end

imshow(imgRGB)
%// imwrite(imgRGB,'imgSplit.png')
相关问题