Как сжать изображение YUYV в JPEG

(Крест размещен в списке пользователей libjpeg.)

У меня проблема с libjpeg-turbo.

Для функции tjCompress2 требуется сжатие изображения RGB или Greyscale.

http://libjpeg-turbo.sourceforge.net/ljtdoc.branches_1.3.x/turbojpeg-c/group___turbo_j_p_e_g.html#gaba62b7a98f960839b588579898495cf2

(Извините, вам придется вставить эту ссылку, поскольку она нарушает уценку.)

Моя веб-камера (PS3 EyeToy) имеет следующие характеристики:

chris@raspberrypi ~ $ v4l2-ctl --get-fmt-video
Format Video Capture:
    Width/Height  : 320/240
    Pixel Format  : 'YUYV'
    Field         : None
    Bytes per Line: 640
    Size Image    : 153600
    Colorspace    : SRGB

Из http://en.wikipedia.org/wiki/JPEG видно, что YUYV эквивалентен YCbCr, который необходим JPEG (хотя он имеет половину данных Cb и Cr по сравнению с яркостью). Я правильно понял?

Я знаю, как превратить YUYV в RGB, используя матрицу, но кажется, что это пустая трата недостаточных циклов ЦП и точности цветопередачи, чтобы выполнить два изменения цветового пространства, когда ни один не нужен.

Есть ли функция, которая может напрямую сжимать изображение YUYV в JPEG?

1 ответ

Со времени, когда был задан вопрос, tjCompressFromYUV функция была реализована в TurboJPEG API. Это берет изображение в YCbCr или же YUV отформатировать и преобразовать его в изображение JPEG.

Тем не менее, чтобы сжать YUYV изображение с использованием TurboJPEG API, вам все равно нужно преобразовать YUYV в Y-Cb-Cr пиксельный формат.

Там также может быть небольшой шанс использовать YUYV изображение как YUV изображение с подвыборкой 4:2:2, так как это приведет к двум Y компоненты в UV компоненты, но если этот источник является точным, есть четыре различных способа размещения YUVY компоненты. Но чтобы быть уверенным, есть шанс 1/4 для этого работать.

В противном случае вы также можете преобразовать изображение с помощью PNGU или чего-то подобного, прежде чем преобразовать его в JPEG, поскольку эта библиотека способна "сохранять изображения YCbYCr в формате png RGB8".

Другие вопросы по тегам