我试过
ColorConvert[img, "Grayscale"]
将 RGB转换为Graylevel 。 我想知道mathematica的详细计算..
Gray level= square(R^2+G^2+B^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]