我需要一个Matlab代码才能将我的RGB图像的左半部分转换为灰度图像,并保留右半部分的原样?
我已经知道如何使用“rgb2gray”命令将整个图像转换为灰度,但我想只将左半部分或右半部分转换为灰色。
答案 0 :(得分:0)
由于Matlab中的图像本质上可以被视为(像素)矩阵(与具有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')
或者,如果您不希望两个新图像矩阵(imgGray
和imgRGB
)的空间开销,您可以直接改变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')