Способ определения векторов движения в режиме прямого предсказания
Иллюстрации
Показать всеИзобретение относится к системам кодирования движущегося изображения, а именно к способам кодирования движущегося изображения, направленным на повышение эффективности кодирования с использованием удаленных по времени опорных кадров. Технический результат заключается в повышении эффективности кодирования в режиме прямого предсказания и в уменьшении количества бит информации для кадра, в котором происходит смена сцены. Технический результат достигается тем, что в способе в процессе кодирования/декодирования каждого блока В-кадра в режиме прямого предсказания определяют векторы движения в режиме прямого предсказания, используя вектор движения смещенного блока в заданном кадре, используемом для кодирования/декодирования В-кадра, при этом, если типом заданного кадра является удаленный по времени опорный кадр, один из векторов движения, подлежащих определению, принимают равным вектору движения смещенного блока, а другой из векторов движения, подлежащих определению, принимают равным 0. 2 н. и 3 з.п. ф-лы, 6 ил.
Реферат
Область техники, к которой относится изобретение
[0001] Настоящее изобретение относится к системам кодирования движущегося изображения, а именно к способам кодирования движущегося изображения, направленным на повышение эффективности кодирования с использованием удаленных по времени опорных кадров.
Описание уровня техники
[0002] Для обеспечения оптимального сжатия и кодирования последовательности движущихся изображений необходимо распознавать смену сцен в последовательности изображений. Это связано с тем, что во многих случаях применения видео, например, в передачах новостей, при трансляции спортивных соревнований, для диалогов по типу интервью с использованием съемки крупным планом и многопунктовых видеоконференций, приходится иметь дело с повторением смены сцен. Подобная смена сцены может происходить как по всему кадру, так и в определенной части кадра.
[0003] При обнаружении смены сцен способ кодирования цифровых изображений может быть скорректирован соответствующим образом. Например, поскольку сходство между кадром, в котором происходит смена сцены, и кадром в предыдущей сцене весьма мало, кадр со сменой сцены кодируют посредством режима внутрикадрового предсказания, согласно которому кодирование кадра осуществляют с использованием предсказания только по декодированным выборкам в пределах того же самого кадра, а не посредством режима межкадрового предсказания, в рамках которого кадр кодируют с компенсацией движения по ранее декодированным опорным кадрам.
[0004] На более детальном уровне кадр, в котором смена сцены происходит по всей площади изображения, представляет собой исходный кадр, кодирование которого осуществляют в режиме внутрикадрового предсказания по всем блокам. Если смена сцены происходит лишь на определенном участке кадра, то все блоки в пределах тех участков, где происходит смена сцены, кодируют в режиме внутрикадрового предсказания. Поскольку при использовании режима внутрикадрового предсказания генерируется большее число битов по сравнению с режимом межкадрового предсказания, то очень часто для последовательности, в которой происходят смены сцен, возникают непоправимые проблемы при передаче информации с низкой скоростью в бит/с.
[0005] Как правило, при использовании В-кадра в системе кодирования движущегося изображения порядок кодирования отличается от порядка воспроизведения.
[0006] На фиг.1 показан порядок отображения, при котором каждый кадр отображают с использованием двух В-кадров. Как видно из фиг.1, из всех кадров, подлежащих отображению, первым отображают исходный кадр I. Два В-кадра В1 и В2 отображают последовательно вслед за исходным кадром I. Р-кадр Р3 отображают после В-кадров. Далее выполняют следующие операции, как указано выше. Другими словами, четвертый и пятый В-кадры В4 и В5 отображают после Р-кадра Р3. Затем отображают Р-кадр Р6.
[0007] Однако очередность кодирования цифрового изображения не совпадает с очередностью их отображения. Другими словами, Р-кадр кодируют ранее В-кадра.
[0008] На фиг.2 представлена очередность кодирования, при которой каждый кадр отображают с использованием двух В-кадров. Как показано на фиг.2, если кодируют исходный кадр I, то Р-кадр Р3 будут кодировать перед двумя В-кадрами В1 и В2, которые отображаются до Р-кадра Р3. Затем последовательно кодируют кадры Р6, В4, В5, Р9, В7, В8, Р12, В10 и В11.
[0009] В данном случае для В-кадров используются пять режимов кодирования, а именно - режим внутрикадрового предсказания, режим предсказания вперед, режим обратного предсказания, режим двунаправленного предсказания и режим прямого предсказания. В режиме двунаправленного предсказания используют два опорных кадра, которые могут располагаться либо перед, либо после В-кадра, или же один из них может располагаться перед В-кадром, а второй - после В-кадра.
[0010] Следует отметить, что в режиме прямого предсказания для сохранения непрерывности движения при переходе между двумя соседними кадрами используют временную избыточность. Другими словами, в режиме прямого предсказания вектор движения вперед и вектор движения назад режима прямого предсказания для В-кадра определяют по вектору движения смещенного блока в следующем кадре, идущем сразу после В-кадра. Такой режим прямого предсказания не требует дополнительных битов информации, например, информации о движении, поэтому скорость передачи в бит/с может быть снижена.
[0011] В данном случае вектор движения вперед MVf и вектор движения назад MVb стандартного режима прямого предсказания получают посредством масштабирования вектора движения MV с учетом временного интервала между кадрами, где MV - вектор движения смещенного блока в следующем кадре. Другими словами, вектор движения вперед MVf и вектор движения назад MVb получают с использованием следующих уравнений 1 и 2:
[0012] Уравнение 1:
[0013] Уравнение 2:
где MV - вектор движения смещенного блока в следующем кадре, MVf - вектор движения вперед в режиме прямого предсказания для В-кадра, MVb - вектор движения назад в режиме прямого предсказания для В-кадра, TRd - временной интервал между следующим кадром и опорным кадром, указываемым вектором движения смещенного блока в следующем кадре, и TRb - временной интервал между В-кадром и опорным кадром, указываемым вектором движения смещенного блока в следующем кадре.
[0014] В результате режим прямого предсказания представляет собой режим кодирования для получения двух блоков с компенсацией движения с использованием двух векторов движения MVf и MVb и дает предсказываемый блок путем осреднения или интерполяционного вычисления по двум блокам с компенсацией движения.
КРАТКОЕ ИЗЛОЖЕНИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
[0015] Целью настоящего изобретения является создание такого способа кодирования движущегося изображения, который позволял бы в значительной степени устранить одну или несколько проблем, связанных с ограничениями и недостатками известных аналогичных средств.
[0016] Соответственно цель настоящего изобретения заключается в разработке способа кодирования движущегося изображения, позволяющего повысить эффективность кодирования в режиме прямого предсказания с использованием удаленного по времени опорного кадра для В-кадра.
[0017] Другой целью настоящего изобретения является разработка способа кодирования движущегося изображения, позволяющего на основе использования режима межкадрового предсказания снизить количество битов информации для кадра, в котором происходит смена сцены.
[0018] Дополнительные преимущества, цели и признаки настоящего изобретения отчасти будут рассмотрены в представленном ниже описании, а отчасти станут понятными для специалистов, после изучения представленных ниже материалов или в результате практической реализации данного изобретения. Цели и другие преимущества настоящего изобретения можно понять на основе анализа конкретной структурной схемы, представленной в описании и формуле изобретения, а также в прилагаемых чертежах.
[0019] Для достижения указанных целей и других преимуществ, а также в соответствии с назначением данного изобретения, осуществленного и подробно изложенного в настоящем описании, способ определения векторов движения в режиме прямого предсказания для В-кадра заключается в том, что в процессе кодирования каждого блока В-кадра с использованием режима прямого предсказания по-разному определяют векторы движения в режиме прямого предсказания для В-кадра в зависимости от типа базового буфера, в котором хранят опорный кадр, указанный вектором движения смещенного блока в заданном кадре.
[0020] Желательно, чтобы заданный кадр был одним из близких по времени опорных кадров, используемых при кодировании В-кадра.
[0021] Тип опорного кадра задают с помощью индекса опорного кадра, предварительно определенного для смещенного блока в заданном кадре.
[0022] Значение индекса опорного кадра сохраняют в системном буфере.
[0023] Если вектор движения, определенный для смещенного блока в заданном кадре, указывает на удаленный по времени опорный кадр, то вектор движения вперед в режиме прямого предсказания для В-кадра будет являться вектором движения смещенного блока в заданном кадре, а вектор движения назад в режиме прямого предсказания для В-кадра принимают равным нулю.
[0024] Вектор движения, определенный для смещенного блока в заданном кадре, хранят в системном буфере.
[0025] Если вектор движения, определенный для смещенного блока в заданном кадре, указывает на близкий по времени опорный кадр, то векторы движения в режиме прямого предсказания для В-кадра определяют путем масштабирования вектора движения смещенного блока в заданном кадре с учетом временного интервала между кадрами.
[0026] Вектор движения, определенный для смещенного блока в заданном кадре, хранят в системном буфере.
[0027] В соответствии с другим аспектом настоящего изобретения способ определения векторов движения в режиме прямого предсказания для В-кадра заключается в том, что в процессе кодирования каждого блока В-кадра с использованием режима прямого предсказания определяют векторы движения в режиме прямого предсказания для В-кадра в зависимости от типа базового буфера, в котором хранится заданный кадр.
[0028] Базовый буфер включает базовый буфер удаленных по времени опорных кадров и базовый буфер близких по времени опорных кадров.
[0029] Желательно, чтобы заданный кадр был одним из опорных кадров, близких или удаленных по времени.
[0030] Если заданный кадр находится в базовом буфере удаленных по времени опорных кадров, вектор движения вперед в режиме прямого предсказания для В-кадра будет являться вектором движения смещенного блока в заданном кадре, а вектор движения назад в режиме прямого предсказания для В-кадра принимают равным нулю.
[0031] Если заданный кадр находится в базовом буфере близких по времени опорных кадров, векторы движения в режиме прямого предсказания для В-кадра определяют в зависимости от типа базового буфера, в котором хранят опорный кадр, указанный вектором движения смещенного блока в заданном кадре.
[0032] Тип опорного кадра задают с помощью индекса опорного кадра, предварительно определенного для смещенного блока в заданном кадре.
[0033] Значение индекса опорного кадра хранят в системном буфере.
[0034] Если вектор движения, определенный для смещенного блока в заданном кадре, указывает на удаленный по времени опорный кадр, то вектор движения вперед в режиме прямого предсказания для В-кадра будет являться вектором движения смещенного блока в заданном кадре, а вектор движения назад в режиме прямого предсказания для В-кадра принимают равным нулю.
[0035] Вектор движения, определенный для смещенного блока в заданном кадре, хранят в системном буфере.
[0036] Если вектор движения, определенный для смещенного блока в заданном кадре, указывает на близкий по времени опорный кадр, то векторы движения в режиме прямого предсказания для В-кадра определяют путем масштабирования вектора движения смещенного блока в заданном кадре с учетом временного интервала между кадрами.
[0037] Вектор движения, определенный для смещенного блока в заданном кадре, хранят в системном буфере.
[0038] В соответствии с другим аспектом настоящего изобретения способ кодирования Р-кадра движущегося изображения в режиме межкадрового предсказания заключается в том, что: (а) выявляют смену сцены в Р-кадре, и (b) если в Р-кадре происходит смена сцены, то Р-кадр кодируют с обращением к удаленному по времени опорному кадру.
[0039] Желательно, чтобы Р-кадр, в котором происходит смена сцены, был одним из кадров с полной сменой сцены или с частичной сменой сцены.
[0040] Если Р-кадр со сменой сцены является кадром с частичной сменой сцены, то блоки, находящиеся в пределах участка со сменой сцены, кодируют с использованием удаленного по времени опорного кадра.
[0041] Базовый буфер, в котором хранят удаленный по времени опорный кадр, является буфером для хранения кадра, закодированного до заданного времени.
[0042] Если Р-кадр со сменой сцены является кадром с частичной сменой сцены, то блоки, находящиеся в пределах того участка, где изменения сцены не происходит, кодируют с использованием близкого по времени опорного кадра.
[0043] Базовый буфер, в котором хранят близкий по времени опорный кадр, является буфером для хранения кадра, закодированного после заданного времени.
[0044] В соответствии с другим аспектом настоящего изобретения способ кодирования последовательности движущихся изображений в системе кодирования движущихся изображений заключается в том, что (а) выявляют смену сцены в Р-кадре, (b) если в Р-кадре происходит смена сцены, то Р-кадр кодируют в межкадровом режиме с обращением к удаленному по времени опорному кадру, (с) в процессе кодирования каждого блока в В-кадре с использованием режима прямого предсказания в соответствии с порядком кодирования определяют тип базового буфера, в котором хранят заданный кадр, и (d) определяют векторы движения в режиме прямого предсказания для В-кадра в соответствии с типом базового буфера и кодируют В-кадр в режиме прямого предсказания.
[0045] Вектор движения, определенный для смещенного блока в заданном кадре, хранят в системном буфере.
[0046] Если заданный кадр находится в базовом буфере удаленных по времени опорных кадров согласно операции (d), то вектор движения вперед в режиме прямого предсказания для В-кадра будет представлять собой вектор движения смещенного блока в заданном кадре, а вектор движения назад в режиме прямого предсказания для В-кадра принимают равным нулю.
[0047] Если заданный кадр находится в базовом буфере близких по времени опорных кадров согласно операции (d), то векторы движения в режиме прямого предсказания для В-кадра определяют в зависимости от типа базового буфера, в котором хранят опорный кадр, указанный вектором движения смещенного блока в заданном кадре.
[0048] Тип опорного кадра задают с помощью индекса опорного кадра, предварительно определенного для смещенного блока в заданном кадре.
[0049] Значение индекса опорного кадра хранят в системном буфере.
[0050] Если вектор движения, определенный для смещенного блока в заданном кадре, указывает на удаленный по времени опорный кадр, то вектор движения вперед в режиме прямого предсказания для В-кадра будет представлять собой вектор движения смещенного блока в заданном кадре, а вектор движения назад в режиме прямого предсказания для В-кадра принимают равным нулю.
[0051] Вектор движения, определенный для смещенного блока в заданном кадре, хранят в системном буфере.
[0052] Если вектор движения, определенный для смещенного блока в заданном кадре, указывает на близкий по времени опорный кадр, то векторы движения в режиме прямого предсказания для В-кадра определяют путем масштабирования вектора движения, определенного для смещенного блока в заданном кадре, с учетом временного интервала между кадрами.
[0053] Вектор движения, определенный для смещенного блока в заданном кадре, хранят в системном буфере.
[0054] Р-кадр, в котором происходит смена сцены, представляет собой один из кадров с полной или частичной сменой сцены.
[0055] Если Р-кадр со сменой сцены является кадром с частичной сменой сцены, то блоки, принадлежащие тому участку изображения, где происходит смена сцены, кодируют с использованием удаленного по времени опорного кадра.
[0056] Базовый буфер, в котором хранят удаленный по времени опорный кадр, представляет собой буфер для хранения кадра, закодированного до заданного времени.
[0057] Если Р-кадр со сменой сцены является кадром с частичной сменой сцены, то блоки, принадлежащие тому участку изображения, где не происходит смена сцены, кодируют с использованием близкого по времени опорного кадра.
[0058] Базовый буфер, в котором хранят близкий по времени опорный кадр, представляет собой буфер для хранения кадра, закодированного после заданного времени.
[0059] Базовый буфер близких по времени опорных кадров является буфером обратного магазинного типа.
[0060] Заданный кадр для кодирования в режиме прямого предсказания в В-кадре является одним из опорных кадров, используемых при кодировании В-кадра.
[0061] В соответствии с еще одним аспектом настоящего изобретения способ предсказания Р-кадра в режиме межкадрового предсказания заключается в том, что (а) считывают опорный кадр, предварительно декодированный в режиме межкадрового предсказания; и (b) предсказывают Р-кадр, применяя компенсацию движения по отношению к опорному кадру, при этом опорный кадр включает по меньшей мере удаленный по времени опорный кадр.
[0062] Опорный кадр включает близкий по времени опорный кадр.
[0063] Если в Р-кадре происходит полная или частичная смена сцены, то его кодируют с обращением к удаленному по времени опорному кадру.
[0064] Если Р-кадр, в котором происходит смена сцены, является кадром с частичной сменой сцены, блоки, принадлежащие участку, где не происходит изменение сцены, кодируют с использованием близкого по времени опорного кадра.
[0065] Если происходит смена сцены, блоки, принадлежащие участку, где происходит смена сцены, кодируют с использованием удаленных по времени опорных кадров.
[0066] В соответствии с еще одним аспектом настоящего изобретения способ определения вектора движения в режиме прямого предсказания заключается в том, что: (а) считывают смещенный блок в заданном кадре, при этом смещенный блок обусловливает вектор движения, который указывает на опорный кадр; и (b) определяют по меньшей мере один вектор движения в режиме прямого предсказания на основании типа опорного кадра, при этом тип опорного кадра включает удаленный по времени опорный кадр.
[0067] По меньшей мере один вектор движения приравнивают к вектору движения смещенного блока, если типом опорного кадра является удаленный по времени опорный кадр.
[0068] По меньшей мере один вектор движения приравнивают к нулю, если типом опорного кадра является удаленный по времени опорный кадр.
[0069] По меньшей мере один вектор движения является по меньшей мере одним вектором движения в режиме прямого предсказания для В-кадра.
[0070] Если типом опорного кадра является близкий по времени опорный кадр, по меньшей мере один вектор движения в режиме прямого предсказания получают путем масштабирования вектора движения, обусловленного смещенным блоком.
[0071] Следует понимать, что как предшествующее общее описание, так и последующее подробное описание настоящего изобретения, носят иллюстративный и пояснительный характер и предназначены для более глубокого понимания заявленного изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0072] Прилагаемые чертежи, которые включены для облегчения понимания сути изобретения и являются неотъемлемой и составной частью настоящей заявки, иллюстрируют пример(ы) осуществления изобретения и вместе с описанием служат для пояснения принципа изобретения. В прилагаемых чертежах:
[0073] на фиг.1 показана очередность отображения, в которой каждый кадр отображается при использовании двух В-кадров;
[0074] на фиг.2 показана очередность кодирования, в которой каждый кадр отображается при использовании двух В-кадров;
[0075] на фиг.3А и 3В представлены блок-схемы, иллюстрирующие способ кодирования последовательности движущихся изображений в системе кодирования движущегося изображения в соответствии с предпочтительным примером осуществления настоящего изобретения;
[0076] на фиг.4 показан способ кодирования последовательности движущихся изображений, в которых происходит смена сцены, в соответствии с предпочтительным примером осуществления настоящего изобретения; и
[0077] на фиг.5 показан способ кодирования В-кадра в режиме прямого предсказания в соответствии с предпочтительным примером осуществления настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
[0078] В данном описании подробно рассматриваются предпочтительные примеры осуществления настоящего изобретения, которые иллюстрируются с помощью прилагаемых чертежей. По возможности, для обозначения одних и тех же или похожих элементов на чертежах будут использоваться одинаковые номера позиций.
[0079] Прежде чем переходить к описанию примера осуществления настоящего изобретения, следует начать с пояснения терминов, а именно: кадр, в котором смена сцены происходит по всему изображению, определяется как кадр с полной сменой сцены, а кадр, в котором изменение сцены происходит лишь в некоторой части изображения, определяется как кадр с частичной сменой сцены.
[0080] На фиг.3А и 3В показаны блок-схемы, иллюстрирующие способ кодирования последовательности движущихся изображений в системе кодирования движущихся изображений в соответствии с предпочтительным примером осуществления настоящего изобретения. Как видно на фиг.3А и 3В, кадры один за другим вводят из последовательности движущихся изображений (S111).
[0081] Затем определяют тип кадров (S114). Другими словами, определяют, является ли вводимый кадр Р-кадром или В-кадром. В рассматриваемом примере осуществления настоящего изобретения предполагается, что кодирование по отношению к исходному изображению выполняют заранее.
[0082] Если кадр является Р-кадром, определяют, происходит ли в этом Р-кадре смена сцены (S117). В данном случае смену сцены определяют путем сравнения текущего Р-кадра с кадром (Р или В), отображенным непосредственно перед Р-кадром.
[0083] В результате определения, сделанного на шаге S117, если в Р-кадрах происходит полная смена сцен, то текущий Р-кадр является кадром с полной сменой сцены. Соответственно, если Р-кадр определяют как кадр с полной сменой сцены, то кодирование осуществляют с обращением к удаленному по времени опорному кадру (S120).
[0084] Если текущий Р-кадр не является кадром с полной сменой сцены, определяют, является ли этот кадр кадром с частичной сменой сцены (S123).
[0085] Если Р-кадр является кадром с частичной сменой сцены, то блоки, принадлежащие тому участку изображения, где происходит смена сцены, кодируют с обращением к удаленному по времени опорному кадру с возвратом к шагу S120 (S126).
[0086] Блоки на том участке изображения, в пределах которого смена сцены не происходит, кодируют с обращением к близкому по времени опорному кадру (S129, S132).
[0087] В данном случае удаленный по времени опорный кадр представляет собой кадр, который хранят в базовом буфере для удаленных по времени опорных кадров, а близкий по времени опорный кадр является кадром, который хранят в базовом буфере для близких по времени опорных кадров.
[0088] Базовый буфер для близких по времени опорных кадров является буфером обратного магазинного типа (FIFO), в котором кадр, вводимый первым, первым подается на выход, при этом кадры, закодированные до истечения сравнительно короткого отрезка времени, хранят в базовом буфере для близких по времени опорных кадров.
[0089] Кадры, закодированные до истечения сравнительно длительного промежутка времени, хранят в буфере для удаленных по времени опорных кадров. Первые кадры из соответствующих наборов сцен, а именно - исходный кадр, кадр с полной сменой сцены, кадр с частичной сменой сцены и тому подобное, хранят в базовом буфере для удаленных по времени опорных кадров.
[0090] Если в базовом буфере для удаленных по времени опорных кадров нет кадра с полной сменой сцены или кадра с частичной сменой сцены, то кадр со сменой сцены может быть сохранен дополнительно.
[0091] Соответственно, как показано на фиг.4, исходный кадр 10, который является первым кадром с полной сменой сцены в последовательности сцен А1, первый кадр с полной сменой сцены Р50 в последовательности сцен В1 и первый кадр с частичной сменой сцены Р120 можно хранить в базовом буфере для удаленных по времени опорных кадров. В данном случае последовательность сцен представляет собой последовательность аналогичных кадров. Например, при показе дискуссионной передачи на экране сначала появляется ведущий, затем появляется участник дискуссии А, затем опять появляется ведущий и вновь участник дискуссии А. Сцена, в которой ведущий появляется первый раз, относится к последовательности сцен А, а сцена, в которой затем появляется участник дискуссии А, относится к последовательности сцен В. Сцена, в которой ведущий появляется снова, относится к последовательности сцен А, а сцена, в которой вновь появляется участник дискуссии А, относится к последовательности сцен В. Как указано выше, когда происходит смена сцены, Р-кадр кодируют в режиме межкадрового предсказания с обращением к близкому или удаленному по времени опорному кадру вместо режима внутрикадрового предсказания. Такой подход позволяет снизить количество требуемых битов информации и, соответственно, повысить эффективность кодирования.
[0092] Описание шагов S117-S132 будет сделано со ссылкой на фиг.4. Как показано на фиг.4, если подлежащий кодированию Р-кадр Р200 представляет собой кадр с полной сменой сцены, принадлежащий последовательности сцен В2, то близкие по времени опорные кадры, хранящиеся в базовом буфере для близких по времени опорных кадров, не используют. По этой причине кадр с полной сменой сцены Р200 является первым кадром в последовательности сцен В2 и последовательность сцен для кадра с полной сменой сцены Р200 отличается от близких по времени опорных кадров, таких как Р199, Р198, Р197 и так далее, которые принадлежат к последовательности сцен А2. Таким образом, сходство кадра с полной сменой сцены Р200 с близкими по времени опорными кадрами, принадлежащими последовательности сцен А2, значительно снижается и точное кодирование по таким опорным кадрам становится невозможным.
[0093] В данном случае Р-кадр кодируют в режиме межкадрового предсказания с обращением к другим опорным кадрам Р50 и Р120, принадлежащим последовательности сцен В1, которая совпадает с последовательностью сцен В2.
[0094] С другой стороны, если в Р-кадре Р250 происходит частичное изменение сцены, то кодирование осуществляют иным образом в зависимости от двух условий. Иначе говоря, блоки, принадлежащие тому участку, где происходит частичная смена сцены, кодируют в режиме межкадрового предсказания с обращением к удаленным по времени опорным кадрам Р50 и Р120, хранящимся в базовом буфере для удаленных по времени опорных кадров. Блоки, принадлежащие тому участку, где смена сцены не происходит, кодируют в режиме межкадрового предсказания с обращением к близким по времени опорным кадрам Р249, Р248, Р247 и так далее, хранящимся в базовом буфере для близких по времени опорных кадров.
[0095] Как указано выше, после кодирования одного Р-кадра вводят следующий кадр (S159). Если этот кадр является В-кадром, то осуществляют тестирование пяти режимов предсказания (режима внутрикадрового предсказания, режима предсказания вперед, режима обратного предсказания, режима двунаправленного предсказания и режима прямого предсказания) и один из них выбирают в качестве оптимального режима кодирования (S135, S138). В данном описании будет рассматриваться, главным образом, режим прямого предсказания.
[0096] Сначала считывают один из блоков В-кадра (S141). Считывание остальных блоков может быть, конечно, выполнено последовательно. Затем проверяют тип базового буфера, в котором хранят заданный кадр.
[0097] Требуемый кадр выбирают из предшествующих кадров по отношению к данному В-кадру в очередности кодирования независимо от очередности отображения. Другими словами, заданный кадр является одним из опорных кадров, используемых для кодирования В-кадра. Поэтому заданный кадр может быть близким или удаленным по времени опорным кадром. Близкие по времени опорные кадры могут располагаться до или после В-кадра в порядке отображения, их хранят в базовом буфере для близких по времени опорных кадров. Удаленные по времени опорные кадры хранят в базовом буфере для удаленных по времени опорных кадров. Если заданный кадр является опорным кадром, удаленным по времени, то вектором движения вперед в режиме прямого предсказания для В-кадра будет являться вектор движения смещенного блока в заданном кадре. Вектор движения назад в режиме прямого предсказания для В-кадра принимают равным нулю (S150). Однако, если заданный кадр является близким по времени опорным кадром, то считывают индекс опорного кадра и вектор движения, определенный для смещенного блока в заданном кадре (S144). Упомянутые индекс опорного кадра и вектор движения определяют предварительно и хранят в системном буфере. В соответствии с индексом опорного кадра определяют, указывает ли вектор движения смещенного блока в заданном кадре на удаленный по времени опорный кадр (S147). Как уже отмечалось, опорные кадры хранят в базовом буфере, который включает в себя буфер для близких по времени опорных кадров и буфер для удаленных по времени опорных кадров.
[0098] Если вектор движения смещенного блока в заданном кадре указывает на удаленный по времени опорный кадр, В-кадр кодируют с использованием следующих выражений 3 и 4 (S150).
[0099] Выражение 3:
MVf=MV,
где MV - вектор движения смещенного блока в заданном кадре, a MVf - вектор движения вперед в режиме прямого предсказания для В-кадра.
[0100] Выражение 4:
MVb=0,
где MV - вектор движения смещенного блока в заданном кадре, a MVb - вектор движения назад в режиме прямого предсказания для В-кадра.
[0101] Другими словами, если вектор движения смещенного блока в заданном кадре указывает на удаленный по времени опорный кадр, то вектор движения вперед в режиме прямого предсказания для В-кадра будет представлять собой вектор движения смещенного блока в заданном кадре, а вектор движения назад будет равен нулю.
[0102] Как показано на фиг.5, на шаге S150, если вектор движения смещенного блока в заданном кадре Р200 указывает на удаленный по времени опорный кадр Р50, параметры TRd и TRb теряют смысл в стандартных формулах 1 и 2. Другими словами, поскольку параметры TRd и TRb характеризуют временной интервал (включая даже другую последовательность сцен А2) между заданным кадром Р200, принадлежащим последовательности сцен В2, и удаленным по времени опорным кадром Р50, принадлежащим к той же самой последовательности сцен В1, вектор движения вперед и вектор движения назад в режиме прямого предсказания не могут быть рассчитаны с использованием таких параметров, как TRd и TRb.
[0103] Обращаясь к фиг.5, следует более подробно отметить следующее. При введении двух В-кадров в последовательность движущихся изображений и их кодировании первым кодируют Р-кадр Р200, который стоит раньше кадров В1 и В2 в очередности кодирования. В данном случае, поскольку Р-кадр Р200 является кадром с полной сменой сцены, то этот кадр кодируют в межкадровом режиме по удаленному по времени опорному кадру Р50, хранящемуся в базовом буфере для удаленных по времени опорных кадров. В соответствии с очередностью кодирования следующим кадром, подлежащим кодированию, является кадр В1. Поскольку кадр В1 принадлежит последовательности сцен А2, большинство блоков кодируют в режиме предсказания вперед по близким по времени опорным кадрам, принадлежащим последовательности сцен А2, или в двунаправленном режиме предсказания, в котором оба опорных кадра принадлежат последовательности сцен А2. Однако режим внутрикадрового предсказания, режим обратного предсказания или режим двунаправленного предсказания по Р-кадру Р200, принадлежащему другой последовательности сцен В2, а также режим прямого предсказания, предназначенный для получения векторов движения режима прямого предсказания по смещенному блоку в Р-кадре Р200, вероятно не могут быть использованы как режимы кодирования для блоков кадра В1.
[0104] В противоположность этому, поскольку не только кадр В2, но также и заданный кадр Р200, используемый для определения векторов движения в режиме прямого предсказания для кадра В2, принадлежат к той же самой последовательности сцен В2, в качестве способа кодирования для большинства блоков кадра В2 выбирают режим прямого предсказания. Другими словами, после получения вектора движения каждого блока в заданном кадре Р200 в режиме межкадрового предсказания по удаленному по времени опорному кадру Р50, принадлежащему к той же самой последовательности сцен В2, векторы движения режима прямого предсказания для кадра В2 определяют по вектору движения смещенного блока в заданном кадре Р200. Поскольку кадр В2 и заданный кадр Р200 принадлежат к последовательности сцен В2, а удаленный по времени опорный кадр Р50 также принадлежит к последовательности сцен В1 и сходство между последовательностями сцен В1 и В2 очень высоко, для большинства блоков в кадре В2 в качестве способа кодирования может быть задан режим прямого предсказания. Эффективность кодирования для кадра В2, соответственно, возрастает.
[0105] С другой стороны, если вектор движения смещенного блока в заданном кадре указывает на близкий по времени опорный кадр, В-кадр кодируют с использованием стандартных выражений 1 и 2. В этом случае, поскольку близкий по времени опорный кадр, хранящийся в соответствующем базовом буфере, принадлежит к той же последовательности сцен, что и В-кадр, и другой последовательности сцен между заданным кадром и близким по времени опорным кадром не существует, вектор движения вперед и вектор движения назад режима прямого предсказания определяют с использованием стандартных выражений 1 и 2, связанных с параметрами TRd и TRb, представляющими собой временные интервалы.
[0106] Если кодируют один из блоков В-кадра, следующий блок В-кадра будут считывать и кодировать последовательно (S156). Аналогичные операции выполняют для всех блоков В-кадра. После завершения кодирования В-кадра следующий кадр вводят и кодируют так, чтобы обеспечить кодирование движущегося изображения (S159).
[0107] Как показано выше, согласно предложенному в настоящем изобретении способу кодирования движущегося изображения, вектор движения вперед и вектор движения назад в режиме прямого предсказания для В-кадра определяют по-разному на основе опорного кадра, указанного вектором движения смещенного блока в заданном кадре. Применительно к В-кадрам в качестве способа кодирования, обеспечивающего повышение эффективности кодирования в целом, используют, главным образом, режим прямого предсказания.
[0108] Согласно предложенному в настоящем изобретении способу кодирования движущегося изображения, Р-кадр, в котором происходит смена сцены, кодируют в режиме межкадрового предсказания с использованием компенсации движения по удаленным по времени опорным кадрам, чтобы снизить количество битов информации и повысить эффективность кодирования.
[0109] Для специалистов в данной области техники очевидно, что в настоящем изобретении возможны различные изменения и отклонения. Подразумевается, что настоящее изобретение включает возможные изменения и отклонения при условии, что они находятся в пределах объема прилагаемой формулы изобретения, в том числе с учетом эквивалентных признаков.
1. Способ определения векторов движения в режиме прямого предсказания для В-кадра, заключающийся в том, что в процессе кодирования/декодирования каждого блока В-кадра в режиме прямого предсказания определяют векторы движения в режиме прямого предсказания, используя вектор движения смещенного блока в заданном кадре, используемом для кодирования/декодирования В-кадра, при этом, если типом заданного кадра является удаленный по времени опорный кадр, один из векторов движения, подлежащих определению, принимают равным вектору движения смещенного блока, а другой из векторов движения, подлежащих определению, принимают равным 0.
2. Способ по п.1, в котором упомянутый один вектор движения, подлежащий определению, является вектором движения вперед, а упомянутый другой вектор движения, подлежащий определению, является вектором движения назад.
3. Способ определения векторов движения для блока В-кадра в режиме прямого предсказания, содержащий определение векторов движения в режиме прямого предсказания с использованием вектора движения смещенного блока в заданном кадре, используемом для кодирования/декодирования В-кадра, если типом заданного кадра является близкий по времени опорный кадр, при этом,