YUV420 Определение цвета изображения, например цветовой диапазон HSV - PullRequest
0 голосов
/ 11 декабря 2018

Я получаю YUV420 данные изображения в byte[] на каждом onDrawFrame().Мне нужно выяснить цвета, присутствующие на изображении из данного байтового массива.Как я могу извлечь значения U и V для каждого пикселя и использовать их, чтобы определить, присутствует ли определенный цвет в этом изображении (что-то вроде HSV цветовой диапазон).

Я отделил УФ-массив от исходного изображениятакие данные:

byte[] data = image.getData();
int inputYLength = image.getWidth() * image.getHeight();
int inputUVLength = image.getWidth() * image.getHeight() / 2;
ByteBuffer uvBuffer = ByteBuffer.allocateDirect(inputUVLength);

uvBuffer.put(image.getData(), inputYLength, inputUVLength);
uvBuffer.position(0);

uvBuffer содержит байтовые значения для компонентов U и V.Как использовать это для определения цвета?

1 Ответ

0 голосов
/ 12 декабря 2018

U и V компоненты вашего изображения имеют пониженную дискретизацию относительно компонента Y.Таким образом, первым шагом является либо:

  • для повышения частоты U и V для соответствия Y, либо
  • уменьшение Y для соответствия U и V.

То, что вы делаете, зависит от того, какое разрешение вам необходимо для финальной фазы определения оттенка.

Второй шаг - преобразование YUV из первого шага в RGB.

Третий шаг - преобразовать RGB из второго шага в HSL (оттенок, насыщенность и яркость).

Последний шаг - выбрать H (оттенок), соответствующий нужным цветам.

Этот ответ содержит ссылки на нужные вам формулы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...