Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QCIF -> NTSC ?
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
Саша Z
Есть задача отображения натурально предназначенной для 320х240 LCD картинки на мониторе/TV NTSC.
По ходу дела RGB данные (для LCD) будут проходить gamma-correction как один из этапов подготовки к переводу в формат CCIR 601, то бишь YCbCr 4:2:2. След. этам это scaling 320х240 на резолюцию NTSC для телевизора/TV монитора. Посему скейлить нужно под резолюцию 720х485 (для сохранения правильного aspect ratio ибо стандартные TV пиксели не квадратные).

Вопрос состоит в том - как правильно делать upscale картинки 320х240 в 720х485 ? Думаю делать его в RGB, т.е. еще до перевода в YCbCr 4:2:2. Или-же лучше делать уже в YCbCr 4:2:2 ?

Какие есть рекоммендуемые подходы к этому ? В горизонтальном направлении - просто дублировать пиксели ? Или какая-то более хитрая интерполяция ?

Идеи ?
Саша Z
Сам себе отвечаю:
думаю упростить задачу: делать upscale до VGA (640х480) что наверно значительно легче. Затем VGA картинку "одеть" в черную рамку пдоогнав общий размер до нужных 720х485 (active video) + нужные blank пиксели и lines.

Кроме того, т.к. на входе - progressive, нужно делать interlacing для выхода. Думаю делать его след. образом (разговор пока только касательно active video):
Иметь буфер картинки размером 640х240 и выгонять его наружу encoderу со скоростью 60 fps "маскируя" каждый такой frame под field, естественно с соответствующими field кодаму цинхронизации. Таким образом, encoder будет получать нужные interlaced syncs и "обманным" путем будет счутать каждый frame на входе - fieldом. Т.е. получим вертикальный up-scaling удвоением каждой реальной строки картинки.

Теперь вопрос в следующем: как грамотно интерполировать 320 пикселей в 640 ? Просто удваивать каждый пиксель ? Делать среднее каждых двух соседних пикселей и вставлять его между ними ? Подозреваю последнее добавит резмытости в картинке...(понадобиться какой-нить фильтр подшарпить ?)

Что скажем ?
ryhor
Пока скажу только по увеличению разрешения.
картинка в YCbCr - имеет некое преимущество для обработки - а именно вот такое: Необходимо аккуртано работать только с Y компонентой, а Cb и Cr можно обрабатывать гораздо более безжалостно.
т.е. скажем например Y бикубиком - а эти два просто ближайшим. Причина такой возможности - в способе восприятия глазом яркостной и цветовой информации.

кстати если я правильно понимаю у вас 320х240 есть RGB и можете получить 320х240 4:4:4 YCbCr
тогда для х2 увеличения - Cb Cr компоненты трогать нужно совсем немного. ну или другими словами 4:4:4 на 320х240 и 4:2:2 на 640х480 для Cb Cr компонент не требуют много обработки.

думаю для вас ничего нового - но для общности картины
http://www.answers.com/main/ntq-sname-Guru...oma+subsampling
Саша Z
Цитата(ryhor @ Nov 28 2007, 09:13) *
Пока скажу только по увеличению разрешения.
картинка в YCbCr - имеет некое преимущество для обработки - а именно вот такое: Необходимо аккуртано работать только с Y компонентой, а Cb и Cr можно обрабатывать гораздо более безжалостно.
т.е. скажем например Y бикубиком - а эти два просто ближайшим. Причина такой возможности - в способе восприятия глазом яркостной и цветовой информации.

кстати если я правильно понимаю у вас 320х240 есть RGB и можете получить 320х240 4:4:4 YCbCr
тогда для х2 увеличения - Cb Cr компоненты трогать нужно совсем немного. ну или другими словами 4:4:4 на 320х240 и 4:2:2 на 640х480 для Cb Cr компонент не требуют много обработки.

думаю для вас ничего нового - но для общности картины
http://www.answers.com/main/ntq-sname-Guru...oma+subsampling


Спасибо.
Так up-scaling рекоммендуется делать уже в конечном формате ? (CCIR 601 YCbCr 4:2:2)
Sorry за возможно глупые вопросы, я новичок в теме video scalingа, что имеется ввиду под "два близжайших" ? Усреднение двух соседних ?
Насчет luma - вы имеете ввиду из "рамножение" посредством bicubic interpolation ?
ryhor
Цитата(Саша Z @ Nov 28 2007, 11:36) *
Спасибо.
Так up-scaling рекоммендуется делать уже в конечном формате ? (CCIR 601 YCbCr 4:2:2)
Sorry за возможно глупые вопросы, я новичок в теме video scalingа, что имеется ввиду под "два близжайших" ? Усреднение двух соседних ?
Насчет luma - вы имеете ввиду из "рамножение" посредством bicubic interpolation ?


Да рекомендуют обрабатывать в YCbCr пространстве.

Вам надо точно понять какая информация у вас исходная и какой вам надо результат. например 320х240 есть QVGA, но никак не QCIF который 176х144 и сам CIF который 352×288
предположим что у вас
- исходные 320х240 QVGA в RGB, которые можно преобразовать в YCbCr 4:4:4
- выходные CCIR 601 YCbCr 4:2:2

Если это так - то выходной сигнал имеет меньшее масштабирование по цветовым составляющим чем яркостный. Т.е. яркостный надо в 2 раза по каждой оси, а цветовой только по одной.

Понятно что при такой задаче поднимать разрешение в RGB системе, потом преобразовывать RGB в YCbCr не есть хорошо. Так как будут обработаны не нужные данные. Вам лучше сразу перейти в YCbCr и для каждой компоненты применять соотвествующий алгоритм повышения разрешения.

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

Для яркости Y вам надо использовать бикубический метод (bicubic) (сплайн интерполяции), а для цветовых компонент попробовать метод ближайшего соседа ('nearest'). Что бы понять как оно будет выглядеть - возьмите в руки матлаб и в нем все попробуйте.
Саша Z
Цитата(ryhor @ Dec 2 2007, 07:56) *
Да рекомендуют обрабатывать в YCbCr пространстве.

Вам надо точно понять какая информация у вас исходная и какой вам надо результат. например 320х240 есть QVGA, но никак не QCIF который 176х144 и сам CIF который 352×288
предположим что у вас
- исходные 320х240 QVGA в RGB, которые можно преобразовать в YCbCr 4:4:4
- выходные CCIR 601 YCbCr 4:2:2

Если это так - то выходной сигнал имеет меньшее масштабирование по цветовым составляющим чем яркостный. Т.е. яркостный надо в 2 раза по каждой оси, а цветовой только по одной.

Понятно что при такой задаче поднимать разрешение в RGB системе, потом преобразовывать RGB в YCbCr не есть хорошо. Так как будут обработаны не нужные данные. Вам лучше сразу перейти в YCbCr и для каждой компоненты применять соотвествующий алгоритм повышения разрешения.

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

Для яркости Y вам надо использовать бикубический метод (bicubic) (сплайн интерполяции), а для цветовых компонент попробовать метод ближайшего соседа ('nearest'). Что бы понять как оно будет выглядеть - возьмите в руки матлаб и в нем все попробуйте.



Спасибо, это проясняет ситуацию.
Да, моя ошибка, в имел ввиду QVGA как входная резолюция (320х240).
Кроме того, речь идет об интерполяции изображения тепловой системы ночного видение, т.е. исходная картинка - монохром. А это значит цвет большого значения не имеет, он фактически будет только на overlay надписях системы на картнике. Этот факт действительно ведет к тому что на яркост (Y) нужно дать качественную интерполяцию, тогда как на компонентах цвета можно съэкономить, т.е. применить грубую интерполяцию в целях экономии процессинга/памяти.
Поробовать в Матлабе вначале до попытки реализации в FPGA - хорошая идея...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.