Я старался
ColorConvert[img, "Grayscale"]
чтобы преобразовать RGB в Graylevel. Мне интересен подробный расчет mathematica..
Gray level= square(R^2+G^2+B^2)?
или что-то другое?
Я старался
ColorConvert[img, "Grayscale"]
чтобы преобразовать RGB в Graylevel. Мне интересен подробный расчет mathematica..
Gray level= square(R^2+G^2+B^2)?
или что-то другое?
Мы можем получить точные значения, используемые mathematica, составив 3-пиксельное изображение с чистым красным, зеленым и синим цветом и преобразовав его:
lvec = First@
ImageData[
ColorConvert[Image[{{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}}],
"GrayScale"]]
{0.299, 0.587, 0.114}
Обратите внимание, что это «коэффициенты луны Rec. 601» согласно http://en.wikipedia.org/wiki/Luma_%28video%29
Проверьте это на реальном изображении:
lena = ExampleData[{"TestImage", "Lena"}];
lenag = ColorConvert[lena, "GrayScale"];
ImageData@ImageApply[ lvec.# & , lena ] == ImageData@lenag
Истинный
См. раздел Как преобразовать цвета в оттенки серого?, чтобы понять, как могут выполняться вычисления.
Два изображения, созданные приведенными ниже командами, очень похожи, но вы можете определить точный вектор масштабирования с помощью короткой программы, выполняющей множественные сравнения. Дальнейший тест на другом изображении позволит установить, использует ли ColorConvert
один и тот же вектор все время, или изображение анализируется перед преобразованием для получения оптимального вида в градациях серого.
ColorConvert[img, "GrayScale"]
ImageApply[{0.35, 0.45, 0.2}.# &, img]