UIImage к YUV 422 Цветовое пространство - PullRequest
0 голосов
/ 09 января 2011

Я пытался понять это некоторое время, но безрезультатно, мне было интересно, может ли кто-нибудь помочь или направить меня в правильном направлении.

Мне нужно преобразовать UIImage или сохраненный JPG, чтобы получить его данные YUV422, чтобы я мог затем применить некоторые улучшения изображения и в результате преобразовать его обратно либо в JPG, либо в UIImage.

Я немного застрял на данный момент, сейчас я просто пытаюсь добраться до YUV422.

Любая помощь будет принята с благодарностью.

Заранее спасибо.

1 Ответ

0 голосов
/ 09 января 2011

Сначала необходимо прочитать маркеры JPEG, чтобы определить метаданные.Метаданные, такие как размер, частота дискретизации (обычно 4: 2: 2, но не всегда), таблицы квантования и таблицы Хаффмана.

Затем необходимо де-Хаффман-кодировать энтропийно закодированные данныесегмент.Это даст вам коэффициент постоянного тока, за которым следуют любые коэффициенты переменного тока для цветового канала для каждого канала в зигзагообразной форме.Затем вы должны де зигзагообразовать записи и умножить их на соответствующую таблицу квантования.Наконец, вы должны предварительно преобразовать обратное дискретное косинусное преобразование в декодированном макроблоке.

Это даст вам 3 канала в YCrCb (YUV для аналога) с частотой дискретизации, с которой кодировался JPEG.Если вам нужно, чтобы оно было 4: 2: 2, вам придется выполнить повторную выборку.

Надеемся, у вас есть библиотека для фактического декодирования JPEG, поскольку написание такой, которая совместима, является нетривиальной задачей.

Вот очень простой и некорректный JPEG декодер, который я начал писать, чтобы дать вам больше технических деталей. Ruby JPEG декодер Не удалось успешно реализовать IDCT

Для правильной реализации в C Я предлагаю IJG

...