[英]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.