фрагментированная ссылка во временном сжатии для кодирования видео
Классы МПК: | H04N7/50 включающие преобразование и прогнозное кодирование |
Автор(ы): | РАВИИНДРАН Виджаялакшми Р. (US) |
Патентообладатель(и): | КВЭЛКОММ ИНКОРПОРЕЙТЕД (US) |
Приоритеты: |
подача заявки:
2009-06-24 публикация патента:
20.06.2013 |
Изобретение относится к кодированию и декодированию видео с использованием фрагментарных опорных изображений. Техническим результатом является повышение эффективности кодирования видео. Указанный технический результат достигается тем, что предложен способ кодирования и декодирования видео для видоизмененного временного сжатия на основании фрагментированных ссылок, а не полных опорных изображений. В типичной последовательности видеокадров лишь участок (т.е. мозаичный элемент) каждого кадра включает в себя движущиеся объекты. Кроме того, в каждом кадре движущимся объектам свойственно быть заключенными в конкретные области, которые являются общими для всех кадров в последовательности видеокадров. Такие общие области движения идентифицируются и из идентифицированных областей видеокадров извлекаются изображения. Поскольку эти изображения могут представлять лишь участки кадров, эти изображения именуются "фрагментами", и в процессе компенсации движения для генерации предсказанных кадров в качестве опорных изображений используются эти фрагменты, а не весь кадр. 10 н. и 30 з.п. ф-лы, 18 ил.
Формула изобретения
1. Способ кодирования видеоданных, содержащий этапы, на которых:
сохраняют опорные фрагменты, содержащие видеоданные, связанные с набором мозаичных элементов видеокадров в последовательности видеокадров, причем каждый мозаичный элемент в наборе мозаичных элементов представляет поднабор разделов для соответствующего видеокадра, и
осуществляют компенсацию движения для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов;
при этом текущий мозаичный элемент совмещен с мозаичными элементами в наборе мозаичных элементов,
причем способ дополнительно содержит этап, на котором автоматически идентифицируют набор мозаичных элементов, и
при этом на этапе автоматической идентификации набора мозаичных элементов:
идентифицируют набор активных разделов в каждом из видеокадров,
причем каждый из активных разделов содержит по меньшей мере один вектор движения, указывающий по меньшей мере некоторое смещение относительно раздела видеокадра опорных фрагментов, и ненулевое остаточное значение относительно совмещенного раздела видеокадра опорных фрагментов;
для каждого заданного из видеокадров идентифицируют мозаичный элемент заданного из видеокадров, так что мозаичный элемент включает в себя идентифицированный набор активных разделов заданного из видеокадров и разделов заданного из видеокадров, которые совмещены с активными разделами в идентифицированных наборах активных разделов других видеокадров.
2. Способ по п.1,
в котором на этапе компенсации движения генерируют предсказательный фрагмент, связанный с текущим мозаичным элементом текущего видеокадра,
причем способ дополнительно содержит этапы, на которых:
извлекают фрагмент, связанный с текущим мозаичным элементом, из текущего видеокадра,
используют извлеченный фрагмент и предсказательный фрагмент для генерации остаточного фрагмента, связанного с текущим мозаичным элементом текущего видеокадра,
осуществляют преобразование на остаточном фрагменте для генерации набора коэффициентов,
квантуют набор коэффициентов, таким образом, генерируя набор квантованных коэффициентов,
энтропийно кодируют набор квантованных коэффициентов и
выводят энтропийно кодированный набор квантованных коэффициентов как часть медиаобъекта,
обратно квантуют набор квантованных коэффициентов, таким образом, генерируя обратно квантованный набор коэффициентов,
осуществляют обратное преобразование на обратно квантованном наборе коэффициентов, для генерации декодированного остаточного фрагмента,
генерируют реконструированный фрагмент с использованием предсказательного фрагмента и декодированного остаточного фрагмента и
сохраняют реконструированный фрагмент для использования в качестве опорного фрагмента.
3. Способ по п.1,
в котором на этапе компенсации движения генерируют предсказательный фрагмент, связанный с текущим мозаичным элементом текущего видеокадра,
причем способ дополнительно содержит этапы, на которых:
принимают медиаобъект, который включает в себя набор данных, связанный с текущим мозаичным элементом текущего видеокадра,
генерируют остаточный фрагмент на основании набора данных,
используют предсказательный фрагмент и остаточный фрагмент для генерации реконструированного фрагмента, связанного с текущим мозаичным элементом текущего видеокадра, и
используют реконструированный фрагмент для реконструкции текущего видеокадра.
4. Способ по п.3, в котором на этапе использования реконструированного фрагмента для реконструкции текущего видеокадра изменяют ранее декодированный полный видеокадр, так что реконструированный фрагмент указан в мозаичном элементе ранее декодированного полного видеокадра, который совмещен с текущим мозаичным элементом текущего видеокадра.
5. Способ по п.1,
в котором опорные фрагменты чередуются,
причем на этапе осуществления компенсации движения для текущего мозаичного элемента осуществляют компенсацию движения с дечередованием для текущего мозаичного элемента на основании одного или нескольких опорных фрагментов.
6. Способ по п.1, в котором способ дополнительно содержит этап, на котором добавляют текущий видеокадр между двумя видеокадрами в последовательности видеокадров как часть операции по увеличению частоты кадров последовательности видеокадров.
7. Устройство для кодирования видеоданных, содержащее:
опорный буфер, в котором хранятся опорные фрагменты, содержащие видеоданные, связанные с набором мозаичных элементов видеокадров в последовательности видеокадров, причем каждый мозаичный элемент в наборе мозаичных элементов представляет поднабор разделов для соответствующего видеокадра, и
блок компенсации движения, который осуществляет компенсацию движения для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов;
при этом текущий мозаичный элемент совмещен с мозаичными элементами в наборе мозаичных элементов,
причем устройство дополнительно содержит модуль идентификации мозаичного элемента, который автоматически идентифицирует набор мозаичных элементов,
причем модуль идентификации мозаичного элемента содержит:
модуль активности разделов, который идентифицирует набор активных разделов в каждом из видеокадров, причем каждый из активных разделов содержит вектор движения, указывающий по меньшей мере некоторое смещение относительно раздела видеокадра опорных фрагментов, и причем каждый из активных разделов содержит ненулевое остаточное значение относительно совмещенного раздела видеокадра опорных фрагментов; и
модуль построения мозаичных элементов, который, для каждого заданного из видеокадров, идентифицирует мозаичный элемент заданного из видеокадров, так что мозаичный элемент включает в себя идентифицированный набор активных разделов заданного из видеокадров и разделов заданного из видеокадров, которые совмещены с активными разделами в идентифицированных наборах активных разделов других видеокадров.
8. Устройство по п.7,
в котором, когда блок компенсации движения осуществляет компенсацию движения для текущего мозаичного элемента, блок компенсации движения генерирует предсказательный фрагмент, связанный с текущим мозаичным элементом текущего видеокадра,
причем устройство дополнительно содержит:
модуль извлечения фрагментов, который извлекает фрагмент, связанный с текущим мозаичным элементом, из текущего видеокадра,
модуль, который использует извлеченный фрагмент и предсказательный фрагмент для генерации остаточного фрагмента, связанного с текущим мозаичным элементом текущего видеокадра,
блок блочного преобразования, который осуществляет преобразование на остаточном фрагменте для генерации набора коэффициентов,
модуль квантования, который квантует набор коэффициентов, таким образом, генерируя набор квантованных коэффициентов,
блок энтропийного кодирования, который энтропийно кодирует набор квантованных коэффициентов,
модуль вывода, который выводит энтропийно кодированный набор квантованных коэффициентов как часть медиаобъекта,
модуль обратного квантования, который обратно квантует набор квантованных коэффициентов, таким образом, генерируя обратно квантованный набор коэффициентов,
блок обратного преобразования, который осуществляет обратное преобразование на обратно квантованном наборе коэффициентов, для генерации декодированного остаточного фрагмента, и
модуль, который генерирует реконструированный фрагмент с использованием предсказательного фрагмента и декодированного остаточного фрагмента,
причем в опорном буфере хранится реконструированный фрагмент для использования в качестве опорного фрагмента.
9. Устройство по п.7,
в котором, когда блок компенсации движения осуществляет компенсацию движения для текущего мозаичного элемента, блок компенсации движения генерирует предсказательный фрагмент, связанный с текущим мозаичным элементом текущего видеокадра,
причем устройство принимает медиаобъект, который включает в себя набор данных, связанный с текущим мозаичным элементом текущего видеокадра,
причем устройство дополнительно содержит:
декодер, который генерирует остаточный фрагмент на основании набора данных,
модуль, который использует предсказательный фрагмент и остаточный фрагмент для генерации реконструированного фрагмента, связанного с текущим мозаичным элементом текущего видеокадра, и
модуль повторной сборки кадров, который использует реконструированный фрагмент для реконструкции текущего видеокадра.
10. Устройство по п.9, в котором модуль повторной сборки кадров изменяет ранее декодированный полный видеокадр, так что реконструированный фрагмент указан в мозаичном элементе ранее декодированного полного видеокадра, который совмещен с текущим мозаичным элементом текущего видеокадра.
11. Устройство по п.7,
в котором опорные фрагменты чередуются,
причем блок компенсации движения осуществляет компенсацию движения для текущего мозаичного элемента путем осуществления компенсации движения с дечередованием для текущего мозаичного элемента на основании одного или нескольких опорных фрагментов.
12. Устройство по п.7, в котором устройство дополнительно содержит постпроцессор, который добавляет текущий видеокадр между двумя видеокадрами в последовательности видеокадров как часть операции по увеличению частоты кадров последовательности видеокадров.
13. Устройство для кодирования видеоданных, содержащее:
средство для сохранения опорных фрагментов, содержащих видеоданные, связанные с набором мозаичных элементов видеокадров в последовательности видеокадров, причем каждый мозаичный элемент в наборе мозаичных элементов представляет поднабор разделов для соответствующего видеокадра, и
средство для осуществления компенсации движения для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов;
причем устройство дополнительно содержит средство для автоматической идентификации набора мозаичных элементов,
причем средство для автоматической идентификации набора мозаичных элементов содержит:
средство для идентификации набора активных разделов в каждом из видеокадров, причем каждый из активных разделов содержит по меньшей мере один вектор движения, указывающий по меньшей мере некоторое смещение относительно раздела видеокадра опорных фрагментов, и ненулевое остаточное значение относительно совмещенного раздела видеокадра опорных фрагментов; и
средство для идентификации, для каждого заданного из видеокадров, мозаичного элемента заданного из видеокадров, так что мозаичный элемент включает в себя идентифицированный набор активных разделов заданного из видеокадров и разделов заданного из видеокадров, которые совмещены с активными разделами в идентифицированных наборах активных разделов других видеокадров,
причем текущий мозаичный элемент совмещен с мозаичными элементами в наборе мозаичных элементов.
14. Устройство по п.13,
в котором, когда средство для осуществления компенсации движения осуществляет компенсацию движения для текущего мозаичного элемента, средство для осуществления компенсации движения генерирует предсказательный фрагмент, связанный с текущим мозаичным элементом текущего видеокадра,
причем устройство дополнительно содержит:
средство для извлечения фрагмента, связанного с текущим мозаичным элементом, из текущего видеокадра,
средство для использования извлеченного фрагмента и предсказательного фрагмента для генерации остаточного фрагмента, связанного с текущим мозаичным элементом текущего видеокадра,
средство для осуществления преобразования на остаточном фрагменте для генерации набора коэффициентов,
средство для квантования набора коэффициентов, таким образом, генерируя набор квантованных коэффициентов,
средство для энтропийного кодирования набора квантованных коэффициентов,
средство для вывода энтропийно кодированного набора квантованных коэффициентов как части медиаобъекта,
средство для обратного квантования набора квантованных коэффициентов и, таким образом, генерирования обратно квантованного набора коэффициентов,
средство для осуществления обратного преобразования на обратно квантованном наборе коэффициентов для генерации декодированного остаточного фрагмента и
средство для генерации реконструированного фрагмента с использованием предсказательного фрагмента и декодированного остаточного фрагмента,
причем средство для сохранения набора фрагментов сохраняет реконструированный фрагмент для использования в качестве опорного фрагмента.
15. Устройство по п.13, в котором, когда средство для осуществления компенсации движения осуществляет компенсацию движения для текущего мозаичного элемента, средство для осуществления компенсации движения генерирует предсказательный фрагмент, связанный с текущим мозаичным элементом текущего видеокадра,
причем устройство принимает медиаобъект, который включает в себя набор данных, связанный с текущим мозаичным элементом текущего видеокадра,
причем устройство дополнительно содержит:
средство для генерации остаточного фрагмента на основании набора данных,
средство для использования предсказательного фрагмента, связанного с текущим мозаичным элементом текущего видеокадра, и остаточного фрагмента для генерации реконструированного фрагмента, связанного с текущим мозаичным элементом текущего видеокадра, и
средство для использования реконструированного фрагмента для реконструкции текущего видеокадра.
16. Устройство по п.15, в котором средство для использования реконструированного фрагмента для реконструкции текущего видеокадра изменяет ранее декодированный полный видеокадр, так что реконструированный фрагмент указан в мозаичном элементе ранее декодированного полного видеокадра, который совмещен с текущим мозаичным элементом текущего видеокадра.
17. Устройство по п.13,
в котором опорные фрагменты чередуются,
причем средство для осуществления компенсации движения осуществляет компенсацию движения для текущего мозаичного элемента путем осуществления компенсации движения с дечередованием для текущего мозаичного элемента на основании одного или нескольких опорных фрагментов.
18. Устройство по п.13, в котором устройство дополнительно содержит средство для добавления текущего видеокадра между двумя видеокадрами в последовательности видеокадров как часть операции по увеличению частоты кадров последовательности видеокадров.
19. Компьютерно-считываемый носитель, содержащий выполняемые инструкции, которые, при выполнении одним или несколькими процессорами, предписывают одному или нескольким процессорам:
сохранять опорные фрагменты, содержащие видеоданные, связанные с набором мозаичных элементов видеокадров в последовательности видеокадров, причем каждый мозаичный элемент в наборе мозаичных элементов представляет поднабор разделов для соответствующего видеокадра, и
осуществлять компенсацию движения для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов;
причем инструкции дополнительно предписывают одному или нескольким процессорам автоматически идентифицировать набор мозаичных элементов,
причем инструкции предписывают одному или нескольким процессорам автоматически идентифицировать набор мозаичных элементов, по меньшей мере частично предписывая одному или нескольким процессорам:
идентифицировать набор активных разделов в каждом из видеокадров, причем каждый из активных разделов содержит по меньшей мере один вектор движения, указывающий по меньшей мере некоторое смещение относительно раздела видеокадра опорных фрагментов, и ненулевое остаточное значение относительно совмещенного раздела видеокадра опорных фрагментов; и
для каждого заданного из видеокадров идентифицировать мозаичный элемент заданного из видеокадров, так что мозаичный элемент включает в себя идентифицированный набор активных разделов заданного из видеокадров и разделов заданного из видеокадров, которые совмещены с активными разделами в идентифицированных наборах активных разделов других видеокадров, и
причем текущий мозаичный элемент совмещен с мозаичными элементами в наборе мозаичных элементов.
20. Компьютерно-считываемый носитель по п.19,
в котором инструкции предписывают одному или нескольким процессорам осуществлять компенсацию движения, по меньшей мере частично предписывая одному или нескольким процессорам генерировать предсказательный фрагмент, связанный с текущим мозаичным элементом текущего видеокадра,
причем инструкции дополнительно предписывают одному или нескольким процессорам:
извлекать фрагмент, связанный с текущим мозаичным элементом, из текущего видеокадра,
использовать извлеченный фрагмент и предсказательный фрагмент для генерации остаточного фрагмента,
осуществлять преобразование на остаточном фрагменте для генерации набора коэффициентов,
квантовать набор коэффициентов и, таким образом, генерировать набор квантованных коэффициентов,
энтропийно кодировать набор квантованных коэффициентов,
выводить энтропийно кодированный набор квантованных коэффициентов как часть медиаобъекта,
обратно квантовать набор квантованных коэффициентов и, таким образом, генерировать обратно квантованный набор коэффициентов,
осуществлять обратное преобразование на обратно квантованном наборе коэффициентов, для генерации декодированного остаточного фрагмента,
генерировать реконструированный фрагмент с использованием предсказательного фрагмента и декодированного остаточного фрагмента и
сохранять реконструированный фрагмент для использования в качестве опорного фрагмента.
21. Компьютерно-считываемый носитель по п.19,
в котором инструкции предписывают одному или нескольким процессорам осуществлять компенсацию движения, по меньшей мере частично предписывая одному или нескольким процессорам генерировать предсказательный фрагмент, связанный с текущим мозаичным элементом текущего видеокадра,
причем инструкции дополнительно предписывают одному или нескольким процессорам:
принимать медиаобъект, который включает в себя набор данных, связанный с текущим мозаичным элементом текущего видеокадра,
генерировать остаточный фрагмент на основании набора данных,
использовать предсказательный фрагмент, связанный с мозаичным элементом текущего видеокадра, и остаточный фрагмент для генерации реконструированного фрагмента, связанного с текущим кадром, и
использовать реконструированный фрагмент для реконструкции текущего видеокадра.
22. Компьютерно-считываемый носитель по п.21, в котором инструкции предписывают одному или нескольким процессорам использовать реконструированный фрагмент для реконструкции текущего видеокадра, по меньшей мере частично предписывая одному или нескольким процессорам изменять ранее декодированный полный видеокадр, так что реконструированный фрагмент указан в мозаичном элементе ранее декодированного полного видеокадра, который совмещен с текущим мозаичным элементом текущего видеокадра.
23. Компьютерно-считываемый носитель по п.19,
в котором опорные фрагменты чередуются,
причем на этапе осуществления компенсации движения для текущего мозаичного элемента осуществляют компенсацию движения с дечередованием для текущего мозаичного элемента на основании одного или нескольких опорных фрагментов.
24. Компьютерно-считываемый носитель по п.19, в котором инструкции дополнительно предписывают одному или нескольким процессорам добавлять текущий видеокадр между двумя видеокадрами в последовательности видеокадров как часть операции по увеличению частоты кадров последовательности видеокадров.
25. Интегральная схема для кодирования видеоданных, содержащая:
схему, которая сохраняет опорные фрагменты, содержащие видеоданные, связанные с набором мозаичных элементов видеокадров в последовательности видеокадров, причем каждый мозаичный элемент в наборе мозаичных элементов представляет поднабор разделов для соответствующего видеокадра, и
схему, которая осуществляет компенсацию движения для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов;
при этом интегральная схема дополнительно содержит схему, которая автоматически идентифицирует набор мозаичных элементов,
причем схема, которая автоматически идентифицирует набор мозаичных элементов, содержит:
схему, которая идентифицирует набор активных разделов в каждом из видеокадров, причем каждый из активных разделов содержит по меньшей мере один вектор движения, указывающий по меньшей мере некоторое смещение относительно раздела видеокадра опорных фрагментов, и ненулевое остаточное значение относительно совмещенного раздела видеокадра опорных фрагментов; и
схему, которая идентифицирует, для каждого заданного из видеокадров, мозаичный элемент заданного из видеокадров, так что мозаичный элемент включает в себя идентифицированный набор активных разделов заданного из видеокадров и разделов заданного из видеокадров, которые совмещены с активными разделами в идентифицированных наборах активных разделов других видеокадров, и
причем текущий мозаичный элемент совмещен с мозаичными элементами в наборе мозаичных элементов.
26. Интегральная схема по п.25,
в которой, когда схема, которая осуществляет компенсацию движения, осуществляет компенсацию движения для текущего мозаичного элемента, схема, которая осуществляет компенсацию движения, генерирует предсказательный фрагмент, связанный с текущим мозаичным элементом текущего видеокадра,
причем интегральная схема дополнительно содержит:
схему, которая извлекает фрагмент, связанный с текущим мозаичным элементом, из текущего видеокадра,
схему, которая использует извлеченный фрагмент и предсказательный фрагмент для генерации остаточного фрагмента, связанного с текущим мозаичным элементом текущего видеокадра,
схему, которая осуществляет преобразование на остаточном фрагменте для генерации набора коэффициентов,
схему, которая квантует набор коэффициентов, таким образом, генерируя набор квантованных коэффициентов,
схему, которая энтропийно кодирует набор квантованных коэффициентов, и
схему, которая выводит энтропийно кодированный набор квантованных коэффициентов как часть медиаобъекта,
схему, которая обратно квантует набор квантованных коэффициентов, таким образом, генерируя обратно квантованный набор коэффициентов,
схему, которая осуществляет обратное преобразование на обратно квантованном наборе коэффициентов для генерации декодированного остаточного фрагмента, и
схему, которая генерирует реконструированный фрагмент с использованием предсказательного фрагмента и декодированного остаточного фрагмента,
причем схема, которая сохраняет набор фрагментов, сохраняет реконструированный фрагмент для использования в качестве опорного фрагмента.
27. Интегральная схема по п.25,
в которой, когда схема, которая осуществляет компенсацию движения, осуществляет компенсацию движения для текущего мозаичного элемента, схема, которая осуществляет компенсацию движения, генерирует предсказательный фрагмент, связанный с текущим мозаичным элементом текущего видеокадра,
причем интегральная схема принимает медиаобъект, который включает в себя набор данных, связанный с текущим мозаичным элементом текущего видеокадра,
причем интегральная схема дополнительно содержит:
схему, которая генерирует остаточный фрагмент на основании набора данных,
схему, которая использует предсказательный фрагмент, связанный с текущим мозаичным элементом текущего видеокадра, и остаточный фрагмент для генерации реконструированного фрагмента, связанного с текущим мозаичным элементом текущего видеокадра, и
схему, которая использует реконструированный фрагмент для реконструкции текущего видеокадра.
28. Интегральная схема по п.27, в которой схема для использования реконструированного фрагмента для реконструкции текущего видеокадра изменяет ранее декодированный полный видеокадр, так что реконструированный фрагмент указан в мозаичном элементе ранее декодированного полного видеокадра, который совмещен с текущим мозаичным элементом текущего видеокадра.
29. Интегральная схема по п.25,
в которой опорные фрагменты чередуются, и
причем схема, которая осуществляет компенсацию движения, осуществляет компенсацию движения для текущего мозаичного элемента путем осуществления компенсации движения с дечередованием для текущего мозаичного элемента на основании одного или нескольких опорных фрагментов.
30. Интегральная схема по п.25, в которой интегральная схема дополнительно содержит схему, которая добавляет текущий видеокадр между двумя видеокадрами в последовательности видеокадров как часть операции по увеличению частоты кадров последовательности видеокадров.
31. Способ кодирования видеоданных, содержащий этапы, на которых:
сохраняют опорные фрагменты, содержащие видеоданные, связанные с набором мозаичных элементов видеокадров в последовательности видеокадров, причем каждый мозаичный элемент в наборе мозаичных элементов представляет поднабор разделов для соответствующего видеокадра, и
осуществляют метод обработки видео для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов;
при этом текущий мозаичный элемент совмещен с мозаичными элементами в наборе мозаичных элементов,
причем способ дополнительно содержит этап, на котором автоматически идентифицируют набор мозаичных элементов,
при этом на этапе автоматической идентификации набора мозаичных элементов:
идентифицируют набор активных разделов в каждом из видеокадров,
причем каждый из активных разделов содержит по меньшей мере один вектор движения, указывающий по меньшей мере некоторое смещение относительно раздела видеокадра опорных фрагментов, и ненулевое остаточное значение относительно совмещенного раздела видеокадра опорных фрагментов;
для каждого заданного из видеокадров идентифицируют мозаичный элемент заданного из видеокадров, так что мозаичный элемент включает в себя идентифицированный набор активных разделов заданного из видеокадров и разделов заданного из видеокадров, которые совмещены с активными разделами в идентифицированных наборах активных разделов других видеокадров.
32. Способ по п.31, в котором на этапе осуществления метода обработки видео осуществляют одно из:
компенсации движения для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов, или
масштабирования для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов, или
усиления контуров для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов.
33. Устройство для кодирования видеоданных, содержащее:
опорный буфер, в котором хранятся опорные фрагменты, содержащие видеоданные, связанные с набором мозаичных элементов видеокадров в последовательности видеокадров, причем каждый мозаичный элемент в наборе мозаичных элементов представляет поднабор разделов для соответствующего видеокадра, и
блок, который осуществляет метод обработки видео для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов;
при этом текущий мозаичный элемент совмещен с мозаичными элементами в наборе мозаичных элементов,
причем устройство дополнительно содержит модуль идентификации мозаичного элемента, который автоматически идентифицирует набор мозаичных элементов, и
причем модуль идентификации мозаичного элемента содержит:
модуль активности разделов, который идентифицирует набор активных разделов в каждом из видеокадров, причем каждый из активных разделов содержит вектор движения, указывающий по меньшей мере некоторое смещение относительно раздела видеокадра опорных фрагментов, и причем каждый из активных разделов содержит ненулевое остаточное значение относительно совмещенного раздела видеокадра опорных фрагментов; и
модуль построения мозаичных элементов, который, для каждого заданного из видеокадров, идентифицирует мозаичный элемент заданного из видеокадров, так что мозаичный элемент включает в себя идентифицированный набор активных разделов заданного из видеокадров и разделов заданного из видеокадров, которые совмещены с активными разделами в идентифицированных наборах активных разделов других видеокадров.
34. Устройство по п.33, в котором блок, который осуществляет метод обработки видео, содержит один из:
блока компенсации движения, который осуществляет компенсацию движения для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов,
блока масштабирования, который осуществляет масштабирование для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов, и
блока усиления контуров, который осуществляет усиление контуров для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов.
35. Устройство для кодирования видеоданных, содержащее:
средство для сохранения опорных фрагментов, содержащих видеоданные, связанные с набором мозаичных элементов видеокадров в последовательности видеокадров, причем каждый мозаичный элемент в наборе мозаичных элементов представляет поднабор разделов для соответствующего видеокадра, и
средство для осуществления метода обработки видео для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов;
причем устройство дополнительно содержит средство для автоматической идентификации набора мозаичных элементов,
причем средство для автоматической идентификации набора мозаичных элементов содержит:
средство для идентификации набора активных разделов в каждом из видеокадров, причем каждый из активных разделов содержит по меньшей мере один вектор движения, указывающий по меньшей мере некоторое смещение относительно раздела видеокадра опорных фрагментов, и ненулевое остаточное значение относительно совмещенного раздела видеокадра опорных фрагментов; и
средство для идентификации, для каждого заданного из видеокадров, мозаичного элемента заданного из видеокадров, так что мозаичный элемент включает в себя идентифицированный набор активных разделов заданного из видеокадров и разделов заданного из видеокадров, которые совмещены с активными разделами в идентифицированных наборах активных разделов других видеокадров, и
причем текущий мозаичный элемент совмещен с мозаичными элементами в наборе мозаичных элементов.
36. Устройство по п.35, в котором средство для осуществления метода обработки видео содержит одно из:
средства для осуществления компенсации движения для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов,
средства для осуществления масштабирования для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов и
средства для осуществления усиления контуров для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов.
37. Компьютерно-считываемый носитель, содержащий выполняемые инструкции, которые, при выполнении одним или несколькими процессорами, предписывают одному или нескольким процессорам:
сохранять опорные фрагменты, содержащие видеоданные, связанные с набором мозаичных элементов видеокадров в последовательности видеокадров, причем каждый мозаичный элемент в наборе мозаичных элементов представляет поднабор разделов для соответствующего видеокадра, и
осуществлять метод обработки видео для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов;
причем инструкции дополнительно предписывают одному или нескольким процессорам автоматически идентифицировать набор мозаичных элементов,
причем инструкции предписывают одному или нескольким процессорам автоматически идентифицировать набор мозаичных элементов, по меньшей мере частично предписывая одному или нескольким процессорам:
идентифицировать набор активных разделов в каждом из видеокадров, причем каждый из активных разделов содержит по меньшей мере один вектор движения, указывающий по меньшей мере некоторое смещение относительно раздела видеокадра опорных фрагментов, и ненулевое остаточное значение относительно совмещенного раздела видеокадра опорных фрагментов; и
для каждого заданного из видеокадров идентифицировать мозаичный элемент заданного из видеокадров, так что мозаичный элемент включает в себя идентифицированный набор активных разделов заданного из видеокадров и разделов заданного из видеокадров, которые совмещены с активными разделами в идентифицированных наборах активных разделов других видеокадров, и
причем текущий мозаичный элемент совмещен с мозаичными элементами в наборе мозаичных элементов.
38. Компьютерно-считываемый носитель по п.37, в котором инструкции предписывают одному или нескольким процессорам осуществлять метод обработки видео путем осуществления одного из:
компенсации движения для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов,
масштабирования для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов и
усиления контуров для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов.
39. Интегральная схема для кодирования видеоданных, содержащая:
схему, которая сохраняет опорные фрагменты, содержащие видеоданные, связанные с набором мозаичных элементов видеокадров в последовательности видеокадров, причем каждый мозаичный элемент в наборе мозаичных элементов представляет поднабор разделов для соответствующего видеокадра, и
схему, которая осуществляет метод обработки видео для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов;
при этом интегральная схема дополнительно содержит схему, которая автоматически идентифицирует набор мозаичных элементов,
причем схема, которая автоматически идентифицирует набор мозаичных элементов, содержит:
схему, которая идентифицирует набор активных разделов в каждом из видеокадров, причем каждый из активных разделов содержит по меньшей мере один вектор движения, указывающий по меньшей мере некоторое смещение относительно раздела видеокадра опорных фрагментов, и ненулевое остаточное значение относительно совмещенного раздела видеокадра опорных фрагментов; и
схему, которая идентифицирует, для каждого заданного из видеокадров, мозаичный элемент заданного из видеокадров, так что мозаичный элемент включает в себя идентифицированный набор активных разделов заданного из видеокадров и разделов заданного из видеокадров, которые совмещены с активными разделами в идентифицированных наборах активных разделов других видеокадров, и
причем текущий мозаичный элемент совмещен с мозаичными элементами в наборе мозаичных элементов.
40. Интегральная схема по п.39, в которой схема, которая осуществляет метод обработки видео, содержит одну из:
схемы, которая осуществляет компенсацию движения для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов,
схемы, которая осуществляет масштабирование для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов, и
схемы, которая осуществляет усиление контуров для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов.
Описание изобретения к патенту
Область техники
Раскрытие относится к обработке мультимедийного сигнала и, в частности, к кодированию и декодированию видео.
Уровень техники
Цифровые мультимедийные возможности могут быть включены в широкий круг устройств, включая цифровые телевизоры, системы прямого цифрового вещания, устройства беспроводной связи, системы беспроводного вещания, карманные персональные компьютеры ( КПК ), портативные или настольные компьютеры, цифровые фотоаппараты, цифровые устройства записи, устройства для видеоигр, приставки для видеоигр, сотовые или спутниковые радиотелефоны и т.п. В цифровых мультимедийных устройствах могут быть реализованы методы кодирования видео, например, методы, заданные согласно стандартам MPEG-2, MPEG-4 или ITU H.264/MPEG-4, Part 10, Advanced Video Coding ( AVC ), для более эффективного осуществления передачи и приема цифровых видеоданных. Методы кодирования видео могут осуществлять сжатие видео посредством пространственного и временного предсказания для устранения или сокращения избыточности, присущей видеопоследовательностям.
Для осуществления сжатия видео посредством временного предсказания, видеокодер может использовать процесс компенсации движения. В процессе компенсации движения, видеокодер делит текущий видеокадр на набор макроблоков. Затем, для каждого макроблока текущего видеокадра, видеокодер путается идентифицировать один или несколько макроблоков в одном или нескольких опорных кадрах, которые содержат примерно те же данные, что и макроблок в текущем видеокадре. Если видеокодер успешно идентифицирует такой макроблок в опорном кадре, видеокодер может генерировать вектор движения, который указывает смещение между идентифицированным макроблоком в опорном кадре и макроблоком в текущем кадре. Если видеокодер не может идентифицировать такой макроблок в опорном кадре, видеокодер может генерировать вектор движения, который не указывает никакого смещения. Затем видеокодер может генерировать предсказательный кадр путем перемещения идентифицированных макроблоков из позиций в опорном кадре в позиции, указанные векторами движения. После генерации предсказательного кадра, видеокодер может генерировать остаточный кадр путем вычитания, на помакроблочной основе, предсказательного кадра из текущего кадра для указания остаточных различий между соответствующими блоками. Затем видеокодер может кодировать остаточный кадр совместно с соответствующими векторами движения. Затем, видеокодер может выводить кодированный остаточный кадр и соответствующие векторы движения для использования декодером.
Для декодирования видеокадра, который был закодирован с использованием процесса компенсации движения, видеодекодер может извлекать опорный кадр, указанный векторами движения. Затем видеодекодер может перемещать макроблоки опорного кадра, указанные векторами движения, в позиции, указанные векторами движения. В результате перемещения макроблоков опорного кадра, видеодекодер генерирует предсказательный кадр. Затем видеодекодер может генерировать реконструированный видеокадр путем суммирования предсказательного кадра с декодированной версией принятого остаточного кадра.
Сущность изобретения
В общем случае, это раскрытие описывает методы кодирования и декодирования последовательностей видеокадров с использованием фрагментарных опорных изображений. Раскрытие представляет методы кодирования и декодирования видео для видоизмененного временного сжатия на основании фрагментированных ссылок, а не полных опорных изображений. В типичной последовательности видеокадров, лишь участок (т.е. мозаичный элемент) каждого кадра включает в себя движущиеся объекты. Кроме того, в каждом кадре, движущимся объектам свойственно быть заключенными в конкретные области, которые являются общими для всех кадров в последовательности видеокадров. Как описано здесь, такие общие области движения идентифицируются. Затем из идентифицированных областей видеокадров извлекаются изображения. Поскольку эти изображения может представлять лишь участки кадров, в данном раскрытии эти изображения именуются фрагментами . Затем, в процессе компенсации движения, для генерации предсказанных кадров в качестве опорных изображений используются эти фрагменты, а не весь кадр.
В одном примере, способ содержит этап, на котором сохраняют опорные фрагменты, содержащие видеоданные, связанные с набором мозаичных элементов видеокадров в последовательности видеокадров. Каждый мозаичный элемент в наборе мозаичных элементов представляет поднабор разделов для соответствующего видеокадра. Способ также содержит этап, на котором осуществляют компенсацию движения для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов.
В еще одном примере, устройство содержит опорный буфер, в котором хранятся опорные фрагменты, содержащие видеоданные, связанные с набором мозаичных элементов видеокадров в последовательности видеокадров. Каждый мозаичный элемент в наборе мозаичных элементов представляет поднабор разделов для соответствующего видеокадра. Устройство также содержит блок компенсации движения, который осуществляет компенсацию движения для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов.
В еще одном примере, устройство содержит средство для сохранения опорных фрагментов, содержащих видеоданные, связанные с набором мозаичных элементов видеокадров в последовательности видеокадров. Каждый мозаичный элемент в наборе мозаичных элементов представляет поднабор разделов для соответствующего видеокадра. Устройство также содержит средство для осуществления компенсации движения для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов.
В еще одном примере, интегральная схема содержит схему, которая сохраняет опорные фрагменты, содержащие видеоданные, связанные с набором мозаичных элементов видеокадров в последовательности видеокадров. Каждый мозаичный элемент в наборе мозаичных элементов представляет поднабор разделов для соответствующего видеокадра. Кроме того, интегральная схема содержит схему, которая осуществляет компенсацию движения для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов.
Методы, описанные в этом раскрытии, могут быть реализованы в оборудовании, программном обеспечении, программно-аппаратном обеспечении или любой их комбинации. В случае программной реализации, программное обеспечение может выполняться с использованием одного или нескольких процессоров, например, микропроцессора, специализированной интегральной схемы (ASIC), вентильной матрицы, программируемой пользователем (FPGA), или цифрового сигнального процессора (DSP). Программное обеспечение, которое выполняет методы, может первоначально храниться на компьютерно-считываемом носителе и загружаться и выполняться с использованием процессора.
Соответственно, в этом раскрытии также рассмотрен компьютерно-считываемый носитель, который содержит выполняемые инструкции. При выполнении на одном или нескольких процессорах, инструкции предписывают одному или нескольким процессорам сохранять опорные фрагменты, содержащие видеоданные, связанные с набором мозаичных элементов видеокадров в последовательности видеокадров. Каждый мозаичный элемент в наборе мозаичных элементов представляет поднабор разделов для соответствующего видеокадра. Инструкции также предписывают одному или нескольким процессорам осуществлять компенсацию движения для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов.
В ряде случаев, компьютерно-считываемый носитель может составлять, по меньшей мере, часть компьютерного программного продукта, который может продаваться и/или использоваться в устройстве кодирования видео. Компьютерный программный продукт может включать в себя компьютерно-считываемый носитель и, в ряде случаев, также может включать в себя упаковочные материалы.
Методы кодирования и декодирования последовательностей видеокадров с использованием фрагментарных опорных изображений будут, в основном, описаны применительно к методам кодирования с компенсацией движения. Однако описанное здесь использование фрагментарных опорных изображений также можно использовать в других контекстах кодирования, например, масштабирования, усиления контуров и т.п.
Детали одного или нескольких примеров представлены в прилагаемых чертежах и нижеследующем описании. Другие признаки, объекты и преимущества явствуют из описания и чертежей, а также из формулы изобретения.
Краткое описание чертежей
Фиг. 1 - блок-схема иллюстративной системы кодирования и декодирования видео.
Фиг. 2 - блок-схема, демонстрирующая иллюстративные детали кодера, представленного на фиг. 1.
Фиг. 3 - блок-схема, демонстрирующая иллюстративные детали модуля идентификации мозаичного элемента, представленного на фиг. 2.
Фиг. 4 - иллюстративная последовательность видеокадров и соответствующий набор карт разделов, где активные разделы изображены в виде черных блоков.
Фиг. 5A, 5B и 5C - иллюстративные составные карты активности разделов.
Фиг. 5D демонстрирует эффект сглаживания режима на карте активности разделов.
Фиг. 6A и 6B - иллюстративная операция кодера, представленного на фиг. 2.
Фиг. 7 - блок-схема, демонстрирующая иллюстративные детали декодера представленного на фиг. 1.
Фиг. 8A и 8B - логические блок-схемы иллюстративных операций модулей в декодере, представленном на фиг. 7.
Фиг. 9 - блок-схема, демонстрирующая иллюстративные детали препроцессора, представленного на фиг. 1.
Фиг. 10 - логическая блок-схема, демонстрирующая иллюстративную операцию препроцессора, представленного на фиг. 9.
Фиг. 11 - блок-схема, демонстрирующая альтернативный набор иллюстративных деталей декодера, представленного на фиг. 1.
Фиг. 12 - логическая блок-схема иллюстративной операции альтернативной реализации декодера, представленного на фиг. 11.
Фиг. 13 - логическая блок-схема иллюстративной операции модуля заполнения буфера для сохранения фрагментов в буферах отображения, представленные на фиг. 1.
Подробное описание
На фиг. 1 показана блок-схема иллюстративной системы 2 кодирования и декодирования видео. Согласно примеру, приведенному на фиг. 1, система 2 включает в себя устройство кодирования 4 и устройство декодирования 6. В общем случае, устройство кодирования 4 способно кодировать видеоданные, и устройство декодирования 6 способно декодировать видеоданные, закодированные устройством кодирования 4 или другим устройством кодирования. Устройство кодирования 4 и устройство декодирования 6 могут представлять собой любые из разнообразных устройств. Например, устройство кодирования 4 и устройство декодирования 6 могут представлять собой персональные компьютеры, сетевые серверы, карманные персональные компьютеры ( КПК ), устройства для видеоигр, персональные медиа-проигрыватели, мобильные телефоны, цифровые фотоаппараты, цифровые видеокамеры или устройства других типов. Альтернативно, единое устройство может включать в себя функции устройства кодирования 4 и/или функции устройства декодирования 6.
Согласно примеру, приведенному на фиг. 1, устройство кодирования 4 включает в себя медиа-источник 8. Медиа-источник 8 выводит некодированные видеоданные (т.е. видеоданные, которые не были закодированы с использованием описанного здесь процесса кодирования). Медиа-источник 8 может представлять собой любое из разнообразных программных и/или аппаратных блоков, которые выводят некодированные видеоданные. Например, медиа-источник 8 может представлять собой цифровую видеокамеру, цифровой фотоаппарат, модуль памяти, где хранятся некодированные видеоданные, интерфейс, который принимает некодированные видеоданные от поставщика услуг кабельного, эфирного или спутникового телевидения, или другие типы программных и/или аппаратных блоков, которые выводят некодированные видеоданные. Кроме того, медиа-источник 8 может быть подключен с возможностью обмена данными к устройству кодирования 4 через одно или несколько проводных или беспроводных соединений. Медиа-источник 8 может обеспечивать некодированные видеоданные на препроцессор 10.
Кроме того, в примере, приведенном на фиг. 1, устройство кодирования 4 может включать в себя транскодер 12. В общем случае, транскодер 12 принимает видеоданные, выводимые источником 14 битового потока. Видеоданные, выводимые источником 14 битового потока, могут кодироваться в первом формате. Например, источник 14 битового потока может выводить видеоданные в формате «последовательного цифрового интерфейса». Когда транскодер 12 принимает видеоданные, выводимые источником 14 битового потока, декодер 13 в транскодере 12 может декодировать видеоданные, принятые от транскодера 12, таким образом, генерируя несжатую последовательность видеокадров. Декодировав видеоданные, декодер 13 может обеспечивать декодированные видеоданные на препроцессор 10, который осуществляет одну или несколько операций предварительной обработки видео на декодированных видеоданных. Затем кодер 16 в транскодере 12 может кодировать предварительно обработанные видеоданные во втором формате, отличном от первого формата. Употребляемый в этом раскрытии термин формат может означать формат кодирования данных или формат представления данных. Таким образом, транскодер 12 перекодирует видео, сгенерированно источником 14 битового потока из первого формата во второй формат. Например, транскодер 12 может перекодировать видео, сгенерированное источником 14 битового потока, из стандарта H.263 в стандарт H.264. В еще одном примере, транскодер 12 может перекодировать видео, сгенерированное источником 14 битового потока, из первого разрешения (например, H.264 SD) во второе разрешение (H.264 QVGA).
Препроцессор 10 может осуществлять разнообразные операции предварительной обработки видео на некодированных видеоданных. Например, препроцессор 10 может осуществлять операции чередования, операции дечередования, операции регулировки контрастности, операции шумоподавления и/или другие типы операций предварительной обработки видео на некодированных видеоданных.
Осуществив одну или несколько операций предварительной обработки видео на некодированных видеоданных, препроцессор 10 может обеспечивать предварительно обработанные видеоданные на кодер 16. Кодер 16 кодирует предварительно обработанные видеоданные, таким образом, создавая кодированные видеоданные. После того, как кодер 16 кодирует предварительно обработанные видеоданные, устройство кодирования 4 может совершать разнообразные действия над кодированными видеоданными. В одном примере, устройство кодирования 4 может сохранять кодированные видеоданные в виде медиа-файла или медиа-объекта другого типа на носителе информации (не показан), например, в оперативной памяти, на оптическом диске, магнитном диске, во флэш-памяти, электрически стираемой программируемой постоянной памяти или в модулях памяти других типов. В еще одном примере, устройство кодирования 4 может выводить кодированные видеоданные как один из нескольких разных типов медиа-объектов. Например, устройство кодирования 4 может выводить кодированные видеоданные в виде потока аудио/видеоданных в реальном времени. В еще одном примере, устройство кодирования 4 может выводить кодированные видеоданные в виде медиа-файла, который может быть или не быть пригоден для прогрессивного воспроизведения. Когда устройство кодирования 4 выводит кодированные видеоданные, устройство кодирования 4 может передавать кодированные видеоданные с использованием компьютерной сети, передатчика беспроводного вещания, коаксиального кабеля, волоконно-оптического кабеля или другого типа механизма связи.
Декодер 18 в устройстве декодирования 6 может декодировать видеоданные, закодированные устройством кодирования 4. В общем случае, декодер 18 обращает процесс кодирования, который кодер 16 применял к видеоданным. После того, как декодер 18 декодирует видеоданные, постпроцессор 20 в устройстве декодирования 6 осуществляет одну или несколько операций последующей обработки на декодированных видеоданных. Например, постпроцессор 20 может осуществлять операции последующей обработки, которые включают в себя операции гамма-коррекция, операции увеличения резкости и другие операции последующей обработки. После того, как постпроцессор 20 осуществляет операции последующей обработки на видеоданных, модуль 22 заполнения буфера в устройстве декодирования 6 может сохранять видеоданные в наборе из одного или нескольких буферов отображения 24. Например, модуль 22 заполнения буфера может сохранять отдельные кадры постобработанных видеоданных в отдельные буферы отображения 24. Буферы отображения 24 можно реализовать как один или несколько компьютерно-считываемых носителей (например, блоков оперативной памяти, флэш-памяти или компьютерно-считываемых носителей других типов).
Блок отображения 26 в устройстве декодирования 6 может отображать видеоданные в буферах отображения 24. Блок отображения 26 может представлять собой один или несколько из различных типов блока отображения. Например, блок отображения 26 может представлять собой монитор или телевизор на основе электронно-лучевой трубки ( ЭЛТ ), жидкокристаллический дисплей ( ЖКД ), дисплей на основе органических светодиодов ( ОСИД ), традиционный светодиодный дисплей, плазменный дисплей или дисплей иного типа. Хотя в примере, приведенном на фиг. 1, показано, что блок отображения 26 включен в состав устройства декодирования 6, он может быть внешним по отношению к устройству декодирования 6. Например, блок отображения 26 может быть подключен к устройству декодирования 6 одним или несколькими кабелями и/или одной или несколькими беспроводными линиями связи.
Как описано здесь, препроцессор 10, кодер 16, декодер 18 и постпроцессор 20 могут, независимо или совместно, использовать методы идентификации мозаичных элементов видео для сокращения или восстановления временной избыточности среди видеокадров в наборе видеокадров. В общем случае, эти методы идентификации мозаичных элементов видео предусматривают идентификацию одного или нескольких наборов мозаичных элементов видеокадров в последовательности видеокадров. Мозаичный элемент представляет собой область видеокадра. Например, мозаичный элемент может представлять собой прямоугольную область видеокадра шириной в двадцать пикселей, высотой в тридцать пикселей, и имеет верхний левый пиксель, находящийся в пяти столбцах от левого края видеокадра и в семидесяти строках от верхнего края видеокадра (т.е. верхний левый пиксель имеет координаты (5, 70)). Мозаичные элементы в, по меньшей мере, одном из наборов мозаичных элементов являются областями видеокадров, которые могут не включать или не включать в себя целый видеокадр.
После идентификации мозаичных элементов, фрагменты можно извлекать из каждого видеокадра. Употребляемый в этом раскрытии термин фрагмент означает изображение, содержащееся в мозаичном элементе видеокадра. Пусть, например, мозаичный элемент видеокадра является прямоугольной областью видеокадра шириной в двадцать пикселей и высотой в тридцать пикселей. Верхний левый пиксель области имеет координаты (5, 70). В этом примере, фрагмент, извлеченный из этого мозаичного элемента, является независимым изображением шириной в двадцать пикселей и высотой в тридцать пикселей. Кроме того, в этом примере, верхний левый пиксель фрагмента (т.е. пиксель фрагмента, имеющий координаты (0, 0)) имеет такие же пиксельные значения, как пиксель видеокадра, имеющий координаты (5, 70). Аналогично, пиксель фрагмента, имеющий координаты (1, 0) имеет такие же пиксельные значения, как пиксель видеокадра, имеющий координаты (6, 70), и т.д.
Когда фрагменты извлечены из видеокадров, операции над видеокадрами можно осуществлять только в отношении фрагментов. Например, при осуществлении операции предварительной обработки в отношении видеокадра, препроцессор 10 может осуществлять операции предварительной обработки только на фрагментах. В еще одном примере, кодер 16 и декодер 18 могут использовать фрагменты в качестве ссылок в ходе операций компенсации движения. После осуществления операций, кадры можно повторно собирать (т.е. визуализировать) путем составления обработанных фрагментов на ранее декодированный полный видеокадр. Это возможно, поскольку можно предполагать, что все участки кадра, которые не находятся в одном из идентифицированных мозаичных элементов, идентичны участкам ранее декодированного полного видеокадра, которые не находятся в одном из идентифицированных мозаичных элементов.
На фиг. 2 показана блок-схема, демонстрирующая иллюстративные детали кодера 16 (фиг. 1). В примере, приведенном на фиг. 2, препроцессор 10 или другой аппаратный и/или программный блок может сохранять последовательность некодированных видеокадров в буфере 30 кадров в кодере 16. Буфер 30 кадров может представлять собой блок памяти, который может быть отделен от или составлять часть основной памяти кодера 16. Эта последовательность видеокадров может включать в себя переменное количество видеокадров. Например, первая последовательность видеокадров может включать в себя пять видеокадров, вторая последовательность видеокадров может включать в себя шестнадцать видеокадров, и третья последовательность видеокадров может включать в себя триста видеокадров. В еще одном примере, последовательность видеокадров может составлять одну или несколько «групп изображений» ( GOP ).
Когда последовательность видеокадров сохраняется в буфере 30 кадров, блок 32 оценки движения в кодере 16 может генерировать данные движения для каждого раздела в каждом видеокадре в последовательности видеокадров. Употребляемый в этом раскрытии термин раздел означает сплошную группу пикселей. Например, раздел может представлять собой группу пикселей 16x16. В этом примере, термин раздел может быть синонимом термина макроблок или блок , употребляемого в стиле речи стандартов кодирования видео MPEG и H.26x. Однако, в более общем примере, раздел может представлять собой группу пикселей любой формы (например, треугольной, трапецеидальной, круглой, прямоугольной и т.д.).
Данные движения, сгенерированные блоком 32 оценки движения, могут изменяться в зависимости от того, как нужно кодировать текущий кадр. Например, если кадр нужно интеркодировать как предсказательный кадр ( P-кадр ), блок 32 оценки движения может генерировать векторы движения для каждого раздела кадра. Каждый вектор движения, сгенерированный блоком 32 оценки движения, может указывать значения смещения одного или нескольких разделов из позиций в одном или нескольких опорных кадрах в позицию в P-кадре. Например, вектор движения для раздела может указывать один или несколько опорных кадров, горизонтальные смещения идентифицированных разделов и вертикальные смещения идентифицированных разделов. В этом примере опорные кадры, указанные в векторе движения текущего кадра не обязаны быть кадрами, которые непосредственно предшествуют текущему кадру или следуют за ним. Например, в стандарте H.264, опорный кадр может составлять до шестнадцати кадров, удаленных из текущего кадра. Если кадр нужно интеркодировать как би-предсказательный кадр ( B-кадр ), блок 32 оценки движения может генерировать, для каждого раздела кадра, набор списков индексных значений опорного кадра. В ходе декодирования, списки индексных значений кадра можно использовать для интерполяции позиции раздела в B-каде. Если кадр подлежит кодированию как интракодированный кадр ( I-кадр ), блок 32 оценки движения может не генерировать данные движения или может не осуществлять никаких действий в отношении I-кадра.
После того, как блок 32 оценки движения сгенерирует данные движения для каждого раздела в каждом видеокадре в последовательности видеокадров, модуль 34 определения режима может выбрать режим кодирования раздела для каждого раздела. Например, в стандарте H.264/AVC, модуль 34 определения режима может определять на пораздельной основе, подлежат ли разделы интра-кадров кодированию с использованием режима кодирования Intra_4x4 или режима кодирования Intra_16x16. Кроме того, в стандарте H.264/AVC, модуль 34 определения режима может определять на пораздельной основе, подлежат ли разделы P-кадров кодированию с использованием режима «пропуска» или кодированию с использованием компенсация движения. В режиме «пропуска», раздел интерпретируется для сохранения тех же пиксельных данных, что и эквивалентно расположенный раздел в опорном кадре.
Помимо выбора режима кодирования для каждого раздела в каждом видеокадре последовательности видеокадров, модуль 34 определения режима может осуществлять операцию сглаживания режима над разделами. В общем случае, когда модуль 34 определения режима осуществляет операцию сглаживания режима, модуль 34 определения режима переклассифицирует изолированные разделы первого режима как разделы второго режима. Например, в последовательности видеокадров, единичный раздел может перемещаться по фону, который иначе является статичным. В этом примере, разделы статичного фона могут быть разделами режима «пропуска» и движущийся раздел можно кодировать согласно другому режиму. Операция сглаживания режима может переклассифицировать этот раздел как раздел режима пропуска. Часто такие изолированные движущиеся разделы являются визуальным шумом и могут быть ненужными и визуально отвлекающими. Благодаря осуществлению операции сглаживания режима над разделами, модуль 34 определения режима может эффективно увеличивать количество разделов режима пропуска, в то же время, снижая визуальный шум.
После того, как модуль 34 определения режима определит режим кодирования раздела для каждого раздела, модуль 36 карты разделов в кодере 16 может генерировать карту разделов для каждого видеокадра последовательности видеокадров. Сгенерировав карту разделов для видеокадра, модуль 36 карты разделов может сохранить карту разделов в буфере 38 карты. Буфер 38 карты может представлять собой отдельный блок памяти, область в основной памяти устройства кодирования 4 или любой другой пригодный блок памяти, к которому может обращаться кодер 16.
Карта разделов для видеокадра может включать в себя структуру данных для каждого раздела видеокадра. Структура данных для раздела видеокадра указывает информацию о разделе, необходимую для идентификации мозаичных элементов. Например, структура данных для раздела может указывать режим кодирования для раздела, может указывать, находится ли раздел в области равномерного движения, и/или другую информацию, касающуюся раздела. В еще одном примере, структура данных для раздела может указывать информацию яркости раздела, палитру цветности раздела (например, черно-белый, сепия и т.д.), находится ли раздел в области равномерного движения, находится ли раздел в области ускоренного движения, находится ли раздел в области морфинга (например, увеличения/уменьшения), и/или другую информацию, касающуюся раздела.
Модуль 40 идентификации мозаичного элемента в кодере 16 может использовать карты разделов в буфере 38 карты для идентификации одного или нескольких из наборов мозаичных элементов видеокадров в последовательности видеокадров. Модуль 40 идентификации мозаичного элемента может идентифицировать один или несколько из наборов мозаичных элементов видеокадров в последовательности видеокадров по-разному. Например, на фиг. 3 показаны иллюстративные детали, касающиеся того, как модуль 40 идентификации мозаичного элемента может идентифицировать наборы мозаичных элементов, которые совмещены. Альтернативно, модуль 40 идентификации мозаичного элемента может идентифицировать наборы мозаичных элементов видеокадров, которые перекрываются, но не строго совмещены. Помимо идентификации наборов мозаичных элементов, модуль 40 идентификации мозаичного элемента может генерировать информацию описания мозаичного элемента для каждого из идентифицированного набора мозаичных элементов. Информация описания мозаичного элемента для набора мозаичных элементов может указывать индексный номер набора мозаичных элементов, который можно использовать для ссылки на набор мозаичных элементов, информацию, которая указывает положение и форму набора мозаичных элементов, и, возможно другие атрибуты.
Затем, модуль 42 извлечения фрагментов в кодере 16 может извлекать фрагменты из видеокадров. Употребляемый здесь термин фрагмент означает изображение в мозаичном элементе видеокадра. Например, если модуль 40 идентификации мозаичного элемента идентифицировал прямоугольный мозаичный элемент видеокадра с координатами (5, 5) верхнего левого в пикселя видеокадра и координатами (10, 10) нижнего правого пикселя видеокадра, модуль 42 извлечения фрагментов может извлекать из видеокадра набор разделов в прямоугольном изображении кадра с координатами (5, 5) верхнего левого в пикселя и координатами (10, 10) нижнего правого пикселя. Этот набор разделов является фрагментом. В еще одном примере, что может иметь место для интракодированных видеокадров ( I-кадров ), если модуль 40 идентификации мозаичного элемента идентифицирует прямоугольный мозаичный элемент видеокадра с координатами (0, 0) верхнего левого пикселя видеокадра и координатами нижнего правого пикселя в нижнем правом углу видеокадра, модуль 42 извлечения фрагментов может извлекать из кадра набор разделов, который включает в себя все разделы кадра.
После извлечения фрагментов и соответствующих данных движения, модуль 42 извлечения фрагментов может сохранять фрагменты и соответствующие векторы движения в буфере 44 фрагментов. Буфер 44 фрагментов может представлять собой отдельный блок памяти, область основной памяти устройства кодирования 4 и т.д.
Извлекши фрагмент и соответствующие данные движения, модуль 42 извлечения фрагментов может генерировать информацию идентификации изображения для фрагмента. Информация идентификации фрагмента для фрагмента может указывать индексный номер кадра, из которого модуль 42 извлечения фрагментов извлек фрагмент. Кроме того, информация идентификации фрагмента для фрагмента может указывать индексный номер набора мозаичных элементов, связанного с фрагментом. Как описано выше, индексный номер набора мозаичных элементов может быть указан посредством информации описания мозаичного элемента набора мозаичных элементов. Таким образом, информация идентификации фрагмента для фрагмента идентифицирует соотношение между фрагментом и видеокадром. Например, информация идентификации фрагмента для фрагмента может указывать, что фрагмент извлечен из кадра 5 и связан с набором мозаичных элементов 3 .
Затем буфер 44 фрагментов может передавать набор данных движения, связанный с разделами одного из фрагментов на блок 46 компенсации движения в кодере 16. В целях объяснения, этот один из фрагментов именуется здесь текущим фрагментом . Приняв набор данных движения, связанных с разделами текущего фрагмента, блок 46 компенсации движения может определить, подлежит ли текущий фрагмент кодированию как P-кадр, B-кадр или как I-кадр.
Если текущий фрагмент кодируется как P-кадр, данные движения, связанные с текущим фрагментом могут указывать один или несколько векторов движения и один или несколько индексных значений кадра для каждого раздела текущего фрагмента. Блок 46 компенсации движения может извлекать из опорного буфера 48 каждый опорный фрагмент, связанный с указанными индексными значениями кадра, и также связанный с индексным значением набора мозаичных элементов, указанным в информации идентификации фрагмента для текущего фрагмента.
После извлечения опорных фрагментов из опорного буфера 48, блок 46 компенсации движения может, для каждого раздела текущего фрагмента, использовать векторы движения раздела для идентификации раздела в одном или нескольких из извлеченных опорных фрагментов и затем помещать идентифицированный раздел в раздел текущего фрагмента. Например, вектор движения для раздела текущего фрагмента может указывать раздел одного из извлеченных опорных фрагментов, указывая горизонтальное смещение и вертикальное смещение между разделом текущего фрагмента и разделом извлеченного опорного фрагмента. В этом примере, блок 46 компенсации движения может использовать пиксельные данные указанного фрагмента извлеченного опорного фрагмента как пиксельные данные фрагмента текущего фрагмента. Таким образом, блок 46 компенсации движения перемещает разделы из опорных фрагментов в надлежащие положения в предсказательном фрагменте, связанном с текущим фрагментом.
Когда текущий фрагмент меньше видеокадра, из которого он был извлечен, текущий фрагмент включает в себя меньше разделов, чем видеокадр. Поскольку текущий фрагмент включает в себя меньше разделов, чем видеокадр, блок 46 компенсации движения может быстрее и эффективнее осуществлять операцию компенсации движения на текущем фрагменте (в отношении вычислительной и аппаратной сложности), чем блок 46 компенсации движения был бы способен осуществлять на видеокадре.
Если текущий фрагмент кодируется как B-кадр, данные движения, связанные с текущим фрагментом, могут указывать два или более списков для каждого раздела текущего фрагмента. В одной иллюстративной реализации, первый из списков для раздела (т.е. список 0) может указывать нуль или более индексных значений кадра для кадров, которые существуют до кадра, из которого был извлечен текущий фрагмент. Второй из списков для раздела (т.е. список 1) может указывать нуль или более индексных значений кадра для кадров, которые существуют после кадра, из которого был извлечен текущий фрагмент. Блок 46 компенсации движения может извлекать из опорного буфера 48 каждый опорный фрагмент, связанный с индексными значениями кадра, указанными в двух или более списках, и также связанный с индексным значением набора мозаичных элементов текущего фрагмента. После извлечения опорных фрагментов из опорного буфера 48, блок компенсации движения 46 может, для каждого раздела текущего фрагмента, интерполировать содержимое раздела.
Если текущий фрагмент кодируется как I-кадр, блок 46 компенсации движения может идентифицировать предсказательный фрагмент, состоящий только из нулей. Поскольку предсказательный фрагмент состоит только из нулей, когда модуль 50 генерации остатка в кодере 16 суммирует отрицательную версию предсказательного фрагмента с текущим фрагментом, результирующий остаточный фрагмент совпадает с текущим фрагментом. В альтернативной реализации, блок 46 компенсации движения и модуль 50 генерации остатка можно полностью обойти, когда текущий фрагмент подлежит кодированию как I-кадр. Другими словами, текущий фрагмент может поступать непосредственно на блок 52 блочного преобразования в кодере 16.
Как упомянуто в предыдущем абзаце, после того, как блок 46 компенсации движения генерирует предсказательный фрагмент, модуль 50 генерации остатка может генерировать остаточный фрагмент путем суммирования отрицательной версии предсказательного фрагмента и соответствующего исходного фрагмента, хранящегося в буфере 44 фрагментов. В более общем случае, модуль 50 генерации остатка может генерировать остаточный фрагмент, который представляет различие между предсказательным фрагментом и соответствующим исходным фрагментом. Затем, блок 52 блочного преобразования может генерировать набор коэффициентов путем осуществления процесса трансформации на остаточном фрагменте. Например, блок 52 блочного преобразования может генерировать матрицу коэффициентов для каждого блока пикселей в остаточном изображении путем осуществления двухмерного дискретного косинусного преобразования на каждом из блоков пикселей в остаточном фрагменте. После того, как блок 52 блочного преобразования генерирует набор коэффициентов, модуль квантования 54 в кодере 16 может генерировать набор квантованных коэффициентов путем квантования коэффициентов в наборе коэффициентов. Например, модуль квантования 54 может использовать матрицу квантования для квантования коэффициентов в каждой матрице коэффициентов.
Затем блок 106 энтропийного кодирования в кодере 16 может осуществлять операцию энтропийного кодирования на наборе квантованных коэффициентов. Например, блок 106 энтропийного кодирования может осуществлять операцию контекстно-адаптивного кодирования переменной длины ( CAVLC ) на наборе квантованных коэффициентов. Кроме того, блок 106 энтропийного кодирования может осуществлять операцию энтропийного кодирования на наборе данных движения, связанном с текущим фрагментом. Например, блок 106 энтропийного кодирования может осуществлять операцию экспоненциального голомбова кодирования на данных движения, связанных с текущим фрагментом. Как рассмотрено выше, если текущий фрагмент кодируется как p-кадр, данные движения, связанные с текущим фрагментом, могут содержать наборы векторов движения разделов текущего фрагмента. Если текущий фрагмент кодируется как b-кадр, данные движения, связанные с текущим фрагментом, могут содержать флаги, указывающие разделы режима пропуска, списки идентификаторов фрагментов, из которых можно интерполировать содержимое разделов в текущем фрагменте.
После осуществления блоком 106 энтропийного кодирования операции энтропийного кодирования на наборе квантованных коэффициентов и соответствующих данных движения, модуль 58 вывода в кодере 16 может выводить энтропийно кодированные квантованные коэффициенты и соответствующие векторы движения связанный с текущим фрагментом. Поскольку фрагменты видеокадра может не включать в себя весь видеокадр, модуль вывода 58 может выводить меньше данных, чем, если бы модуль вывода 58 выводил полный видеокадр.
Модуль вывода 58 может выводить информацию описания мозаичного элемента и информацию идентификации фрагмента связанный с текущим кадром. Модуль вывода 58 может по-разному выводить информацию идентификации фрагмента и информацию описания мозаичного элемента. В первом примере, если модуль вывода 58 выводит кодированные фрагменты в соответствии со стандартом H.264, модуль вывода 58 может отображать каждый кодированный фрагмент в отдельный кадр потока H.264. Кроме того, в этом первом примере, модуль вывода 58 может выводить информацию дополнительного усиления ( SEI ), которая указывает информацию идентификации фрагмента и информацию описания мозаичного элемента. Во втором примере, если модуль вывода 58 выводит кодированные фрагменты в соответствии со стандартом H.264, модуль вывода 58 может отображать кодированные фрагменты, связанные с кадром, в разные группы срезов в соответствии с функцией гибкого упорядочения макроблока ( FMO ) стандарта H.264. В этом втором примере, механизмы описания положений разных групп срезов уже включены в стандарт H.264. В третьем примере, если согласование со стандартом не критично, как в замкнутых приложениях, где декодер/приемник и передатчик/кодер осведомлены о возможностях друг друга, можно использовать новый/ую синтаксис/семантику, или формат передачи этих информаций и формата может быть заранее запрограммирован на декодере.
Кроме того, когда модуль квантования 54 генерирует набор квантованных коэффициентов, связанных с текущим фрагментом, блок 60 обратного квантования в кодере 16 может генерировать набор обратно квантованных коэффициентов, связанных с текущим фрагментом путем осуществления операции обратного квантования на наборе квантованных коэффициентов. Блок 60 обратного квантования может осуществлять операцию обратного квантования с использованием матрицы обратного квантования, которая соответствует матрице квантования, используемой модулем квантования 54. После генерирования блоком 60 обратного квантования набора обратно квантованных коэффициентов, блок 62 обратного преобразования в кодере 16 может генерировать декодированное остаточное изображение, связанное с текущим фрагментом, путем применения к набору обратно квантованных коэффициентов преобразования, обратного преобразованию, применяемому блоком 52 блочного преобразования. Например, если блок 52 блочного преобразования применял двухмерное дискретное косинусное преобразование, блок 62 обратного преобразования может применять двухмерное обратное дискретное косинусное преобразование.
Модуль 64 реконструкции фрагмента в кодере 16 может генерировать реконструированный фрагмент, связанный с текущим фрагментом, путем суммирования декодированного остаточного изображения, связанного с текущим фрагментом, и предсказательного изображения, связанного с текущим фрагментом. Хотя кодер 16 в примере, приведенном на фиг. 2, использует сумматор для генерации реконструированного фрагмента, очевидно, что другие типы аппаратных или программных модулей могут осуществлять функции модуля 64 реконструкции фрагмента. Когда модуль 64 реконструкции фрагмента генерирует реконструированный фрагмент, модуль 64 реконструкции фрагмента может сохранять реконструированное изображение в опорном буфере 48 для последующего использования в качестве опорного фрагмента. Поскольку опорные фрагменты могут включать в себя меньше битов, чем полные видеокадры, опорный буфер 48 может быть меньше, чем, если бы в опорном буфере 48 нужно было хранить полные видеокадры. Кроме того, поскольку опорные фрагменты могут включать в себя меньше битов, чем полные видеокадры, требования к трафику переноса памяти можно снизить. Благодаря пониженному трафику переноса памяти, может требоваться меньше времени и мощности для записи опорных фрагментов в опорном буфере 48. После того, как в опорном буфере 48 будет сохранено реконструированное изображение, блок 46 компенсации движения может принять другой набор данных движения из буфера 44 фрагментов, и этот процесс может осуществляться, опять же, в отношении другого фрагмента в буфере 44 фрагментов. Кроме того, этот процесс может продолжаться, пока не будут обработаны все фрагменты в буфере 44 фрагментов.
На фиг. 3 показана блок-схема, демонстрирующая иллюстративные детали модуля 40 идентификации мозаичного элемента. В примере, приведенном на фиг. 3, модуль 40 идентификации мозаичного элемента включает в себя модуль 70 активности разделов, который использует карты разделов, сгенерированные модулем 36 карты разделов для создания составной карты активности разделов для видеопоследовательности. Карта активности разделов для видеокадра указывает, какие разделы видеокадра являются активными , и какие разделы кадра являются неактивными . Например, карта активности разделов может представлять собой массив логических значений, где значения истина указывают разделы активного режима, и значения ложь указывают неактивные разделы. Раздел данного видеокадра является неактивным разделом, когда вектор движения раздела указывает, что раздел не имеет смещения относительно раздела в опорном кадре, и когда раздел не имеет остаточного значения относительно совмещенного раздела в опорном кадре. Напротив, раздел данного кадра является активным , когда вектор движения раздела указывает, что раздел имеет, по меньшей мере, некоторое смещение относительно раздела в опорном кадре, когда раздел имеет ненулевое остаточное значение относительно совмещенного раздела в опорном кадре, или, когда раздел имеет ненулевое остаточное значение относительно совмещенного раздела в опорном кадре и имеет, по меньшей мере, некоторое смещение относительно раздела в опорном кадре.
Для генерации составной карты активности разделов, модуль 71 карты в модуле 70 активности разделов может генерировать одну или несколько карт активности разделов для видеокадра путем идентификации групп разделов в кадре, которые имеют, по существу, равномерное движение. Для идентификации групп разделов, которые имеют, по существу, равномерное движение, модуль 71 карты может применять медианный фильтр движения к горизонтальным смещениям, указанным компонентами, соответствующими горизонтальной составляющей векторов движения разделов, и медианный фильтр движения к вертикальным смещениям, указанным компонентами, соответствующим вертикальной составляющей векторов движения разделов. Медианный фильтр движения эффективно удаляет шум или другое несущественное различие между смещениями. Медианный фильтр движения берет множество точек (например, значения смещения) и, с учетом диапазона фильтра, берет подмножество этих точек, имеющее геометрический центр x, и возвращает медиану подмножества. Например, пусть следующие значения имеют значения горизонтального или вертикального смещения: 1, 1, 1, 1, 5, 4, 4, 1, 9, 4, и диапазон фильтра равен пяти. В этом примере, может существовать десять подмножеств, каждое из которых имеет значение медианы:
Подмножество 1: 1 | -- медиана = 1; |
Подмножество 2: 1, 1 | -- медиана = 1; |
Подмножество 3: 1, 1, 1 | -- медиана = 1; |
Подмножество 4: 1, 1, 1, 1 | -- медиана = 1; |
Подмножество 5: 1, 1, 1, 1, 5 | -- медиана = 1; |
Подмножество 6: 1, 1, 1, 5, 4 | -- медиана = 1; |
Подмножество 7: 1, 1, 5, 4, 4 | -- медиана = 4; |
Подмножество 8: 1, 5, 4, 4, 1 | -- медиана = 4; |
Подмножество 9: 5, 4, 4, 1, 9 | -- медиана = 4; |
Подмножество 10: 4, 4, 1, 9, 4 | -- медиана = 4; |
В этом примере, медианный фильтр движения выводит: 1, 1, 1, 1, 1, 1, 4, 4, 4, 4. Заметим, что медианный фильтр движения удаляет значения 5 и 9 . После применения медианного фильтра движения, модуль 71 карты может идентифицировать группы последовательных фильтрованных значений смещения, которые имеют одинаковое значение. Например, модуль 71 карты может идентифицировать группу из 1, 1, 1, 1, 1, 1 как первую группу последовательных фильтрованных значений смещения и группу из 4, 4, 4, 4 как вторую группу последовательных фильтрованных значений смещения. Затем модуль 71 карты может указать разделы, связанные с группами ненулевых фильтрованных значений смещения в качестве активных разделов. Например, это демонстрирует нижеследующая таблица фильтрованных значений смещения:
Таблица 1 | ||||
1,0 | 1,0 | 0,0 | 0,0 | 0,0 |
1,0 | 1,0 | 0,0 | 1,0 | 0,0 |
0,0 | 0,0 | 0,0 | 0,0 | 0,0 |
0,0 | 0,0 | 0,0, | 0,-4 | 0,-4 |
0,0 | 0,0 | 0,0 | 0,-4 | 0,-4 |
В таблице 1, каждая ячейка представляет раздел, первое число в ячейке представляет фильтрованное значение горизонтального смещения раздела, и второе число в ячейке представляет фильтрованное значение вертикального смещения раздела. С использованием таблицы 1, модуль 71 карты может указать четыре раздела в верхнем левом углу в качестве активных разделов и четыре раздела в нижнем правом углу в качестве активных разделов. Остальные разделы являются неактивными разделами, поскольку их фильтрованные значения смещения равны нулю.
В еще одном примере того, как модуль 71 карты может генерировать карту активности разделов, модуль 71 карты может использовать режимы кодирования раздела вместо значений смещения вектора движения. В порядке иллюстрации, рассмотрим нижеследующую таблицу 2:
Таблица 2 | ||||
Пропуск | Пропуск | Пропуск | Интер/прямой | Интер/прямой |
Пропуск | Пропуск | Пропуск | Интер/прямой | Интер/прямой |
Пропуск | Пропуск | Пропуск | Пропуск | Пропуск |
Интер/прямой | Интер/прямой | Пропуск | Пропуск | Пропуск |
Интер/прямой | Интер/прямой | Пропуск | Пропуск | Пропуск |
В таблице 2, каждая ячейка представляет раздел, и слово в ячейке указывает режим кодирования, используемый для кодирования раздела, представленного ячейкой. С использованием таблицы 2, модуль карты 71 может указать четыре раздела в верхнем правом углу в качестве активных разделов и четыре раздела в нижнем левом углу в качестве активных разделов.
На фиг. 4 показана иллюстративная последовательность видеокадров 80 и соответствующий набор карт разделов 82, где активные разделы изображены в виде черных блоков. Согласно примеру, приведенному на фиг. 4, последовательность видеокадров 80 включает в себя кадр 80A, кадр 80B, кадр 80C и кадр 80D. В примере, приведенном на фиг. 4, кадр 80A является интра-кадром. Когда модуль 40 идентификации мозаичного элемента идентифицирует мозаичные элементы для последовательности 80, модуль 71 карты может генерировать набор карт активности разделов 82. Набор карт активности разделов 82 включает в себя карту 82A, карту 82B, карту 82C и карту 82D. Карта 82A соответствует кадру 80A, карта 82B соответствует кадру 80B, карта 82C соответствует кадру 80C, и карта 82D соответствует кадру 80D.
На каждом из видеокадров 80 изображен человек на фоне пустыни. Например, человеком может быть репортером службы новостей. Как можно видеть из видеокадров 80, фон в виде пустыни не претерпевает значительных движений или изменений на протяжении видеокадров 80. Напротив, все движение и изменение в видеокадрах 80 сосредоточено вокруг головы человека. Поскольку движение и изменение в видеокадрах 80 сосредоточено вокруг головы человека, разделы видеокадров 80, находящиеся в области вокруг головы человека, имеют тенденцию быть активными разделами, тогда как разделы видеокадров 80, связанные с фоном, являются неактивными разделами. Таким образом, карта 82B, карта 82C и карта 82D включают в себя черные блоки, указывающие активные разделы в области вокруг головы человека. Карта 82A не включает в себя никакие разделы активного режима, поскольку кадр 80A является I-кадром, и I-кадры не строятся со ссылкой на другие кадры.
Согласно фиг. 3, модуль 40 идентификации мозаичного элемента может использовать карты активности разделов для идентификации одного или нескольких из наборов мозаичных элементов видеокадров в последовательности видеокадров. Модуль 40 идентификации мозаичного элемента может использовать различные методы для идентификации наборов мозаичных элементов видеокадров в последовательности видеокадров. В примере, приведенном на фиг. 3, модуль 70 активности разделов может включать в себя модуль 72 составной карты, который использует карты активности разделов, сгенерированные модулем 71 карты для генерации составной карты активности разделов. Употребляемый в этом раскрытии термин «карта активности разделов» означает совокупность из двух или более карт активности разделов источника, если, для каждого активного раздела в одной из карт активности разделов источника, совмещенный раздел в карте активности разделов является активным разделом, и если, для каждого неактивного раздела карты активности, не существует совмещенного раздела карт активности разделов источника, который являлся бы активным разделом. Карты активности разделов источника могут включать в себя карты активности разделов, связанные с I-кадрами, P-кадрами, B-кадрами и т.п. Модуль 72 составной карты может генерировать составную карту активности разделов путем осуществления логических операций или над всеми картами активности разделов. Таким образом, раздел в составной карте активности разделов является активным, когда один или несколько совмещенных разделов в одном или нескольких из кадров являются активными. На фиг. 5A, 5B и 5C показана иллюстративная составная карта 90 активности разделов. Составная карта 90 активности разделов это составная карта активности разделов из карт активности разделов 82A-82D (фиг. 4). Другими словами, составная карта 90 активности разделов может представлять результат осуществления логической операции или над картами активности разделов 82A-82D.
После генерации составной карты 90 активности разделов, модуль 73 построения мозаичных элементов в модуле 40 идентификации мозаичного элемента может использовать составную карту 90 активности разделов для определения, превышает ли процент неактивных разделов в составной карте 90 активности разделов данный составной порог активности разделов. Составной порог активности разделов может иметь разные значения, например, от 20% и выше. Если процент неактивных разделов в общей карте активности разделов не превышает составной порог активности разделов, модуль 73 построения мозаичных элементов может идентифицировать единичный набор мозаичных элементов. Каждый мозаичный элемент в этом наборе мозаичных элементов включает в себя всю область видеокадра в последовательности видеокадров. Модуль 40 идентификации мозаичного элемента может оценивать, превышает ли процент неактивных разделов в составной карте 90 активности разделов составной порог активности разделов, чтобы оценить, будет ли эффективнее в отношении вычислительной нагрузки и/или энергопотребления кодировать видеокадры на основе мозаичных элементов или на основе полных видеокадров. Другими словами, когда процент неактивных разделов в составной карте активности разделов 90 ниже составного порога активности разделов, может оказаться эффективнее кодировать полные видеокадры, а не мозаичные элементы видеокадров.
С другой стороны, если процент неактивных разделов в составной карте активности разделов 90 превышает порог, модуль 73 построения мозаичных элементов может идентифицировать один или несколько мозаичных элементов составной карты 90 активности разделов, которые включают в себя активные разделы. Мозаичные элементы составной карты 90 активности разделов могут представлять различные области равномерного движения в последовательности видеокадров. Согласно примеру, приведенному на фиг. 5A, модуль 73 построения мозаичных элементов идентифицировал мозаичный элемент 92, который включает в себя прямоугольную область вокруг верхней группы разделов активного режима в составной карте 90 активности разделов и идентифицировал мозаичный элемент 94, который включает в себя прямоугольную область вокруг нижней группы разделов активного режима в составной карте 90 активности разделов. Мозаичный элемент 92 соответствует активным разделам вокруг головы человека в видеокадрах 80, и мозаичный элемент 94 соответствует тексту в видеокадрах 80. Пример, приведенный на фиг. 5B, демонстрирует альтернативные области, которые модуль 73 построения мозаичных элементов идентифицировал с использованием одной и той же составной карты 90 активности разделов. Согласно примеру, приведенному на фиг. 5B, модуль 73 построения мозаичных элементов идентифицировал первый многоугольный мозаичный элемент 102, который включает в себя верхнюю группу разделов активного режима в составной карте 100 активности разделов. Кроме того, модуль 73 построения мозаичных элементов идентифицировал второй многоугольный мозаичный элемент 104, который включает в себя нижнюю группу разделов активного режима в составной карте 100 активности разделов.
Пример, приведенный на фиг. 5C, демонстрирует дополнительные альтернативные мозаичные элементы, которые модуль 73 построения мозаичных элементов может идентифицировать с использованием составной карты 90 активности разделов. С использованием составной карты 90 активности разделов, модуль 73 построения мозаичных элементов идентифицировал первый предварительный мозаичный элемент 112, который включает в себя верхнюю группу разделов активного режима, и идентифицировал второй предварительный мозаичный элемент 114, который включает в себя нижнюю группу разделов активного режима. Предварительный мозаичный элемент 112 может быть идентичен или не идентичен мозаичному элементу 92 на фиг. 5A, и предварительный мозаичный элемент 114 может быть идентичен или не идентичен мозаичному элементу 94 на фиг. 5A. Однако, в примере, приведенном на фиг. 5C, модуль 73 построения мозаичных элементов также идентифицировал мозаичный элемент 116, который включает в себя разделы, которые находятся в предварительном мозаичном элементе 112, и разделы, которые распространяются на данное количество пикселей в каждом направлении от предварительного мозаичного элемента 112. Кроме того, в примере, приведенном на фиг. 5C, модуль 73 построения мозаичных элементов идентифицировал мозаичный элемент 118, который включает в себя разделы, которые находятся в предварительном мозаичном элементе 114, и разделы, которые распространяются на данное количество пикселей в каждом направлении от предварительного мозаичного элемента 114. Это данное количество пикселей может быть таким, что все векторы движения разделов в предварительных мозаичных элементах 112 и 114 указывают области, находящиеся в мозаичных элементах 116 и 118, соответственно. Согласно фиг. 5C, эта дополнительная область представлена диагональными линиями.
После идентификации мозаичного элемента составной карты активности разделов, модуль 73 построения мозаичных элементов может идентифицировать мозаичный элемент каждого видеокадра в последовательности видеокадров, который совмещен с идентифицированным мозаичным элементом составной карты активности разделов. Другими словами, модуль 73 построения мозаичных элементов идентифицирует мозаичный элемент видеокадра, так что мозаичный элемент включает в себя раздел видеокадра, если и только если раздел находится в положении видеокадра, которое соответствует положению раздела, включенного в идентифицированный мозаичный элемент составной карты активности разделов. Таким образом, модуль 73 построения мозаичных элементов идентифицирует набор совмещенных мозаичных элементов видеокадров в последовательности видеокадров.
В некоторых обстоятельствах предпочтительно использовать мозаичный элемент 116 и мозаичный элемент 118, показанные на фиг. 5C, а не мозаичные элементы 92, 94, 102 и 104, показанные в примере, приведенном на фиг. 5A или фиг. 5B. Например, как объяснено выше, блок 46 компенсации движения в кодере 16 загружает опорные фрагменты из опорного буфера 48. Поскольку опорный буфер 48 может представлять собой область основной памяти устройства кодирования 4, загрузка опорных изображений из опорного буфера 48 может быть сопряжена с затратой времени и энергии. Кроме того, когда блок 46 компенсации движения загружает опорный фрагмент из опорного буфера 48, блок 46 компенсации движения может сохранять опорный фрагмент в блоке памяти, локальный по отношению к блоку 46 компенсации движения. В силу расширенных областей мозаичных элементов 116 и 118, некоторые разделы обобществляются между опорными фрагментами. Поскольку некоторые разделы обобществляются между опорными фрагментами, блоку 46 компенсации движения не требуется дважды загружать эти обобществленные разделы. Отсутствие необходимости дважды загружать обобществленные разделы позволяет экономить время и энергию. Аналогичная ситуация может применяться в отношении блока компенсации движения в декодере 18.
Чтобы фактически идентифицировать один или несколько мозаичных элементов составной карты активности разделов, модуль 73 построения мозаичных элементов может осуществлять различные операции. Например, модуль 73 построения мозаичных элементов может идентифицировать связанные наборы активных разделов в составной карте активности разделов путем отсечения неактивных разделов составной карты активности разделов, пока не останутся только активные разделы. В этом примере, модуль 73 построения мозаичных элементов может затем идентифицировать прямоугольные мозаичные элементы (например, мозаичные элементы 92 и 94 на фиг. 5A и мозаичные элементы 112 и 114 на фиг. 5C) путем добавления неактивных разделов обратно в мозаичные элементы для придания мозаичным элементам прямоугольной формы. В еще одном примере, модуль 73 построения мозаичных элементов может идентифицировать сплошные наборы активных разделов составной карты активности разделов путем идентификации первого раздела активного режима составной карты активности разделов с последующей идентификацией разделов активного режима составной карты активности разделов, которые соседствуют с первым разделом активного режима, с последующей идентификацией разделов активного режима, которые соседствуют с этими разделами активного режима, и т.д.
Кроме того, модуль 73 построения мозаичных элементов может идентифицировать мозаичные элементы составной карты активности разделов таким образом, что фрагменты, связанные с мозаичными элементами на основании идентифицированных мозаичных элементов, могут загружаться из памяти эффективно в отношении времени и/или мощности. Например, модуль 73 построения мозаичных элементов может идентифицировать мозаичный элемент составной карты активности разделов так, что фрагменты, связанные с мозаичными элементами на основании мозаичного элемента, могут сохраняться целиком в единичных страницах памяти. В этом примере, может быть более эффективно в отношении времени и/или энергии извлекать фрагмент, когда фрагмент целиком хранится в единичной странице памяти. Напротив, полные видеокадры могут быть больше фрагментов. Поскольку полные видеокадры могут быть больше фрагментов, может оказаться невозможным сохранять полные видеокадры в единичных страницах памяти.
Когда модуль 73 построения мозаичных элементов идентифицирует мозаичный элемент составной карты активности разделов, модуль 73 построения мозаичных элементов может идентифицировать мозаичные элементы каждого из видеокадров. Идентифицированные мозаичные элементы видеокадров могут быть совмещены с мозаичным элементом составной карты активности разделов. Эти идентифицированные мозаичные элементы составляют набор мозаичных элементов. Модуль 73 построения мозаичных элементов может идентифицировать такой набор мозаичных элементов для каждого связанного набора активных разделов в составной карте активности разделов.
После того, как модуль 73 построения мозаичных элементов идентифицирует наборы мозаичных элементов, модуль 74 описания мозаичного элемента в модуле 40 идентификации мозаичного элемента может создать информацию описания мозаичного элемента для каждого из идентифицированных наборов мозаичных элементов. Информация описания мозаичного элемента для набора мозаичных элементов может указывать индексное значение мозаичного элемента, уникальное среди идентифицированных наборов мозаичных элементов. Поскольку индексное значение мозаичного элемента уникально среди идентифицированных наборов мозаичных элементов, индексное значение мозаичного элемента из набора мозаичных элементов можно использовать для обращения к информации описания мозаичного элемента из набора мозаичных элементов. Кроме того, информация описания мозаичного элемента для набора мозаичных элементов может указывать форму мозаичных элементов в наборе мозаичных элементов и позицию мозаичных элементов в наборе мозаичных элементов в видеокадрах. Например, информация описания мозаичного элемента из набора совмещенных мозаичных элементов может указывать, что каждый мозаичный элемент в наборе совмещенных мозаичных элементов является прямоугольником и имеет верхний левый угол в пикселе (27, 32) видеокадров и нижний правый угол в пикселе (63, 82) видеокадров. В альтернативном примере, информация описания мозаичного элемента для набора совмещенных мозаичных элементов может представлять собой список идентификаторов разделов видеокадров, которые включен в мозаичные элементы набора совмещенных мозаичных элементов. Кроме того, если мозаичные элементы в наборе мозаичных элементов не совмещены, информация описания мозаичного элемента из набора мозаичных элементов может указывать позиции каждого из мозаичных элементов в наборе мозаичных элементов.
На фиг. 5D показан эффект сглаживания режима на карте 120 активности разделов. Согласно примеру, приведенному на фиг. 5D, карта 120 активности разделов включает в себя первый набор сплошных активных разделов 121 и второй набор сплошных активных разделов 122. Разделы в наборе 121 и наборе 122 могут кодироваться как разделы прямого режим , могут кодироваться как разделы режима DC или могут кодироваться как разделы без пропуска другого типа. Помимо набора 121 и набора 122, карта 120 активности разделов включает в себя два изолированных активных раздела 123.
Карта 124 активности разделов на фиг. 5D это карта активности разделов, которая получается путем применения сглаживания режима к карте 120 активности разделов. Как рассмотрено выше, сглаживание режима может принудительно кодировать изолированные активные разделы как разделы режима пропуска. Назначение изолированных активных разделов разделами режима пропуска может сокращать количество мозаичных элементов и, таким образом, повышать степень сжатия, достигаемую кодером 16. Заметим, что карта 124 активности разделов включает в себя набор 121 и набор 122. Карта 124 активности разделов включает в себя набор 121 и набор 122, поскольку набор 122 и набор 122 достаточно велики для удаления сглаживанием (т.е. перевода в режим пропуска). Однако карта 124 активности разделов не включает в себя изолированные активные разделы 123.
На фиг. 6A и 6B показана иллюстративная операция кодера 16, представленного на фиг. 2. Согласно иллюстративной операции, представленной на фиг. 6A, последовательность некодированных видеокадров сохраняется в буфере 30 кадров (130). Затем, блок 32 оценки движения в кодере 16 может идентифицировать данные движения для разделов видеокадров в последовательности некодированных видеокадров (132). После того, как блок 32 оценки движения идентифицирует данные движения для разделов видеокадров в последовательности некодированных видеокадров, модуль 34 определения режима в кодере 16 может идентифицировать режим раздела для каждого раздела каждого из видеокадров в последовательности видеокадров (134). Кроме того, модуль 34 определения режима может осуществлять операцию сглаживания режима на разделах каждого из видеокадров в последовательности видеокадров (136). Как описано выше в отношении фиг. 5D, сглаживание режима может принудительно кодировать изолированные активные разделы как разделы режима пропуска, таким образом, сокращая потенциальное количество мозаичных элементов, которые, в конце концов, идентифицирует модуль 40 идентификации мозаичного элемента.
Затем модуль 36 карты разделов может генерировать карту активности разделов для каждого видеокадра в последовательности видеокадров (138). Как описано выше, карты активности разделов для видеокадров хранят информацию, которую можно использовать для идентификации наборов мозаичных элементов видеокадров. Затем модуль 40 идентификации мозаичного элемента может использовать эти карты активности разделов для генерации составной карты активности разделов (140). Например, для данных карт активности разделов 32 на фиг. 4, модуль 40 идентификации мозаичного элемента может генерировать составные карты 90, 100 и 110 активности разделов, показанные на фиг. 5A-5C. Затем, модуль 40 идентификации мозаичного элемента может определять, превышает ли процент неактивных разделов в составной карте активности разделов данный порог (140).
Если процент неактивных разделов в составной карте активности разделов не превышает порог ( НЕТ на 142), модуль 40 идентификации мозаичного элемента может идентифицировать набор мозаичных элементов видеокадров, в котором каждый из мозаичных элементов включает в себя все разделы каждого видеокадра в последовательности видеокадров (144). В альтернативной реализации, если процент неактивных разделов в составной карте активности разделов не превышает порог ( НЕТ на 142), кодер 16 может осуществлять традиционное пораздельное кодирование.
С другой стороны, если процент неактивных разделов в составной карте активности разделов больше или равен порогу ( Да на 142), модуль 40 идентификации мозаичного элемента может идентифицировать один или несколько из наборов мозаичных элементов видеокадров последовательности видеокадров (146). Например, модуль 40 идентификации мозаичного элемента может идентифицировать наборы мозаичных элементов в P-кадрах и B-кадрах. Кроме того, в этом примере, модуль 40 идентификации мозаичного элемента может идентифицировать мозаичный элемент в каждом I-кадре, который включает в себя I-кадр целиком. В еще одном примере, модуль 40 идентификации мозаичного элемента может идентифицировать мозаичные элементы в I-кадре, так чтобы одна часть I-кадра могла "ссылаться" на другую часть или мозаичный элемент/фрагмент того же I-кадра. Таким образом, можно идентифицировать небольшое количество опорных мозаичных элементов в I-кадре, а остаток I-кадра можно предсказывать на основании этой ссылки.
После того, как модуль 40 идентификации мозаичного элемента идентифицирует наборы мозаичных элементов (т.е. после 144 или после 148), модуль 40 идентификации мозаичного элемента может генерировать информацию описания мозаичного элемента для каждого из наборов мозаичных элементов (150). Затем модуль 42 извлечения фрагментов может извлекать фрагменты, связанные с идентифицированными мозаичными элементами, из видеокадров (152). Кроме того, модуль 42 извлечения фрагментов может генерировать информацию идентификации изображения для каждого из извлеченных фрагментов (154). Затем модуль извлечения фрагментов 42 может сохранять в буфере 44 фрагментов фрагменты, данные движения, связанные с фрагментами, и информацию идентификации фрагмента (156).
Затем, кодер 16 может осуществлять операцию, проиллюстрированную в примере, приведенном на фиг. 6B. На фиг. 6A, операция, проиллюстрированная в примере, приведенном на фиг. 6B, обозначена B . Осуществив операцию, проиллюстрированную в примере, приведенном на фиг. 6B, кодер 16 может вернуться к началу цикла и сохранить другую последовательность видеокадров в буфере 30 кадров (130).
В соответствии с операцией, проиллюстрированной в примере, приведенном на фиг. 6B, блок 46 компенсации движения в кодере 16 может определять, существует ли необработанное изображение в буфере 44 фрагментов (170). Если блок 46 компенсации движения определяет, что существует необработанный фрагмент в буфере 44 фрагментов ( ДА на 170), блок 46 компенсации движения может определять, подлежит ли необработанный фрагмент в буфере 44 фрагментов (т.е. текущий фрагмент) кодированию в интер-режиме или интра-режиме (171). Если блок 46 компенсации движения определяет, что текущий фрагмент не подлежит кодированию в интер-режиме ( НЕТ на 171), блок 46 компенсации движения может использовать опорные фрагменты в опорном буфере 48, указанные данными движения, связанными с первым необработанным фрагментом в буфере 44 фрагментов (т.е. текущим фрагментом), для идентификации предсказательного фрагмента, связанного с текущим фрагментом (172).
Затем модуль 50 генерации остатка может генерировать остаточный фрагмент путем суммирования отрицательной версии предсказательного фрагмента, связанного с текущим фрагментом, и исходного текущего фрагмента (174). Таким образом, пиксельные значения текущего фрагмента становятся остаточными пиксельными значениями. После того, как модуль 50 генерации остатка преобразует текущий фрагмент, или после того, как блок 46 компенсации движения определяет, что текущий фрагмент подлежит кодированию в интер-режиме ( ДА на 171), блок 52 блочного преобразования может генерировать набор коэффициентов, связанных с текущим фрагментом, путем преобразования остаточного фрагмента, связанного с текущим фрагментом (176). Затем модуль квантования 54 может генерировать набор квантованных коэффициентов, связанных с текущим фрагментом, путем применения операции квантования к набору коэффициентов, связанных с текущим фрагментом (178).
Затем блок 56 энтропийного кодирования может применять операцию энтропийного кодирования для кодирования набора квантованных коэффициентов, связанного с текущим изображением, данных движения, связанных с разделами текущего фрагмента, и информации идентификации изображения, связанной с текущим фрагментом (180). После применения операции энтропийного кодирования, модуль вывода 58 может выводить энтропийно кодированные данные, связанные с текущим фрагментом (182). Когда блок 56 энтропийного кодирования выводит энтропийно кодированные данные, связанные с текущим фрагментом, блок 56 энтропийного кодирования также может выводить информацию описания мозаичного элемента, сгенерированную модулем 40 идентификации мозаичного элемента.
Затем блок 60 обратного квантования может генерировать набор обратно квантованных коэффициентов, связанных с текущим фрагментом, путем осуществления операции обратного квантования на наборе квантованных коэффициентов, связанных с текущим фрагментом (184). Затем, блок 62 обратного преобразования может генерировать декодированный остаточный фрагмент, связанный с текущим фрагментом, путем осуществления операции обратного преобразования на наборе обратно квантованных коэффициентов, связанных с текущим изображением (186).
После того, как модуль обратного преобразования 110 генерирует декодированное остаточное изображение, сумматор 112 может генерировать реконструированный фрагмент, связанный с текущим фрагментом, путем суммирования декодированного остаточного изображения, связанного с текущим фрагментом, с предсказательным изображением, сгенерированным блоком 46 компенсации движения для текущего фрагмента (188). Затем опорный буфер 48 может сохранить реконструированный фрагмент, связанный с текущим фрагментом (190).
После того, как в опорном буфере 48 будет сохранен реконструированный фрагмент, блок 46 компенсации движения может снова определять, существуют ли необработанные фрагменты в буфере 94 фрагментов (170). Если блок 46 компенсации движения определяет, что в буфере 94 фрагментов не существует необработанных фрагментов ( НЕТ на 170), буфер 30 кадров может снова принять последовательность видеокадров (130) (фиг. 6A).
На фиг. 7 показана блок-схема, демонстрирующая иллюстративные детали декодера 18 (фиг. 1). Согласно примеру, приведенному на фиг. 7, декодер 18 включает в себя блок 150 энтропийного декодирования. Когда блок 150 энтропийного декодирования принимает медиа-объект, который включает в себя кодированный набор квантованных коэффициентов, связанный с фрагментом, и данные движения, связанные с разделами текущего фрагмента, блок 150 энтропийного декодирования декодирует набор квантованных коэффициентов, связанных с текущим фрагментом, и соответствующие данные движения путем осуществления операции энтропийного декодирования на кодированных квантованных коэффициентах и данных движения. Затем блок 150 энтропийного декодирования может обеспечивать декодированные квантованные коэффициенты, связанные с текущим фрагментом, на модуль 152 обратного квантования в декодере 18 и может обеспечивать декодированные данные движения, связанные с текущим фрагментом, на блок 154 компенсации движения в декодере 18.
Кроме того, блок 150 энтропийного декодирования может декодировать информацию идентификации фрагмента и информацию описания мозаичного элемента. Например, блок 150 энтропийного декодирования может принимать кодированные сообщения SEI, которые указывают информацию идентификации фрагмента и информацию описания мозаичного элемента. Как рассмотрено выше, информация идентификации фрагмента для изображения может указывать кадр, связанный с фрагментом, и набор мозаичных элементов, связанный с фрагментом. Информация описания мозаичного элемента для мозаичного элемента указывает положение мозаичного элемента. Декодировав информацию идентификации фрагмента и информацию описания мозаичного элемента, блок 150 энтропийного декодирования может сохранить декодированную информацию идентификации фрагмента и декодированную информацию идентификации мозаичного элемента в опорном буфере 158 в декодере 18.
Приняв набор квантованных коэффициентов, связанных с текущим фрагментом, модуль 152 обратного квантования генерирует набор обратно квантованных коэффициентов, связанных с текущим фрагментом, путем осуществления операции обратного квантования на наборе квантованных коэффициентов. Затем модуль 156 обратного преобразования в декодере 18 генерирует остаточный фрагмент, связанный с текущим фрагментом, путем осуществления операции обратного преобразования на обратно квантованных коэффициентах, связанных с текущим фрагментом. Приняв набор данных движения, связанный с текущим фрагментом, блок 154 компенсации движения может извлечь из опорного буфера 158 опорные фрагменты, указанные данными движения в наборе данных движения. Например, блок 154 компенсации движения может извлекать каждый фрагмент в опорном буфере 158, который связан с индексным номером кадра, указанным данными движения, который также связан с индексным значением набора мозаичных элементов текущего фрагмента. Затем блок 154 компенсации движения может использовать извлеченные опорные фрагменты для генерации предсказательного фрагмента, связанного с текущим фрагментом. Блок 154 компенсации движения может генерировать предсказательный фрагмент с использованием, например, вышеописанных методов в отношении блока 46 компенсации движения. После того, как блок 154 компенсации движения генерирует предсказательное изображение, связанное с текущим кадром, и модуль 156 обратного преобразования генерирует остаточное изображение, связанное с текущим кадром, модуль 160 реконструкции фрагмента в декодере 18 генерирует реконструированный фрагмент, связанный с текущим кадром, путем суммирования предсказательного фрагмента и остаточного фрагмента. Хотя декодер 18 в примере, приведенном на фиг. 7, использует сумматор для генерации реконструированного фрагмента, очевидно, что другие типы аппаратных или программных модулей могут осуществлять функции модуля 160 реконструкции фрагмента.
Сгенерировав реконструированный фрагмент, модуль 160 реконструкции фрагмента может определить, можно ли использовать реконструированный фрагмент в качестве опорного фрагмента. Например, в одной схеме, если реконструированный фрагмент закодирован как B-кадр, реконструированный фрагмент может быть не пригоден для использования в качестве опорного фрагмента. Если модуль 160 реконструкции фрагмента определяет, что реконструированный фрагмент можно использовать в качестве опорного фрагмента, модуль 160 реконструкции фрагмента может сохранить реконструированный фрагмент в опорном буфере 158 для последующего использования в качестве опорного фрагмента. Кроме того, если модуль 160 реконструкции фрагмента определяет, что реконструированный фрагмент можно использовать как опорный кадр, модуль 160 реконструкции фрагмента может обеспечивать реконструированный фрагмент на модуль 162 повторной сборки кадров в декодере 18. В противном случае, если модуль 160 реконструкции фрагмента определяет, что реконструированный фрагмент нельзя использовать в качестве опорного кадра, модуль 160 реконструкции фрагмента может обеспечивать реконструированный фрагмент непосредственно на модуль 162 повторной сборки кадров, не сохраняя реконструированный кадр в опорном буфере 158.
Модуль 162 повторной сборки кадров повторно собирает полные видеокадры. Для повторной сборки видеокадров, модуль 162 повторной сборки кадров может принимать реконструированный фрагмент от модуля 160 реконструкции фрагмента. В контексте модуля 162 повторной сборки кадров, самый ранний кадр, который еще не выведен декодером 18, называется текущим кадром . Когда модуль 162 повторной сборки кадров принимает фрагмент (т.е. текущий фрагмент ), связанный с текущим кадром, модуль 162 повторной сборки кадров может использовать информацию идентификации фрагмента, связанную с текущим фрагментом, для идентификации мозаичного элемента, связанного с текущим фрагментом. Затем модуль 162 повторной сборки кадров может использовать информацию описания мозаичного элемента, связанную с идентифицированным мозаичным элементом, для идентификации положения мозаичного элемента. Затем модуль 162 повторной сборки кадров может копировать текущий фрагмент в идентифицированное положение текущего кадра в буфере 164 повторной сборки кадров. Буфер 164 повторной сборки кадров может сохранять один или несколько кадров в различных состояниях повторной сборки.
Как рассмотрено выше, если текущий кадр является I-кадром, может существовать только один фрагмент, связанный с текущим кадром. Кроме того, если текущий кадр является I-кадром, фрагмент, связанный с текущим кадром, может занимать весь кадр. С другой стороны, если текущий кадр является P-кадром или B-кадром, может существовать более одного фрагмента, связанного с текущим кадром. Копирование текущего фрагмента в идентифицированное положение в текущем кадре эффективно обновляет участок текущего кадра в положении, связанном с идентифицированным набором мозаичных элементов. Копирование текущего фрагмента в идентифицированное положение в текущем кадре не изменяет разделы в буфере 164 повторной сборки кадров, которые выходят за пределы идентифицированного мозаичного элемента. Копируя все фрагменты, связанные с кадром, в надлежащие положения кадра, модуль 162 повторной сборки кадров эффективно обновляет кадр для включения всей информации текущего кадра.
Скопировав текущий фрагмент в идентифицированное положение текущего кадра, модуль 162 повторной сборки кадров может определить, все ли фрагменты, связанные с текущим кадром, скопированы в текущий кадр. Если все фрагменты, связанные с текущим кадром, скопированы в текущий кадр, модуль 162 повторной сборки кадров может применять сглаживающий фильтр к пикселям в текущем кадре, где стыкуется два или более фрагментов. Применение сглаживания к этим пикселям может снижать визуальные нарушения непрерывности между пикселями из разных фрагментов. Таким образом, сглаживающий фильтр может эффективно противодействовать тому, чтобы разные фрагменты выглядели как отдельные блоки. После применения сглаживающего фильтра, модуль 162 повторной сборки кадров может выводить текущий кадр. В противном случае, если не все фрагменты, связанные с текущим кадром, скопированы в текущий кадр, модуль 162 повторной сборки кадров может принимать другой реконструированный фрагмент.
Другие реализации декодера 18 могут не включать в себя модуль 162 повторной сборки кадров или буфер 164 повторной сборки кадров. В этих реализациях, постпроцессор 20 может осуществлять операции последующей обработки на фрагментах, хранящихся в опорном буфере 158, но не на полных видеокадрах. Например, постпроцессор 20 может осуществлять операцию устранения блочности на фрагментах. Кроме того, в этих реализациях, постпроцессор 20 может повторно собирать фрагменты в полные видеокадры. Например, постпроцессор 20 может использовать фрагменты для осуществления преобразования повышения частоты кадров. При преобразовании повышения частоты кадров, постпроцессор 20 может добавлять один или несколько кадров между каждыми двумя последовательными существующими кадрами в последовательности кадров, тем самым увеличивая частоту кадров последовательности кадров. Для добавления кадра между двумя или более существующими кадрами, постпроцессор 20 может осуществлять компенсацию движения для мозаичных элементов в кадрах между существующими кадрами на основе фрагментов. Например, постпроцессор 20 может использовать векторы движения разделов во фрагменте кадра, который следует за генерируемым кадром, (т.е. следующего кадра) для идентификации позиций, которые разделы будут иметь во фрагменте генерируемого кадра (т.е. текущего кадра). Фрагмент текущего кадра может получаться из осуществления такой компенсации движения для всех разделов фрагмента следующего кадра. Затем постпроцессор 20 может закончить текущий кадр путем добавления фрагментов в кадр, предшествующий текущему кадру (т.е. предыдущий кадр). Кроме того, очевидно, что в некоторых обстоятельствах, этот метод преобразования повышения частоты кадров можно практически осуществлять в контексте традиционных способов кодирования и декодирования. В этих обстоятельствах, постпроцессор 20 может принимать полные декодированные видеокадры от декодера, идентифицировать мозаичные элементы в видеокадрах, извлекать фрагменты на основании мозаичных элементов и затем осуществлять операцию повышения частоты кадров на фрагментах для генерации дополнительных кадров в последовательности кадров. Кроме того, модуль 22 заполнения буфера также может повторно собирать фрагменты в видеокадры. Ниже подробно описана, со ссылкой на фиг. 13, иллюстративная операция, которую модуль 22 заполнения буфера может использовать для повторной сборки фрагментов в полные видеокадры.
На фиг. 8A и 8B показаны логические блок-схемы иллюстративных операций модулей в декодере 18 (фиг. 7). Первоначально, в иллюстративной операции, представленной на фиг. 8A, блок 150 энтропийного декодирования может принимать медиа-объект, который включает в себя кодированный набор квантованных коэффициентов, связанных с текущим фрагментом, кодированный набор данных движения, связанных с разделами текущего фрагмента, информацию идентификации фрагмента и информацию описания мозаичного элемента (180). Приняв кодированный набор квантованных коэффициентов и кодированный набор данных движения, блок 150 энтропийного декодирования может декодировать кодированный набор квантованных коэффициентов, кодированный набор данных движения, информацию идентификации фрагмента и информацию описания мозаичного элемента (182).
Затем модуль 152 обратного квантования может осуществлять операцию обратного квантования на декодированном наборе квантованных коэффициентов, связанных с текущим фрагментом (184). Осуществление операции обратного квантования на декодированном наборе квантованных коэффициентов дает обратно квантованный набор коэффициентов, связанных с текущим фрагментом. Затем модуль 156 обратного преобразования может осуществлять операцию обратного преобразования на обратно квантованном наборе коэффициентов, связанных с текущим фрагментом (186). Осуществление операции обратного преобразования на обратно квантованном наборе коэффициентов дает остаточное изображение, связанное с текущим фрагментом.
После того, как модуль 156 обратного преобразования осуществляет операцию обратного преобразования или в то время как модуль 152 обратного квантования осуществляет операцию обратного квантования, или в то время как модуль 156 обратного преобразования осуществляет операцию обратного преобразования, блок 154 компенсации движения использует декодированный набор данных движения для идентификации предсказательного фрагмента, связанного с текущим фрагментом (188). Затем модуль 160 реконструкции фрагмента генерирует реконструированный фрагмент, связанный с текущим фрагментом, путем суммирования предсказательного изображения, связанного с текущим фрагментом, и остаточного изображения, связанного с текущим фрагментом (190). Сгенерировав реконструированный фрагмент, модуль 160 реконструкции фрагмента может определить, можно ли использовать реконструированный фрагмент в качестве опорного фрагмента (191). Если модуль 160 реконструкции фрагмента определяет, что реконструированный фрагмент можно использовать в качестве опорного фрагмента ( ДА на 191), модуль 160 реконструкции фрагмента может сохранить реконструированный фрагмент в опорном буфере 158 (192). Сохранив реконструированный фрагмент в опорном буфере 158, модуль 160 реконструкции фрагмента может обеспечить реконструированный фрагмент на модуль 162 повторной сборки кадров (194). С другой стороны, если модуль 160 реконструкции фрагмента определяет, что реконструированный фрагмент нельзя использовать в качестве опорного фрагмента ( НЕТ на 191), модуль 160 реконструкции фрагмента может обеспечить реконструированный фрагмент непосредственно на модуль 162 повторной сборки кадров (194). После того, как модуль 160 реконструкции фрагмента обеспечит реконструированный фрагмент на модуль 162 повторной сборки кадров, блок 150 энтропийного декодирования может декодировать другой кодированный набор квантованных коэффициентов или другой кодированный набор данных движения (182).
На фиг. 8B показана логическая блок-схема, демонстрирующая иллюстративную операцию модуля 162 повторной сборки кадров. Первоначально, модуль 162 повторной сборки кадров принимает от модуля 160 реконструкции фрагмента фрагмент, связанный с текущим кадром (200). В целях объяснения, этот принятый фрагмент именуется здесь текущим фрагментом . Приняв текущий фрагмент, модуль 162 повторной сборки кадров идентифицирует мозаичный элемент, связанный с текущим фрагментом (202). После идентификации мозаичного элемента, связанного с текущим фрагментом, модуль 162 повторной сборки кадров сохраняет текущий фрагмент в положении в текущем кадре, связанном с идентифицированным мозаичным элементом (204). Сохранение текущего фрагмента в положении в текущем кадре может эффективно вставлять текущий фрагмент в текущий кадр.
Когда модуль 162 повторной сборки кадров сохраняет текущий фрагмент в положении в текущем кадре, связанном с идентифицированным набором мозаичных элементов, модуль 162 повторной сборки кадров может определить, все ли фрагменты, связанные с текущим кадром, скопированы в текущий кадр (206). Если все фрагменты, связанные с текущим кадром, скопированы в текущий кадр ( ДА на 206), буфер 164 повторной сборки кадров может выводить текущий кадр (208). После вывода текущего кадра, модуль 162 повторной сборки кадров может возвращаться к началу цикла и снова принимать фрагмент текущего кадра (200). В противном случае, если не каждый фрагмент, связанный с текущим кадром, был скопирован в текущий кадр ( НЕТ на 206), модуль 162 повторной сборки кадров может вернуться к началу цикла и принять другой фрагмент (200).
На фиг. 9 показана блок-схема, демонстрирующая иллюстративные детали препроцессора 10 (фиг. 1). В примере, приведенном на фиг. 9, препроцессор 10 включает в себя входной буфер 220 кадров. Входной буфер 220 кадров может принимать и сохранять одну или несколько некодированных последовательностей видеокадров. Кроме того, препроцессор 10 может включать в себя модуль 221 оценки движения с дечередованием ( DIMEM ). DIMEM 221 можно использовать как часть процесса для дечередования чередованных видеокадров. Например, четные кадры могут включать в себя видеоданные для четных строк, и нечетные кадры могут включать в себя видеоданные для нечетных строк. В этом примере, DIMEM 221 может осуществлять операцию оценки движения с дечередованием для дечередованного четного кадра путем осуществления следующих этапов для каждого блока в нечетном чередованном кадре, который следует за текущим четным кадром:
(1) поиск области предыдущего нечетного чередованного кадра вкруг блока в предыдущем нечетном чередованном кадре, который находится в текущем блоке для блока, который аппроксимирует текущий блок;
(2) если такой блок найден, генерацию вектора движения, который указывает смещение между идентифицированным блоком и текущим блоком.
Аналогично, в этом примере, DIMEM 221 может осуществлять операцию оценки движения с дечередованием для дечередованного нечетного кадра путем осуществления следующих этапов для каждого блока в четном кадре, который следует за текущим нечетным кадром:
(1) поиск области предыдущего четного кадра вкруг блока в предыдущем четном кадре, который находится в текущем блоке для блока, который аппроксимирует текущий блок;
(2) если такой блок найден, генерацию вектора движения, который указывает смещение между идентифицированным блоком и текущим блоком.
Модуль 222 идентификации мозаичного элемента в препроцессоре 10 может использовать векторы движения, сгенерированные DIMEM 221 для идентификации наборов мозаичных элементов для видеокадров в последовательности видеокадров, хранящейся во входном буфере 220 кадров. Аналогично модулю 190 идентификации мозаичного элемента, модуль 222 идентификации мозаичного элемента может использовать различные методы для идентификации наборов мозаичных элементов для видеокадров в последовательности видеокадров. Например, модуль 222 идентификации мозаичного элемента может генерировать карту активности разделов для каждого видеокадра в последовательности видеокадров. В этом примере, модуль 222 идентификации мозаичного элемента может затем использовать карты активности разделов для генерации составной карты активности разделов. Затем модуль 222 идентификации мозаичного элемента может использовать составную карту активности разделов для идентификации одного или нескольких наборов мозаичных элементов для каждого из видеокадров, которые подлежат кодированию как p-кадр или b-кадр. Модуль 222 идентификации мозаичного элемента может использовать составную карту активности разделов для идентификации одного или нескольких наборов мозаичных элементов наподобие того, как это делает модуль 190 идентификации мозаичного элемента. Когда модуль 222 идентификации мозаичного элемента идентифицирует набор мозаичных элементов, модуль 222 идентификации мозаичного элемента может генерировать информацию описания мозаичного элемента для набора мозаичных элементов. Информация описания мозаичного элемента может указывать индексное значение набора мозаичных элементов, положение набора мозаичных элементов в кадрах и форму мозаичных элементов.
После того, как модуль 222 идентификации мозаичного элемента идентифицирует наборы мозаичных элементов для кадров и генерирует соответствующую информацию описания мозаичного элемента, модуль 224 извлечения фрагментов в препроцессоре 10 может извлекать, из каждого кадра, фрагменты, связанные с идентифицированными мозаичными элементами. Когда модуль 224 извлечения фрагментов извлекает фрагмент, связанный с мозаичным элементом в одном из идентифицированных наборов мозаичных элементов, модуль 224 извлечения фрагментов может генерировать информацию идентификации фрагмента для фрагмента. Информация идентификации фрагмента для фрагмента может указывать номер кадра, из которого был извлечен фрагмент, и индексное значение набора мозаичных элементов, связанное с набором мозаичных элементов, членом которого является мозаичный элемент, связанный с фрагментом. Затем модуль 224 извлечения фрагментов может сохранять извлеченные фрагменты и информацию идентификации мозаичного элемента в буфере 226 фрагментов.
После того, как модуль 224 извлечения фрагментов сохраняет извлеченные фрагменты в буфере 226 фрагментов, ряд модулей операции предварительной обработки 228A-228N (совместно, модули операции предварительной обработки 228 ) может осуществлять операции предварительной обработки видео на извлеченных фрагментах. Например, модуль 228A операции предварительной обработки может осуществлять операцию регулировки контрастности, модуль 228B операции предварительной обработки может осуществлять операцию шумоподавления, и другие модули 228 операции предварительной обработки могут осуществлять другие операции предварительной обработки видео. После того, как последний из модулей 228 операции предварительной обработки осуществит последнюю операцию предварительной обработки видео на фрагменте, этот последний из модулей 228 операции предварительной обработки может сохранить результирующий фрагмент в буфере 230 предварительно обработанных фрагментов совместно с информацией идентификации фрагмента, связанной с результирующим фрагментом.
После того, как последний из модулей 228 операции предварительной обработки сохраняет результирующий фрагмент в буфере 230 предварительно обработанных фрагментов, модуль компенсации движения с дечередованием (DIMCM) 229 может осуществлять операции по дечередованию фрагментов. Например, если результирующий фрагмент связан с четным кадром, DIMCM 229 может осуществлять следующие этапы на каждом разделе фрагмента для генерации дечередованного фрагмента, связанного с четным кадром:
(1) использование вектора движения текущего раздела для идентификации раздела фрагмента, хранящегося в буфере 230 предварительно обработанных фрагментов;
(2) определение средней точки вдоль вектора движения текущего раздела;
(3) добавление раздела, идентифицированного вектором движения текущего раздела, к текущему четному фрагменту в позиции на нечетной строке, ближайшей к идентифицированной средней точке; и
(4) если текущий раздел не имеет векторов движения, копирование текущего раздела в нечетную строку текущего четного кадра в текущей позиции текущего раздела.
Аналогично, если результирующий фрагмент связан с нечетным кадром, DIMCM 229 может осуществлять следующие этапы на каждом разделе фрагмента для генерации дечередованного фрагмента, связанного с нечетным кадром:
(1) использование вектора движения текущего раздела для идентификации раздела фрагмента, хранящегося в буфере 230 предварительно обработанных фрагментов;
(2) определение средней точки вдоль вектора движения, связанный с текущим разделом;
(3) добавление раздела, указанного вектором движения, связанным с текущим разделом, к текущему нечетному кадру в средней точке в позиции на четной строке, ближайшей к идентифицированной средней точке; и
(4) если текущий раздел не имеет векторов движения, копирование текущего раздела в четную строку текущего фрагмента в текущей позиции текущего фрагмента.
Очевидно, что возможны разнообразные варианты этих этапов. В конце этого процесса, DIMCM 229 генерирует набор дечередованных фрагментов.
Согласно примеру, приведенному на фиг. 9, препроцессор 10 также может включать в себя модуль 232 повторной сборки кадров. Модуль 232 повторной сборки кадров повторно собирает дечередованные фрагменты в буфере 230 предварительно обработанных изображений в полные дечередованные видеокадры. Модуль 232 повторной сборки кадров может повторно собирать фрагменты в буфере 230 предварительно обработанных изображений с использованием операции, которая идентична или аналогична иллюстративной операции модуля 162 повторной сборки кадров, показанного на фиг. 8B. После того, как модуль 232 повторной сборки кадров повторно собирает дечередованные фрагменты в буфере 230 предварительно обработанных изображений в полные дечередованные видеокадры/срезы, модуль 232 повторной сборки кадров может выводить полные дечередованные видеокадры/срезы на кодер 16.
В некоторых реализациях, препроцессор 10 не включает в себя модуль 232 повторной сборки кадров. Напротив, когда DIMCM 229 генерирует дечередованный фрагмент, DIMCM 229 может выводить результирующий фрагмент и соответствующую информацию идентификации фрагмента и информацию идентификации мозаичного элемента непосредственно на кодер 16. Кроме того, в этих реализациях, кодер 16 может не включать в себя модуль 36 карты разделов, буфер 38 карты, модуль 40 идентификации мозаичного элемента или модуль 42 извлечения фрагментов. В этих реализациях, кодер 16 может действовать как традиционный кодер, кодируя каждый фрагмент, обеспеченный препроцессором 10, как отдельный традиционный видеокадр. Однако, в этих реализациях, когда модуль вывода 58 выводит кодированные данные, связанные с одним из фрагментов, модуль вывода 58 может выводить информацию идентификации фрагмента, сгенерированную препроцессором 10 для одного из фрагментов. Кроме того, модуль вывода 58 может выводить информацию описания мозаичного элемента, сгенерированную препроцессором 10.
На фиг. 10 показана логическая блок-схема, демонстрирующая иллюстративную операцию препроцессора 10 (фиг. 9). Первоначально, препроцессор 10 принимает последовательность видеокадров (250). Когда препроцессор 10 принимает последовательность чередованных видеокадров, препроцессор 10 может сохранять последовательность чередованных видеокадров во входном буфере 220 кадров (252). Затем, DIMEM 221 может осуществлять операцию оценки движения с дечередованием (253). Когда DIMEM 221 осуществляет операцию оценки движения с дечередованием, DIMEM 221 может генерировать векторы движения. Модуль 222 идентификации мозаичного элемента может использовать векторы движения для идентификации наборов мозаичных элементов для видеокадров в последовательности видеокадров (254). После того, как модуль 222 идентификации мозаичного элемента идентифицирует наборы мозаичных элементов для последовательности видеокадров, модуль 222 идентификации мозаичного элемента может генерировать информацию описания мозаичного элемента для каждого из наборов мозаичных элементов (255).
Затем, модуль 224 извлечения фрагментов может извлекать, из каждого видеокадра в последовательности видеокадров, фрагменты связанные с идентифицированными мозаичными элементами (256). После извлечения фрагментов, модуль 224 извлечения фрагментов может генерировать информацию идентификации фрагмента для каждого из извлеченных фрагментов (258). Затем модуль 224 извлечения фрагментов может сохранять извлеченные фрагменты в буфере 226 фрагментов (260).
После того, как модуль 224 извлечения фрагментов сохраняет извлеченные фрагменты в буфере 226 фрагментов, модули 228 операции предварительной обработки осуществляют одну или несколько операций предварительной обработки на фрагментах (262). Затем, по меньшей мере, один из модулей 228 операции предварительной обработки может сохранять результирующие предварительно обработанные фрагменты в буфере 230 предварительно обработанных фрагментов (263). Затем, DIMCM 229 может осуществлять операцию компенсации движения с дечередованием для мозаичных элементов текущего видеокадра на основании опорных фрагментов, хранящихся в буфере 230 предварительно обработанных фрагментов (264). В результате операции компенсации движения с дечередованием, фрагменты, созданные DIMCM 229, подвергаются дечередованию. Затем модуль 232 повторной сборки кадров может повторно собирать дечередованные предварительно обработанные фрагменты в буфере 230 предварительно обработанных изображений в полные видеокадры/срезы (266). Очевидно, что в некоторых реализациях этап 266 можно опустить.
На фиг. 11 показана блок-схема, демонстрирующая альтернативный набор иллюстративных деталей декодера 18 (фиг. 1). В примере, приведенном на фиг. 11, декодер 18 принимает медиа-объект, который включает в себя полные видеокадры. Например, декодер 18 может принимать медиа-поток или медиа-файл, который включает в себя традиционно кодированные данные H.264/AVC, MPEG-4, или иной стандарт кодирования медиа. Поскольку иллюстративные детали кодера 16, показанного на фиг. 2, выводит медиа-объекты, которые включают в себя фрагменты видеокадров, иллюстративные детали декодера 18, показанного на фиг. 11, могут быть не совместимы с иллюстративными деталями кодера 16, показанного на фиг. 2.
В примере, приведенном на фиг. 11, когда декодер 18 принимает медиа-объект, блок 150 энтропийного декодирования может осуществлять одну или несколько операций для идентификации участков медиа-объекта, которые связаны с одним или несколькими из наборов мозаичных элементов видеокадров, кодированных в медиа-объекте. После идентификации этих участков медиа-объекта, блок 150 энтропийного декодирования может декодировать идентифицированные участки медиа-объекта. Таким образом, блок 150 энтропийного декодирования может декодировать наборы фрагментов и данные движения, связанные с фрагментами, оставляя оставшиеся участки видеокадров и данные движения кодированными.
В зависимости от формата кодирования принятого медиа-объекта и, возможно, других факторов, блок 150 энтропийного декодирования может осуществлять эти операции по-разному. Например, медиа-объект может включать в себя кодированные заголовки последовательностей, которые указывают общую информацию о медиа-объекте (например, частоту кадров, размеры кадров и т.д.). Кроме того, в этом примере, медиа-объект может включать в себя кодированные заголовки срезов, которые указывают информацию о конкретных срезах видеоданных (например, положение срезов, количество разделов в срезе и т.д.). Медиа-объект также может включать в себя кодированные заголовки разделов, которые указывают информацию о конкретных разделах (например, данные движения, количество битов данных в кодированном наборе квантованных коэффициентов, связанных с разделом, и т.д.). Согласно примеру, приведенному на фиг. 11, блок 150 энтропийного декодирования может включать в себя модуль 280 декодирования заголовка последовательности. Модуль 280 декодирования заголовка последовательности осуществляет операцию энтропийного декодирования на заголовках последовательностей в медиа-объекте. Затем модуль 284 декодирования заголовка среза использует один или несколько из декодированных заголовков последовательностей для идентификации частей медиа-объекта, которые представляют кодированные заголовки срезов. После идентификации частей медиа-объекта, которые представляют кодированные заголовки срезов, модуль 284 декодирования заголовка среза осуществляет операцию энтропийного декодирования на кодированных заголовках срезов входного медиа-объекта. Модуль 286 декодирования заголовка раздела использует декодированные заголовки срезов для идентификации частей медиа-объекта, которые представляют кодированные заголовки разделов. После идентификации частей медиа-объекта, которые представляют кодированные заголовки разделов, модуль 286 декодирования заголовка раздела осуществляет операцию энтропийного декодирования на кодированных заголовках разделов входного медиапотока.
Продолжая пример предыдущего абзаца, модуль 288 идентификации мозаичного элемента в блоке 150 энтропийного декодирования может затем использовать декодированные заголовки разделов для идентификации кодированных разделов кодированных видеокадров, которые связаны с мозаичными элементами. Например, модуль 288 идентификации мозаичного элемента может использовать данные движения, указанные в заголовках разделов, для генерации карт активности разделов для видеокадров в последовательности видеокадров в медиа-объекте. Затем модуль 288 идентификации мозаичного элемента может использовать карты активности разделов для генерации составной карты активности разделов. Затем модуль 288 идентификации мозаичного элемента может, подобно описанному выше в отношении модулей 90 идентификации мозаичного элемента и модуля 222 идентификации мозаичного элемента, использовать составную карту активности разделов для идентификации одного или нескольких наборов мозаичных элементов видеокадров в последовательности видеокадров, которые подлежат декодированию, как P-кадры или B-кадры. Идентифицировав набор мозаичных элементов, модуль 288 идентификации мозаичного элемента может генерировать информацию описания мозаичного элемента для набора мозаичных элементов. Подобно вышеописанной информации описания мозаичного элемента, информация описания мозаичного элемента, сгенерированная модулем 288 идентификации мозаичного элемента, может указывать индексное значение набора мозаичных элементов, положения мозаичных элементов и т.д.
Когда модуль 288 идентификации мозаичного элемента идентифицирует один или несколько наборов мозаичных элементов, модуль 290 декодирования данных раздела может, для каждого кадра, применять операцию энтропийного декодирования к каждому кодированному разделу, который находится в мозаичном элементе одного из идентифицированных наборов мозаичных элементов. В этом примере, модуль 290 декодирования данных раздела не применяет операцию энтропийного декодирования к кодированным разделам, которые не находятся в мозаичных элементах. Таким образом, модуль 290 декодирования данных раздела декодирует набор квантованных коэффициентов для каждого мозаичного элемента в каждом кадре. Поскольку фрагмент означает изображение, содержащееся в мозаичном элементе, модуль 290 декодирования данных раздела, в сущности, декодирует наборы квантованных коэффициентов, которые связаны с разными фрагментами. Декодировав набор квантованных коэффициентов, связанный с фрагментом, модуль 290 декодирования данных раздела генерирует набор информации идентификации фрагмента для фрагмента. Подобно вышеописанной информации идентификации фрагмента, информация идентификации фрагмента, сгенерированная модулем 290 декодирования данных раздела, может указывать индексное значение кадра, которое указывает, что фрагмент был извлечен из указанного кадра, и индексное значение набора мозаичных элементов, которое указывает, что фрагмент означает изображение, содержащееся в мозаичном элементе, в конкретном наборе мозаичных элементов.
В примере, приведенном на фиг. 11, модуль 292 обратного квантования может генерировать набор обратно квантованных коэффициентов путем осуществления операции обратного квантования на наборе квантованных коэффициентов, связанном с текущим фрагментом. Затем модуль 294 обратного преобразования может генерировать декодированное остаточное изображение, связанное с текущим фрагментом, путем осуществления операции обратного преобразования на наборе обратно квантованных коэффициентов, связанных с текущим фрагментом. Кроме того, блок 296 компенсации движения может генерировать предсказательный фрагмент, связанный с текущим фрагментом, с использованием опорного фрагмента в опорном буфере 298, и данные движения, связанные с текущим фрагментом. После блок 296 компенсации движения сгенерирует предсказательный фрагмент, связанный с текущим фрагментом, и модуль 294 обратного преобразования сгенерирует декодированный остаточный фрагмент, связанный с текущим фрагментом, модуль 300 реконструкции фрагмента может генерировать реконструированный фрагмент, связанный с текущим фрагментом, путем суммирования предсказательного фрагмента и декодированного остаточного фрагмента. Затем модуль 300 реконструкции фрагмента может сохранять реконструированный фрагмент в опорном буфере 298.
Хотя это не показано в примере, приведенном на фиг. 11, декодер 18 может включать в себя модуль реконструкции кадров, который реконструирует полные кадры из фрагментов, хранящихся в опорном буфере 298. Этот модуль реконструкции кадров может использовать иллюстративную операцию, представленную на фиг. 8B, для реконструкции полных кадров из фрагментов, хранящихся в опорном буфере 298.
На фиг. 12 показана логическая блок-схема иллюстративной операции альтернативной реализации декодера 18, показанного на фиг. 11. Первоначально, блок 150 энтропийного декодирования принимает медиа-объект, который включает в себя кодированные последовательности видеокадров (310). Затем, модуль 280 декодирования заголовка последовательности в блоке 150 энтропийного декодирования осуществляет операцию энтропийного декодирования на заголовках последовательностей в медиа-объекте (312). Затем, модуль 284 декодирования заголовка среза может использовать декодированные заголовки разделов для идентификации положений заголовков срезов в медиа-объекте (314). Затем модуль 284 декодирования заголовка среза может декодировать идентифицированные заголовки срезов (316). Затем модуль 286 декодирования заголовка раздела может использовать декодированные заголовки срезов для идентификации положений заголовков разделов в медиа-объекте (318). Затем модуль 286 декодирования заголовка раздела может декодировать идентифицированные заголовки разделов (320).
После того, как модуль 286 декодирования заголовка раздела декодирует идентифицированные заголовки разделов, модуль 288 идентификации мозаичного элемента использует декодированные заголовки разделов для идентификации наборов мозаичных элементов для видеокадров в последовательностях видеокадров (322). Как рассмотрено выше, модуль 288 идентификации мозаичного элемента может использовать различные методы для идентификации наборов мозаичных элементов для видеокадров из последовательности видеокадров. В альтернативной реализации, модуль 288 идентификации мозаичного элемента может принимать данные, которые указывают наборы мозаичных элементов, отдельные от медиа-объекта. Модуль 288 идентификации мозаичного элемента может использовать эти данные для идентификации наборов мозаичных элементов для видеокадров в последовательностях видеокадров. Идентифицировав наборы мозаичных элементов, модуль 288 идентификации мозаичного элемента может генерировать информацию описания мозаичного элемента для каждого из идентифицированных наборов мозаичных элементов (324).
Затем модуль 290 декодирования данных раздела декодирует те кодированные версии разделов, которые находятся в идентифицированных мозаичных элементах (326). В результате декодирования кодированной версии разделов, модуль 290 декодирования данных раздела сгенерировал наборы квантованных коэффициентов, связанных с разными фрагментами. Декодировав кодированные версии разделов, модуль 290 декодирования данных раздела может вывести декодированные данные раздела, данные движения, информацию идентификации изображения ( PII ) и информацию описания мозаичного элемента ( TDI ) (330).
На фиг. 13 показана логическая блок-схема иллюстративной операции модуля 22 заполнения буфера (фиг. 1) для сохранения фрагментов в буферах отображения 24. При осуществлении этой операции, модуль 22 заполнения буфера эффективно действует как модуль повторной сборки кадров.
В соответствии с иллюстративной операцией, представленной на фиг. 13, буферы отображения 24 включают в себя три буфера: B0, B1 и B2 . Использование этих трех буферов позволяет модулю 22 заполнения буфера реконструировать полные кадры в буферах отображения B0, B1 и B2 . Таким образом, когда модуль 22 заполнения буфера использует иллюстративную операцию, представленную на фиг. 13, модулю декодирования 18 не обязательно включать в себя или использовать модуль 162 реконструкции кадров.
Первоначально, модуль 22 заполнения буфера извлекает из буфера фрагментов набор фрагментов, связанный с кадром FX (350). После извлечения набора фрагментов, связанного с кадром FX, модуль 22 заполнения буфера определяет, является ли кадр F X первым кадром последовательности видеокадров (352).
Если модуль 22 заполнения буфера определяет, что кадр FX является первым кадром последовательности видеокадров ( ДА на 352), модуль 22 заполнения буфера записывает каждый из фрагментов, связанных с кадром FX, в буфер B(X mod 3) (354). Для записи каждого из фрагментов, связанных с кадром FX, в надлежащие положения в буфере B(X mod 3), модуль 22 заполнения буфера может использовать информацию идентификации фрагмента, связанную с фрагментами для идентификации информации описания мозаичного элемента, связанной с фрагментами. Затем модуль 22 заполнения буфера может использовать положения, указанные в информации описания мозаичного элемента для идентификации надлежащих положений в буфере B(X mod 3).
Затем модуль 22 заполнения буфера копирует содержимое буфера B (X mod 3) в буфер B((X+1) mod 3) (356). После того, как модуль 22 заполнения буфера скопирует содержимое буфера B(X mod 3) в буфер B((X+1) mod 3), блок отображения 26 может отображать содержимое буфера B((X+2) mod 3) (358). После того, как блок отображения 26 отобразит содержимое буфера B ((X+2) mod 3), модуль 22 заполнения буфера может увеличить значение X (360). Модуль 22 заполнения буфера может возвращаться к началу цикла и извлекать фрагменты, связанные с кадром F X (350). Поскольку модуль 22 заполнения буфера увеличил X, модуль 22 заполнения буфера извлекает фрагменты, связанные с кадром, который следует за кадром, который модуль 22 заполнения буфера ранее добавил в буферы отображения 24.
С другой стороны, если модуль 22 заполнения буфера определяет, что кадр FX не является первым кадром последовательности видеокадров ( НЕТ на 352), модуль 22 заполнения буфера записывает каждый из фрагментов, связанных с кадром FX, в надлежащие положения в буфере B(X mod 2) (362). После того, как модуль 22 заполнения буфера записывает каждый из фрагментов, связанных с кадром FX, в надлежащие положения в буфере B(X mod 2), блок отображения 26 может отображать содержимое буфера B((X+1) mod 2) (364). После того, как блок отображения 26 отобразит содержимое буфера B((X+1) mod 2), модуль 22 заполнения буфера может увеличить значение X (360). Модуль 22 заполнения буфера может возвращаться к началу цикли извлекать изображения связанные с кадром FX (350).
Заметим, что, хотя это раскрытие поясняет фиг. 13 со ссылкой на три буфера, операции могут осуществляться с большим количеством буферов.
Описанные здесь методы можно реализовать в оборудовании, программном обеспечении, программно-аппаратном обеспечении или любой их комбинации. Любые признаки, описанные как модули или компоненты, можно реализовать совместно в интегрированном логическом устройстве или по отдельности как разные, но взаимосвязанные логические устройства. В случае программной реализации, методы можно реализовать, по меньшей мере, отчасти, в виде компьютерно-считываемого носителя, содержащего инструкции, которые, при выполнении, осуществляет один или несколько из вышеописанных способов. Компьютерно-считываемый носитель данных может составлять часть компьютерного программного продукта, который может включать в себя упаковочные материалы. Компьютерно-считываемый носитель может содержать оперативную память (ОЗУ), например синхронную динамическую оперативную память (SDRAM), постоянную память (ПЗУ), энергонезависимую оперативную память (NVRAM), электрически стираемую программируемую постоянную память (ЭСППЗУ), флэш-память, магнитные или оптические носители данных и пр. Методы, дополнительно или альтернативно, можно реализовать, по меньшей мере, отчасти, в виде компьютрено-считываемой среды связи, которая переносит или передает код в форме инструкций или структур данных, допускающие доступ, чтение и/или выполнение со стороны компьютера.
Код может выполняться одним или несколькими процессорами, например, одним или несколькими цифровыми сигнальными процессорами (DSP), микропроцессорами общего назначения, специализированными интегральными схемами (ASIC), логическими матрицами, программируемыми пользователем (FPGA), или другими эквивалентными интегральными ли дискретными логическими схемами. Соответственно, используемый здесь термин процессор может относиться к любой вышеупомянутой структуре или любой другой структуре, пригодной для реализации описанных здесь методов. Кроме того, в некоторых аспектах, описанные здесь функции можно обеспечить в специализированных программных модулях или аппаратных модулях, приспособленных для кодирования и декодирования, или входящих в состав объединенного видеокодера-декодера (кодека).
Выше описаны различные иллюстративные реализации. Например, реализации были описаны в отношении видеокадров. Однако вышеприведенное описание и нижеследующая формула изобретения также применимы к срезам видео или набору последовательных изображений в виде фотоаппарата с произвольной частотой съемки. Кроме того, методы кодирования и декодирования последовательностей видеокадров с использованием фрагментарных опорных изображений были, в основном, описаны применительно к методам кодирования с компенсацией движения. Однако описанное здесь использование фрагментарных опорных изображений также можно использовать в других контекстах обработки или кодирования, например, масштабирования, усиления контуров и т.п. Соответственно, блоки, модули, или схемы, описанные здесь как осуществляющие компенсацию движения для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов, могут, альтернативно, быть блоками, модулями или схемами, которые осуществляют масштабирование или усиление контуров (или, возможно, другой метод обработки видео) для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов. Эти и другие реализации входят в объем нижеследующей формулы изобретения.
Класс H04N7/50 включающие преобразование и прогнозное кодирование