20-02-2004 16:43 Trust No One
(Ранее по теме: 1, 2)
Место действия: Intel Performance Primitives Library.
RGBToGray
Converts an RGB image to gray scale
using fixed transform coefficients.

IppStatus ippiRGBToGray_<mod>(const Ipp<datatype>* pSrc, int srcStep,
  Ipp<datatype>* pDst, int dstStep, IppiSize roiSize);

[…]
This function uses the following basic equation to compute luma from non-linear gamma-corrected red, green, and blue values:
Y′ = 0.299 * R′ + 0.587 * G′ + 0.114 * B′

Note that the transform coefficients conform to the standard for the NTSC red, green, and blue CRT phosphors.
[…]

What’s wrong with this picture?

Да всё вроде правильно излагают.

Вот только, когда реально в программе это заюзаешь, будешь думать, почему grayscal’ится не так, как в других программах.

А когда засунешь в неё тестовый пример с красным квадратом, синим кругом и зелёным треугольником, то окажется, что красный квадрат стал темнее синего круга темнее зелёного треугольника. А должно быть наоборот, синий темнее красного темнее зелёного.

Потому что кто-то перепутал синий с красным — порядок байт. И не проверил, что функция ведёт себя как заявлено.

Придётся откатываться на ippiColorToGray, которая даёт задавать коэффициенты. Но вообще тенденция нездоровая.
Закрыть