2010-07-08 2 views
1

как сделать изображение с растровым изображением 160 * 70 над растровым изображением 640 * 280 и отразить его край после преобразования обоих растровых изображений в yuv 4: 4: 4 и записать его в один файл yuv? и как мне конвертировать то же самое в yuv 4: 2: 0? Могли бы вы, пожалуйста, помогите мне в том, как мне закодировать то же самое в c?преобразование из rgb в yuv 4: 2: 0

+1

Что вы пробовали? Где у вас проблемы? Если вы действительно задумываетесь обо всех этих вещах, вы должны попытаться разбить свою проблему на несколько частей, попытаться решить каждую часть и задать конкретный вопрос всякий раз, когда вы застреваете. –

ответ

3

Преобразование в YUV 4: 4: 4 - Это чисто аффинное преобразование для каждого RGB-вектора. Просто используйте правильную формулу для любого варианта YUV, который вам нужен. Вы, вероятно, захотите также отделить изображение от самолетов в этот момент.

Преобразование в YUV 4: 2: 0 - Это просто проблема передискретизации. Вам нужно переделать U и V плоскости на половину ширины и половину высоты. Do NOT просто пропустить образцы («выборка ближайших соседей»); это приведет к очень уродливому псевдониму. Вы могли бы просто усреднить соответствующие квадраты 2x2 или использовать более продвинутый фильтр. Для понижающей дискретизации, среднее значение области в любом случае довольно близко к идеалу; гауссово может дать умеренно лучшие результаты.

Если вы не против использования библиотечного кода, libswscale из ffmpeg может выполнить оба этих действия для вас и сделает это очень быстро.

Наконец, перемещение маленького изображения по большому: это чисто прямоугольное изображение или оно использует альфа-канал? В любом случае вам просто нужно будет перебрать координаты, которые вы хотите, чтобы они отображались, и выводить изображение для каждой точки. Если это прямоугольник, вы просто копируете пиксели, тогда как если у него есть альфа-канал, вам нужно использовать его для альфа-смешивания (интерполирование между значениями пикселей в соответствии с альфа-значением).

1

Этот wikipedia article имеет RGB -> YUV440.

alt text

И RGB -> YUV420 описывается в той же статье в this section.

я не понял:

как я сделать 160 * 70 растровое изображение шаг за 640 * 280 растрового изображения и отражался от ее края

+2

Одна сложность заключается в том, что YUV420 обычно имеет фрейм упакован, изображение Y является первым, а затем изображениями с половинным разрешением U и V. Форматы изображений RGB, как правило, имеют пиксельную упаковку –

Смежные вопросы