Mathematica对RGB到Graylevel的详细计算

时间:2015-01-07 04:26:49

标签: wolfram-mathematica rgb grayscale

我试过

ColorConvert[img, "Grayscale"]

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

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

或其他什么?

2 个答案:

答案 0 :(得分:2)

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

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

{0.299,0.587,0.114}

请注意,这些是每http://en.wikipedia.org/wiki/Luma_%28video%29

的“Rec.601 luna系数”

在真实图像上测试:

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

答案 1 :(得分:1)

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

以下命令生成的两个图像是紧密匹配,但您可以通过短程序进行多重比较来确定精确的缩放矢量。对不同图像的进一步测试将确定ColorConvert是否始终使用相同的矢量,或者是否在转换之前分析图像以获得最佳灰度外观。

ColorConvert[img, "GrayScale"]

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