将“ uint8 RGB像素”转换为“ uint8灰度像素”值的公式是什么?

罗希特

我使用以下公式将RGB图像转换为灰度图像,但是它似乎无法正常工作。

gray_pixel = (r_pixel + g_pixel + b_pixel) / 3
Suever

你可能有问题,因为r_pixelb_pixelg_pixel为整数,因此当您尝试取平均值的三,你得到不正确的结果,因为这些数字的任何添加或分工被迫成为一个uint8意思,你不能正确如果红色,绿色和蓝色均为255,则将这些值相加。

uint8(255) + uint8(255) + uint8(255)
%   255

您将需要首先将它们全部转换为浮点数。

gray_pixel = (double(r_pixel) + double(g_pixel) + double(b_pixel)) / 3;

如果您确实需要uint8灰度图像,则可以将结果投射为uint8

gray_pixel = uint8(gray_pixel);

话虽如此,但这并不是从RGB图像创建灰度图像的最佳方法。使用MATLAB的最简单方法是仅使用内置函数rgb2gray

grayim = rgb2gray(img);

据他们使用的实际配方是BT.601

gray_pixel = 0.2989 * r_pixel + 0.5870 * g_pixel + 0.1140 * b_pixel;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章