Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: JPEG 4:2:2, JPEG 4:2:0
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Аудио/Видео интерфейсы
torik
Приветствую всех.

У micron-а (http://www.micron.com/) быть множество КМОП матриц, и даже систем на кристалле.
Что интересно - у них имеются матрицы с выходом в форматах JPEG 4:2:2, JPEG 4:2:0. Вроде то же самое быть и у, к примеру OmniVision... У микрона это, к примеру, MT9D131 (http://www.micron.com/products/partdetail?part=MT9D131C12STC)
Чо тут хорошего? Думаю, это удобный вариант для использования в IP камерах. Поток можно по изернету передать, т.к. он уже сжат.

Так вот - подскажите, пожалуйста:
- что же это за JPEG 4:2:2, JPEG 4:2:0 (описание там, скорости потока...)?
- нет ли у кого опыта применения матриц микроновских? тогда, может, поделитесь...
- может быть у кого имеется более подробное описание микронов?

Ах да, совсем забыл - их купить то где можно поштучно? smile.gif
Tod
Если интересует что такое JPEG4:2:2 и JPEG 4:2:0
То тут все просто, 4:2:2 и 4:2:0 показывает вам какой формат картинки был сжат джипегом.
Как известно, несжатая цветная картинка как правило представляется в двух форматах RGB или YUV (для джипег правильнее писать YCbCr, но мне так проще). С RGB все просто - это три цветосостовляющие. YUV состоит из чернобелого поля Y и двух цветоразностных составляющих U и V. Если мы картинку например 640х480 перекодируем "as is" из RGB в YUV то получим YUV4:4:4 формат - т.е. все три поля Y, U и V будут по 640х480 байт. Но как выясняется что YUV картинка существенно не теряет в качестве если UV поля уменьшить в два раза по оси Х - это YUV 4:2:2 формат. Другими словами, Y(640х480 байт), U(320х480 байт) и V(320х480 байт). В байтном потоке это выглядит как одна светоразностная компонента на два игрека: YUYVYUYVYUYV... Заметьте, что уже получили сжатие в полтора раза, еще не начав сжимать джипегом smile.gif.
Ну а с 4:2:0 это сжатие в два раза не только по оси X но и по Y. Другими словами, Y(640х480 байт), U(320х240 байт) и V(320х240 байт). Качество хуже, но начальное ужимание в два раза часто себя оправдывает.

Потом к этим картинкам применяется Джипег. Если хотите прикинуть как ужмется то можно поделить на 30. Я считаю это максимумом - можно добиться и большего сжатия но качество будет уже не очень. Другими словами: YUV4:4:4 640х480 это 900 кБайт несжатого и примерно 30 кБайт сжатого, при переходе на YUV4:2:2 получает 20 кБайт сжатого изображения, при переходе на YUV4:2:0 получает 15 кБайт сжатого изображения
torik
Спасибо за ответ, но все же разберемся подробнее.
Цитата
В даташыте на сенсор микрона написано:
Selectable output data format
– ITU-R BT.601 (YCbCr)
– 565RGB
– 555RGB
– 444RGB
– JPEG 4:2:2
– JPEG 4:2:0
– Raw 10-bit


1) 565RGB - два байта на пиксель.
555RGB и 444RGB - примерно тоже самое, но 15 и 12 бит на пиксель.
Т.е. это наиболее простое представление, RGB
2) ITU-R BT.601 (YCbCr) - глядя на эту рекомендацию (https://www-inst.eecs.berkeley.edu/~cs150/Documents/ITU601.PDF), начинаю путаться - в каком же виде все-таки представляются здесь выходные данные, я так понял что это вообще PAL...

Я так понимаю, что формат 565RGB можно отнести к 4:2:2, а 555RGB и 444RGB - 4:4:4.
Тогда ITU-R BT.601 (YCbCr) - это тоже 4:2:2, т.е. 6 бит на яркость, по 5 бит на цветоразностные.
Я правильно понимаю или нет?
Поясните, пожалуйста, подробнее, что же тогда 4:2:0.

В связи с вышесказанным первый вопрос:
- что можно почитать, где четко и ясно написано как связать 4:2:2 и прочее с YUV, YCbCr (между которыми разницы не вижу)? Желательно на русском.

И второй вопрос:
- формат JPEG 4:2:2 (0) - это сжатие каждого кадра в JPEG, тогда какой конкретно выходной поток данных (ведь не в виде же файла)... Если я буду гнать этот поток, к примеру через USB, в компьютер, то не должно возникнуть серьезных проблем с выводом, а если надо декодировать в специализированном устройстве...
Tod
Как раз в виде файлов! формат файла JFIF (как правило). С ip камеры это достается по фтп протоколу (у нас так). И речь идет о одной статической картинке, затем вы выгребаете другую ит.п. Но если речь идет именно о ВИДЕО-потоке (непрерывной последовательности кадров) и джипег необходим то нужно делать MJPEG (моушн джипег) тогда информация ляжет в хидерах.

RGB и YUV принципиально разные форматы представления картинки, да RGB 555 и RGB565 занимают столько же сколько YUV420 но в последнем случае чернобелая составляющая не коцается а урезается только две цветовые поднесущие. В первом случае урезаются три цветовых компоненты - качество хуже. Если у вас джепег апег ит.п. забудте о RGB. Вспомните о нем когда распакуете поток и видео на экран гнать будете.

Разница между YUV и YCrCb минимальна но существенна. В одном случае это положительный от 0 до 255 сигнал цветовой состовляющей, а в другом случае занкопеременный от -128 до 127. Переход от одного к другому осущестляется простым сдвигом динамического диапазона (прибавить или вычесть 128 математически)

Книга вам нужна "Video Demystified" к сожалению у меня только на английском. Если что пишите выложу гденить в инете
torik
Посмотрел в инете содержание книги - вроде неплохая книга, жаль што с аглицким у меня туговато. Но все равно придется преодолевать эту проблему, поэтому буду благодарен, если ее где-нибудь выложыте.

Тем не менее, может кто знает русскоязычную книгу с подобной тематикой? Автрор, название, ссылки....
Andreas1
torik, удалось решить последний вопрос:со штучной покупкой ? Если получится, поделитесь pls.
Tod
Цитата(torik @ Nov 13 2007, 10:57) *
Посмотрел в инете содержание книги - вроде неплохая книга, жаль што с аглицким у меня туговато. Но все равно придется преодолевать эту проблему, поэтому буду благодарен, если ее где-нибудь выложыте.


выслал ссылку вам на мыло
torik
Простите - по этой ссылке нет доступа (к фтп нет доступа)
может, если не очень весомое - на torizin-liteha@mail.ru?
_4afc_
Цитата(torik @ Nov 12 2007, 14:50) *
И второй вопрос:
- формат JPEG 4:2:2 (0) - это сжатие каждого кадра в JPEG, тогда какой конкретно выходной поток данных (ведь не в виде же файла)...

К сожалению MT9D131 выдаёт данные не в виде файла в параллельный интерфейс.
Выдаётся только пожатое изображение. JFIF заголовки надо самому создавать, таблицы коэффициентов вытаскивать или заливать в кристал по I2C.

Где взять поштучно не знаю, брал кит AES-ANA-BFV-2MP-G (AVNET DESIGN SERVICE) через Макро Групп за 20тр.
torik
Пожалуй проще самому сжать в ПЛИСе либо кодек внешний поставить. У микрона быть и другие хорошие матрицы без сжатия...
Noxter
А может где пример использывания этой матрицы завалялся?
Vitaliy_ARM
Цитата(_4afc_ @ Mar 25 2008, 12:19) *
К сожалению MT9D131 выдаёт данные не в виде файла в параллельный интерфейс.
Выдаётся только пожатое изображение. JFIF заголовки надо самому создавать, таблицы коэффициентов вытаскивать или заливать в кристал по I2C.

Где взять поштучно не знаю, брал кит AES-ANA-BFV-2MP-G (AVNET DESIGN SERVICE) через Макро Групп за 20тр.


Простите за тупой вопрос. А откуда эти коэффициенты брать? help.gif
Mig&L
Цитата(Vitaliy_ARM @ Sep 4 2008, 13:27) *
Простите за тупой вопрос. А откуда эти коэффициенты брать? help.gif

http://www.w3.org/Graphics/JPEG/itu-t81.pdf
Vitaliy_ARM
Цитата(Mig&L @ Sep 5 2008, 22:22) *


Вникаю, но еще лес пока темный.
Сделал недавно макетку. Хочу сделать, чтобы плата хотя бы зажила. Но для этого надо зашить в камеру эти таблицы. Можно ли их взять с исходников готовых JPEG кодеков?
Mig&L
Цитата(Vitaliy_ARM @ Sep 10 2008, 19:15) *
...Можно ли их взять с исходников готовых JPEG кодеков?

opencores.org : video compression system например
_4afc_
Цитата(Vitaliy_ARM @ Sep 10 2008, 19:15) *
Вникаю, но еще лес пока темный.
Сделал недавно макетку. Хочу сделать, чтобы плата хотя бы зажила. Но для этого надо зашить в камеру эти таблицы. Можно ли их взять с исходников готовых JPEG кодеков?

чтоб зажила вообще или в режиме jpeg?
Можно ведь и 88х72 Y8 гнать для проверки без jpeg.
Или заставить сфоткать один кадр и расчитать под него коэф., а затем их считать.

Кстати у MT9D131 есть режим вставки в поток начала и конца изображения, мож он тогда ещё и коэфициенты впихнёт?
Vitaliy_ARM
Для начала хотелось бы просто получить фотку Jpeg.

Цитата(_4afc_ @ Sep 11 2008, 13:14) *
Или заставить сфоткать один кадр и расчитать под него коэф., а затем их считать.


А можно об этом по-подробнее? У меня в SOC_BOOK такой возможности не описано (или я чего-то пропустил). Нашел, что коэффициенты должны грузиться после включения:
At power up initialization, the JPEG driver loads standard Huffman tables into Huffman
memory. Scaled versions of standard luma and chroma quantization tables and are
loaded into quantization memory.
И еще не понятно, что такое Scaled versions таблиц квантования?
blackfin
Цитата(Vitaliy_ARM @ Sep 16 2008, 14:03) *
И еще не понятно, что такое Scaled versions таблиц квантования?
Вам надо для начала rfc2435, Appendix A, стр.15 почитать.. cool.gif
Vitaliy_ARM
Цитата(blackfin @ Sep 16 2008, 14:11) *
Вам надо для начала rfc2435, Appendix A, стр.15 почитать.. cool.gif


Отличный документ. На эти вопросы ответ нашел. Теперь воюю с самим сенсором.

Пока делал так.

1 - аппаратный резет чипу
2 - настройка ФАПЧ1 на частоту 80 МГц
3 - чтение 16-ти рязрядного регистра по адресу 0x00 (из него читается 0x1519)
4 - читаю регистр 0xF0, из него читается 0x00, что говорит о том, что я работаю с 0-й страницей регистров. Хотя в доке написано что по умолчанию в этом регистре стоит 01;
5 - пишу в регистр 0xF0 значение 1 (переключаюсь на первую страницу регистров, для того чтобы получить доступ к регистрам по адресам 198 и 200), затем читаю его, а там когда как, то 0 то 1.
6 - когда зачитал 1 из регистра, пытаюсь почитать логическим способом переменные из области памяти драйвера JPEG (ID=9). Там вместо значений по умолчанию читается всякий бред, причем с одного и того же места разные значения.

Собственно все свелось к тому, что не могу писать переменные и таблицы.


Может кто-нибудь подскажет последовательность действий, чтобы получить один снимок JPEG с разрешением 1600х1200 или что я не так сделал или упустил?
_4afc_
Цитата(Vitaliy_ARM @ Oct 6 2008, 14:08) *
Может кто-нибудь подскажет последовательность действий, чтобы получить один снимок JPEG с разрешением 1600х1200 или что я не так сделал или упустил?


Если вам действительно удалось поднять частоту PLL, то вы заметили необходимость переключать постоянно страницы и другие шаманские команды:

Код
unsigned int SensorWrite(unsigned short Page,unsigned short Radr,unsigned short Vol);

void sensor80MHz(void)
{
SensorWrite(0,0xf0,0x0000);
SensorWrite(0,0xf0,0x0000);
SensorWrite(0,0xf0,0x0000);
    
SensorWrite(0,0x66,0x1402);
SensorWrite(1,0xC6,0xA103);
SensorWrite(1,0xC6,0xA104);

SensorWrite(1,0xf0,0x0000);

SensorWrite(0,0x65,0xC000);
SensorWrite(1,0xC6,0xA103);
SensorWrite(1,0xC6,0xA104);

SensorWrite(1,0xf0,0x0000);

SensorWrite(0,0x65,0x8000);
SensorWrite(1,0xC6,0xA103);
SensorWrite(1,0xC6,0xA104);

SensorWrite(1,0xf0,0x0000);

PauseUS(2);

SensorWrite(0,0x65,0x0000);
SensorWrite(1,0xC6,0xA103);
SensorWrite(1,0xC6,0xA104);

SensorWrite(1,0xf0,0x0000);
}


Скормите сей файлик сенсору - будет плеваться jpeg 320x240, только там полно лишних настроек ибо это лог интерфейса настройщика, всё что тыкал оператор, пока не добился результата.

Цитата(Vitaliy_ARM @ Sep 16 2008, 14:03) *
Для начала хотелось бы просто получить фотку Jpeg.
А можно об этом по-подробнее? У меня в SOC_BOOK такой возможности не описано

7 регистр JPEG:
Configuration and handshaking:
Bit 0—if 1, video; if 0, still snapshot
Bit 1—enable handshaking with host at every error frame
Bit 2—enable retry after an unsuccessful encode or transfer
Bit 3—host indicates it is ready for next frame
Bit 4—enable scaled quantization table generation
Bit 5—enable auto-select quantization table
Bit 7:6—quantization table ID

По ресету = 52, т.е. enable auto-select quantization table, host indicates it is ready for next frame, enable handshaking with host at every error frame, still snapshot.
Vitaliy_ARM
Цитата(_4afc_ @ Oct 6 2008, 17:55) *
Скормите сей файлик сенсору - будет плеваться jpeg 320x240, только там полно лишних настроек ибо это лог интерфейса настройщика, всё что тыкал оператор, пока не добился результата.


Скормил. Заметил на выходе, что камера выгоняет постоянно пакеты данных (скорее всего это и есть jfif 320x240). Чуть позже зачитаю и посмотрю, что именно она выдает. Заметил, что камера также выдает пакеты и сразу же после включения - на выходе PIXCLK генерится частота, на остальных шинах бегут данные.
Непонятен ряд действий, таких как запись в регистр 0xC6 1-й страницы значений, но отсутствие записи в регистр 0xC8. По даташиту в регистр 0xC6 пишется адрес или код переменной, а в 0xC8 - значение.
Продолжаю разбираться.

Если не секрет, к какой демоплате прилагался заголовочный файл, прикрепленый вами?
_4afc_
Цитата(Vitaliy_ARM @ Oct 13 2008, 17:06) *
Непонятен ряд действий, таких как запись в регистр 0xC6 1-й страницы значений, но отсутствие записи в регистр 0xC8. По даташиту в регистр 0xC6 пишется адрес или код переменной, а в 0xC8 - значение.

Возможно это чтение значений из регистров, в данном файле лог write_i2c без read_i2c.

Цитата(Vitaliy_ARM @ Oct 13 2008, 17:06) *
Если не секрет, к какой демоплате прилагался заголовочный файл, прикрепленый вами?


AES-ANA-BFV, только он не прилагается. Там к плате софт есть (на сайте компании), этот софт может коннектится к плате по USB (если на плате флешку своей мутью не стирать) и этот софт позваляет менять параметры платы и смотреть на результы своих нажатий на кнопочки - в окошках. В том числе можно и регистры глядеть/менять.
В любой момент можно нажать кнопку и сгенерится подобный файл содержащий все записи в кристал по i2c от момента старта программы.
Поэтому сей файл - результат моего давнего рукоблудства над этой платой через вышеозначенную программу.
Vitaliy_ARM
Цитата(_4afc_ @ Oct 13 2008, 17:50) *
В любой момент можно нажать кнопку и сгенерится подобный файл содержащий все записи в кристал по i2c от момента старта программы.
Поэтому сей файл - результат моего давнего рукоблудства над этой платой через вышеозначенную программу.


Если так тогда понятно. А вам эта плата сильно в изучении помогла? Удалось камеру запустить на полное разрешение? А то подумываю тоже этот кит взять, хотя сейчас Компел рекламирует кит с Davinci и 5 Мегапиксельной микроновской камерой + примеры h.264.
_4afc_
Цитата(Vitaliy_ARM @ Oct 14 2008, 14:52) *
Если так тогда понятно. А вам эта плата сильно в изучении помогла?


Она помогла выполнить НИР и за одну строчку в расходах я получил камеру и ЦСП. smile.gif
В рабочую систему эту камеру ставить нельзя. Хотя бы потому, что нет ераты или описания как именно менять регистры камеры по i2c. Драйвера демоплаты что-то шаманят - пишут, читают, проверяют что прописалось... Об этом не написано ни где. На плате не выведены полностью SPORT, а PPI только на вход или перешивать xilinx под себя.

Цитата(Vitaliy_ARM @ Oct 14 2008, 14:52) *
Удалось камеру запустить на полное разрешение?


1600х1200 YUYV работает. На 80МГц скалит в 640х480 YUYV без лесенок и дублирования строк со скоростью около 7 кадров в секунду. Только я понял, что буду в дальнейшем ориентироваться только на камеры с полным затвором.

Цитата(Vitaliy_ARM @ Oct 14 2008, 14:52) *
А то подумываю тоже этот кит взять, хотя сейчас Компел рекламирует кит с Davinci и 5 Мегапиксельной микроновской камерой + примеры h.264.


Мне Davinci не нравится. Вы внимательно почитайте что может конкретно поставляемый вам проц и какую функциональность обеспечивают реализованные именно в нём видео порты и прочие...
Заодно логические уровни сигналов посмотрите. А то производитель в рекламме Davinci перечисляет самые навороты каждой из моделей процессоров не конкретезируя её и создаётся впечатление, что всё это есть в выбраном вами процессоре - это не так.

h.264 там хреновенький и за программирование на АРМ надо бабок засылать в отличие от ЦСП.
dshashev
Здравствуйте, поднимаю тему, столкнулся с MT9D131!
Большее обсуждение связано с JPEGом, а мне хотелось бы узнать, а что передается по 8-битному параллельному порту, когда мы настраиваем модуль на выдачу просто RGB или ITU-R BT.601 (YCbCr)? Мне необходимо с симулировать передачу данных с этого модуля на МК и я не могу разобраться с тем, как это можно реализовать! Может кто подскажет? Заранее, спасибо!
blackfin
Цитата(dshashev @ Nov 15 2012, 09:33) *
.. что передается по 8-битному параллельному порту, когда мы настраиваем модуль на выдачу просто RGB или ITU-R BT.601 (YCbCr)?

Читайте DS. Там всё это есть:
Цитата
Selectable output data format: ITU-R BT.601 (YCbCr), 565RGB, 555RGB, 444RGB, JPEG 4:2:2, JPEG 4:2:0, and raw 10-bit

Формат выходных данных - на Figure 6 - 8 и в Table 16 - 18.
dshashev
Спасибо за подсказку, а по поводу симуляции, нет никаких идей?

Попытался разобраться с этим вопросом в DS, что-то у меня плохо это получается, не могли бы вы, если несложно, пояснить?

Просто английский хромает, поэтому сложно понимать определения, связанные с изображением. Скажем, что они понимают под "image decimation" ну и так далее...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.