繁体   English   中英

Matlab RGB图像手动转换为灰度

[英]Matlab RGB Image to Gray Scale Manually

我有一个RGB图像,想要对它应用以下公式,以便获得另一个图像。 我怎样才能做到这一点? 我知道如何读取/写入图像,也知道如何循环和应用公式,但是我不知道用于提取变量中图像的行数和列数以及3维平面中3个平面的图像像素值的函数。

I = imread('myimage.jpg');

RGBImagePixles = [?, ?, ?] %of I

ROWS = ? %of I
COLUMNS = ? %of I

for r = 0 : ROWS
   for c = 0 : COLUMNS
      N[r, c] = RGBImagePixles[r,c,1] + RGBImagePixles[r,c,2] + RGBImagePixles[r,c,3]
   end
end

figure, imshow(N);

imread的输出是一个3维数组,实际上是沿3维矩阵堆叠的3个矩阵-因此,如果您的图像高m像素,n像素宽,则将获得amxnx 3数组。 所以:

RGBImagePixles = I;
ROWS = size (I,1);
COLUMNS = size(I,2);

您可以将循环替换为:

N = sum(I, 3);

但是,我不确定简单的求和是否是生成灰度图像所需要的。

[ROWS COLUMNS DIMS] = size(I);

我假设RGB到灰度只是一个示例,您的真正目标是学习如何操纵图像的像素。 否则,您应该使用:

ImageRGB = imread('yourfile.jpg')
ImageGray = rgb2gray(ImageRGB)

手动进行:

ImageRGB = imread('yourfile.jpg')
ImageGray = sum(ImageRGB,3) / (3*255)

您必须除以3 * 255,因为Matlab希望灰度图像的值在0和1之间,而RGB值在每个通道中都在0和255之间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM