ОГРАНИЧЕННЫЙ ГЛОБАЛЬНЫМ ДВИЖЕНИЕМ ВЕКТОР ДВИЖЕНИЯ ПРИ МЕЖКАДРОВОМ ПРОГНОЗИРОВАНИИ Российский патент 2023 года по МПК H04N19/513 

Описание патента на изобретение RU2806442C2

Перекрестные ссылки на родственные заявки

Настоящая заявка претендует на преимущества от приоритета предварительной заявки на выдачу патента США No. 63/838,563, которая подана 25 апреля 2019 г. под названием «ОГРАНИЧЕННЫЙ ГЛОБАЛЬНЫМ ДВИЖЕНИЕМ ВЕКТОР ДВИЖЕНИЯ ПРИ МЕЖКАДРОВОМ ПРОГНОЗИРОВАНИИ» (“Global Motion Constrained Motion Vector in Inter Prediction”), и которая включена сюда посредством ссылки во всей своей полноте.

Область техники, к которой относится изобретение

Настоящее изобретение, в общем, относится к области сжатия видео. В частности, настоящее изобретение направлено на ограниченный глобальным движением вектор движения при межкадровом прогнозировании.

Уровень техники

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

Формат сжатых данных может соответствовать стандартным спецификациям сжатия видео. Сжатие может происходить с потерями в том смысле, что в сжатом видео отсутствует некоторая информация, присутствующая в исходном видео. Следствием этого может быть то, что расширенное видео после декомпрессии может иметь более низкое качество по сравнению с исходным несжатым видео, поскольку здесь будет недостаточно информации для точной реконструкции исходного видео.

Соотношения между качеством видео, объемом данных, используемых для представления этого видео, (например, определяемым скоростью передачи битов данных), сложностью алгоритмов кодирования и декодирования, чувствительностью к потерям данных и ошибкам, легкостью редактирования, произвольным доступом, сквозной задержкой (например, временем ожидания) и другими подобными факторами могут быть очень сложными.

Процедура компенсации движения может представлять собой способ прогнозирования кадра видео или части этого кадра с использованием опорного кадра, такого как предшествующий и/или будущий кадры, с учетом движения видеокамеры и/или объектов на видео. Это может быть использовано при кодировании и декодировании данных видео для сжатия видео, например, при кодировании и декодировании с использованием разработанного Группой экспертов по кинематографии (Motion Picture Experts Group (MPEG)) стандарта MPEG-2 (также называется усовершенствованным видео кодированием (advanced video coding (AVC)) и H.264). Процедура компенсации движения может описывать изображение в терминах преобразования опорного изображения в текущее изображение. Опорное изображение может быть предшествующим во времени при сравнении с текущим изображением, или может быть взято из будущего по сравнению с текущим изображением. Когда есть возможность точно синтезировать изображение из ранее переданных или сохраненных изображений, можно повысить эффективность сжатия.

Раскрытие сущности изобретения

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

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

Подробности одного или более вариантов описываемого здесь предмета настоящего изобретения приведены на прилагаемых чертежах и в описании ниже. Другие признаки и преимущества предмета настоящего изобретения, рассматриваемого здесь, станут ясны из описания и чертежей и из Формулы изобретения.

Кроткое описание чертежей

Для целей иллюстрации настоящего изобретения, чертежи показывают аспекты одного или более вариантов настоящего изобретения. Однако должно быть понятно, что варианты настоящего изобретения не исчерпываются точно теми конструкциями и приборами, какие показаны на чертежах, на которых:

Фиг. 1 представляет диаграмму, иллюстрирующую векторы движения примера кадра с глобальным и локальным движением;

Фиг. 2 иллюстрирует три примера моделей движения, которые могут быть использованы для глобального движения, с указанием величин их индексов (0, 1 или 2);

Фиг. 3 представляет логическую схему способа согласно некоторым примерам вариантов реализации предмета настоящего изобретения;

Фиг. 4 представляет блок-схему системы для примера декодирующего устройства согласно некоторым примерам вариантов реализации предмета настоящего изобретения;

Фиг. 5 представляет логическую схему способа согласно некоторым примерам вариантов реализации предмета настоящего изобретения;

Фиг. 6 представляет блок-схему системы для примера кодирующего устройства согласно некоторым примерам вариантов реализации предмета настоящего изобретения; и

Фиг. 7 представляет блок-схему компьютерной системы, которая может быть использована для реализации каких-либо одной или более методик, описываемых здесь, или каких-либо одной или более частей этих методик.

Чертежи не обязательно выполнены в масштабе и могут быть иллюстрированы пунктирными линиями, схематичными представлениями и частичными видами. В некоторых случаях, подробности, которые не являются необходимыми для понимания варианта или делают другие детали трудными для восприятия, могут быть исключены. Подобные позиционные обозначения на разных чертежах относятся к подобным элементам.

Осуществление изобретения

Под глобальным движением в видеопрограмме или видеоролике понимают движение, происходящее по всему кадру. Глобальное движение может быть вызвано движением видеокамеры, например, панорамирование и зуммирование видеокамеры может создавать движение в кадре, которое обычно влияет на весь кадр. Движение, присутствующее в отдельных участках видео, может называться локальным движением. Локальное движение может быть вызвано движущимися объектами в пределах сцены; например, и без ограничений локальное движение может быть создано объектом, движущимся в сцене слева направо. Видео может содержать сочетание локального и глобального движения. Некоторые варианты реализации предмета настоящего изобретения могут предлагать эффективные подходы к тому, чтобы передать сообщение о глобальном движении декодирующему устройству и использовать векторы глобального движения для повышения эффективности сжатия.

На Фиг. 1 представлена диаграмма, иллюстрирующая варианты векторов движения примера кадра 100 с глобальным и локальным движением. Кадр 100 может содержать ряд блоков пикселей, изображенных, в качестве примера, в виде квадратов, и ассоциированных с этими блоками векторов движения, изображенных в виде стрелок. Квадраты (например, блоки пикселей) со стрелками, указывающими вверх и влево, могут указывать блоки с движением, которое может считаться глобальным движением, и квадраты со стрелками, указывающими в других направлениях, (обозначены поз. 104), могут указывать блоки с локальным движением. В иллюстрируемом на Фиг. 1 примере многие блоки имеют одно и то же глобальное движение. Передача сигнализации о глобальном движении в заголовке, таком как набор параметров изображения (picture parameter set (PPS)) или набор параметров последовательности (sequence parameter set (SPS)) и использование глобального движения, о котором передана сигнализация, может уменьшить объем информации вектора движения, необходимой блокам, и может иметь в качестве результата улучшенное прогнозирование. Хотя для иллюстративных целей описанные ниже примеры относятся к определению и/или применению векторов глобального или локального движения на уровне блоков, векторы глобального движения могут быть определены и/или применены для любой области кадра и/или изображения, включая, образованные из нескольких блоков, области, ограниченные контуром какой-либо геометрической формы, такие как, без ограничений, области, определяемые геометрическим и/или экспоненциальным кодированием, в которых одна или более прямых и/или кривых линий, ограничивающих профиль, могут быть наклонными или искривленными, и/или для целиком кадра и/или изображения. Хотя передача в виде сигнализации описана здесь, как осуществляемая на уровне кадров и/или в заголовке и/или в наборе параметров кадра, такая сигнализация может быть в качестве альтернативы или в дополнение осуществлена на уровне суб-изображения, где такое суб-изображение может представлять собой какую-либо область кадра и/или изображения, как описано выше.

В качестве примера, и по-прежнему ссылаясь на Фиг. 1, простое поступательное перемещение может быть описано с использованием вектора движения (motion vector (MV)) с двумя компонентами MVx, MVy, каковые векторы описывают смещение блоков и/или пикселей в текущем кадре. Более сложное движение, такое как поворот (вращение), зуммирование и деформирование, могут быть описаны с использованием векторов аффинного движения, где «вектор аффинного движения», как это используется в настоящем описании, представляет собой вектор, характеризующий однородное смещение группы пикселей или точек, представленных в изображении видео и/или в картинке, такой как группы пикселей, иллюстрирующей движение объекта через поле зрения в видеоролике без изменения видимой формы в процессе движения. Некоторые подходы к кодированию и/или декодированию видео используют 4-параметрические или 6-параметрические аффинные модели для компенсации движения в ходе межкадрового кодирования изображения.

Например, 6-параметрическая аффинная модель движения может быть описана как:

x’ = ax + by + c

y’ = dx + ey + f

4-параметрическая аффинная модель движения может быть описана как:

x’ = ax + by + c

y’ = -bx + ay + f

где (x,y) и (x’,y’) обозначают позиции пикселей в текущем и опорном изображениях, соответственно; a, b, c, d, e и f представляют параметры аффинной модели движения.

По-прежнему обращаясь к Фиг. 1, параметры, используемые для описания аффинного движения, могут быть сообщены в виде сигнализации декодирующему устройству для применения компенсации движения в этом декодирующем устройстве. Согласно некоторым способам, параметры движения можно передавать в виде сигнализации в явном виде или посредством передачи сигнализации векторов поступательного движения контрольных точек (control point motion vector (CPMV)) и затем определения параметров аффинного движения на основе этих векторов поступательного движения контрольных точек. Два вектора движения контрольных точек (CPMV) могут быть использованы для определения параметров аффинного движения для 4-параметрической модели аффинного движения и три вектора поступательного движения контрольных точек (CPMV) могут быть использованы для получения параметров для 6-параметрической модели движения. Передача в виде сигнализации параметров аффинного движения с использованием векторов движения контрольных точек может позволить использовать эффективные способы кодирования векторов движения для передачи в виде сигнализации параметров аффинного движения.

В некоторых вариантах реализации и продолжая обращаться к Фиг. 1, сигнализация о глобальном движении может быть включена в заголовок, такой как набор PPS или набор SPS. Глобальное движение может варьироваться от изображения к изображению. Векторы движения, передаваемые в виде сигнализации в заголовках изображения, могут описывать движение относительно ранее декодированных кадров. В некоторых вариантах реализации, глобальное движение может быть поступательным или аффинным. Используемая модель движения (например, число параметров, является ли модель аффинной, поступательной или другой) может также быть сообщена в виде сигнализации в заголовке изображения. Фиг. 2 иллюстрирует три примера моделей 200 движения, которые могут быть использованы для глобального движения, с указанием индексов (0, 1 или 2) этих моделей.

По-прежнему обращаясь к Фиг. 2, наборы PPS могут быть использованы для передачи в виде сигнализации параметров, которые изменяются между изображениями в последовательности. Параметры, которые остаются теми же самыми для последовательности изображений, могут быть сообщены в виде сигнализации в наборе параметров последовательности для уменьшения размера набора PPS и уменьшения необходимой скорости передачи данных видео. Пример набора параметров изображения (PPS) показан в Табл. 1:

pic_parameter_set_rbsp( ) { Дескриптор pps_pic_parameter_set_id ue(v) pps_seq_parameter_set_id u(4) mixed_nalu_types_in_pic_flag u(1) pic_width_in_luma_samples ue(v) pic_height_in_luma_samples ue(v) pps_conformance_window_flag u(1) if( pps_conformance_window_flag ) { pps_conf_win_left_offset ue(v) pps_conf_win_right_offset ue(v) pps_conf_win_top_offset ue(v) pps_conf_win_bottom_offset ue(v) } scaling_window_explicit_signalling_flag u(1) if( scaling_window_explicit_signalling_flag ) { scaling_win_left_offset ue(v) scaling_win_right_offset ue(v) scaling_win_top_offset ue(v) scaling_win_bottom_offset ue(v) } output_flag_present_flag u(1) subpic_id_mapping_in_pps_flag u(1) if( subpic_id_mapping_in_pps_flag ) { pps_num_subpics_minus1 ue(v) pps_subpic_id_len_minus1 ue(v) for( i = 0; i <= pps_num_subpic_minus1; i++ ) pps_subpic_id[ i ] u(v) } no_pic_partition_flag u(1) if( !no_pic_partition_flag ) { pps_log2_ctu_size_minus5 u(2) num_exp_tile_columns_minus1 ue(v) num_exp_tile_rows_minus1 ue(v) for( i = 0; i <= num_exp_tile_columns_minus1; i++ ) tile_column_width_minus1[ i ] ue(v) for( i = 0; i <= num_exp_tile_rows_minus1; i++ ) tile_row_height_minus1[ i ] ue(v) if( NumTilesInPic > 1 ) rect_slice_flag u(1) if( rect_slice_flag ) single_slice_per_subpic_flag u(1) if( rect_slice_flag && !single_slice_per_subpic_flag ) { num_slices_in_pic_minus1 ue(v) if( num_slices_in_pic_minus1 > 0 ) tile_idx_delta_present_flag u(1) for( i = 0; i < num_slices_in_pic_minus1; i++ ) { if( NumTileColumns > 1 ) slice_width_in_tiles_minus1[ i ] ue(v) if( NumTileRows > 1 && ( tile_idx_delta_present_flag | |
SliceTopLeftTileIdx[ i ] % NumTileColumns = = 0 ) )
slice_height_in_tiles_minus1[ i ] ue(v) if( slice_width_in_tiles_minus1[ i ] = = 0 &&
slice_height_in_tiles_minus1[ i ] = = 0 &&
RowHeight[ SliceTopLeftTileIdx[ i ] / NumTileColumns ] > 1 ) {
num_exp_slices_in_tile[ i ] ue(v) for( j = 0; j < num_exp_slices_in_tile[ i ]; j++ ) exp_slice_height_in_ctus_minus1[ i ][ j ] ue(v) i += NumSlicesInTile[ i ] − 1 } if( tile_idx_delta_present_flag && i < num_slices_in_pic_minus1 ) tile_idx_delta[ i ] se(v) } } loop_filter_across_tiles_enabled_flag u(1) loop_filter_across_slices_enabled_flag u(1) } cabac_init_present_flag u(1) for( i = 0; i < 2; i++ ) num_ref_idx_default_active_minus1[ i ] ue(v) rpl1_idx_present_flag u(1) init_qp_minus26 se(v) cu_qp_delta_enabled_flag u(1) pps_chroma_tool_offsets_present_flag u(1) if( pps_chroma_tool_offsets_present_flag ) { pps_cb_qp_offset se(v) pps_cr_qp_offset se(v) pps_joint_cbcr_qp_offset_present_flag u(1) if( pps_joint_cbcr_qp_offset_present_flag ) pps_joint_cbcr_qp_offset_value se(v) pps_slice_chroma_qp_offsets_present_flag u(1) pps_cu_chroma_qp_offset_list_enabled_flag u(1) } if( pps_cu_chroma_qp_offset_list_enabled_flag ) { chroma_qp_offset_list_len_minus1 ue(v) for( i = 0; i <= chroma_qp_offset_list_len_minus1; i++ ) { cb_qp_offset_list[ i ] se(v) cr_qp_offset_list[ i ] se(v) if( pps_joint_cbcr_qp_offset_present_flag ) joint_cbcr_qp_offset_list[ i ] se(v) } } pps_weighted_pred_flag u(1) pps_weighted_bipred_flag u(1) deblocking_filter_control_present_flag u(1) if( deblocking_filter_control_present_flag ) { deblocking_filter_override_enabled_flag u(1) pps_deblocking_filter_disabled_flag u(1) if( !pps_deblocking_filter_disabled_flag ) { pps_beta_offset_div2 se(v) pps_tc_offset_div2 se(v) pps_cb_beta_offset_div2 se(v) pps_cb_tc_offset_div2 se(v) pps_cr_beta_offset_div2 se(v) pps_cr_tc_offset_div2 se(v) } } rpl_info_in_ph_flag u(1) if( deblocking_filter_override_enabled_flag ) dbf_info_in_ph_flag u(1) sao_info_in_ph_flag u(1) alf_info_in_ph_flag u(1) if( ( pps_weighted_pred_flag | | pps_weighted_bipred_flag ) && rpl_info_in_ph_flag ) wp_info_in_ph_flag u(1) qp_delta_info_in_ph_flag u(1) pps_ref_wraparound_enabled_flag u(1) if( pps_ref_wraparound_enabled_flag ) pps_ref_wraparound_offset ue(v) picture_header_extension_present_flag u(1) slice_header_extension_present_flag u(1) pps_extension_flag u(1) if( pps_extension_flag ) while( more_rbsp_data( ) ) pps_extension_data_flag u(1) rbsp_trailing_bits( ) }

К набору PPS могут быть добавлены дополнительные поля для сигнализации о глобальном движении. В случае глобального движения, о присутствии параметров глобального движения в последовательности изображений может быть сообщено в наборе SPS, а набор PPS может обращаться к этому набору SPS посредством идентификатора SPS ID. Набор SPS в некоторых способах декодирования может быть модифицирован для добавления поля с целью сигнализации о присутствии параметров глобального движения в этом наборе SPS. Например, к набору SPS может быть добавлено однобитовое поле. Если бит global_motion_present равен 1, можно ожидать присутствия параметров, относящихся к глобальному движению в наборе PPS. Если бит global_motion_present равен 0, полей относящихся к параметрам глобального движения может не быть в наборе PPS. Например, набор PPS, иллюстрируемый в Табл. 1, может быть расширен для включения в него поля global_motion_present, например, как показано в Табл. 2:

sequence_parameter_set_rbsp( ) { Дескриптор sps_sequence_parameter_set_id ue(v) .
.
.
global_motion_present u(1) rbsp_trailing_bits( ) }

Аналогично, набор PPS может содержать поле pps_global_motion_parameters для кадра, например, как показано в Табл. 3:

pic_parameter_set_rbsp( ) { Дескриптор pps_pic_parameter_set_id ue(v) pps_seq_parameter_set_id ue(v) .
.
.
pps_global_motion_parameters ( ) rbsp_trailing_bits( ) }

Более подробно, набор PPS может содержать поля, характеризующие параметры глобального движения с использованием векторов движения контрольных точек, например, как показано в Табл. 4:

pps_global_motion_parameters ( ) { Descriptor motion_model_used u(2) mv0_x se(v) mv1_y se(v) if(motion_model_used == 1){ mv1_x se(v) mv1_y se(v) } if(motion_model_used == 2){ mv2_x se(v) mv2_y se(v) } }

В качестве еще одного неограничивающего примера, Табл. 5 ниже может представлять пример набора SPS:

seq_parameter_set_rbsp( ) { Дескриптор sps_seq_parameter_set_id u(4) sps_video_parameter_set_id u(4) sps_max_sublayers_minus1 u(3) sps_reserved_zero_4bits u(4) sps_ptl_dpb_hrd_params_present_flag u(1) if( sps_ptl_dpb_hrd_params_present_flag ) profile_tier_level( 1, sps_max_sublayers_minus1 ) gdr_enabled_flag u(1) chroma_format_idc u(2) if( chroma_format_idc = = 3 ) separate_colour_plane_flag u(1) res_change_in_clvs_allowed_flag u(1) pic_width_max_in_luma_samples ue(v) pic_height_max_in_luma_samples ue(v) sps_conformance_window_flag u(1) if( sps_conformance_window_flag ) { sps_conf_win_left_offset ue(v) sps_conf_win_right_offset ue(v) sps_conf_win_top_offset ue(v) sps_conf_win_bottom_offset ue(v) } sps_log2_ctu_size_minus5 u(2) subpic_info_present_flag u(1) if( subpic_info_present_flag ) { sps_num_subpics_minus1 ue(v) sps_independent_subpics_flag u(1) for( i = 0; sps_num_subpics_minus1 > 0 && i <= sps_num_subpics_minus1; i++ ) { if( i > 0 && pic_width_max_in_luma_samples > CtbSizeY ) subpic_ctu_top_left_x[ i ] u(v) if( i > 0 && pic_height_max_in_luma_samples > CtbSizeY ) { subpic_ctu_top_left_y[ i ] u(v) if( i < sps_num_subpics_minus1 &&
pic_width_max_in_luma_samples > CtbSizeY )
subpic_width_minus1[ i ] u(v) if( i < sps_num_subpics_minus1 &&
pic_height_max_in_luma_samples > CtbSizeY )
subpic_height_minus1[ i ] u(v) if( !sps_independent_subpics_flag) { subpic_treated_as_pic_flag[ i ] u(1) loop_filter_across_subpic_enabled_flag[ i ] u(1) } } sps_subpic_id_len_minus1 ue(v) subpic_id_mapping_explicitly_signalled_flag u(1) if( subpic_id_mapping_explicitly_signalled_flag ) { subpic_id_mapping_in_sps_flag u(1) if( subpic_id_mapping_in_sps_flag ) for( i = 0; i <= sps_num_subpics_minus1; i++ ) sps_subpic_id[ i ] u(v) } } bit_depth_minus8 ue(v) sps_entropy_coding_sync_enabled_flag u(1) if( sps_entropy_coding_sync_enabled_flag ) sps_wpp_entry_point_offsets_present_flag u(1) sps_weighted_pred_flag u(1) sps_weighted_bipred_flag u(1) log2_max_pic_order_cnt_lsb_minus4 u(4) sps_poc_msb_flag u(1) if( sps_poc_msb_flag ) poc_msb_len_minus1 ue(v) num_extra_ph_bits_bytes u(2) extra_ph_bits_struct( num_extra_ph_bits_bytes ) num_extra_sh_bits_bytes u(2) extra_sh_bits_struct( num_extra_sh_bits_bytes ) if( sps_max_sublayers_minus1 > 0 ) sps_sublayer_dpb_params_flag u(1) if( sps_ptl_dpb_hrd_params_present_flag ) dpb_parameters( sps_max_sublayers_minus1, sps_sublayer_dpb_params_flag ) long_term_ref_pics_flag u(1) inter_layer_ref_pics_present_flag u(1) sps_idr_rpl_present_flag u(1) rpl1_same_as_rpl0_flag u(1) for( i = 0; i < rpl1_same_as_rpl0_flag ? 1 : 2; i++ ) { num_ref_pic_lists_in_sps[ i ] ue(v) for( j = 0; j < num_ref_pic_lists_in_sps[ i ]; j++) ref_pic_list_struct( i, j ) } if( ChromaArrayType != 0 ) qtbtt_dual_tree_intra_flag u(1) log2_min_luma_coding_block_size_minus2 ue(v) partition_constraints_override_enabled_flag u(1) sps_log2_diff_min_qt_min_cb_intra_slice_luma ue(v) sps_max_mtt_hierarchy_depth_intra_slice_luma ue(v) if( sps_max_mtt_hierarchy_depth_intra_slice_luma != 0 ) { sps_log2_diff_max_bt_min_qt_intra_slice_luma ue(v) sps_log2_diff_max_tt_min_qt_intra_slice_luma ue(v) } sps_log2_diff_min_qt_min_cb_inter_slice ue(v) sps_max_mtt_hierarchy_depth_inter_slice ue(v) if( sps_max_mtt_hierarchy_depth_inter_slice != 0 ) { sps_log2_diff_max_bt_min_qt_inter_slice ue(v) sps_log2_diff_max_tt_min_qt_inter_slice ue(v) } if( qtbtt_dual_tree_intra_flag ) { sps_log2_diff_min_qt_min_cb_intra_slice_chroma ue(v) sps_max_mtt_hierarchy_depth_intra_slice_chroma ue(v) if( sps_max_mtt_hierarchy_depth_intra_slice_chroma != 0 ) { sps_log2_diff_max_bt_min_qt_intra_slice_chroma ue(v) sps_log2_diff_max_tt_min_qt_intra_slice_chroma ue(v) } } sps_max_luma_transform_size_64_flag u(1) if( ChromaArrayType != 0 ) { sps_joint_cbcr_enabled_flag u(1) same_qp_table_for_chroma u(1) numQpTables = same_qp_table_for_chroma ? 1 : ( sps_joint_cbcr_enabled_flag ? 3 : 2 ) for( i = 0; i < numQpTables; i++ ) { qp_table_start_minus26[ i ] se(v) num_points_in_qp_table_minus1[ i ] ue(v) for( j = 0; j <= num_points_in_qp_table_minus1[ i ]; j++ ) { delta_qp_in_val_minus1[ i ][ j ] ue(v) delta_qp_diff_val[ i ][ j ] ue(v) } } } sps_sao_enabled_flag u(1) sps_alf_enabled_flag u(1) if( sps_alf_enabled_flag && ChromaArrayType != 0 ) sps_ccalf_enabled_flag u(1) sps_transform_skip_enabled_flag u(1) if( sps_transform_skip_enabled_flag ) { log2_transform_skip_max_size_minus2 ue(v) sps_bdpcm_enabled_flag u(1) } sps_ref_wraparound_enabled_flag u(1) sps_temporal_mvp_enabled_flag u(1) if( sps_temporal_mvp_enabled_flag ) sps_sbtmvp_enabled_flag u(1) sps_amvr_enabled_flag u(1) sps_bdof_enabled_flag u(1) if( sps_bdof_enabled_flag ) sps_bdof_pic_present_flag u(1) sps_smvd_enabled_flag u(1) sps_dmvr_enabled_flag u(1) if( sps_dmvr_enabled_flag) sps_dmvr_pic_present_flag u(1) sps_mmvd_enabled_flag u(1) sps_isp_enabled_flag u(1) sps_mrl_enabled_flag u(1) sps_mip_enabled_flag u(1) if( ChromaArrayType != 0 ) sps_cclm_enabled_flag u(1) if( chroma_format_idc = = 1 ) { sps_chroma_horizontal_collocated_flag u(1) sps_chroma_vertical_collocated_flag u(1) } sps_mts_enabled_flag u(1) if( sps_mts_enabled_flag ) { sps_explicit_mts_intra_enabled_flag u(1) sps_explicit_mts_inter_enabled_flag u(1) } six_minus_max_num_merge_cand ue(v) sps_sbt_enabled_flag u(1) sps_affine_enabled_flag u(1) if( sps_affine_enabled_flag ) { five_minus_max_num_subblock_merge_cand ue(v) sps_affine_type_flag u(1) if( sps_amvr_enabled_flag ) sps_affine_amvr_enabled_flag u(1) sps_affine_prof_enabled_flag u(1) if( sps_affine_prof_enabled_flag ) sps_prof_pic_present_flag u(1) } sps_palette_enabled_flag u(1) if( ChromaArrayType = = 3 && !sps_max_luma_transform_size_64_flag ) sps_act_enabled_flag u(1) if( sps_transform_skip_enabled_flag | | sps_palette_enabled_flag ) min_qp_prime_ts_minus4 ue(v) sps_bcw_enabled_flag u(1) sps_ibc_enabled_flag u(1) if( sps_ibc_enabled_flag ) six_minus_max_num_ibc_merge_cand ue(v) sps_ciip_enabled_flag u(1) if( sps_mmvd_enabled_flag ) sps_fpel_mmvd_enabled_flag u(1) if( MaxNumMergeCand >= 2 ) { sps_gpm_enabled_flag u(1) if( sps_gpm_enabled_flag && MaxNumMergeCand >= 3 ) max_num_merge_cand_minus_max_num_gpm_cand ue(v) } sps_lmcs_enabled_flag u(1) sps_lfnst_enabled_flag u(1) sps_ladf_enabled_flag u(1) if( sps_ladf_enabled_flag ) { sps_num_ladf_intervals_minus2 u(2) sps_ladf_lowest_interval_qp_offset se(v) for( i = 0; i < sps_num_ladf_intervals_minus2 + 1; i++ ) { sps_ladf_qp_offset[ i ] se(v) sps_ladf_delta_threshold_minus1[ i ] ue(v) } } log2_parallel_merge_level_minus2 ue(v) sps_explicit_scaling_list_enabled_flag u(1) sps_dep_quant_enabled_flag u(1) if( !sps_dep_quant_enabled_flag ) sps_sign_data_hiding_enabled_flag u(1) sps_virtual_boundaries_enabled_flag u(1) if( sps_virtual_boundaries_enabled_flag ) { sps_virtual_boundaries_present_flag u(1) if( sps_virtual_boundaries_present_flag ) { sps_num_ver_virtual_boundaries u(2) for( i = 0; i < sps_num_ver_virtual_boundaries; i++ ) sps_virtual_boundaries_pos_x[ i ] u(13) sps_num_hor_virtual_boundaries u(2) for( i = 0; i < sps_num_hor_virtual_boundaries; i++ ) sps_virtual_boundaries_pos_y[ i ] u(13) } } if( sps_ptl_dpb_hrd_params_present_flag ) { sps_general_hrd_params_present_flag u(1) if( sps_general_hrd_params_present_flag ) { general_hrd_parameters( ) if( sps_max_sublayers_minus1 > 0 ) sps_sublayer_cpb_params_present_flag u(1) firstSubLayer = sps_sublayer_cpb_params_present_flag ? 0 :
sps_max_sublayers_minus1
ols_hrd_parameters( firstSubLayer, sps_max_sublayers_minus1 ) } } field_seq_flag u(1) vui_parameters_present_flag u(1) if( vui_parameters_present_flag ) vui_parameters( ) /* Specified in ITU-T H.SEI | ISO/IEC 23002-7 */ sps_extension_flag u(1) if( sps_extension_flag ) while( more_rbsp_data( ) ) sps_extension_data_flag u(1) rbsp_trailing_bits( ) }

Таблица набора SPS, приведенная выше, может быть расширена, как описано выше, с целью включения в нее индикатора присутствия глобального движения, как это показано в Табл. 6:

sequence_parameter_set_rbsp( ) { Дескриптор sps_sequence_parameter_set_id ue(v) .
.
.
global_motion_present u(1) rbsp_trailing_bits( ) }

Дополнительные поля могут быть включены в набор SPS для отражения других индикаторов, как это описано в настоящей заявке.

В одном из вариантов, и по-прежнему обращаясь к Фиг. 2, флаг sps_affine_enabled_flag в наборе PPS и/или в наборе SPS может специфицировать, может ли компенсация движения на основе аффинной модели быть использована для межкадрового прогнозирования. Если флаг sps_affine_enabled_flag равен 0, синтаксис может быть ограничен таким образом, что никакая компенсация движения на основе аффинной модели не используется в последовательности видео с запаздывающим кодированием (code later video sequence (CLVS)), при этом в синтаксической единице кодирования последовательности CLVS могут не присутствовать флаг inter_affine_flag и флаг cu_affine_type_flag. В противном случае (флаг sps_affine_enabled_flag равен 1), в последовательности CLVS может быть использована компенсация движения на основе аффинной модели.

Продолжая обращаться к Фиг. 2, флаг sps_affine_type_flag в наборе PPS и/или в наборе SPS может специфировать, может ли для межкадрового прогнозирования использоваться компенсация движения на основе 6-параметрической аффинной модели. Если флаг sps_affine_type_flag равен 0, синтаксис может быть ограничен таким образом, что никакая компенсация движения на основе 6-параметрической аффинной модели не используется в последовательности CLVS, и флаг cu_affine_type_flag может не присутствовать в синтаксисе единицы кодирования в последовательности CLVS. В противном случае (флаг sps_affine_type_flag равен 1), в последовательности CLVS может использоваться компенсация движения на основе 6-параметрической аффинной модели. Когда флаг sps_affine_type_flag не присутствует, его можно считать равным 0.

По-прежнему обращаясь к Фиг. 2, векторы CPMV для поступательного движения могут быть сообщены в виде сигнализации в наборе PPS. Контрольные точки могут быть определены предварительно. Например, контрольная точка (вектор) MV 0 может относиться к верхнему левому углу изображения, точка (вектор) MV 1 может относиться к верхнему правому углу и точка (вектор) MV 3 может относиться к нижнему левому углу изображения. Табл. 4 иллюстрирует пример способа передачи в виде сигнализации данных векторов CPMV в зависимости от используемой модели движения.

В одном из примеров вариантов и по-прежнему обращаясь к Фиг. 2, параметр amvr_precision_idx массива, который может быть сообщен в виде сигнализации в единице кодирования, дереве кодирования или другом подобном объекте, может специфицировать разрешение AmvrShift разности векторов движения, что может быть определено в виде неисчерпывающего примера, как показано в Табл. 7, приведенной ниже. Индексы x0, y0 массива могут специфицировать позицию ( x0, y0 ) верхнего левого отсчета яркостной составляющей рассматриваемого блока кодирования относительно верхнего левого отсчета яркостной составляющей изображения; когда параметр amvr_precision_idx[ x0 ][ y0 ] не присутствует, его можно признать равным 0. Там, где флаг inter_affine_flag[ x0 ][ y0 ] равен 0, переменные MvdL0[ x0 ][ y0 ][ 0 ], MvdL0[ x0 ][ y0 ][ 1 ], MvdL1[ x0 ][ y0 ][ 0 ], MvdL1[ x0 ][ y0 ][ 1 ], представляющие разности векторов движения, соответствующих рассматриваемому блоку, могут быть модифицированы путем сдвига таких величин на AmvrShift, например, с использованием MvdL0[ x0 ][ y0 ][ 0 ] = MvdL0[ x0 ][ y0 ][ 0 ] << AmvrShift; MvdL0[ x0 ][ y0 ][ 1 ] = MvdL0[ x0 ][ y0 ][ 1 ] << AmvrShift; MvdL1[ x0 ][ y0 ][ 0 ] = MvdL1[ x0 ][ y0 ][ 0 ] << AmvrShift; и MvdL1[ x0 ][ y0 ][ 1 ] = MvdL1[ x0 ][ y0 ][ 1 ] << AmvrShift. Когда флаг inter_affine_flag[ x0 ][ y0 ] равен 1, переменные MvdCpL0[ x0 ][ y0 ][ 0 ][ 0 ], MvdCpL0[ x0 ][ y0 ][ 0 ][ 1 ], MvdCpL0[ x0 ][ y0 ][ 1 ][ 0 ], MvdCpL0[ x0 ][ y0 ][ 1 ][ 1 ], MvdCpL0[ x0 ][ y0 ][ 2 ][ 0 ] и MvdCpL0[ x0 ][ y0 ][ 2 ][ 1 ] могут быть модифицированы посредством сдвига, например, следующим образом: MvdCpL0[ x0 ][ y0 ][ 0 ][ 0 ] = MvdCpL0[ x0 ][ y0 ][ 0 ][ 0 ] << AmvrShift; MvdCpL1[ x0 ][ y0 ] [ 0 ][ 1 ] = MvdCpL1[ x0 ][ y0 ][ 0 ][ 1 ] << AmvrShift; MvdCpL0[ x0 ][ y0 ][ 1 ][ 0 ] = MvdCpL0[ x0 ][ y0 ][ 1 ][ 0 ] << AmvrShift; MvdCpL1[ x0 ][ y0 ] [ 1 ][ 1 ] = MvdCpL1[ x0 ][ y0 ][ 1 ][ 1 ] << AmvrShift; MvdCpL0[ x0 ][ y0 ][ 2 ][ 0 ] = MvdCpL0[ x0 ][ y0 ][ 2 ][ 0 ] << AmvrShift; и MvdCpL1[ x0 ][ y0 ] [ 2 ][ 1 ] = MvdCpL1[ x0 ][ y0 ][ 2 ][ 1 ] << AmvrShift

Далее обращаясь к Фиг. 2, глобальное движение может рассматриваться относительно ранее кодированного кадра. Когда присутствует только один набор параметров глобального движения, это движение может рассматриваться относительно кадра, непосредственно предшествующего текущему кадру.

По-прежнему обращаясь к Фиг. 2, глобальное движение может представлять собой доминирующее движение в кадре. Многие блоки в кадре могут, вероятно, иметь движение, являющееся таким же или очень похожим на глобальное движение. Исключения могут представлять собой блоки с локальным движением. Поддерживая компенсацию движения блока, совместимую с глобальным движением, можно уменьшить сложность кодирующего устройства и сложность декодирующего устройства, а также можно повысить эффективность сжатия.

В некоторых вариантах реализации, и продолжая обращаться к Фиг. 2, если сигнализацию о глобальном движении передают в заголовке, таком как набор PPS или набор SPS, модель движения из набора SPS может быть применена ко всем блокам в изображении. Например, если глобальное движение использует поступательное движение (например, модель движения = 0), все единицы прогнозирования (PU) в кадре также могут быть ограничены поступательным движением (например, модель движения = 0). В этом случае, адаптивные модели движения могут не использоваться. Сигнализация об этом может также быть передана в наборе SPS с использованием флага use_gm_constrained_motion_model. Когда этот флаг устанавливают равным 1, адаптивные модели движения могут не использоваться в декодирующем устройстве, вместо этого, единственная модель движения может использоваться для всех единиц PU.

По-прежнему обращаясь к FIG. 2, в некоторых вариантах реализации предмета настоящего изобретения, сигнализация о движении может не изменяться от одной единицы PU к другой. Вместо этого может использоваться фиксированная модель движения, сигнализацию о которой передают один раз в наборе SPS. Такой подход может заменить глобальное движение. Использование фиксированной модели движения может быть специфицировано в кодирующем устройстве для уменьшения сложности; например, кодирующее устройство может быть ограничено моделью поступательного движения, которая может быть предпочтительной для маломощных устройств, таких как устройства с низкой вычислительной мощностью. Например, аффинные модели движения могут не использоваться в случаях, специфицированных в профиле кодирующего устройства. Такой пример может быть полезным для приложений реального времени, таких как видео конференции, инфраструктуры интернета вещей (IoT), камеры видеонаблюдения и другие подобные приложения. При использовании фиксированной модели движения может не быть необходимости вставлять избыточную сигнализацию в поток битов данных.

Далее обращаясь к Фиг. 2, предмет настоящего изобретения не ограничивается способами кодирования, использующими глобальное движение, а может быть применим к широкому спектру способов кодирования.

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

По-прежнему обращаясь к Фиг. 2, вместо ограничения движения каждого блока таким образом, чтобы оно соответствовало модели движения, например и без ограничений модели глобального движения, сигнализация о которой передана в заголовке, таком как набор PPS или набор SPS, модель движения, применяемая к каждому блоку в кадре, может быть ограничена аналогичными моделями движения. К аналогичным моделям движения могут относиться модели, имеющие такую же сложность или менее сложные. Например, в первом столбце Табл. 8 приведены следующие три модели в порядке возрастания сложности.

Модель глобально движения Модель движения, используемая при кодировании с межкадровым прогнозированием Поступательное движение (MM = 0) Поступательное движение 4-параметрическая аффинная модель (MM=1) Поступательная или 4-параметрическая аффинная модель 6-параметрическая аффинная модель (MM=2) Поступательная или 4-параметрическая аффинная модель или 6-параметрическая аффинная модель

По-прежнему обращаясь к Фиг. 2, второй столбец Табл. 8 показывает допустимые модели движения блока для использования при кодировании с межкадровым прогнозированием. Например, некоторые варианты реализации предмета настоящего изобретения могут позволить единице PU принять такую модель движения, индекс которой не больше индекса модели глобального движения.

Продолжая обращаться к Фиг. 2, поддержание моделей движения, совместимых с глобальным движением, может позволить использовать контрольные точки глобального движения в качестве векторов-кандидатов движения для прогнозирования. Векторы CPMV глобального движения могут представлять движение, аналогичное движению единиц PU и могут предоставить хорошие векторы-кандидаты MV для прогнозирования.

На Фиг. 3 представлена логическая схема, иллюстрирующая пример варианта процедуры 300 применения модели движения, аналогичной модели глобального движения, о которой сообщено в виде сигнализации в заголовке.

На этапе 305, декодирующее устройство принимает поток битов данных. Текущий блок может находиться в потоке битов данных, принимаемом декодирующим устройством. Поток битов данных может содержать, например, данные из потока битов, поступающего на вход декодирующего устройства, когда используется сжатие данных. Этот поток битов данных может содержать информацию, необходимую для декодирования видео. Процедура приема может содержать выделение и/или синтаксический анализ блока и ассоциированной сигнализационной информации из потока битов данных. В некоторых вариантах реализации, текущий блок может представлять собой единицу дерева кодирования (coding tree unit (CTU)), единицу кодирования (coding unit (CU)) и/или единицу прогнозирования (prediction unit (PU))..

На этапе 310, и по-прежнему обращаясь к Фиг. 3, может быть выделен заголовок, ассоциированный с текущим кадром и содержащий сигнал, характеризующий, что глобальное движение активизировано, и далее характеризующий параметры модели движения. На этапе 315, может быть декодирован текущий кадр. Процедура декодирования может содержать использование для каждого текущего блока модели движения, сложность которой не больше сложности модели глобального движения.

На Фиг. 4 представлена блок-схема системы, иллюстрирующая пример декодирующего устройства 400, способного декодировать поток битов данных с использованием применения модели движения, аналогичной модели глобального движения, сигнализация о которой передана в заголовке. Декодирующее устройство 400 может содержать процессор 404 энтропийного декодирующего устройства, процессор 408 для обратного квантования и обратного преобразования, фильтр удаления блочности 412, буфер 416 кадра, процессор 420 для компенсации движения и/или процессор 424 для внутрикадрового прогнозирования.

Во время работы, и по-прежнему обращаясь к Фиг. 4, поток 428 битов данных может быть принят декодирующим устройством 400 и передан на вход процессора 404 энтропийного декодирующего устройства, который может осуществлять энтропийное декодирование частей потока битов данных и превращать их в квантованные коэффициенты. Эти квантованные коэффициенты могут быть переданы в процессор 408 для обратного квантования и обратного преобразования, способный осуществить обратное квантование и обратное преобразование для получения сигнала остатка, который может быть суммирован с выходными данными процессора 420 для компенсации движения или процессора 424 для внутрикадрового прогнозирования в соответствии с режимом обработки сигнала. Выходные данные процессора 420 для компенсации движения и процессора 424 для внутрикадрового прогнозирования могут содержать прогноз блока на основе ранее декодированного блока. Сумма прогноза и остатка может быть обработана деблокирующим фильтром 412 и сохранена в буфере 416 кадра.

На Фиг. 5 представлена логическая схема, иллюстрирующая пример варианта процедуры 500 кодирования видео, содержащей применение модели движения, аналогичной модели глобального движения, о которой сообщено в виде сигнализации в заголовке, согласно некоторым аспектам предмета настоящего изобретения, что может уменьшить сложность кодирования при увеличении эффективности сжатия. На этапе 505, кадр видео может быть подвергнут первоначальной сегментации на блоки, с использованием, например и без ограничений, схемы разбиения макроблоков в соответствии со структурой дерева, что может содержать разбиение кадра изображения на единицы CTU и единицы CU.

На этапе 510, и по-прежнему обращаясь к Фиг. 5, может быть определено глобальное движение для текущего блока или кадра. На этапе 515, блок может быть кодирован и вставлен в поток битов данных. Процедура кодирования может содержать передачу в заголовке сигнализации, что для всех блоков в кадре следует применять модель движения, аналогичную модели глобального движения. Процедура кодирования может содержать использование режимов межкадрового прогнозирования и внутрикадрового прогнозирования, например.

На Фиг. 6 представлена блок-схема системы, иллюстрирующая пример варианта кодирующего устройства 600 для видео, способного применять модель движения, аналогичную модели глобального движения, сигнализация о которой передана в заголовке. Этот пример кодирующего устройства 600 для видео может принимать входное видео 604, которое может быть первоначально сегментировано и/или разбито в соответствии со схемой обработки видео, такой как схема разбиения макроблоков в структуре дерева (например, дерево квадратов плюс двоичное дерево). Пример схемы разбиения макроблоков в структуре дерева может содержать разбиение кадра изображения на большие элементы блоков, называемые единицами дерева кодирования (CTU). В некоторых вариантах, каждая единица CTU может быть далее разбита один или более раз на некоторое число субблоков, называемые единицами кодирования (CU). Конечный результат такого разбиения может содержать группу субблоков, которые могут называться единицами прогнозирования (PU). Также могут быть использованы единицы преобразования (transform unit (TU)).

По-прежнему обращаясь к Фиг. 6, пример кодирующего устройства 600 для видео может содержать процессор 608 для внутрикадрового прогнозирования, процессор 612 для оценки/компенсации движения, который может также называться процессором межкадрового прогнозирования и который способен построить список векторов-кандидатов движения с использованием добавления одного вектора-кандидата глобального движения к списку векторов-кандидатов движения, процессор 616 для преобразования/квантования, процессор 620 для обратного квантования/обратного преобразования, внутриконтурный фильтр 624, буфер 628 декодированного изображения и/или процессор 632 для энтропийного кодирования. В этот процессор 632 для энтропийного кодирования могут быть введены параметры потока битов данных для вставки в выходной поток 636 битов данных.

Во время работы и продолжая обращаться к Фиг. 6, для каждого блока кадра входного видео 604 может быть определено, следует ли обрабатывать этот блок, посредством внутрикадрового прогнозирования изображения или с использованием оценки/компенсации движения. Блок может быть передан процессору 608 для внутрикадрового прогнозирования или процессору 612 для оценки/компенсации движения. Если блок должен быть обработан посредством внутрикадрового прогнозирования, процессор 608 для внутрикадрового прогнозирования может осуществить обработку для передачи на выход предиктора. Если блок должен быть обработан посредством оценки/компенсации движения, процессор 612 для оценки/компенсации движения может осуществить обработку, содержащую построение списка векторов-кандидатов движения, включая добавление одного вектора-кандидата глобального движения к списку векторов-кандидатов движения, если это применимо.

По-прежнему обращаясь к Фиг. 6, может быть сформирован остаток путем вычитания предиктора из входного видео. Остаток может быть принят процессором 616 для преобразования/квантования, который может осуществить процедуру преобразования (например, дискретное косинусное преобразование (discrete cosine transform (DCT))) для генерации коэффициентов, которые могут быть квантованы. Квантованные коэффициенты и какая-либо ассоциированная сигнализационная информация может быть передана процессору 632 для энтропийного кодирования с целью осуществления энтропийного кодирования и вставки результата в выходной поток 636 битов данных. Процессор 632 для энтропийного кодирования может поддерживать кодирование сигнализационной информации относительно кодирования текущего блока. В дополнение к этому, квантованные коэффициенты могут быть переданы процессору 620 для обратного квантования/обратного преобразования, который может воспроизводить пиксели, каковые могут быть комбинированы с предиктором и обработаны внутриконтурным фильтром 624, а выходные данные этого фильтра могут быть сохранены в буфере 628 декодированного изображения для использования процессором 612 для оценки/компенсации движения, способным строить список векторов-кандидатов движения, включая добавление одного вектора-кандидата глобального движения к списку векторов-кандидатов движения.

Далее обращаясь к Фиг. 6, хотя выше были описаны подробно несколько вариантов, возможны также другие модификации или дополнения. Например, в некоторых вариантах, текущие блоки могут представлять собой какие-либо симметричные блоки (8x8, 16x16, 32x32, 64x64, 128 x 128 и другие подобные блоки), равно как какие-либо асимметричные блоки (8x4, 16x8 и другие подобные блоки).

В некоторых вариантах реализации, и по-прежнему обращаясь к Фиг. 6, может быть осуществлено дерево принятия решений со структурой дерево квадратов плюс двоичное дерево (quadtree plus binary decision tree (QTBT)). В структуре дерева QTBT, на уровне единицы дерева кодирования, параметры разбиения в структуре дерева QTBT могут быть определены динамически для адаптации к локальным характеристикам без передачи каких-либо издержек. После этого, на уровне единиц кодирования, структура дерева принятия решений с объединенным классификатором может исключать ненужные итерации и бороться с риском ложного прогнозирования. В некоторых вариантах реализации, режим обновления блоков кадра LTR (долговременная опора) может быть доступным в качестве дополнительной опции, доступной в каждом концевом узле («листе») дерева QTBT.

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

Следует отметить, что любые один или более аспектов и вариантов, описываемых здесь, могут быть обычно реализованы с использованием компьютерной аппаратуры на основе цифровых электронных схем, интегральных схем, специализированных интегральных схем (application specific integrated circuit (ASIC)), программируемых пользователем вентильных матриц (field programmable gate array (FPGA)), встроенного программного обеспечения, загружаемого программного обеспечения и/или комбинаций этих компонентов, как это реализовано в одной или более машинах (например, одно или более компьютерных устройств, используемых в качестве пользовательских компьютерных устройств для электронной документации, одно или более серверных устройств, таких как сервер документов, и т.п.), запрограммированных в соответствии с положениями настоящей заявки, как должно быть понятно даже рядовым специалистам в компьютерной технике. Эти разнообразные аспекты или признаки могут содержать реализацию одной или более компьютерных программ и/или программного обеспечения, выполняемых и/или интерпретируемых в программируемой системе, содержащей по меньшей мере один программируемый процессор, который может быть процессором специального или общего назначения, соединенным для приема данных и команд от системы хранения информации и передачи данных и команд в эту систему хранения информации, по меньшей мере одно устройство ввода и по меньшей мере одно устройство вывода. Соответствующие коды программного обеспечения могут быть легко подготовлены квалифицированными программистами на основе положений настоящего изобретения, как это должно быть ясно даже рядовым специалистам в программировании. Аспекты и варианты реализации, обсуждаемые выше и использующие программное обеспечение и/или программные модули, могут также содержать соответствующую аппаратуру, способствующую осуществлению выполняемых машиной команд программного обеспечения и/или программных модулей.

Такое программное обеспечение может представлять собой компьютерный программный продукт, использующий машиночитаемый носитель для хранения информации. Машиночитаемый носитель для хранения информации может представлять собой какой-либо носитель, способный сохранять и/или кодировать последовательность команд для выполнения машиной (например, компьютерным устройством) с целью осуществлять какой-либо один из способов и/или вариантов, описываемых здесь. К примерам такого машиночитаемого носителя относятся, не ограничиваясь, магнитный диск, оптический диск (например, CD, CD-R, DVD, DVD-R и т.п.), магнитооптический диск, постоянное запоминающее устройство (ПЗУ (“ROM”)), запоминающее устройство с произвольной выборкой (ЗУПВ (“RAM”), магнитная карточка, оптическая карточка, твердотельное запоминающее устройство, СППЗУ (EPROM), ЭСППЗУ (EEPROM), программируемые логические устройства (Programmable Logic Devices (PLDs)),и/или какие-либо комбинации перечисленных носителей. Термин «машиночитаемый носитель», как он используется здесь, предназначен обозначать как единственный носитель, так и набор физически раздельных носителей, таких как, например, набор компакт-дисков, либо один или более накопителей на жестких дисках в сочетании с компьютерным запоминающем устройством. Как используется здесь, термин «машиночитаемый носитель для хранения информации» не охватывает временные, энергозависимые формы передачи сигнала.

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

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

На Фиг. 7 показано схематичное представление одного из вариантов компьютерного устройства в примере компьютерной системы 700, где могут быть выполнены набор команд, при выполнении которых система управления осуществляет какие-либо один или более аспектов и/или способов согласно настоящему изобретению. Здесь также подразумевается, что несколько компьютерных устройств могут быть использованы для осуществления специально конфигурированного набора команд, побуждающих одно или более компьютерных устройств реализовывать один или более аспектов и/или способов согласно настоящему изобретению. Компьютерная система 700 содержит процессор 704 и запоминающее устройство 708, осуществляющие связь один с другим и с другими компонентами по шине 712. Шина 712 может представлять собой какой-либо из нескольких типов структур шин, включая, не ограничиваясь этим, шину памяти, контроллер памяти, периферийную шину, локальную шину или какою-либо комбинацию этих типов шин с использованием какой-либо из разнообразных архитектур шин.

Запоминающее устройство 708 может содержать различные компоненты (например, машиночитаемые носители информации), включая, не ограничиваясь этим, компонент запоминающего устройства с произвольной выборкой, компонент постоянного запоминающего устройства и какие-либо комбинации этих компонентов. В одном из примеров, в запоминающем устройстве 708 может быть сохранена базовая система ввода/вывода 716 (BIOS), содержащая заданные процедуры, помогающие передавать информацию между элементами внутри компьютерной системы 700, например, при запуске системы. Запоминающее устройство 708 может также содержать (например, сохраненные на одном или более машиночитаемых носителях) команды (например, программное обеспечение) 720, реализующие какие-либо один или более аспектов и/или способов настоящего изобретения. В другом примере, запоминающее устройство 708 может далее содержать какое-либо количество программных модулей, включая, без ограничений, операционную систему, одну или более прикладных программ, другие программные модули, программные данные или какие-либо комбинации этих компонентов.

Компьютерная система 700 может также содержать устройство 724 для хранения информации. К примерам устройств для хранения информации (например, устройства 724 для хранения информации) относятся, без ограничений, накопитель на жестком диске, накопитель на магнитном диске, накопитель на оптическом диске в сочетании с оптическим носителем информации, твердотельное запоминающее устройство и какие-либо комбинации таких компонентов. Устройство 724 для хранения информации может быть соединено с шиной 712 посредством соответствующего интерфейса (не показан). К примерам интерфейсов относятся, не ограничиваясь этим, интерфейс SCSI, присоединение по усовершенствованной технологии (advanced technology attachment (ATA)), последовательный интерфейс serial ATA, универсальная последовательная шина (universal serial bus (USB)), IEEE 1394 (FIREWIRE) и какие-либо комбинации этих интерфейсов. В одном из примеров, устройство 724 для хранения информации (либо один или более компонентов этого устройства) может быть сопряжено с компьютерной системой 700 (например, через внешний соединитель порта (не показан)) так, что его можно отделять. В частности, устройство 724 для хранения информации и ассоциированный с ним машиночитаемый носитель 728 для хранения информации могут обеспечивать энергонезависимое и/или энергозависимое хранение машиночитаемых команд, структур данных, программных модулей и/или другие данные для компьютерной системы 700. В одном из примеров, программное обеспечение 720 может быть резидентно, полностью или частично, на машиночитаемом носителе 728. В другом примере, программное обеспечение 720 может быть резидентно, полностью или частично, в процессоре 704.

Компьютерная система 700 может также содержать устройство 732 ввода. В одном из примеров, пользователь компьютерной системы 700 может вводить команды и/или другую информацию в компьютерную систему 700 через это устройство 732 ввода. К примерам устройств 732 ввода относятся, без ограничений, алфавитно-цифровое устройство ввода (например, клавиатура), указательное устройство, джойстик, игровая панель, устройство аудио ввода (например, микрофон, система с речевым ответом и т.п.), устройство управления курсором (например, мышь), сенсорная панель, оптический сканер, устройство захвата изображения (например, фотоаппарат, видеокамера), сенсорный экран или какая-либо комбинация перечисленных компонентов. Устройство 732 ввода может быть сопряжено с шиной 712 через какой-либо из разнообразных интерфейсов (не показан), включая, без ограничений, последовательный интерфейс, параллельный интерфейс, игровой порт, USB-интерфейс, интерфейс FIREWIRE, прямой интерфейс с шиной 712, и какие-либо комбинации перечисленных интерфейсов. Устройство 732 ввода может содержать интерфейс сенсорного экрана, который может быть частью дисплейного устройства 736 или отдельным от него устройством, что далее обсуждается ниже. Устройство 732 ввода может быть использовано в качестве пользовательского селекторного устройства для выбора одного или более графических представлений в графическом интерфейсе, как описано выше.

Пользователь может также вводить команды и/или другую информацию в компьютерную систему 700 через устройство 724 для хранения информация (например, накопитель на сменных дисках, флэшка и т.п.) и/или устройство 740 сетевого интерфейса. Устройство сетевого интерфейса, такое как устройство 740 сетевого интерфейса, может быть использовано для соединения компьютерной системы 700 с одной или несколькими из совокупности разнообразных сетей 744 и одним или несколькими удаленными устройствами 748, соединенными с этими сетями. К примерам устройств сетевых интерфейсов относятся, без ограничений, карта сетевого интерфейса, (например, карта интерфейса сети мобильной связи, карта локальной сети связи (LAN)), модем или какая-либо комбинация этих компонентов. К примерам сетей связи относятся, без ограничений, широкомасштабная сеть связи (например, Интернет, сеть предприятия), локальная сеть связи (например, сеть связи, ассоциированная с офисом, зданием, кампусом или другим относительно небольшим географическим пространством), сеть телефонной связи, сеть передачи данных, ассоциированная с провайдером телефонной/голосовой связи (например, провайдером мобильной связи и/или провайдером сети передачи данных и/или сети голосовой связи), прямое соединение между двумя компьютерными устройствами и какая-либо комбинация перечисленных сетей. Сеть связи, такая как сеть 744 связи может использовать проводную и/или беспроводную связь. В общем случае, может быть использована любая сетевая топология. Информация (например, данные, программное обеспечение 720 и т.п.) может быть передана компьютерной системе 700 через устройство 740 сетевого интерфейса.

Компьютерная система 700 может далее содержать адаптер 752 видео дисплея для передачи представляемого изображения дисплейному устройству, такому как дисплейное устройство 736. К примерам дисплейных устройств относятся, без ограничений, жидкокристаллический дисплей (liquid crystal display (LCD)), электронно-лучевая трубка (cathode ray tube (CRT)), плазменный дисплей, дисплей на светодиодах (light emitting diode (LED)) и какая-либо комбинация таких дисплеев. Адаптер 752 дисплея и дисплейное устройство 736 могут быть использованы в сочетании с процессором 704 для создания графических представлений аспектов настоящего изобретения. В дополнение к дисплейному устройству компьютерная система 700 может содержать одно или более других периферийных устройств, включая, без ограничений, аудио громкоговоритель, принтер и какую-либо комбинацию этих устройств. Такие периферийные устройства вывода могут быть соединены с шиной 712 через периферийный интерфейс 756. К примерам периферийных интерфейсов относятся, без ограничений, последовательный порт, USB-соединение, соединение FIREWIRE, параллельное соединение и какие-либо комбинации перечисленных объектов.

Выше приведено подробное описание иллюстративных вариантов настоящего изобретения. Могут быть внесены разнообразные модификации и дополнения без отклонения от смысла и объема изобретения. Признаки каждого из различных вариантов, описываемых выше, можно комбинировать с признаками других описываемые выше вариантов соответствующим образом с целью создания множества комбинаций признаков в ассоциированных новых вариантах. Кроме того, хотя выше описан ряд отдельных вариантов, все, что было здесь описано, является всего лишь иллюстрацией применения принципов настоящего изобретения. В дополнение к этому, хотя здесь конкретные способы могут быть иллюстрированы или описаны как осуществляемые в конкретном порядке, этот порядок можно сильно изменять даже в пределах рядовой квалификации для реализации вариантов, как это описано здесь. Соответственно, настоящее описание здесь только в качестве примеров и никак иначе не ограничивают объема настоящего изобретения.

В приведенном выше описании такие фразы, как «по меньшей мере одно из» или «одно или более из» могут следовать после связанного (конъюнктивного) списка элементов или признаков. Термин «и/или» может также появляться в списке из двух или более элементов или признаков. Если это не опровергается в неявной или в явной форме контекстом, в котором такая фраза используется, это должно означать какой-либо из перечисленных в списке элементов или признаков индивидуально или в комбинации с какими-либо другими из этих элементов или признаков. Например, каждая из фраз «по меньшей мере одно из A и B»; «одно или более из A и B» и «A и/или B» должна означать «A отдельно, B отдельно или A и B вместе». Аналогичная интерпретация также предполагается для списков, содержащих три или более объектов. Например, каждая из фраз «по меньшей мере одно из A, B и C»; «одно или более из A, B и C»; и «A, B и/или C» должна означать «только A, только B, только C, A и B вместе, A и C вместе, B и C вместе или A и B и C вместе». В дополнение к этому, использование термина «на основе…», выше и в Формуле изобретения должно означать «на основе по меньшей мере частично…», так что неупомянутые выше признак или элемент также допустимы.

Описываемый здесь предмет настоящего изобретения может быть осуществлен в системах, аппаратуре, способах и/или изделиях в зависимости от желаемой конфигурации. Описанные выше варианты реализации не представляют все варианты реализации, согласованные с предметом настоящего изобретения, рассматриваемым здесь. Напротив, это просто некоторые примеры, согласованные с аспектами, относящимися к рассматриваемому предмету настоящего изобретения. Хотя выше были подробно описаны несколько вариантов, возможны также другие модификации или дополнения. В частности, могут быть созданы другие признаки и/или варианты в дополнение к тому, что описано здесь. Например, описанные выше варианты реализации могут быть направлены на различные комбинации и субкомбинации описываемых признаков и/или комбинации и субкомбинации нескольких других признаков, описываемых выше. В дополнение к этому, логические схемы, показываемые на прилагаемых чертежах и/или описываемые здесь, не обязательно требуют выполнения в показанном конкретном порядке или в последовательном порядке для достижения желаемых результатов. Другие варианты реализации могут быть в пределах объема следующей ниже Формулы изобретения.

Похожие патенты RU2806442C2

название год авторы номер документа
СИГНАЛИЗАЦИЯ ГЛОБАЛЬНОГО ВЕКТОРА ДВИЖЕНИЯ В ЗАГОЛОВКЕ ИЗОБРАЖЕНИЯ 2020
  • Калва, Хари
  • Фёрхт, Боривой
  • Аджич, Велибор
RU2808638C2
ЭФФЕКТИВНОЕ КОДИРОВАНИЕ ВЕКТОРОВ ГЛОБАЛЬНОГО ДВИЖЕНИЯ 2020
  • Калва, Хари
  • Фёрхт, Боривой
  • Аджич, Велибор
RU2806444C2
СИНТАКСИЧЕСКИЕ ЭЛЕМЕНТЫ ДЛЯ КОДИРОВАНИЯ ИЛИ ДЕКОДИРОВАНИЯ ВИДЕО 2019
  • Лелеаннек, Фабрис
  • Гальпэн, Франк
  • Пуарье, Танжи
  • Франсуа, Эдуар
RU2802368C2
СПОСОБ И АППАРАТНЫЙ КОМПОНЕНТ СИГНАЛИЗАЦИИ ЧИСЛА КАНДИДАТОВ ДЛЯ РЕЖИМА СЛИЯНИЯ 2021
  • Филиппов, Алексей Константинович
  • Руфицкий, Василий Алексеевич
  • Алшина, Елена Александровна
RU2823267C1
СПОСОБ И АППАРАТУРА ПРЕДСКАЗАНИЯ ВИДЕОИЗОБРАЖЕНИЙ 2019
  • Чэнь, Хуаньбан
  • Ян, Хайтао
RU2787812C2
СПОСОБ КОНТЕКСТНО-ЗАВИСИМОГО КОДИРОВАНИЯ ДЛЯ РЕЖИМА С ПРОПУСКОМ ПРЕОБРАЗОВАНИЯ 2020
  • Чжу, Вэйцзя
  • Чжан, Ли
  • Сюй, Цзичжэн
RU2817139C2
СПОСОБ И УСТРОЙСТВО ПРИВЯЗКИ К ТЕКУЩЕМУ ИЗОБРАЖЕНИЮ ДЛЯ КОДИРОВАНИЯ ВИДЕО 2017
  • Чуанг, Тзу-Дер
  • Чен, Чинг-Йех
  • Сан, Ю-Чен
  • Хуанг, Ю-Вен
  • Лиу, Шан
  • Ксу, Ксиаожонг
RU2710667C1
КОДИРОВАНИЕ ОСТАТКОВ И КОЭФФИЦИЕНТОВ ДЛЯ КОДИРОВАНИЯ ВИДЕО 2022
  • Цзху, Хун-Цзхэн
  • Сю, Сяоюй
  • Чэнь, И-Вэнь
  • Чэнь, Вэй
  • Ко, Чэ-Вэй
  • Ван, Сянлинь
  • Юй, Бин
RU2824946C2
СИСТЕМЫ И СПОСОБЫ СИГНАЛИЗАЦИИ ПАРАМЕТРОВ ПРИ КОДИРОВАНИИ ВИДЕОСИГНАЛОВ 2019
  • Дешпанде, Сачин Г.
RU2771478C1
СПОСОБ ДЕКОДИРОВАНИЯ ИЗОБРАЖЕНИЙ ДЛЯ ВЫПОЛНЕНИЯ ВЗАИМНОГО ПРОГНОЗИРОВАНИЯ, КОГДА РЕЖИМ ПРОГНОЗИРОВАНИЯ ДЛЯ ТЕКУЩЕГО БЛОКА В КОНЕЧНОМ СЧЕТЕ НЕ МОЖЕТ ВЫБИРАТЬСЯ, И УСТРОЙСТВО ДЛЯ ЭТОГО 2020
  • Дзанг, Хиеонгмоон
  • Парк, Наери
  • Ким, Сеунгхван
RU2793902C1

Иллюстрации к изобретению RU 2 806 442 C2

Реферат патента 2023 года ОГРАНИЧЕННЫЙ ГЛОБАЛЬНЫМ ДВИЖЕНИЕМ ВЕКТОР ДВИЖЕНИЯ ПРИ МЕЖКАДРОВОМ ПРОГНОЗИРОВАНИИ

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

Формула изобретения RU 2 806 442 C2

1. Декодирующее устройство, содержащее схему для:

приема потока битов данных;

выделения, из потока битов, набора параметров, ассоциированного с кодированным изображением в потоке битов, причем набор параметров включает в себя сигнал, указывающий, что доступна глобальная модель движения, при этом глобальная модель движения содержит аффинную модель движения с использованием векторов движения контрольных точек; и

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

2. Декодирующее устройство по п. 1, в котором указанный набор параметров содержит набор параметров последовательности (SPS).

3. Декодирующее устройство по п. 1, в котором глобальная модель движения представляет собой 4-параметрическую аффинную модель движения.

4. Декодирующее устройство по п. 1, в котором глобальная модель движения представляет собой 6-параметрическую аффинную модель движения.

5. Декодирующее устройство по п. 1, в котором каждый блок представляет собой единицу дерева кодирования.

6. Декодирующее устройство по п. 1, в котором каждый текущий блок представляет собой единицу кодирования.

7. Декодирующее устройство по п. 1, в котором каждый блок в кодированном изображении декодируется с использованием модели поступательного движения.

8. Декодирующее устройство по п. 1, в котором каждый блок в первой области кодированного изображения декодируется с использованием глобальной модели движения и каждый блок во второй области кодированного изображения декодируется с использованием модели поступательного движения.

9. Декодирующее устройство по п. 1, в котором глобальная модель движения представляет собой 6-параметрическую аффинную модель движения, при этом каждый блок в первой области кодированного изображения декодируется с использованием глобальной модели движения и каждый блок во второй области кодированного изображения декодируется с использованием одной или обеих из 4-параметрической аффинной модели движения и модели поступательного движения.

10. Способ, содержащий этапы, на которых

принимают, с помощью декодера, поток битов;

выделяют, с помощью декодера, из потока битов, набор параметров, ассоциированный с кодированным изображением в потоке битов, причем набор параметров включает в себя сигнал, указывающий, что доступна глобальная модель движения, при этом глобальная модель движения содержит аффинную модель движения с использованием векторов движения контрольных точек; и

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

11. Способ по п. 10, в котором указанный набор параметров содержит набор параметров последовательности (SPS).

12. Способ по п. 10, в котором глобальная модель движения представляет собой 4-параметрическую аффинную модель движения.

13. Способ по п. 10, в котором глобальная модель движения представляет собой 6-параметрическую аффинную модель движения.

14. Способ по п. 10, в котором каждый блок представляет собой единицу дерева кодирования.

15. Способ по п. 10, в котором каждый текущий блок представляет собой единицу кодирования.

16. Способ по п. 10, в котором каждый блок в кодированном изображении декодируется с использованием модели поступательного движения.

17. Способ по п. 10, в котором каждый блок в первой области кодированного изображения декодируется с использованием глобальной модели движения и каждый блок во второй области кодированного изображения декодируется с использованием модели поступательного движения.

18. Способ по п. 10, в котором глобальная модель движения представляет собой 6-параметрическую аффинную модель движения, при этом каждый блок в первой области кодированного изображения декодируется с использованием глобальной модели движения и каждый блок во второй области кодированного изображения декодируется с использованием одной или обеих из 4-параметрической аффинной модели движения и модели поступательного движения.

Документы, цитированные в отчете о поиске Патент 2023 года RU2806442C2

WO 2017087751 A1, 2017.05.26
US 2019045192 A1, 2019.02.07
US 2019110064 A1, 2019.04.11
US 2018098063 A1, 2018.04.05
US 2017332095 A1, 2017.11.16
US 2018270497 A1, 2018.09.20
WO 2008133455 A1, 2008.11.06
WO 2018097589 A1, 2018.05.31
СПОСОБ ПРЕДСКАЗАНИЯ ИЗОБРАЖЕНИЙ И СВЯЗАННОЕ УСТРОЙСТВО 2015
  • Ян Хайтао
  • Лян Фань
  • Линь Сисинь
  • Чэнь Хуаньбан
RU2671307C1

RU 2 806 442 C2

Авторы

Калва, Хари

Фёрхт, Боривой

Аджич, Велибор

Даты

2023-11-01Публикация

2020-04-24Подача