Mathematica对RGB转灰度的详细计算

Detailed Calculation of RGB to Graylevel by Mathematica

我试过了

ColorConvert[img, "Grayscale"]

RGB 转换为灰度。 我想知道mathematica的详细计算..

Gray level= square(R^2+G^2+B^2)?

还是别的?

请参阅 How can I convert colors to grayscale? 了解如何进行计算。

以下命令生成的两张图像非常匹配,但您可以通过一个简短的程序进行多次比较来计算出确切的缩放向量。对不同图像的进一步测试将确定 ColorConvert 是否一直使用相同的矢量,或者是否在转换之前分析图像以获得最佳灰度外观。

ColorConvert[img, "GrayScale"]

ImageApply[{0.35, 0.45, 0.2}.# &, img]

我们可以通过用纯红、绿、蓝组成一个 3 像素的图像并转换它来获得 mathematica 使用的精确值:

 lvec = First@
         ImageData[
           ColorConvert[Image[{{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}}], 
             "GrayScale"]]

{0.299, 0.587, 0.114}

注意这些是 "Rec. 601 luna coefficients" 每个 http://en.wikipedia.org/wiki/Luma_%28video%29

在真实图像上进行测试:

 lena = ExampleData[{"TestImage", "Lena"}];
 lenag = ColorConvert[lena, "GrayScale"];
 ImageData@ImageApply[ lvec.# & , lena ] == ImageData@lenag

True