我使用以下公式将RGB图像转换为灰度图像,但是它似乎无法正常工作。
gray_pixel = (r_pixel + g_pixel + b_pixel) / 3
你可能有问题,因为r_pixel
,b_pixel
和g_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] 删除。
我来说两句