(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-25
(45)【発行日】2024-12-03
(54)【発明の名称】メッシュ圧縮のための頂点の並べ替え
(51)【国際特許分類】
H04N 19/597 20140101AFI20241126BHJP
G06T 9/00 20060101ALI20241126BHJP
【FI】
H04N19/597
G06T9/00 100
(21)【出願番号】P 2023534146
(86)(22)【出願日】2022-09-07
(86)【国際出願番号】 US2022076054
(87)【国際公開番号】W WO2023039432
(87)【国際公開日】2023-03-16
【審査請求日】2023-06-05
(32)【優先日】2021-09-08
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-09-08
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-09-06
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ホアン,チャオ
(72)【発明者】
【氏名】ジャン,シァン
(72)【発明者】
【氏名】ティエン,ジュン
(72)【発明者】
【氏名】シュー,シャオジョン
(72)【発明者】
【氏名】リウ,シャン
【審査官】久保 光宏
(56)【参考文献】
【文献】国際公開第2021/116838(WO,A1)
【文献】米国特許第6047088(US,A)
【文献】米国特許出願公開第2021/0209806(US,A1)
【文献】米国特許出願公開第2021/0090301(US,A1)
【文献】国際公開第2021/136876(WO,A1)
【文献】国際公開第2021/136878(WO,A1)
【文献】Martin Roa Villescas,"3D Face Reconstruction using Structured Light on a Hand-held Device",[online], Eindhoven University of Technology,2020年06月29日,Pages 28-29,[令和6年4月22日検索], インターネット,<URL: https://web.archive.org/web/20200627154956/https://research.tue.nl/en/studentTheses/3d-face-reconstruction-using-structured-light-on-a-hand-held-devi> and <URL: https://web.archive.org/web/20200629062412/https://pure.tue.nl/ws/portalfiles/portal/46965337/777871-1.pdf>.
【文献】Archana Balagondar,"Mesh compression: Theory & practice",[online], University of Windsor,2013年03月21日,Pages i-xii and 67-81,[令和6年4月22日検索], インターネット, <URL: https://scholar.uwindsor.ca/etd/2707/>.
【文献】Junhui Hou, et al.,"Rate-Distortion Model Based Bit Allocation for 3-D Facial Compression Using Geometry Video",IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY,2013年09月,Vol.23, No.9,Pages 1537-1541,ISSN: 1051-8215, <DOI: 10.1109/TCSVT.2013.2248971>.
【文献】Danillo Graziosi, et al.,"[VPCC] [EE2.6-related] Mesh Patch Data",m55368,[online], ISO/IEC JTC 1/SC 29/WG 7,2020年10月20日,全14頁,[令和6年9月18日検索], インターネット, <URL: https://mpeg-pcc.org/index.php/public-contributions/mpeg-132-sony-contribution-list/> and <URL: https://mpeg-pcc.org/wp-content/uploads/2020/10/m55368-v1-m55368_V-PCCEE2.6-related-Mesh-Patch-Data.zip>.,(See document file "m55368_mesh_patch_data.docx" in the zip file "m55368-v1-m55368_V-PCCEE2.6-related-Mesh-Patch-Data.zip".)
【文献】Esmaeil Faramarzi, et al.,"[V-PCC] EE2.6 Report on mesh coding with V-PCC",m49588,[online], ISO/IEC JTC1/SC29/WG11 MPEG2019,2019年07月05日,全7頁,[令和6年3月1日検索], インターネット, <URL: https://mpeg-pcc.org/index.php/public-contributions/mpeg127-m49588v-pcc-ee2-6-report-on-mesh-coding-with-v-pcc/> and <URL: https://mpeg-pcc.org/wp-content/uploads/2019/07/m49588-v1.zip>.,(See document file "m49588-VPCC-EE2.6-Report_on_Mesh_Coding-Samsung-v1.docx" in the zip file "m49588-v1.zip".)
【文献】Esmaeil Faramarzi, et al.,"Mesh Coding Extensions to MPEG-I V-PCC",Proceedings of 2020 IEEE 22nd International Workshop on Multimedia Signal Processing (MMSP),IEEE,2020年09月24日,全5頁,Electronic ISBN: 978-1-7281-9320-5, <DOI: 10.1109/MMSP48831.2020.9287057>.
(58)【調査した分野】(Int.Cl.,DB名)
H04N19/00-19/98
G06T9/00-9/40
CSDB(日本国特許庁)
学術文献等データベース(日本国特許庁)
IEEEXplore(IEEE)
(57)【特許請求の範囲】
【請求項1】
メッシュ解凍のための方法であって:
複数のパッチを含む3次元(3D)メッシュフレームを運ぶビットストリームから属性の配列をデコーディングするステップであって、前記属性の配列は、前記3Dメッシュフレームの頂点に対応し、前記3Dメッシュフレームの前記頂点は、前記複数のパッチにそれぞれ属するサブセットに順序付けられる、ステップと;
前記3Dメッシュフレームの前記頂点の第1のサブセットに対応する前記属性の配列の第1の部分を決定するステップであって、前記第1のサブセットは、第1のパッチに属する、ステップと;
前記頂点の前記第1のサブセットの第1の接続性情報を決定するステップと;
前記属性の配列の前記第1の部分と前記第1の接続性情報に基づいて前記3Dメッシュフレームの前記第1のパッチを再構成するステップと;を含
み、
前記属性の配列をデコーディングする前記ステップは:
前記頂点の3次元座標
を示す3チャネル要素の配列に対応する2次元(2D)イメージをデコーディングするステップ;
前記頂点のuv座標
を示す2チャネル要素の配列に対応する2Dイメージをデコーディングするステップ
;又は
前記頂点のu座標の第1の配列と前記頂点のv座標の第2の配列にそれぞれ対応する第1の2Dイメージと第2の2Dイメージをデコーディングするステップ;のうちの少なくとも1つを含む、
方法。
【請求項2】
前記属性の配列の前記第1の部分を決定する前記ステップは:
前記ビットストリームから、前記3Dメッシュフレームの前記頂点の前記第1のサブセット内の頂点の数を示す第1の値をデコーディングするステップと;
前記第1の値に基づいて前記属性の配列の前記第1の部分を選択するステップと;を含む、
請求項1に記載の方法。
【請求項3】
前記ビットストリームから、前記第1のサブセット内の境界頂点の数を示す第2の値をデコーディングするステップと;
前記第2の値に基づいて前記属性の配列の前記第1の部分から前記境界頂点の属性を決定するステップと;をさらに含む、
請求項
2に記載の方法。
【請求項4】
前記属性の配列の前記第1の部分から、前記第1のサブセット内の他の頂点の前記属性の前に順序付けられた前記境界頂点の前記属性を選択するステップをさらに含む、
請求項
3に記載の方法。
【請求項5】
前記属性は、座標を含み、前記方法は、さらに:
前記境界頂点についての境界座標残差をデコーディングするステップと;
前記境界頂点の回復された座標を取得するために、前記境界頂点の前記座標を前記境界頂点の前記境界座標残差を組み合わせるステップと;を含む、
請求項
3に記載の方法。
【請求項6】
前記境界頂点の前記座標は、前記境界頂点の3次元(3D)座標及び/又は前記境界頂点のuv座標のうちの少なくとも1つを含み、前記境界頂点についての前記境界座標残差は、境界3D座標残差及び/又は境界uv座標残差のうちの少なくとも1つを含む、
請求項
5に記載の方法。
【請求項7】
第1の頂点と第2の頂点が同じ座標を持つことを検出するステップと;
前記再構成するステップから、前記第1の頂点と前記第2の頂点のうちの1つを削除するステップと;をさらに含む、
請求項
5に記載の方法。
【請求項8】
前記第1のパッチの非境界頂点が前記第1のパッチの前記境界頂点によって形成される境界の外側にあることを検出するステップと;
前記非境界頂点なしで前記3Dメッシュフレームの前記第1のパッチを再構成するステップと;をさらに含む、
請求項
5に記載の方法。
【請求項9】
前記頂点の前記第1のサブセットの前記第1の接続性情報を決定するステップはさらに:
前記頂点の前記第1のサブセットの前記第1の接続性情報を推測するステップを含む、
請求項1に記載の方法。
【請求項10】
前記頂点の前記第1のサブセットの前記第1の接続性情報を決定するステップはさらに:
前記ビットストリームから、前記頂点の前記第1のサブセットの前記第1の接続性情報をデコーディングするステップを含む、
請求項1に記載の方法。
【請求項11】
メッシュ解凍のための装置であって、請求項1乃至
10のいずれか1項に記載の方法を実行するように構成された処理回路を有する、
装置。
【請求項12】
コンピュータによって実行されるとき前記コンピュータの少なくとも1つのプロセッサに、請求項1乃至
10のいずれか1項に記載の方法を実行させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
[参照による援用]
本出願は、2022年9月6日に出願された米国特許出願第17/903,505号「VERTEX REORDERING FOR MESH COMPRESSION」に対する優先権の利益を主張するものであり、当該出願は、2021年9月8日に出願された米国仮出願第63/241,876号「Vertex Reordering for Mesh Compression」に対する優先権の利益を主張するものである。先の出願の開示の全内容を参照により援用する。
【0002】
[技術分野]
本開示は、概してメッシュコーディング(符号化)に関連する実施形態を記載する。
【背景技術】
【0003】
本明細書で提供される背景説明は、本開示の文脈を概括的に提示するためのものである。本願で名前が挙がっている発明者の仕事であってその仕事がこの背景セクションに記載されている範囲におけるもの、また、その他の点で出願時に先行技術として適格でないことがあり得る本記述の態様は、明示的にも暗黙的にも本開示に対する先行技術として認められない。
【0004】
様々な技術が、3次元(3D)空間において、ワールド(world)内の物体、ワールド内の環境など、ワールドをキャプチャし、表すための開発されている。ワールドの3D表現は、より没入型の(immersive)形態のインタラクション(interaction)及びコミュニケーションを可能にする。いくつかの例では、ポイントクラウド(point clouds)及びメッシュをワールドの3D表現として使用することができる。
【発明の概要】
【0005】
本開示の態様は、メッシュコーディング(例えば、圧縮及び解凍(decompression))のための方法及び装置を提供する。いくつかの例では、メッシュコーディングのための装置が処理回路を含む。処理回路は、複数のパッチを含む3次元(3D)メッシュフレームを運ぶビットストリームから属性の配列(array)をデコーディングする。属性の配列は、3Dメッシュフレームの頂点に対応する。3Dメッシュフレームの頂点は、複数のパッチにそれぞれ属するサブセットに順序付けられる。処理回路は、3Dメッシュフレームの頂点の第1のサブセットに対応する属性の配列の第1の部分を決定する。第1のサブセットは、複数のパッチ内の第1のパッチに属する。処理回路は、頂点の第1のサブセットの第1の接続性情報(connectivity information)を決定し、属性の配列の第1の部分と第1の接続性情報に基づいて3Dメッシュフレームの第1のパッチを再構成する。
【0006】
一例では、処理回路は、頂点の3次元座標の配列に対応する2次元(2D)イメージをデコーディングする。別の例では、処理回路は、頂点のuv座標の配列に対応する2Dイメージをデコーディングする。別の例では、処理回路は、頂点のu座標の第1の配列と頂点のv座標の第2の配列にそれぞれ対応する第1の2Dイメージと第2の2Dイメージをデコーディングする。
【0007】
いくつかの例では、処理回路は、ビットストリームから、3Dメッシュフレームの頂点の第1のサブセット内の頂点の数を示す第1の値をデコーディングし、第1の値に基づいて属性の配列の第1の部分を選択する。さらに、一例では、処理回路は、ビットストリームから、第1のサブセット内の境界頂点の数を示す第2の値をデコーディングし、第2の値に基づいて属性の配列の第1の部分から境界頂点の属性を決定する。
【0008】
いくつかの例では、処理回路は、属性の配列の第1の部分から、第1のサブセット内の他の頂点の属性の前に順序付けられた境界頂点の属性を選択する。
【0009】
いくつかの例では、属性は、座標を含み、処理回路は、境界頂点についての境界座標残差(boundary coordinate residuals)をデコーディングし、境界頂点の座標と境界頂点の境界座標残差を組み合わせて、境界頂点の回復された座標を取得する。境界頂点の座標は、境界頂点の3次元(3D)座標及び/又は境界頂点のuv座標であることができ、境界頂点についての境界座標残差は、境界3D座標残差及び/又は境界uv座標残差であることができる。
【0010】
いくつかの例では、処理回路は、第1の頂点と第2の頂点が同じ座標を持つことを検出し、第1のパッチの再構成から第1の頂点と第2の頂点のうちの1つを削除する。
【0011】
いくつかの例では、処理回路は、第1のパッチの非境界頂点が第1のパッチの境界頂点によって形成される境界(境界エッジ)の外側にあることを検出し、処理回路は、非境界頂点を削除し、非境界頂点なしで3Dメッシュフレームの第1のパッチを再構成する。
【0012】
いくつかの例では、処理回路は、頂点の第1のサブセットの第1の接続性情報を推測する。いくつかの他の例では、処理回路は、ビットストリームから頂点の第1のサブセットの第1の接続性情報をデコーディングする。
【0013】
本開示の態様はまた、コンピュータによって実行されるときコンピュータにメッシュコーディングのための方法のいずれか又は組み合わせを実行させる命令を格納する非一時的コンピュータ可読媒体を提供する。
【図面の簡単な説明】
【0014】
開示された主題のさらなる特徴、性質、及び様々な利点は、以下の詳細な説明及び添付の図面からより明白になるであろう。
【0015】
【
図1】いくつかの例における通信システムのブロック図を示す。
【0016】
【
図2】いくつかの例におけるストリーミングシステムのブロック図を示す。
【0017】
【
図3】いくつかの例におけるポイントクラウドフレームをエンコーディングするためのエンコーダのブロック図を示す。
【0018】
【
図4】いくつかの例におけるポイントクラウドフレームに対応する圧縮ビットストリームをデコーディングするためのデコーダのブロック図を示す。
【0019】
【
図5】いくつかの例におけるビデオデコーダのブロック図を示す。
【0020】
【
図6】いくつかの例におけるビデオエンコーダのブロック図を示す。
【0021】
【
図7】いくつかの例におけるポイントクラウドフレームをエンコーディングするエンコーダのブロック図を示す。
【0022】
【
図8】いくつかの例におけるポイントクラウドフレームを運ぶ圧縮ビットストリームをデコーディングするデコーダのブロック図を示す。
【0023】
【
図9】いくつかの例にけるメッシュのアトラスへのマッピングを示す図を示す。
【0024】
【
図10】いくつかの例における2つのUVアトラスフレームを示す図を示す。
【0025】
【
図11】本開示のいくつかの実施形態によるメッシュ圧縮のフレームワークの図を示す。
【0026】
【
図12】本開示のいくつかの実施形態によるメッシュ圧縮のためのフレームワークの図を示す。
【0027】
【
図13】本開示のいくつかの実施形態によるメッシュ内の頂点を並べ替えるプロセスの概要を示すフローチャートを示す。
【0028】
【
図14】いくつかの例におけるプロセス例の概要を示すフローチャートを示す。
【0029】
【
図15】いくつかの例におけるプロセス例の概要を示すフローチャートを示す。
【0030】
【
図16】いくつかの例におけるコンピュータシステムの概略図である。
【発明を実施するための形態】
【0031】
本開示の態様は、3次元(3D)メディア処理の分野における技術を提供する。
【0032】
3次元(3D)キャプチャ、3Dモデリング、及び3Dレンダリングの進歩など、3Dメディア処理における技術開発は、いくつかのプラットフォーム及びデバイスにわたって3Dメディアコンテンツのユビキタスな存在を促進した。一例では、赤ちゃんの第一歩をある大陸でキャプチャすることができ、メディア技術は祖父母が別の大陸で赤ちゃんとの没入体験を視聴(及び場合によっては交流)して楽しむことを可能にする。開示の一態様によると、没入体験を向上させるために、3Dモデルはますます洗練されてきており、3Dモデルの作成と消費は、データストレージ、データ伝送リソースなど、かなりの量のデータリソースを占めている。
【0033】
本開示のいくつかの態様によると、ポイントクラウド及びメッシュを、没入型コンテンツ(immersive contents)を表現するために3Dモデルとして使用することができる。
【0034】
ポイントクラウドは、一般に、色、材料特性、テクスチャ情報、強度属性、反射属性、モーション関連属性、モダリティ属性、及びその他のさまざまな属性などの関連属性を持つ、3D空間内のポイント(points)のセットを指し得る。ポイントクラウドは、そのようなポイントの構成(composition)としてオブジェクト又はシーンを再構成するために使用することができる。
【0035】
オブジェクトのメッシュ(メッシュモデルとも呼ばれる)は、オブジェクトのサーフェスを記述するポリゴンを含むことができる。各ポリゴンは、3D空間内のポリゴンの頂点と、頂点がポリゴンにどのように接続されているかの情報によって定義することができる。頂点がどのように接続されているかの情報は、接続性情報と呼ばれる。いくつかの例では、メッシュはまた、頂点に関連付けられた色、法線などの属性を含むことができる。
【0036】
本開示のいくつかの態様によると、ポイントクラウド圧縮(PCC)のためのいくつかのコーディングツールをメッシュ圧縮に使用することができる。例えば、メッシュは、新しいメッシュの接続性情報を推測することができる新しいメッシュを生成するために、再メッシュされることができる。新しいメッシュの頂点、及び新しいメッシュの頂点に関連付けられた属性は、ポイントクラウド内のポイントと見なすことができ、PCCコーデックを使用して圧縮されることができる。
【0037】
ポイントクラウドは、オブジェクト又はシーンをポイントの構成として再構成するために使用することができる。ポイントは、複数のカメラ、深度センサ、又はライダー(Lidar)をさまざまな設定で使用してキャプチャすることができ、再構成されたシーン又はオブジェクトをリアルに表現するために、数千から数十億のポイントで構成される場合がある。パッチが、概して、ポイントクラウドによって記述されるサーフェスの連続したサブセットを指す場合がある。一例では、パッチは、しきい値量未満で互いにずれているサーフェス(表面)法線ベクトルを持つポイントを含む。
【0038】
PCCは、G-PCCと呼ばれるジオメトリベースのスキーム、V-PCCと呼ばれるビデオコーディングベースのスキームなど、さまざまなスキームに従って実行することができる。本開示のいくつかの態様によると、G-PCCは3Dジオメトリを直接エンコーディングし、ビデオコーディングと共有することがあまりない純粋にジオメトリベースのアプローチであり、V-PCCはビデオコーディングに大きく基づいている。例えば、V-PCCは3Dクラウドのポイントを2Dグリッド(イメージ)のピクセルにマッピングすることができる。V-PCCスキームは、ポイントクラウド圧縮のために汎用ビデオコーデックを利用することができる。本開示におけるPCCコーデック(エンコーダ/デコーダ)は、G-PCCコーデック(エンコーダ/デコーダ)又はV-PCCコーデックとすることができる。
【0039】
本開示の一態様によると、V-PCCスキームは、ポイントクラウドのジオメトリ、占有率(occupancy)及びテクスチャを3つの別個のビデオシーケンスとして圧縮するために、既存のビデオコーデックを使用することができる。3つのビデオシーケンスを解釈するために必要な追加のメタデータは、別々に圧縮される。全体のビットストリームのごく一部がメタデータであり、これは、一例ではソフトウェア実装を使用して効率的にエンコーディング/デコーディングできる。情報の大部分はビデオコーデックによって処理される。
【0040】
図1は、いくつかの例における通信システム(100)のブロック図を示す。通信システム(100)は、例えばネットワーク(150)を介して相互に通信できる複数の端末装置を含む。例えば、通信システム(100)は、ネットワーク(150)を介して相互に接続された端末装置(110)と(120)のペアを含む。
図1の例では、端末装置(110)と(120)の第1のペアは、ポイントクラウドデータの単方向伝送を行い得る。例えば、端末装置(110)は、端末装置(110)と接続されたセンサ(105)によってキャプチャされたポイントクラウド(例えば、構造を表すポイント)を圧縮し得る。圧縮されたポイントクラウドは、例えばビットストリームの形で、ネットワーク(150)を介して他の端末装置(120)に送信されることができる。端末装置(120)は、ネットワーク(150)から圧縮されたポイントクラウドを受信し、ポイントクラウドを再構成するためにビットストリームを解凍し、再構成されたポイントクラウドを適切に表示し得る。一方向データ伝送は、メディアサービスアプリケーションなどで一般的である。
【0041】
図1の例では、端末装置(110)及び(120)は、サーバ、及びパーソナルコンピュータとして図示されることができるが、本開示の原理はそのように限定されない。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲーム端末、メディアプレーヤー、及び/又は専用の3次元(3D)機器での適用を見出す。ネットワーク(150)は、端末装置(110)と(120)との間で圧縮されたポイントクラウドを送信する任意の数のネットワークを表す。ネットワーク(150)は、例えばワイヤライン(有線)及び/又は無線通信ネットワークを含むことができる。ネットワーク(150)は、回線交換チャネル及び/又はパケット交換チャネルでデータを交換し得る。代表的なネットワークは、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、インターネットなどを含む。
【0042】
図2は、いくつかの例におけるストリーミングシステム(200)のブロック図を示す。ストリーミングシステム(200)は、ポイントクラウドの利用アプリケーションである。開示された主題は、3Dテレプレゼンスアプリケーション、仮想現実アプリケーションなど、他のポイントクラウド対応アプリケーションに同様に適用可能であることができる。
【0043】
ストリーミングシステム(200)は、キャプチャサブシステム(213)を含み得る。キャプチャサブシステム(213)は、ポイントクラウドソース(201)、例えば非圧縮のポイントクラウド(202)を生成する、例えば光検出及び測距(ライダー)システム、三次元カメラ、三次元スキャナ、ソフトウェアで非圧縮のポイントクラウドを生成するグラフィックス生成コンポーネントなどを含むことができる。一例では、ポイントクラウド(202)は3Dカメラによってキャプチャされるポイントを含む。ポイントクラウド(202)は、圧縮されたポイントクラウド(204)(圧縮されたポイントクラウドのビットストリーム)と比較して高いデータ量を強調するために太線で示されている。圧縮されたポイントクラウド(204)は、ポイントクラウドソース(201)に結合されたエンコーダ(203)を含む電子デバイス(220)によって生成することができる。エンコーダ(203)は、以下により詳細に説明されるように、開示された主題の態様を有効化又は実装するために、ハードウェア、ソフトウェア、又はそれらの組み合わせを含むことができる。圧縮されたポイントクラウド(204)(又は圧縮されたポイントクラウドのビットストリーム(204))は、ポイントクラウド(202)のストリームと比較して低いデータ量を強調するために細い線として表現され、将来の使用のためにストリーミングサーバ(205)に格納することができる。
図2のクライアントサブシステム(206)及び(208)などの1つ以上のストリーミングクライアントサブシステムは、圧縮されたポイントクラウド(204)のコピー(207)及び(209)を取得するために、ストリーミングサーバ(205)にアクセスすることができる。クライアントサブシステム(206)は、例えば電子デバイス(230)にデコーダ(210)を含むことができる。デコーダ(210)は、圧縮されたポイントクラウドの入ってくる(incoming)コピー(207)をデコーディングし、レンダリングデバイス(212)でレンダリングできる再構成されたポイントクラウド(211)の出ていく(outgoing)ストリームを作成する。
【0044】
電子デバイス(220)及び(230)は、他のコンポーネント(図示せず)を含むことができることが留意される。例えば、電子デバイス(220)は、デコーダ(図示せず)を含むことができ、電子デバイス(230)はエンコーダ(図示せず)を含むこともできる。
【0045】
一部のストリーミングシステムでは、圧縮されたポイントクラウド(204)、(207)及び(209)(例えば、圧縮されたポイントクラウドのビットストリーム)を特定の標準に従って圧縮することができる。いくつかの例では、ポイントクラウドの圧縮にビデオコーディング標準が使用される。これらの標準の例は、高効率ビデオコーディング(HEVC)、バーサタイルビデオコーディング(VVC)などを含む。
【0046】
図3は、いくつかの実施形態による、ポイントクラウドフレームをエンコーディングするためのV-PCCエンコーダ(300)のブロック図を示している。いくつかの実施形態では、V-PCCエンコーダ(300)を通信システム(100)及びストリーミングシステム(200)で使用することができる。例えば、エンコーダ(203)は、V-PCCエンコーダ(300)と同様の方法で構成及び動作することができる。
【0047】
V-PCCエンコーダ(300)は、ポイントクラウドフレームを非圧縮入力として受信し、圧縮されたポイントクラウドフレームに対応するビットストリームを生成する。いくつかの実施形態では、V-PCCエンコーダ(300)は、ポイントクラウドソース(201)などのポイントクラウドソースからポイントクラウドフレームを受信し得る。
【0048】
図3の例では、V-PCCエンコーダ(300)は、パッチ生成モジュール(306)、パッチパッキングモジュール(308)、ジオメトリイメージ生成モジュール(310)、テクスチャイメージ生成モジュール(312)、パッチ情報モジュール(304)、占有率(occupancy)マップモジュール(314)、スムージングモジュール(336)、イメージパディングモジュール(316)及び(318)、グループ拡張モジュール(320)、ビデオ圧縮モジュール(322)、(323)及び(332)、補助パッチ情報圧縮モジュール(338)、エントロピー圧縮モジュール(334)、マルチプレクサ(324)を含む。
【0049】
本開示の一態様によると、V-PCCエンコーダ(300)は、圧縮されたポイントクラウドを解凍されたポイントクラウドに変換して戻すために使用されるいくつかのメタデータ(例えば、占有率マップ及びパッチ情報)とともに、3Dポイントクラウドフレームをイメージベースの表現に変換する。いくつかの例では、V-PCCエンコーダ(300)は、3Dポイントクラウドフレームをジオメトリイメージ、テクスチャイメージ及び占有率マップに変換し、その後、ジオメトリイメージ、テクスチャイメージ及び占有率マップをビットストリームにエンコーディングするためにビデオコーディング技術を使用することができる。概して、ジオメトリイメージは、ピクセルに投影されたポイントに関連付けられたジオメトリ値で満たされた(filled)ピクセルを持つ2Dイメージであり、ジオメトリ値で満たされたピクセルをジオメトリサンプルと呼ぶことができる。テクスチャイメージは、ピクセルに投影されたポイントに関連付けられたテクスチャ値で満たされたピクセルを持つ2Dイメージであり、テクスチャ値で満たされたピクセルをテクスチャサンプルと呼ぶことができる。占有率マップは、パッチによって占有又は占有されていないことを示す値で満たされたピクセルを持つ2Dイメージである。
【0050】
パッチ生成モジュール(306)は、ポイントクラウドをパッチのセット(例えば、パッチはポイントクラウドによって記述されるサーフェスの連続したサブセットとして定義される)にセグメント化し、これは、各パッチが2D空間内の平面に対する深度フィールドによって記述され得るように、パッチは重複していてもいなくてもよい。いくつかの実施形態では、パッチ生成モジュール(306)は、再構成エラーを最小限に抑えながら、スムーズな境界を持つパッチの最小数にポイントクラウドを分解することを目的としている。
【0051】
いくつかの例では、パッチ情報モジュール(304)は、パッチのサイズ及び形状を示すパッチ情報を収集することができる。いくつかの例では、パッチ情報は、イメージフレームにパックされ、その後、圧縮された補助パッチ情報を生成するために補助パッチ情報圧縮モジュール(338)によってエンコーディングされることができる。
【0052】
いくつかの例では、パッチパッキングモジュール(308)は、未使用スペースを最小限に抑え、グリッドのすべてのM×M(例えば、16×16)ブロックがユニークなパッチに関連付けられることを保証しながら、抽出されたパッチを2次元(2D)グリッドにマップするように構成される。効率的なパッチパッキングは、未使用スペースを最小限に抑える又は時間的一貫性を確保することによって、圧縮効率に直接影響を与えることができる。
【0053】
ジオメトリイメージ生成モジュール(310)は、所与のパッチ位置でポイントクラウドのジオメトリに関連付けられた2Dジオメトリイメージを生成することができる。テクスチャイメージ生成モジュール(312)は、所与のパッチ位置でポイントクラウドのテクスチャに関連付けられた2Dテクスチャイメージを生成することができる。ジオメトリイメージ生成モジュール(310)及びテクスチャイメージ生成モジュール(312)は、ポイントクラウドのジオメトリ及びテクスチャをイメージとして格納するために、パッキングプロセス中に計算された3Dから2Dへのマッピングを利用する。複数のポイントが同じサンプルに投影される場合をより適切に処理するために、各パッチはレイヤーと呼ばれる2つのイメージに投影される。一例では、ジオメトリイメージは、YUV 420-8ビット形式のWxHの単色フレームで表される。テクスチャイメージを生成するために、再サンプリングされたポイントに関連付けられる色を計算するために、テクスチャ生成プロシージャは再構成/スムージングされた(smoothed)ジオメトリを利用する。
【0054】
占有率マップモジュール(314)は、各ユニットのパディング情報を記述する占有率マップを生成することができる。例えば、占有率イメージは、グリッドの各セルについて、セルが空のスペースに属しているかポイントクラウドに属しているかを示すバイナリマップを含む。一例では、占有率マップは、各ピクセルについて、ピクセルがパディングされているか否かを記述するバイナリ情報を使用する。別の例では、占有率マップは、ピクセルの各ブロックについて、ピクセルのブロックがパディングされているか否かを記述するバイナリ情報を使用する。
【0055】
占有率マップモジュール(314)によって生成された占有率マップは、可逆(ロスレス)コーディング(lossless coding)又は不可逆(ロッシー)コーディング(lossy coding)を使用して圧縮することができる。可逆コーディングを使用する場合、エントロピー圧縮モジュール(334)は、占有率マップを圧縮するために使用される。不可逆コーディングを使用する場合、ビデオ圧縮モジュール(332)は、占有率マップを圧縮するために使用される。
【0056】
パッチパッキングモジュール(308)は、イメージフレームにパックされた2Dパッチの間にいくつかの空のスペースを残す可能性があることが留意される。イメージパディングモジュール(316)及び(318)は、2Dビデオ及びイメージコーデックに適し得るイメージフレームを生成するために、空のスペースを埋めることができる(パディングと呼ばれる)。イメージパディングは、冗長な情報で未使用のスペースを埋めることができるバックグラウンド充填(background filling)とも呼ばれる。いくつかの例では、良好なバックグラウンド充填は、ビットレートを最小限に増加させる一方で、パッチ境界の周りに重大なコーディングの歪みを導入しない。
【0057】
ビデオ圧縮モジュール(322)、(323)、(332)は、HEVC、VVCなどの適切なビデオコーディング標準に基づいて、パディングされたジオメトリイメージ、パディングされたテクスチャイメージ、占有率マップなどの2Dイメージをエンコーディングすることができる。一例では、ビデオ圧縮モジュール(322)、(323)、(332)は、個別に動作する個々のコンポーネントである。ビデオ圧縮モジュール(322)、(323)、(332)は、別の例では、単一のコンポーネントとして実装することができることが留意される。
【0058】
いくつかの例では、スムージングモジュール(336)が、再構成されたジオメトリイメージのスムージングされたイメージを生成するように構成される。スムージングされたイメージは、テクスチャイメージ生成(312)に提供できる。次に、テクスチャイメージ生成(312)は、再構成されたジオメトリイメージに基づいてテクスチャイメージの生成を調整し得る。例えば、エンコーディング及びデコーディング中にパッチシェイプ(例えば、ジオメトリ)がわずかに歪んだ場合、その歪みは、パッチシェイプの歪みを補正するために、テクスチャイメージを生成するときに考慮され得る。
【0059】
いくつかの実施形態では、グループ拡張(320)は、再構成されたポイントクラウドの視覚的品質だけでなく、コーディングゲインを改善するために、冗長な低周波コンテンツを持つオブジェクト境界の周囲のピクセルをパディングするように構成される。
【0060】
マルチプレクサ(324)は、圧縮されたジオメトリイメージ、圧縮されたテクスチャイメージ、圧縮された占有率マップ、圧縮された補助パッチ情報を圧縮されたビットストリームに多重化することができる。
【0061】
図4は、いくつかの例において、ポイントクラウドフレームに対応する圧縮されたビットストリームをデコーディングするためのV-PCCデコーダ(400)のブロック図を示す。いくつかの例では、V-PCCデコーダ(400)は、通信システム(100)及びストリーミングシステム(200)で使用することができる。例えば、デコーダ(210)は、V-PCCデコーダ(400)と同様の方法で動作するように構成することができる。V-PCCデコーダ(400)は、圧縮されたビットストリームを受信し、圧縮されたビットストリームに基づいて再構成されたポイントクラウドを生成する。
【0062】
図4の例では、V-PCCデコーダ(400)は、デマルチプレクサ(432)、ビデオ解凍モジュール(434)及び(436)、占有率マップ解凍モジュール(438)、補助パッチ情報解凍モジュール(442)、ジオメトリ再構成モジュール(444)、スムージングモジュール(446)、テクスチャ再構成モジュール(448)及びカラースムージングモジュール(452)を含む。
【0063】
デマルチプレクサ(432)は、圧縮されたビットストリームを受信し、圧縮されたテクスチャイメージ、圧縮されたジオメトリイメージ、圧縮された占有率マップ、及び圧縮された補助パッチ情報に分離することができる。
【0064】
ビデオ解凍モジュール(434)及び(436)は、適切な標準(例えば、HEVC、VVCなど)に従って圧縮されたイメージをデコーディングし、解凍されたイメージを出力することができる。例えば、ビデオ解凍モジュール(434)は、圧縮されたテクスチャイメージをデコーディングし、解凍されたテクスチャイメージを出力する。ビデオ解凍モジュール(436)は、圧縮されたジオメトリイメージをデコーディングし、解凍されたジオメトリイメージを出力する。
【0065】
占有率マップ解凍モジュール(438)は、適切な標準(例えば、HEVC、VVCなど)に従って圧縮された占有率マップをデコーディングし、解凍された占有率マップを出力することができる。
【0066】
補助パッチ情報解凍モジュール(442)は、適切な標準(例えば、HEVC、VVCなど)に従って圧縮された補助パッチ情報をデコーディングし、解凍された補助パッチ情報を出力することができる。
【0067】
ジオメトリ再構成モジュール(444)は、解凍されたジオメトリイメージを受信し、解凍された占有率マップ及び解凍された補助パッチ情報に基づいて再構成されたポイントクラウドジオメトリを生成することができる。
【0068】
スムージングモジュール(446)は、パッチのエッジで不一致(incongruences)をスムージングすることができる。スムージング手順は、圧縮アーティファクトによってパッチ境界で発生する可能性のある潜在的な不連続性を緩和することを目的としている。いくつかの実施形態では、スムージングフィルタが、圧縮/解凍によって発生する可能性のある歪みを緩和するために、パッチ境界に位置するピクセルに適用され得る。
【0069】
テクスチャ再構成モジュール(448)は、解凍されたテクスチャイメージ及びスムージングジオメトリに基づいて、ポイントクラウド内のポイントのテクスチャ情報を決定することができる。
【0070】
カラースムージングモジュール(452)は、カラーリングの不一致をスムージングすることができる。3D空間の隣接しないパッチは、しばしば、2Dビデオでは互いに隣接してパックされる。いくつかの例では、隣接しないパッチからのピクセル値がブロックベースのビデオコーデックによって混同されることがある。カラースムージングの目的は、パッチ境界に現れる目に見えるアーティファクトを減らすことである。
【0071】
図5は、いくつかの例におけるビデオデコーダ(510)のブロック図を示している。ビデオデコーダ(510)は、V-PCCデコーダ(400)で使用することができる。例えば、ビデオ解凍モジュール(434)及び(436)、占有率マップ解凍モジュール(438)は、ビデオデコーダ(510)として同様に構成することができる。
【0072】
ビデオデコーダ(510)は、コーディングされたビデオシーケンスなどの圧縮イメージからシンボル(521)を再構成するパーサ(520)を含み得る。これらのシンボルのカテゴリは、ビデオデコーダ(510)の動作を管理するために使用される情報を含む。パーサ(520)は、受信されたコーディングされたビデオシーケンスを解析/エントロピーデコーディングすることができる。コーディングされたビデオシーケンスのコーディングは、ビデオコーディング技術又は標準に従うことができ、可変長コーディング、ハフマンコーディング、コンテキスト感度有りの又は無しの算術コーディングなど、さまざまな原理に従うことができる。パーサ(520)は、グループに対応する少なくとも1つのパラメータに基づいて、ビデオデコーダ内のピクセルのサブグループの少なくとも1つのサブグループパラメータのセットを、コード化されたビデオシーケンスから抽出し得る。サブグループは、ピクチャのグループ(Group of Pictures)(GOP)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(Coding Units)(CU)、ブロック、変換ユニット(Transform Units)(TU)、予測ユニット(Prediction Units)(PU)などを含むことができる。パーサ(520)は、また、変換係数、量子化パラメータ値、動きベクトルなどのコーディングされたビデオシーケンス情報から抽出され得る。
【0073】
パーサ(520)は、シンボル(521)を作成するために、バッファメモリから受信したビデオシーケンスに対してエントロピーデコーディング/解析動作を実行し得る。
【0074】
シンボル(521)の再構成は、コーディングされたビデオピクチャ又はその一部(インター及びイントラピクチャ、インター及びイントラブロックなど)の種類、及びその他の要因に応じて、複数の異なるユニットを含むことができる。どのユニットが関与し、どのように関与するかは、パーサ(520)によってコーディングされたビデオシーケンスから解析されたサブグループ制御情報によって制御することができる。パーサ(520)と以下の複数のユニットとの間のこのようなサブグループ制御情報の流れは、明確にするために描かれていない。
【0075】
既に述べた機能ブロックを超えて、ビデオデコーダ(510)は、以下に説明するように、概念的にいくつかの機能ユニットに細分化することができる。商業的制約の下で動作する実用的な実装では、これらのユニットの多くは、相互に密接に相互作用し、少なくとも部分的には相互に統合することができる。しかし、開示された主題を説明する目的では、以下の機能ユニットへの概念的な細分化が適切である。
【0076】
第1のユニットは、スケーラ/逆変換ユニット(551)である。スケーラ/逆変換ユニット(551)は、量子化された変換係数だけでなく、どの変換を使用するか、ブロックサイズ、量子化係数、量子化スケーリング行列などをシンボル(複数可)(521)として含む制御情報をパーサ(520)から受信する。スケーラ/逆変換ユニット(551)は、アグリゲータ(555)に入力されることができるサンプル値を含むブロックを出力することができる。
【0077】
場合によっては、スケーラ/逆変換(551)の出力サンプルは、イントラコーディングされたブロックに関係することができる;すなわち:以前に再構成されたピクチャからの予測情報を使用していないが、現在のピクチャの以前に再構成された部分からの予測情報を使用することができるブロック。このような予測情報は、イントラピクチャ予測ユニット(552)によって提供することができる。場合によっては、イントラピクチャ予測ユニット(552)は、現在のピクチャバッファ(558)からフェッチされた(fetched)周囲の既に再構成された情報を使用して、再構成中のブロックと同じサイズ及び形状のブロックを生成する。現在のピクチャバッファ(558)は、例えば、部分的に再構成された現在のピクチャ及び/又は完全に再構成された現在のピクチャをバッファする。アグリゲータ(555)は、場合によっては、スケーラ/逆変換ユニット(551)によって提供される出力サンプル情報に、イントラ予測ユニット(552)が生成した予測情報を、サンプルベースで追加する。
【0078】
他の場合には、スケーラ/逆変換ユニット(551)の出力サンプルは、インターコーディングされた、潜在的に動き補償ブロックに関係することができる。このような場合、動き補償予測ユニット(553)は、予測に使用されるサンプルをフェッチするために参照ピクチャメモリ(557)にアクセスすることができる。ブロックに関連するシンボル(521)に従って、フェッチされたサンプルを動き補償した後、これらのサンプルは、出力サンプル情報を生成するために、アグリゲータ(555)によってスケーラ/逆変換ユニット(551)の出力(この場合、残差サンプル又は残差信号と呼ばれる)に追加することができる。動き補償予測ユニット(553)が予測サンプルをフェッチする参照ピクチャメモリ(557)内のアドレスは、動きベクトルによって制御することができ、例えばX、Y、及び参照ピクチャコンポーネントを有することができるシンボル(521)の形式で動き補償予測ユニット(553)に利用可能であることができる。動き補償は、また、サブサンプルの正確な動きベクトルが使用されているときに参照ピクチャメモリ(557)からフェッチされたサンプル値の補間、動きベクトル予測メカニズムなどを含むことができる。
【0079】
アグリゲータ(555)の出力サンプルは、ループフィルタユニット(556)でさまざまなループフィルタリング技術の対象とすることができる。ビデオ圧縮技術は、コーディングされたビデオシーケンス(コーディングされたビデオビットストリームとも呼ばれる)に含まれるパラメータによって制御され、パーサ(520)からシンボル(521)としてループフィルタユニット(556)に利用可能にされるインループフィルタ技術を含むことができるが、コーディングされたピクチャ又はコーディングされたビデオシーケンスの以前の(デコーディング順の)部分のデコーディング中に取得されたメタ情報に応答したり、以前に再構成されループフィルタリングされたサンプル値に応答したりすることもできる。
【0080】
ループフィルタユニット(556)の出力は、レンダーデバイスに出力できるだけでなく、将来のインターピクチャ予測で使用するために参照ピクチャメモリ(557)に格納することができるサンプルストリームにすることができる。
【0081】
特定のコーディングされたピクチャは、完全に再構成されると、将来の予測のための参照ピクチャとして使用することができる。例えば、現在のピクチャに対応するコーディングされたピクチャが完全に再構成され、コーディングされたピクチャが参照ピクチャとして識別されたら(例えばパーサ(520)によって)、現在のピクチャバッファ(558)を参照ピクチャメモリ(557)の一部にすることができ、次のコーディングされたピクチャの再構成を開始する前に新しい現在のピクチャバッファを再割り当てすることができる。
【0082】
ビデオデコーダ(510)は、ITU-T勧告H.265などの標準で、所定のビデオ圧縮技術に従ってデコード操作を実行することができる。コーディングされたビデオシーケンスは、コーディングされたビデオシーケンスがビデオ圧縮技術又は標準のシンタックス及びビデオ圧縮技術又は標準に記載されているプロファイルの両方に準拠しているという意味で、使用されているビデオ圧縮技術又は標準によって指定されたシンタックスに準拠し得る。具体的には、プロファイルは、ビデオ圧縮技術又は標準で使用可能なすべてのツールから、そのプロファイルで使用可能な唯一のツールとして特定のツールを選択できる。また、コンプライアンスに必要なのは、コーディングされたビデオシーケンスの複雑さが、ビデオ圧縮技術又は標準のレベルによって定義される範囲内にあることであることができる。場合によっては、レベルは、最大ピクチャサイズ、最大フレームレート、最大再構成サンプルレート(例えばメガサンプル/秒などで測定される)、最大参照ピクチャサイズなどを制限する。レベルによって設定された制限は、場合によっては、コーディングされたビデオシーケンスでシグナリングされる(signaled)仮想参照デコーダ(HRD)仕様及びHRDバッファ管理のためのメタデータによってさらに制限されることができる。
【0083】
図6は、本開示の一実施形態によるビデオエンコーダ(603)のブロック図を示す。ビデオエンコーダ(603)は、ポイントクラウドを圧縮するV-PCCエンコーダ(300)で使用することができる。一例では、ビデオ圧縮モジュール(322)及び(323)、並びにビデオ圧縮モジュール(332)は、エンコーダ(603)と同様に構成される。
【0084】
ビデオエンコーダ(603)は、パディングされたジオメトリイメージ、パディングされたテクスチャイメージなどのイメージを受信し、圧縮されたイメージを生成し得る。
【0085】
一実施形態によれば、ビデオエンコーダ(603)は、リアルタイムで、又はアプリケーションによって要求されるその他の時間制約の下で、ソースビデオシーケンス(イメージ)のピクチャをコーディングし、コーディングされたビデオシーケンス(圧縮されたイメージ)に圧縮し得る。適切なコーディング速度を強制することは、コントローラ(650)の機能の1つである。いくつかの実施形態では、コントローラ(650)は、以下に説明するように他の機能ユニットを制御し、他の機能ユニットに機能的に結合される。明確にするために結合は描かれていない。コントローラ(650)によって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化、レート歪み最適化手法のラムダ値、...)、ピクチャサイズ、ピクチャのグループ(GOP)レイアウト、最大動きベクトル検索範囲などを含むことができる。コントローラ(650)は、特定のシステム設計に最適化されたビデオエンコーダ(603)に関連する他の適切な機能を持つように構成することができる。
【0086】
いくつかの実施形態では、ビデオエンコーダ(603)は、コーディングループで動作するように構成される。過度に単純化された説明として、一例では、コーディングループは、ソースコーダ(630)(例えば、コーディングされる入力ピクチャと、参照ピクチャ(複数可)に基づいて、シンボルストリームなどのシンボルを作成する責任がある)と、ビデオエンコーダ(603)に埋め込まれた(ローカル)デコーダ(633)を含むことができる。デコーダ(633)は、(リモート)でコーダが作成するのと同様の方法でサンプルデータを作成するためにシンボルを再構成する(開示された主題で考慮されるビデオ圧縮技術では、シンボルとコーディングされたビデオビットストリームとの間の圧縮は可逆であるため)。再構成されたサンプルストリーム(サンプルデータ)は、参照ピクチャメモリ(634)に入力される。シンボルストリームのデコーディングはデコーダの場所(ローカル又はリモート)に依存しないビット正確な結果をもたらすため、参照ピクチャメモリ(634)内のコンテンツもローカルエンコーダとリモートエンコーダとの間でビット正確である。言い換えると、エンコーダの予測部分は、デコーディング中に予測を使用する場合にデコーダが「見る」サンプル値とまったく同じサンプル値を参照ピクチャサンプルとして「見る」。この参照ピクチャの同期性(チャネルエラーなどで同期性を維持できない場合は、結果としてドリフトが発生する)の基本原理は、いくつかの関連技術でも使用されている。
【0087】
「ローカル」デコーダ(633)の動作は、すでに
図5と併せて詳細に説明したビデオデコーダ(510)などの「リモート」デコーダと同じであることができる。しかし、
図5も簡単に参照すると、シンボルが利用可能であり、エントロピーコーダ(645)とパーサ(520)によるコーディングされたビデオシーケンスへのシンボルのエンコーディング/デコーディングは可逆であることができるため、パーサ(520)を含むビデオデコーダ(510)のエントロピーデコーディング部分は、ローカルデコーダ(633)で完全には実装されていない可能性がある。
【0088】
動作中、いくつかの例では、ソースコーダ(630)は、「参照ピクチャ」として指定されたビデオシーケンスから1つ以上の以前にコーディングされたピクチャを参照して、入力ピクチャを予測的にコーディングする動き補償予測コーディングを実行し得る。このようにして、コーディングエンジン(632)は、入力ピクチャのピクセルブロックと、入力ピクチャへの予測参照(複数可)として選択され得る参照ピクチャ(複数可)のピクセルブロックとの間の違いをコーディングする。
【0089】
ローカルビデオデコーダ(633)は、ソースコーダ(630)によって作成されたシンボルに基づいて、参照ピクチャとして指定され得るピクチャのコーディングされたビデオデータをデコーディングし得る。コーディングエンジン(632)の動作は、有利には不可逆プロセスであり得る。コーディングされたビデオデータがビデオデコーダ(
図6には示さず)でデコーディングされ得る場合、再構成されたビデオシーケンスは、通常、いくつかのエラーを持つソースビデオシーケンスのレプリカであり得る。ローカルビデオデコーダ(633)は、ビデオデコーダによって参照ピクチャに対して実行され得、再構成された参照ピクチャを参照ピクチャキャッシュ(634)に格納させ得る、デコーディングプロセスを複製する。このようにして、ビデオエンコーダ(603)は、共通の内容を持つ再構成された参照ピクチャのコピーを、遠端ビデオデコーダ(伝送エラーがない)によって取得される再構成された参照ピクチャとしてローカルに格納し得る。
【0090】
予測子(635)は、コーディングエンジン(632)の予測検索を実行し得る。すなわち、コーディングされる新しいピクチャについて、予測子(635)は、新しいピクチャの適切な予測参照として役立ち得る、サンプルデータ(候補参照ピクセルブロックとして)又は参照ピクチャ動きベクトル、ブロック形状などの特定のメタデータについて、参照ピクチャメモリ(634)を検索し得る。予測子(635)は、適切な予測参照を見つけるために、サンプルブロック/ピクセルブロック単位で動作し得る。場合によっては、予測子(635)によって得られた検索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(634)に格納された複数の参照ピクチャから引き出された予測参照を有し得る。
【0091】
コントローラ(650)は、例えば、ビデオデータをエンコーディングするために使用されるパラメータ及びサブグループパラメータの設定を含む、ソースコーダ(630)のコーディング動作を管理し得る。
【0092】
前述のすべての機能ユニットの出力は、エントロピーコーダ(645)でのエントロピーコーディングを受け得る。エントロピーコーダ(645)は、ハフマンコーディング、可変長コーディング、算術コーディングなどの技術に従ってシンボルを可逆圧縮することによって、さまざまな機能ユニットによって生成されたシンボルをコーディングされたビデオシーケンスに変換する。
【0093】
コントローラ(650)は、ビデオエンコーダ(603)の動作を管理し得る。コーディング中、コントローラ(650)は、各コード化されたピクチャに特定のコーディングされたピクチャタイプを割り当て得、これは、それぞれのピクチャに適用され得るコーディング技術に影響を与え得る。例えば、ピクチャは、多くの場合、次のピクチャタイプのいずれかとして割り当てられ得る:
【0094】
イントラピクチャ(Iピクチャ)は、予測のソースとしてシーケンス内の他のピクチャを使用せずにコーディング及びデコーディングされ得るものであり得る。いくつかのビデオコーデックは、例えば、独立したデコーダリフレッシュ(Independent Decoder Refresh)(「IDR」)ピクチャを含む、異なる種類のイントラピクチャを可能にする。当業者は、Iピクチャのこれらのバリアント並びにそれぞれの用途及び特徴を認識している。
【0095】
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために、多くても1つの動きベクトル及び参照インデックスを使用して、イントラ予測又はインター予測を使用してコーディング及びデコーディングされ得るものであり得る。
【0096】
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために、多くても2つの動きベクトル及び参照インデックスを使用して、イントラ予測又はインター予測を使用して、コーディング及びデコーディングされ得るものであり得る。同様に、複数予測ピクチャは、単一のブロックの再構成のために、2つより多い参照ピクチャ及び関連するメタデータを使用することができる。
【0097】
ソースピクチャは、一般に、複数のサンプルブロック(例えば、夫々、4×4、8×8、4×8、又は16×16のサンプルのブロック)に空間的に細分化され、ブロックごとにコーディングされ得る。ブロックは、ブロックのそれぞれのピクチャに適用されているコーディング割り当てによって決定される他の(既にコーディングされた)ブロックを参照して予測的にコーディングされ得る。例えば、Iピクチャのブロックは、非予測的にコーディングされ得る、又は、それらは、同じピクチャの既にコーディングされたブロックを参照して予測的にコーディングされ得る(空間予測又はイントラ予測)。Pピクチャのピクセルブロックは、1つの以前にコーディングされた参照ピクチャを参照して空間予測により又は時間予測により、予測的にコーディングされ得る。Bピクチャのブロックは、1つ又は2つの以前にコーディングされた参照ピクチャを参照して空間予測により又は時間予測により、予測的にコーディングされ得る。
【0098】
ビデオエンコーダ(603)は、ITU-T勧告H.265のような所定のビデオコーディング技術又は標準に従ってコーディング動作を実行し得る。その動作において、ビデオエンコーダ(603)は、入力ビデオシーケンスにおける時間的及び空間的冗長性を利用する予測コーディング動作を含む様々な圧縮動作を実行し得る。従って、コーディングされたビデオデータは、使用されているビデオコーディング技術又は標準によって定められているシンタックスに従い得る。
【0099】
ビデオは、時間的シーケンスにおいて複数のソースピクチャ(イメージ)の形式であり得る。イントラピクチャ予測(しばしばイントラ予測と省略される)は、所与のピクチャにおける空間相関を利用し、インターピクチャ予測は、ピクチャ間の(時間的又は他の)相関を利用する。一例では、現在のピクチャと呼ばれる、エンコーディング/デコーディング中の特定のピクチャは、ブロックにパーティション化される(partitioned)。現在のピクチャ内のあるブロックが、ビデオ内の以前にコーディングされ、依然としてバッファリングされている参照ピクチャ内の参照ブロックと類似している場合に、現在のピクチャ内のそのブロックは、動きベクトルと呼ばれるベクトルによってコーディングされることができる。動きベクトルは、参照ピクチャ内の参照ブロックを指し、複数の参照ピクチャが使用されている場合には、参照ピクチャを識別する第3の次元を有することができる。
【0100】
いくつかの実施形態では、双予測技術がインターピクチャ予測において使用されることができる。双予測技術に従って、2つの参照ピクチャ、例えば、ビデオ内で現在のピクチャに対してデコード順序において両方とも先行する(しかし、表示順序では、夫々、過去及び将来にあり得る)第1の参照ピクチャ及び第2の参照ピクチャが、使用される。現在のピクチャ内のブロックは、第1の参照ピクチャ内の第1の参照ブロックを指す第1の動きベクトルと、第2の参照ピクチャ内の第2の参照ブロックを指す第2の動きベクトルとによって、コーディングされることができる。ブロックは、第1の参照ブロック及び第2の参照ブロックの組み合わせによって予測することができる。
【0101】
さらに、マージモード技術が、コーディング効率を向上させるためにインターピクチャ予測において使用されることができる。
【0102】
本開示のいくつかの実施形態に従って、インターピクチャ予測及びイントラピクチャ予測などの予測は、ブロックのユニットにおいて実行される。例えば、HEVC標準に従って、ビデオピクチャのシーケンス内のピクチャが、圧縮のためにコーディングツリーユニット(CTU)にパーティション化され、ピクチャ内のCTUは、64×64ピクセル、32×32ピクセル、又は16×16ピクセルなどの同じサイズを有する。一般に、CTUは、3つのコーディングツリーブロック(CTB)を含み、これは、1つのルマCTB及び2つのクロマCTBである。各CTUは、1つ又は複数のコーディングユニット(CU)に再帰的に四分木分割される(quadtree split)ことができる。例えば、64×64ピクセルのCTUは、64×64ピクセルの1つのCU、又は32×32ピクセルの4つのCU、又は16×16ピクセルの16のCUに分割されることができる。一例では、各CUは、インター予測タイプ又はイントラ予測タイプなどのCUのための予測タイプを決定するために解析される。CUは、時間的及び/又は空間的予測可能性に応じて1つ以上の予測ユニット(PU)に分割される。概して、各PUは、1つのルマ予測ブロック(PB)及び2つのクロマPBを含む。一実施形態では、コーディング(エンコーディング/デコーディング)における予測動作は、予測ブロックの単位で実行される。予測ブロックの一例としてルマ予測ブロックを使用すると、予測ブロックは、8×8ピクセル、16×16ピクセル、8×16ピクセル、16×8ピクセルなどのような、ピクセルの値(例えば、ルマ値)の行列を含む。
【0103】
図7は、いくつかの例におけるG-PCCエンコーダ(700)のブロック図を示す。G-PCCエンコーダ(700)は、ポイントクラウドデータを受信し、圧縮されたポイントクラウドデータを運ぶビットストリームを生成するためにポイントクラウドデータを圧縮するよう構成されることができる。一実施形態では、G-PCCエンコーダ(700)は、位置量子化モジュール(710)、重複ポイント除去(duplicated points removal)モジュール(712)、八分木エンコーディング(octree encoding)モジュール(730)、属性転送(attribute transfer)モジュール(720)、詳細のレベル(level of detail)(LOD)生成モジュール(740)、属性予測モジュール(750)、残差量子化モジュール(760)、算術コーディングモジュール(770)、逆残差量子化モジュール(780)、加算モジュール(781)及び再構成された属性値を格納するメモリ(790)を含むことができる。
【0104】
図示のように、入力ポイントクラウド(701)は、G-PCCエンコーダ(700)で受信されることができる。ポイントクラウド(701)の位置(例えば、3D座標)は、量子化モジュール(710)に供給される。量子化モジュール(710)は、量子化された位置を生成するために座標を量子化するよう構成される。重複ポイント除去モジュール(712)は、量子化された位置を受信し、重複ポイントを識別し除去するためにフィルタプロセスを実行するように構成される。八分木エンコーディングモジュール(730)は、重複ポイント除去モジュール(712)からフィルタ処理された位置を受信し、ボクセルの3Dグリッドを記述する占有コード(occupancy codes)のシーケンスを生成するために八分木ベースのエンコーディングプロセスを実行するように構成される。占有コードは、算術コーディングモジュール(770)に提供される。
【0105】
属性転送モジュール(720)は、入力ポイントクラウドの属性を受信し、複数の属性値がそれぞれのボクセルに関連づけられる場合に各ボクセルに属性値を決定するために属性転送プロセスを実行するように構成される。属性転送プロセスは、八分木エンコーディングモジュール(730)から出力された再順序付けされたポイントに対して実行されることができる。転送動作後の属性は、属性予測モジュール(750)に供給される。LOD生成モジュール(740)は、八分木エンコーディングモジュール(730)から出力された再順序付けされたポイントに作用し、ポイントを異なるLODに再編成する(re-organize)ように構成される。LOD情報は、属性予測モジュール(750)に供給される。
【0106】
属性予測モジュール(750)は、LOD生成モジュール(740)からのLOD情報によって示されているLODベースの順序に従って、ポイントを処理する。属性予測モジュール(750)は、メモリ(790)に格納されている現在のポイントの隣接するポイントのセットの再構成された属性に基づいて、現在のポイントに対する属性予測を生成する。予測残差は、属性転送モジュール(720)から受信され元の属性値と、ローカルで生成された属性予測とに基づいて、その後に取得されることができる。候補インデックスがそれぞれの属性予測プロセスで使用される場合、選択された予測候補に対応するインデックスは、算術コーディングモジュール(770)に供給され得る。
【0107】
残差量子化モジュール(760)は、属性予測モジュール(750)から予測残差を受信し、量子化された残差を生成するために量子化を実行するように構成される。量子化された残差は、算術コーディングモジュール(770)に供給される。
【0108】
逆残差量子化モジュール(780)は、残差量子化モジュール(760)から量子化された残差を受信し、残差量子化モジュール(760)で実行された量子化動作の逆を実行することによって、再構成された予測残差を生成するように構成される。加算モジュール(781)は、逆残差量子化モジュール(780)からの再構成された予測残差と、属性予測モジュール(750)からのそれぞれの属性予測とを受信するように構成される。再構成された予測残差と属性予測とを組み合わせることによって、再構成された属性値は生成され、メモリ(790)に格納される。
【0109】
算術コーディングモジュール(770)は、占有コード、(使用される場合)候補インデックス、(生成される場合)量子化された残差、及び他の情報を受信し、受信された値又は情報を更に圧縮するためにエントロピエンコーディングを実行するように構成される。結果として、圧縮された情報を運ぶ圧縮されたビットストリーム(702)を生成することができる。ビットストリーム(702)は、圧縮されたビットストリームをデコーディングするデコーダに伝送され得る、又は別の方法で提供され得る、あるいは、ストレージデバイスに格納され得る。
【0110】
図8は、一実施形態によるG-PCCデコーダ(800)のブロック図を示す。G-PCCデコーダ(800)は、圧縮されたビットストリームを受信し、デコーディングされたポイントクラウドデータを生成するためにビットストリーム解凍するポイントクラウドデータ解凍を実行するように構成されることができる。一実施形態では、G-PCCデコーダ(800)は、算術デコーディングモジュール(810)、逆残差量子化モジュール(820)、八分木デコーディングモジュール(830)、LOD生成モジュール(840)、属性予測モジュール(850)及び再構成された属性値を格納するメモリ(860)を含むことができる。
【0111】
図示されるように、圧縮されたビットストリーム(801)は、算術デコーディングモジュール(810)で受信されることができる。算術デコーディングモジュール(810)は、(生成される場合)量子化された残差及びポイントクラウドの占有コードを取得するために、圧縮されたビットストリームをデコーディングするように構成される。八分木デコーディングモジュール(830)は、占有コードに従って、ポイントクラウドの中のポイントの再構成された位置を決定するように構成される。LOD生成モジュール(840)は、再構成された位置に基づいてポイントを異なるLODに再編成し、LODベースの順序を決定するように構成される。逆残差量子化モジュール(820)は、算術デコーディングモジュール(810)から受信された量子化された残差に基づいて、再構成された残差を生成するよう構成される。
【0112】
属性予測モジュール(850)は、LODベースの順序に従ってポイントに対する属性予測を決定するために、属性予測プロセスを実行するように構成される。例えば、現在のポイントの属性予測は、メモリ(860)に格納されている現在のポイントの隣接するポイントの再構成された属性値に基づいて決定されることができる。いくつかの例では、属性予測は、現在のポイントに対する再構成された属性を生成するために、それぞれの再構成された残差と組み合わされることができる。
【0113】
八分木デコーディングモジュール(830)から生成された再構成された位置とともに属性予測モジュール(850)から生成された再構成された属性のシーケンスは、一例では、G-PCCデコーダ(800)から出力されるデコーディングされたポイントクラウド(802)に対応する。加えて、再構成された属性はまた、メモリ(860)に格納され、その後に、後続のポイントについての属性予測を導出するために使用されることができる。
【0114】
様々な実施形態では、エンコーダ(300)、デコーダ(400)、エンコーダ(700)、及び/又はデコーダ(800)は、ハードウェア、ソフトウェア、又はそれらの組み合わせにより実装されることができる。例えば、エンコーダ(300)、デコーダ(400)、エンコーダ(700)、及び/又はデコーダ(800)は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、などのような、ソフトウェアの有無によらず動作する1つ以上の集積回路(IC)などの処理回路により実装されることができる。他の例では、エンコーダ(300)、デコーダ(400)、エンコーダ(700)、及び/又はデコーダ(800)は、不揮発性の(又は非一時的な)コンピュータ可読記憶媒体に格納されている命令を含むソフトウェア又はファームウェアとして実装されることができる。命令は、1つ以上のプロセッサなどの処理回路によって実行される場合、処理回路に、エンコーダ(300)、デコーダ(400)、エンコーダ(700)、及び/又はデコーダ(800)の機能を実行させる。
【0115】
本明細書で開示されている属性予測技術を実装するよう構成される属性予測モジュール(750)及び(850)は、
図7及び
図8に示されているものと類似した又は異なる構造を有し得る他のデコーダ又はエンコーダに含まれることができることが留意される。加えて、エンコーダ(700)及びデコーダ(800)は、様々な例において、同じデバイス又は別個のデバイスに含まれることができる。
【0116】
本開示のいくつかの態様によれば、メッシュ圧縮は、PCCコーディングツールとは異なるコーディングツールを使用することができる、又は、上記のPCC(例えば、G-PCC、V-PCC)エンコーダ、上記のPCC(例えば、G-PCC、V-PCC)でコーダなどのようなPCCコーディングツールを使用することができる。
【0117】
オブジェクトのメッシュ(メッシュモデル、メッシュフレームとも呼ばれる)は、オブジェクトのサーフェスを記述するポリゴンを含むことができる。各ポリゴンは、3D空間内のポリゴンの頂点及び頂点がどのように接続されているかの情報によって定義することができる。頂点がどのように接続されているかの情報は、接続性情報と呼ばれる。いくつかの例では、メッシュは、また、頂点に関連付けられた色、法線などの属性を含むことができる。属性は、2D属性マップでメッシュをパラメータ化するマッピング情報を利用することによって、メッシュのサーフェスに関連付けることができる。マッピング情報は通常、メッシュ頂点に関連付けられた、UV座標又はテクスチャ座標と呼ばれるパラメトリック座標のセットによって記述される。2D属性マップ(いくつかの例ではテクスチャマップと呼ばれる)は、テクスチャ、法線、変位などの高解像度の属性情報を格納するために使用される。このような情報は、テクスチャマッピング及びシェーディングなどのさまざまな目的に使用できる。
【0118】
いくつかの実施形態では、メッシュは、ジオメトリ情報、接続性情報、マッピング情報、頂点属性、及び属性マップと呼ばれるコンポーネントを含むことができる。いくつかの例では、ジオメトリ情報は、メッシュの頂点に関連付けられた3D位置のセットによって記述される。一例では、(x、y、z)座標が、頂点の3D位置を記述するために使用されることができ、3D座標とも呼ばれる。いくつかの例では、接続性情報は、3Dサーフェスを作成するためにどのように頂点を接続するかを記述する頂点インデックスのセットを含む。いくつかの例では、マッピング情報は、メッシュサーフェスを平面の2D領域にどのようにマッピングするかを記述する。例では、マッピング情報は、接続性情報とともに、メッシュ頂点に関連付けられたUVパラメトリック/テクスチャ座標(u、v)のセットによって記述される。いくつかの例では、頂点属性は、メッシュ頂点に関連付けられたスカラー又はベクトル属性値を含む。いくつかの例では、属性マップは、メッシュサーフェスに関連付けられ、2Dイメージ/ビデオとして格納される属性を含む。一例では、ビデオ(例えば、2Dイメージ/ビデオ)とメッシュサーフェスとの間のマッピングは、マッピング情報によって定義される。
【0119】
本開示の一態様によると、3Dドメイン内のメッシュのサーフェスを2Dドメインにマッピングするために、UVマッピング又はメッシュパラメータ化と呼ばれるいくつかの手法が使用される。いくつかの例では、メッシュは3Dドメイン内のパッチにパーティション化される。パッチは、境界エッジで形成された境界を持つメッシュの連続したサブセットである。パッチの境界エッジは、パッチの1つのポリゴンのみに属し、パッチ内の隣接する2つのポリゴンによって共有されないエッジである。パッチ内の境界エッジの頂点は、パッチの境界頂点と呼ばれ、パッチ内の非境界頂点は、いくつかの例では、パッチの内部頂点と呼ばれることがある。
【0120】
いくつかの例では、オブジェクトのメッシュは接続された三角形によって形成され、メッシュはパッチにパーティション化されることができ、各パッチは接続された三角形のサブセットである。パッチの境界エッジは、パッチ内の1つの三角形のみに属し、パッチ内の隣接する三角形によって共有されないエッジである。パッチ内の境界エッジの頂点は、パッチの境界頂点と呼ばれ、パッチ内の非境界頂点は、いくつかの例では、パッチの内部頂点と呼ばれることがある。
【0121】
本開示の一態様によると、いくつかの例では、パッチはそれぞれ2D形状(UVパッチとも呼ばれる)にパラメータ化される。2D形状は、いくつかの例では、アトラスとも呼ばれるマップにパック(例えば、方向付けられ、配置される)されることができる。いくつかの例では、マップは、2Dイメージ又はビデオ処理技術を使用してさらに処理されることができる。
【0122】
一例では、UVマッピング技術は、3Dメッシュのパッチに対応する2DのUVアトラス(UVマップとも呼ばれる)と1つ以上のテクスチャアトラス(テクスチャマップとも呼ばれる)を生成する。UVアトラスは、3Dメッシュの3D頂点の2Dドメイン内の2Dポイントへの割り当てを含む(例えば、長方形)。UVアトラスは、3Dサーフェスの座標から2Dドメインの座標へのマッピングである。一例では、2D座標(u,v)におけるUVアトラス内のポイントは、3Dドメイン内の頂点の座標(x,y,z)によって形成される値を有する。一例では、テクスチャアトラスは、3Dメッシュの色情報を含む。例えば、2D座標(u,v)におけるテクスチャアトラス内のポイント(UVアトラスの(x,y,z)の3D値を有する)は、3Dドメイン内の(x,y,z)にあるポイントの色属性を指定する色を有する。いくつかの例では、3Dドメインの座標(x,y,z)は、3D座標、又はxyz座標と呼ばれ、2D座標(u,v)はuv座標と呼ばれる。
【0123】
本開示のいくつかの態様によると、メッシュ圧縮は、1つ以上の2Dマップ(いくつかの例では2Dアトラスとも呼ばれる)を使用してメッシュを表現し、次にイメージ又はビデオコーデックを使用して2Dマップをエンコーディングすることによって実行することができる。
【0124】
図9は、いくつかの例において、3Dメッシュ(910)の2Dアトラス(920)へのマッピングを示す図を示している。
図9の例では、3Dメッシュ(910)は、4つのパッチA~Dを形成する4つの頂点1~4を含む。パッチの各々は、頂点のセット及び関連する属性情報を有する。例えば、パッチAは、三角形に接続された頂点1、2及び3によって形成される;パッチBは、三角形に接続された頂点1、3及び4によって形成される;パッチCは、三角形に接続された頂点1、2及び4によって形成される;パッチDは、三角形に接続された頂点2、3及び4によって形成される。いくつかの例では、頂点1、2、3及び4は、それぞれの属性を有することができ、頂点1、2、3及び4によって形成される三角形はそれぞれの属性を有することができる。
【0125】
一例では、3DのパッチA、B、C及びDは、マップ(920)とも呼ばれる2Dアトラス(920)などの2Dドメインにマッピングされる。例えば、パッチAはマップ(920)において2D形状(UVパッチとも呼ばれる)A’にマッピングされ、パッチBはマップ(920)において2D形状(UVパッチとも呼ばれる)B’にマッピングされ、パッチCはマップ(920)において2D形状(UVパッチとも呼ばれる)C’にマッピングされ、パッチDはマップ(920)において2D形状(UVパッチとも呼ばれる)D’にマッピングされる。いくつかの例では、3Dドメインの座標は(x,y,z)座標と呼ばれ、マップ(920)などの2Dドメインの座標はUV座標と呼ばれる。3Dメッシュ内の頂点は、マップ(920)内の対応するUV座標を有することができる。
【0126】
マップ(920)は、ジオメトリ情報を含むジオメトリマップであることができる、又は、色、テキスタイル、若しくはその他の属性情報を持つテクスチャマップであることができる、又は、占有率情報を持つ占有率マップであることができる。
【0127】
図9の例では、各パッチは三角形で表されているが、パッチは、メッシュの連続したサブセットを形成するように接続されている任意の適切な数の頂点を含むことができることが留意される。いくつかの例では、パッチ内の頂点は三角形に接続される。パッチ内の頂点は、他の適切な形状を使用して接続できることが留意される。
【0128】
一例では、頂点のジオメトリ情報は、2Dのジオメトリマップに格納することができる。例えば、ジオメトリマップは、2Dジオメトリマップ内の対応するポイントにおけるサンプリングポイントの(x,y,z)座標を格納する。例えば、(u,v)位置におけるジオメトリマップのポイントは、3Dメッシュ内の対応するサンプリングポイントのx、y及びz値にそれぞれ対応する3つの成分のベクトル値である。
【0129】
本開示の一態様によると、マップ内の領域は完全に占有されていない可能性がある。例えば、
図9では、2D形状A’、B’、C’及びD’の外側の領域は未定義である。デコーディング後の2D形状A’、B’、C’及びD’の外側の領域のサンプル値は破棄されることができる。場合によっては、占有率マップが、ピクセルがパッチに属しているか未定義であるかを識別するためのバイナリ値を格納するなど、ピクセルごとにいくつかの追加情報を格納するために使用される。
【0130】
本開示の一態様によれば、動的メッシュは、コンポーネント(ジオメトリ情報、接続性情報、マッピング情報、頂点属性、属性マップ)の少なくとも1つが時間とともに変化するメッシュである。動的メッシュは、メッシュのシーケンス(メッシュフレームとも呼ばれる)によって記述することができる。動的メッシュは、時間の経過とともに変化する大量の情報を含む場合があるため、動的メッシュは大量のデータを必要とすることがある。メッシュの圧縮技術は、メッシュ表現におけるメディアコンテンツの効率的なストレージ及び伝送を可能にする。
【0131】
いくつかの例では、動的メッシュは、一定の接続性情報、時変ジオメトリ及び時変頂点属性を有することができる。いくつかの例では、動的メッシュは、時変接続性情報を有することができる。一例では、デジタルコンテンツ作成ツールは通常、時変属性マップ及び時変接続性情報を持つ動的メッシュを生成する。いくつかの例では、動的メッシュを生成するためにボリューム取得技術が使用される。ボリューム取得技術は、特にリアルタイムの制約の下で、時変接続性情報を持つ動的メッシュを生成することができる。
【0132】
いくつかの技術はメッシュ圧縮のために使用される。いくつかの例では、UVアトラスサンプリング及びV-PCCがメッシュ圧縮のために使用されることができる。例えば、UVアトラスは、通常のグリッドサンプルでジオメトリイメージを生成するために、通常のグリッドでサンプリングされる。通常のグリッドサンプルの接続性(connectivity)を推測することができる。通常のグリッドサンプルは、ポイントクラウド内のポイントと見なすことができ、したがって、V-PCCコーデックなどのPCCコーデックを使用してコーディングされることができる。UVアトラスサンプリング及びV-PCCベースの方法は、元のメッシュ頂点のサンプリングに基づいており、サンプリングによって生成される通常のグリッドサンプルの数は、通常、元の頂点の数よりもはるかに多い。また、一定のサンプリングステップが使用されるとき、密な頂点の領域がアンダーサンプリングされ、一方、疎な頂点の領域がオーバーサンプリングされることがある。さらに、UVアトラスサンプリング方法では、UVアトラス内のパッチが異なるフレームで異なって配置される可能性があるため、生成されたジオメトリイメージがフレーム間で一貫しないことがある。
【0133】
図10は、いくつかの例における、2つのUVアトラスフレーム(1010)及び(1020)を示している。一例では、UVアトラスフレーム(1010)及び(1020)は連続したフレームである。
図10に示すように、パッチは異なるUVアトラスフレーム間で一貫性なく割り当てられる。たとえば、UVアトラスフレーム(1010)のパッチ(1011)とUVアトラスフレーム(1020)のパッチ(1021)は、異なる時間におけるオブジェクトの同じ部分に対応できるが、UVアトラスフレーム(1010)とUVアトラスフレーム(1020)の異なる領域に割り当てられ、向きも異なる。
【0134】
UVアトラスサンプリングベースの方法は、アンダーサンプリング、オーバーサンプリング、圧縮するより多くの頂点、フレーム間での一貫性のないサンプリングデータなどの問題が発生することがある。この問題は、圧縮率に悪影響を及ぼす可能性がある。
【0135】
本開示の態様は、メッシュ圧縮のための頂点並べ替え技術を提供する。メッシュの頂点は、隣接する頂点の相関を高めるために特定のルールに従って並べ替えられ、したがって、予測コーディング方法を使用してコーディング効率を高めることができる。一例では、頂点は、シーケンス内の隣接する頂点の相関を高めるために並べ替えられる。別の例では、メッシュの頂点は、2次元(2D)フレーム内で並べ替えられて再配置され、2Dフレームのローカル領域内の隣接する頂点の相関を高め、したがって、2Dフレームを、イントラ予測手法を使用するなどのイメージ/ビデオコーデックによってより効率的にコーディングできる。別の例では、異なるメッシュフレームの頂点を、2Dフレーム内で並べ替えて再配置し、2Dフレーム間の相関を高め、したがって、2Dフレームを、インター予測手法を使用するなどのビデオコーデックによってより効率的にコーディングできる。
【0136】
図11は、本開示のいくつかの実施例によるメッシュ圧縮のためのフレームワーク(1100)の図を示している。フレームワーク(1100)は、メッシュエンコーダ(1110)及びメッシュデコーダ(1150)を含む。メッシュエンコーダ(1110)は、入力メッシュ(1105)(動的メッシュ処理の場合はメッシュフレーム)をビットストリーム(1145)にエンコーディングし、メッシュデコーダ(1150)は、再構成されたメッシュ(1195)(動的メッシュ処理の場合は再構成されたメッシュフレーム)を生成するためにビットストリーム(1145)をデコーディングする。
【0137】
メッシュエンコーダ(1110)は、コンピュータ、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲーミングデバイス、ARデバイス、VRデバイスなど、任意の適切なデバイスであることができる。メッシュデコーダ(1150)は、コンピュータ、クライアントコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲーミングデバイス、ARデバイス、VRデバイスなど、任意の適切なデバイスであることができる。ビットストリーム(1145)は、任意の適切な通信ネットワーク(図示せず)を介してメッシュエンコーダ(1110)からメッシュデコーダ(1150)に送信することができる。
【0138】
図11の例では、メッシュエンコーダ(1110)は、頂点並べ替えモジュール(1120)、1D/2Dエンコーダ(1130)、及び一緒に結合された補助データエンコーダ(1140)を含む。頂点並べ替えモジュール(1120)は、入力メッシュ(1105)を受信し、並べ替えを実行して、並べ替えられた頂点のメッシュ情報(1125)を生成する。いくつかの例では、入力メッシュ(1105)は、元の順序のメッシュの頂点の3D位置情報、頂点の接続性情報、メッシュを2Dにパラメータ化するマッピング情報(例えば、UVアトラス)、及びその他の2D属性マップ(例えば、2Dカラーマップ)を含む。頂点並べ替えモジュール(1120)は、隣接する頂点の属性相関(例えば、シーケンス(例えば、1D配列)の隣接する頂点の属性相関、2D配列の領域内の隣接する頂点の属性相関、隣接するフレームの属性相関)を高めるために、頂点の並べ替え及び/又は再配置を行うことができる。
【0139】
頂点並べ替えモジュール(1120)は、並べ替えられた頂点のメッシュ情報(1125)を出力する。いくつかの例では、並べ替えられた頂点のメッシュ情報(1125)は接続性情報を含んでいない。一例では、並べ替えられた頂点のメッシュ情報(1125)は、並べ替えられたシーケンスの頂点の頂点情報を含む。例えば、各頂点の頂点情報は、メッシュ内の3D空間情報(例えば、xyz座標)、2Dへのマッピング情報(例えば、uv座標)、色情報(例えば、RGB値)など、さまざまな属性を含むことができる。
【0140】
別の例では、並べ替えられた頂点のメッシュ情報(1125)は、2Dイメージの形式の頂点の頂点情報を含む。例えば、並べ替えられた頂点は、2D(例えば、ラスタースキャンラインなどに基づく)のサンプル(ピクセル)に再配置され、並べ替えられた頂点のメッシュ情報は1つ以上の2Dイメージを形成できる。
【0141】
1D/2Dエンコーダ(1130)は、並べ替えられた頂点のメッシュ情報(1125)をビットストリーム(1145)にエンコーディングするように構成される。並べ替えられた頂点のメッシュ情報(1125)が、並べ替えられたシーケンス(1D)の頂点の頂点情報を含む場合、1D/2Dエンコーダ(1130)は、並べ替えられたシーケンスの頂点の頂点情報を、1Dエンコーディング技術を使用してエンコーディングできまる。並べ替えられた頂点のメッシュ情報(1125)が2Dイメージを含む場合、1D/2Dエンコーダ(1130)は、イメージエンコード及び/又はビデオエンコーディング技術を使用して(例えば、イメージコーデックやビデオコーデックを使用して)2Dイメージをエンコーディングできる。
【0142】
頂点並べ替えモジュール(1120)はまた、支援情報を含む補助データ(1127)を生成する。補助データエンコーダ(1140)は、補助データ(1127)を受信し、補助データ(1127)をビットストリーム(1145)にエンコーディングする。例えば、頂点並べ替えモジュール(1120)は、頂点パッチをパッチごとに並べ替えることができる。頂点並べ替えモジュール(1120)は、補助データ(1127)内の各パッチ内の頂点の数を示す値を提供できる。さらに、一例では、頂点並べ替えモジュール(1120)は、各パッチに対して、非境界頂点の前の境界頂点を並び替えることができる。頂点並べ替えモジュール(1120)は、補助データ(1127)内の各パッチ内の境界頂点の数を示す値を提供できる。
【0143】
いくつかの例では、補助データエンコーダ(1140)は、1D/2Dエンコーダ(1130)から再構成情報(1131)を受信できる。一例では、不可逆圧縮が1D/2Dエンコーダ(1130)で使用される。1D/2Dエンコーダ(1130)は、再構成情報(1131)の再構成された境界座標などの再構成された頂点情報を提供することができる。一例では、補助データエンコーダ(1140)は、元の境界座標と再構成された境界座標に基づいて境界座標残差を決定し、境界座標残差をビットストリーム(1145)にエンコーディングできる。
【0144】
頂点並べ替えモジュール(1120)、1D/2Dエンコーダ(1130)及び補助データエンコーダ(1140)の動作は、本開示でさらに説明される。
【0145】
図11の例では、ビットストリーム(1145)はメッシュデコーダ(1150)に提供される。メッシュデコーダ(1150)は、
図11に示すように一緒に結合された1D/2Dデコーダ(1160)、接続性決定モジュール(1180)、補助データデコーダ(1170)、及びメッシュ再構成モジュール(1190)を含む。一例では、1D/2Dデコーダ(1160)は、1D/2Dエンコーダ(1130)に対応し、1D/2Dエンコーダ(1130)によってエンコーディングされたビットストリーム(1145)の一部をデコーディングし、デコーディングされた情報(1165)を生成することができる。
【0146】
図11の例では、補助データデコーダ(1170)は、補助データエンコーダ(1140)に対応し、補助データエンコーダ(1140)によってエンコーディングされたビットストリーム(1145)の一部をデコーディングし、デコーディングされた補助データ(1175)を生成することができる。
【0147】
図11の例では、接続性決定モジュール(1180)は、デコーディングされた情報(1165)から接続性情報(1185)を決定(推測)することができる。
【0148】
図11の例では、デコーディングされた情報(1165)、デコーディングされた補助データ(1175)及び接続性情報(1185)はメッシュ再構成モジュール(1190)に提供される。メッシュ再構成モジュール(1190)は、デコーディングされた情報(1165)、デコーディングされた補助データ(1175)及び接続性情報(1185)に基づいて再構成メッシュ(1195)を生成する。1D/2Dデコーダ(1160)、補助データデコーダ(1170)及び接続性決定モジュール(1180)の動作は、本開示でさらに説明される。
【0149】
頂点並べ替えモジュール(1120)、補助データエンコーダ(1140)及び1D/2Dエンコーダ(1130)などのメッシュエンコーダ(1110)のコンポーネントは、さまざまな技術によってそれぞれ実装できることが留意される。一例では、コンポーネントは集積回路によって実装される。別の例では、コンポーネントは、1つ以上のプロセッサで実行できるソフトウェアを使用して実装される。
【0150】
1D/2Dデコーダ(1160)、補助データデコーダ(1170)、接続性決定モジュール(1180)、及びメッシュ再構成モジュール(1190)などのメッシュデコーダ(1150)のコンポーネントは、さまざまな手法でそれぞれ実装できることが留意される。一例では、コンポーネントは集積回路によって実装される。別の例では、コンポーネントは、1つ以上のプロセッサで実行できるソフトウェアを使用して実装される。
【0151】
図12は、本開示のいくつかの実施形態によるメッシュ圧縮のためのフレームワーク(1200)の図を示す。フレームワーク(1200)は、メッシュエンコーダ(1210)とメッシュデコーダ(1250)を含む。メッシュエンコーダ(1210)は入力メッシュ(1205)(動的メッシュ処理の場合はメッシュフレーム)をビットストリーム(1245)にエンコーディングし、メッシュデコーダ(1250)はビットストリーム(1245)をデコーディングして再構成メッシュ(1295)(動的メッシュ処理の場合は再構成メッシュフレーム)を生成する。
【0152】
メッシュエンコーダ(1210)は、コンピュータ、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲームデバイス、ARデバイス、VRデバイスなど、任意の適切なデバイスとすることができる。メッシュデコーダ(1250)は、コンピュータ、クライアントコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲームデバイス、ARデバイス、VRデバイスなど、任意の適切なデバイスとすることができる。ビットストリーム(1245)は、任意の適切な通信ネットワーク(図示さず)を介してメッシュエンコーダ(1210)からメッシュデコーダ(1250)に送信されることができる。
【0153】
図12の例では、メッシュエンコーダ(1210)は、一緒に結合された頂点並べ替えモジュール(1220)、1D/2Dエンコーダ(1230)、補助データエンコーダ(1240)及び接続性エンコーダ(1235)を含む。頂点並べ替えモジュール(1220)は、頂点並べ替えモジュール(1120)と同様に動作する。頂点並べ替えモジュール(1220)は、入力メッシュ(1205)を受信し、並べ替えを実行して、並べ替えられた頂点のメッシュ情報(1225)を生成する。いくつかの例では、入力メッシュ(1205)は、元の順序のメッシュの頂点の3D位置情報、頂点の接続性情報、メッシュを2D(例えば、UVアトラス)にパラメータ化するマッピング情報、及び2D属性マップを含む。頂点並べ替えモジュール(1220)は、隣接する頂点の相関(例えば、逐次隣接相関、空間隣接相関、時間隣接相関)を高めるように、頂点の並べ替え及び/又は再配置を行うことができる。
【0154】
頂点並べ替えモジュール(1220)は、並べ替えられた頂点のメッシュ情報(1225)を出力する。いくつかの例では、並べ替えられた頂点のメッシュ情報(1225)は接続性情報を含まない。一例では、並べ替えられた頂点のメッシュ情報(1225)は、並べ替えられたシーケンスの頂点の頂点情報を含む。たとえば、各頂点の頂点情報は、メッシュ内の3D空間情報(例えば、xyz座標)、2D(例えば、uv座標)へのマッピング情報、色情報(例えば、RGB値)など、さまざまな属性を含むことができる。
【0155】
別の例では、並べ替えられた頂点のメッシュ情報(1225)は、2Dイメージの形式の頂点の頂点情報を含む。たとえば、並べ替えられた頂点は、2Dのサンプル(ピクセル)に再配置され、並べ替えられた頂点のメッシュ情報は1つ以上の2Dイメージを形成できる。
【0156】
1D/2Dエンコーダ(1230)は、並べ替えられた頂点のメッシュ情報(1225)をビットストリーム(1245)にエンコーディングするように構成される。並べ替えられた頂点のメッシュ情報(1225)が並べ替えられたシーケンス(1D)の頂点の頂点情報を含む場合、1D/2Dエンコーダ(1230)は、1Dエンコーディング技術を使用して並べ替えられたシーケンスの頂点の頂点情報をエンコーディングできる。並べ替えられた頂点のメッシュ情報(1225)が2Dイメージを含む場合、1D/2Dエンコーダ(1230)は、イメージエンコーディング及び/又はビデオエンコーディング技術を使用して(例えば、イメージコーデックやビデオコーデックを使用して)2Dイメージをエンコーディングできる。
【0157】
さらに、
図12の例では、接続性エンコーダ(1235)は、入力メッシュ(1205)の接続性情報をビットストリーム(1245)にエンコーディングできる。接続性エンコーダ(1235)は、接続性情報をエンコーディングするために任意の適切な手法を使用できる。
【0158】
頂点並べ替えモジュール(1220)は、補助情報を含む補助データ(1227)も生成する。補助データエンコーダ(1240)は、補助データ(1227)を受信し、補助データ(1227)をビットストリーム(1245)にエンコーディングする。たとえば、頂点並べ替えモジュール(1220)は、頂点パッチをパッチごとに並べ替えることができる。頂点並べ替えモジュール(1220)は、補助データ(1227)内の各パッチ内の頂点の数を示す値を提供できる。さらに、一例では、頂点並べ替えモジュール(1220)は、各パッチについて、非境界頂点の前の境界頂点を並べ替えることができる。頂点並べ替えモジュール(1220)は、補助データ(1227)内の各パッチ内の境界頂点の数を示す値を提供できる。
【0159】
いくつかの例では、補助データエンコーダ(1240)は、1D/2Dエンコーダ(1230)から再構成された情報(1231)を受信できる。一例では、不可逆圧縮が1D/2Dエンコーダ(1230)で使用される。1D/2Dエンコーダ(1230)は、再構成された情報(1231)の再構成された境界座標など、再構成された頂点情報を提供できる。一例では、補助データエンコーダ(1240)は、元の境界座標と再構成された境界座標に基づいて境界座標残差を決定し、境界座標残差をビットストリーム(1245)にエンコーディングすることができる。
【0160】
頂点並べ替えモジュール(1220)、補助データエンコーダ(1240)及び1D/2Dエンコーダ(1230)の動作は、頂点並べ替えモジュール(1120)、補助データエンコーダ(1140)及び1D/2Dエンコーダ(1130)の動作と同様であり、本開示でさらに説明される。
【0161】
図12の例では、ビットストリーム(1245)はメッシュデコーダ(1250)に提供される。メッシュデコーダ(1250)は、
図12に示すように一緒に結合された、1D/2Dデコーダ(1260)、補助データデコーダ(1270)、接続性デコーダ(1280)及びメッシュ再構成モジュール(1290)を含む。一例では、1D/2Dデコーダ(1260)は、1D/2Dエンコーダ(1230)に対応し、1D/2Dエンコーダ(1230)によってエンコーディングされたビットストリーム(1245)の一部をデコーディングし、デコーディングされた情報(1265)を生成できる。
【0162】
図12の例では、補助データデコーダ(1270)は補助データエンコーダ(1240)に対応し、補助データエンコーダ(1240)によってエンコーディングされたビットストリーム(1245)の一部をデコーディングし、デコーディングされた補助データ(1275)を生成できる。
【0163】
図12の例では、接続性デコーダ(1280)は接続性エンコーダ(1235)に対応し、接続性エンコーダ(1235)によってエンコーディングされたビットストリーム(1245)の一部をデコーディングし、デコーディングされた接続性(1285)を生成できる。
【0164】
図12の例では、デコーディングされた情報(1265)、デコーディングされた補助データ(1275)及びデコーディングされた接続性(1285)がメッシュ再構成モジュール(1290)に提供される。メッシュ再構成モジュール(1290)は、デコーディングされた情報(1265)、デコーディングされた補助データ(1275)及びデコーディングされた接続性(1285)に基づいて再構成メッシュ(1295)を生成する。1D/2Dデコーダ(1260)及び接続性デコーダ(1280)の動作は、本開示でさらに説明される。
【0165】
頂点並べ替えモジュール(1220)、補助データエンコーダ(1240)、1D/2Dエンコーダ(1230)及び接続性エンコーダ(1235)などのメッシュエンコーダ(1210)内のコンポーネントは、さまざまな技法でそれぞれ実装できることが留意される。一例では、コンポーネントは、集積回路によって実装される。別の例では、1つ以上のプロセッサで実行できるソフトウェアを使用してコンポーネントが実装される。
【0166】
1D/2Dデコーダ(1260)、補助データデコーダ(1270)、接続性デコーダ(1280)、及びメッシュ再構成モジュール(1290)などのメッシュデコーダ(1250)内のコンポーネントは、さまざまな技法でそれぞれ実装できることが留意される。一例では、コンポーネントは集積回路によって実装される。別の例では、1つ以上のプロセッサで実行できるソフトウェアを使用してコンポーネントが実装される。
【0167】
本開示のいくつかの態様によれば、メッシュの頂点は、メッシュ内の頂点の空間プロパティ(spatial properties)に基づいてパッチごとに並べ替えることができる。
【0168】
図13は、本開示のいくつかの実施形態による、メッシュ(動的メッシュ処理のためのメッシュフレーム)内の頂点を並べ替えるプロセス(1300)を概説するフローチャートを示している。いくつかの例では、プロセス(1300)は、頂点並べ替えモジュール(1120)、頂点並べ替えモジュール(1220)などの頂点並べ替えモジュールによって実行される。さまざまな実施例では、プロセス(1300)は処理回路によって実行される。いくつかの実施形態では、プロセス(1300)はソフトウェア命令で実装されるため、処理回路がソフトウェア命令を実行するとき、処理回路はプロセス(1300)を実行する。プロセス(1300)は(S1301)において開始し、(S1310)に進む。
【0169】
(S1310)において、メッシュ内の開始頂点が決定され、開始頂点を含む現在パッチが決定される。いくつかの例では、メッシュは複数の頂点を含み、頂点はエッジで接続することができる。いくつかの例では、メッシュはエッジによって形成される三角形を含む。2つの三角形がエッジを共有している場合、2つの三角形は接続される。メッシュは3Dドメインにおいてパッチにパーティション化される(partitioned)。パッチは、接続された三角形を持つメッシュの連続したサブセットである。一例では、パッチ内のエッジがパッチの隣接する2つの三角形によって共有されていない場合、たとえば、エッジがパッチの1つの三角形のみに属している場合、エッジはパッチの境界エッジであり、境界エッジの頂点は境界頂点である。パッチ内の頂点は、境界頂点と非境界頂点に分類できる。
【0170】
いくつかの実施形態では、特定の空間プロパティを持つ頂点属性は、動的メッシュ内のメッシュフレームのグループ内の各フレームに対して頂点トラバーサル(vertex traversal)がほぼ同じ位置から開始するように開始頂点を選択するために使用される。一例では、メッシュフレームのグループは、2Dのピクチャのグループ(GOP)と同様の概念のものである。
【0171】
いくつかの例では、3Dの座標に基づいて開始頂点が選択される。一例では、最大の垂直座標(例えば、最大z座標)を持つ頂点が開始頂点として選択されるため、開始頂点が最も高い頂点である。ガウス曲率、ローカル頂点密度、色情報などの他の属性を使用して開始頂点を選択できることが留意される。
【0172】
開始頂点が選択された後、開始頂点を含む対応するパッチが、処理されることになる第1のパッチとして決定される。したがって、第1のパッチは処理のための現在パッチであり、開始頂点は現在パッチの開始頂点でもある。
【0173】
(S1320)において、現在パッチの頂点が、現在パッチの開始頂点から開始して、トラバースされる(traversed)。現在パッチの頂点は、さまざまな技法でトラバースできる。一例では、トラバースに対して幅優先検索を実行できる。別の例では、トラバースに対して奥行き優先検索を実行できる。別の例では、現在パッチの境界頂点が最初にトラバースされ、現在パッチの内部頂点(非境界頂点とも呼ばれる)が後からトラバースされる。したがって、境界頂点はより適切にグループ化される。いくつかの例では、不可逆圧縮が頂点の属性のエンコーディングに使用されるが、境界頂点に追加の処理を適用できるため、境界頂点の座標を情報損失なしで圧縮できる(例えば、可逆圧縮)。
【0174】
(S1330)において、未訪問(unvisited)(頂点トラバーサルが行われていない)パッチが存在する場合、処理は(S1340)に進む。それ以外の場合は、すべてのパッチが処理され(トラバースされ)、処理は(S1399)に進み、終了する。
【0175】
(S1340)において、現在パッチの(例えば、頂点がトラバースされた古い現在パッチ)後の次のトラバーサルのためのパッチが決定され、決定された次のパッチが処理のために現在パッチ(例えば、更なるトラバーサル処理のための新しい現在パッチ)となるように設定される。たとえば、第1のパッチのすべての頂点をトラバーサルした後、第1のパッチの後のトラバーサルのためのパッチが決定される。次のパッチを決定するために、さまざまな技法を使用できる。一例では、次のパッチは、未訪問の(頂点トラバーサルが行われていない)頂点のうち最も高い頂点を含むパッチとして選択される。たとえば、第1のパッチが最も高い頂点を含むパッチとして選択された場合、第1のパッチの次のパッチは、未訪問の頂点のうち最も大きな垂直座標を持つ頂点を含むパッチとして決定できる。
【0176】
いくつかの例では、現在パッチ(例えば、頂点がトラバースされた古い現在パッチ)に最も近い(例えば、最短距離を持つ)パッチが、トラバーサルのための次のパッチとして選択される。現在パッチ(例えば、頂点がトラバースされた古い現在パッチ)と別のパッチとの間の距離は、さまざまな技法で定義できる。一例では、未訪問のパッチについて、未訪問の頂点の各頂点と現在パッチ(例えば、頂点がトラバースされた古い現在パッチ)の最後に訪問した頂点との間の3Dユークリッド距離が計算される。その後、3Dユークリッド距離のうち、最小の3Dユークリッド距離が現在パッチ(古い現在パッチ)と未訪問のパッチとの間の距離として決定される。
【0177】
別の例では、未訪問のパッチ内のすべての頂点の平均3D座標(平均x座標、平均y座標、平均z座標)が計算される。次に、未訪問のパッチの平均3D座標のポイントと現在パッチ(例えば、古い現在パッチ)内の最後に訪問した頂点との間の3Dユークリッド距離が計算され、現在パッチ(古い現在パッチ)と未訪問のパッチとの間の距離として定義される。
【0178】
別の例では、現在パッチ(例えば、古い現在パッチ)内のすべての頂点の第1の平均3D座標(平均x座標、平均y座標、平均z座標)が計算され、未訪問のパッチ内のすべての頂点の第2の平均3D座標(平均x座標、平均y座標、平均z座標)が計算される。次に、第1の平均3D座標を持つ第1のポイントと第2の平均3D座標を持つ第2のポイントとの間の距離が計算され、現在パッチと未訪問のパッチとの間の距離として定義される。
【0179】
(S1350)において、トラバースするために現在パッチ(例えば、新しい現在パッチ)の開始頂点が決定される。さまざまな技法を使用して、現在パッチ(例えば、新しい現在パッチ)においてトラバースするために開始頂点を選択できる。一例では、現在パッチ(例えば、新しい現在パッチ)内の最も高い頂点(例えば、最大のz座標を持つ)が開始頂点として選択される。別の例では、現在パッチ(例えば、新しい現在パッチ)内の最後に訪問された頂点(古い現在パッチ内)に最も近い頂点が、現在パッチ内の開始頂点として選択される。別の例では、現在パッチ(例えば、新しい現在パッチ)内の最も高い境界頂点が開始頂点として選択され、現在パッチ(例えば、新しい現在パッチ)内の境界頂点が、現在パッチ(例えば、新しい現在パッチ)内の内部頂点(例えば、非境界頂点)の前にトラバースされることになる。別の例では、最後に訪問された頂点(古い現在パッチ内)に最も近い境界頂点(例えば、新しい現在パッチ内)である境界頂点が開始頂点になるように選択され、現在パッチ(例えば、新しい現在パッチ)内の境界頂点が、現在パッチ(例えば、新しい現在パッチ)内の内部頂点(例えば、非境界頂点)の前にトラバースされることになる。その後、処理(S1300)は(S1320)に戻る。
【0180】
本開示の一態様によれば、例えば処理(1300)に従ってメッシュ内の頂点がトラバースされた後、メッシュ内の頂点のxyz座標(3D座標とも呼ばれる)、uv座標、RGB色、法線などの頂点の属性情報が、トラバース順に従って、例えば、並べ替えられたメッシュ情報(1125)又は並べ替えられたメッシュ情報(1225)に記録される。いくつかの例では、各パッチが訪問された後、パッチ内の頂点の数及びパッチ内の境界頂点の数が、例えば、補助データ(1127)、補助データ(1227)などに記録される。
【0181】
いくつかの例では、並べ替えられたメッシュ情報(1125)又は並べ替えられたメッシュ情報(1225)は、xyz座標の配列、uv座標の配列、その他の属性の配列(例えば、法線、色など)など、頂点の属性配列を含む。一例では、頂点の属性配列は、頂点のトラバース順の1D配列である。1D配列は、1D/2Dエンコーダ(1130)又は1D/2Dエンコーダ(1230)によってエンコーディングできる。
【0182】
別の例では、トラバース順の頂点は、ラスタースキャンラインパターンにしたがってな、2D形式に再配置できる。その後、再配置された2D形式に従って、頂点の属性を2Dイメージに再配置できる。複数のメッシュフレームの例(例えば、動的メッシュ圧縮)では、シーケンス内のメッシュフレーム又はメッシュフレームのグループが訪問された後、フレーム内(シーケンス内又はグループ内)の頂点の数を決定できる。その後、メッシュフレーム内の頂点の数から頂点の最大数が決定される。頂点の最大数に基づいて、2Dイメージの幅(mで表す)及び高さ(nで表す)を決定できる。一例では、幅は水平方向のピクセル数、高さは垂直方向のピクセル数であり、幅と高さの乗算は、メッシュフレームのグループの頂点の最大数と等しい又はそれより大きい。各メッシュフレームについて、メッシュフレームの頂点の数が幅(m)及び高さ(n)の乗算より小さい場合、パディング(padding)頂点(パディング属性値を持つ)を適宜追加できる。
【0183】
本開示の一態様によれば、各メッシュフレームのxyz座標、uv座標、法線、頂点の色などの属性は、m×n 2Dイメージに再形成される。したがって、xyz座標、uv座標などのメッシュフレームの属性は、同じサイズの2Dイメージに格納され、2Dビデオコーデックを使用して2Dイメージをエンコーディングできる。たとえば、メッシュフレーム内の頂点のxyz座標をm×n×3 2Dイメージ(3チャネル)に再形成できる。メッシュフレーム内の頂点のuv座標をm×n×2 2Dイメージ(2チャネル)に再形成できる。
【0184】
一例では、メッシュフレーム内の頂点のxyz座標を、RGB 4:4:4カラーフォーマットを使用するなど、2Dイメージのカラーコンポーネントとして格納できる。別の例では、メッシュフレーム内の頂点のuv座標を、分割し、4:0:0カラーフォーマットを使用するなど、1チャネルの2Dイメージの2つのグループに格納できる。たとえば、メッシュフレーム内の頂点のu座標は1チャネルの2Dイメージの第1のグループに格納され、メッシュフレーム内の頂点のv座標は1チャネルの2Dイメージの第2のグループに格納される。
【0185】
別の例では、uv座標を持つ2Dイメージに変換関数(例えば、2タップハール変換)を適用して、2つのチャネルの相関を解除できる。次に、2つのチャネルの相関を解除された2Dイメージを、1チャネルの2Dイメージの2つのグループに分割できる。2Dイメージの2つのグループは別々にエンコーディングできる。
【0186】
別の例では、メッシュフレーム内の頂点のuv座標は、RGB 4:4:4フォーマットを使用するなど、2Dイメージのカラーコンポーネント(3つのチャネル)として格納できる。たとえば、u座標を第1のチャネルとして格納し、v座標を第2のチャネルとして格納し、第3のチャネルを任意の数字によって埋めることができ、第3のチャネルをデコーダ側で破棄できる。
【0187】
いくつかの例では、不可逆圧縮が、メッシュの頂点属性をエンコーディングするために、1D/2Dエンコーダ(1130)及び1D/2Dエンコーダ(1230)などのエンコーダで使用される。メッシュの境界頂点のより多くの情報を保持するために(例えば、パッチ間の隙間を避けるために)、境界頂点(例えば、再構成された情報(1131)、再構成された情報(1231)内)の再構成された座標(例えば、xyz座標、uv座標)をエンコーディングされた頂点属性から決定でき、元の頂点座標と境界頂点の再構成された座標との間の差を計算できる。元の頂点座標と境界頂点の再構成された座標との間の差は、境界座標残差として示される。境界座標残差は、例えば補助データエンコーダ(1140)、補助データエンコーダ(1240)などによって、ビットストリーム(1145)、ビットストリーム(1245)などのメッシュを運ぶビットストリームにコーディングすることができる。
【0188】
本開示のいくつかの態様によれば、3Dメッシュを運ぶビットストリーム(例えば、ビットストリーム(1145)、ビットストリーム(1245))は、xyz座標、uv座標などの頂点属性を1D配列又は2Dイメージの形式で含み、3Dメッシュの正確なデコーディング及び再構成を支援する補助データを含む。
【0189】
いくつかの例では、各メッシュフレームについて、xyz座標、uv座標などの属性は、2Dビデオコーデックによってビットストリームから、又は1D/2Dデコーダ(1160)、1D/2Dデコーダ(1260)などを使用するなどの他の圧縮形式からデコーディングできる。たとえば、2Dビデオデコーダから出力される2Dフレームの各ピクセルは、xyz座標、uv座標、RGBカラー又は法線などの頂点の属性を表す。一例では、4:4:4ピクチャフォーマットを使用して、メッシュフレーム内のすべての頂点のxyz座標を表すことができる。2つの1チャネル4:0:0フォーマットのピクチャを使用して、メッシュフレーム内のすべての頂点のuv座標を表すことができる。
【0190】
いくつかの例では、補助データデコーダ(1170)、補助データデコーダ(1270)などによって、補助データがビットストリームからデコーディングされる。一例では、補助データは、各パッチ内の頂点の数及び境界頂点の数を含む。別の例では、補助データは、各パッチ内の頂点の数及び境界頂点の数を含み、境界座標残差を含む。
【0191】
いくつかの例では、各パッチ内の頂点の数及び境界頂点の数に基づいて、メッシュフレームのデコーディングされた頂点をパッチごとにグループ化できる。一般に、ピクチャ内のコーディングされた頂点はパッチごとに、又はデコーダが回復できる任意の順序で配置される。その後、各メッシュフレームについて、パッチごとにメッシュ再構成を行うことができる。
【0192】
本開示の一態様によれば、パッチについては、パッチ内の頂点の数及び境界頂点の数に応じて、パッチ内の境界頂点を特定することができ、パッチ内の頂点のxyz座標及びuv座標は、デコーディングされた情報から、例えば、1D/2Dデコーダ(1160)、1D/2Dデコーダ(1260)などからの出力から、決定することができる。一例では、エンコーダ側とデコーダ側の両方が、パッチごとに、すべての境界頂点が他のすべての内部パッチ頂点(例えば、非境界頂点)の前に配置されることに同意する。したがって、各パッチの境界頂点は、パッチのすべてのデコーディングされた頂点で識別できる。
【0193】
不可逆圧縮を使用するいくつかの例では、境界座標残差が、デコーディングされ(例えば、補助データデコーダ(1170)によって、補助データデコーダ(1270)によって)、デコーディングされた境界座標に追加されて(元の座標とデコーディングされた座標との間の差である)、メッシュ再構成モジュール(1190)、メッシュ再構成モジュール(1290)などによって、境界頂点の元のxyz座標及びuv座標を取得する。
【0194】
いくつかの例では、不可逆圧縮の場合、同じxyz座標又はuv座標を持つ重複した頂点がデコーディングされた情報に存在する可能性があり、重複した頂点が削除される。さらに、いくつかの例では、パッチの内部頂点(元のメッシュ内の元の内部頂点)に対応するいくつかのデコーディングされた頂点は、不可逆圧縮のためにパッチの外(例えば、パッチの境界エッジによって形成される境界の外側)にある可能性があり、パッチの外にあるデコーディングされた頂点を削除できる。
【0195】
いくつかの例では、接続性を取得するために、パッチのすべての頂点のuv座標とパッチの境界頂点を使用して、制約付きドローネ三角分割などの三角分割などを実行して、パッチの接続性を取得(推測)する。他のいくつかの例では、デコーダ側が三角分割アルゴリズムなしに直接メッシュのトポロジを再構成できるように、各パッチの接続性情報をビットストリームで明示的にシグナリングできる。
【0196】
図14は、開示の実施形態によるプロセス(1400)の概要を示すフローチャートを示す。プロセス(1400)は、メッシュのエンコード処理中に使用することができる。様々な実施形態では、プロセス(1400)は処理回路によって実行される。いくつかの実施形態では、プロセス(1400)はソフトウェア命令で実装され、したがって、処理回路がソフトウェア命令を実行するとき、処理回路はプロセス(1400)を実行する。プロセスは、(S1401)においてスタートし、(S1410)に進む。
【0197】
(S1410)において、3Dメッシュフレームの頂点のトラバース順が決定される。3Dメッシュフレームはパッチにパーティション化され、トラバース順は頂点パッチをパッチごとに並べ替える。たとえば、頂点はそれぞれパッチに属するサブセットに並べ替えられる。
【0198】
(S1420)において、3Dメッシュフレームの頂点のトラバース順に従って、頂点の属性の配列が形成される。
【0199】
(S1430)において、属性の配列は、3Dメッシュフレームを運ぶビットストリームにエンコーディングされる。
【0200】
トラバース順を決定するために、いくつかの実施形態では、開始頂点が3Dメッシュフレームの頂点から決定され、頂点の第1のサブセットの第1のパッチが決定される。開始頂点は、頂点の第1のサブセット内の頂点である。いくつかの例では、開始頂点は、3Dメッシュフレームのシーケンス上で維持される3Dメッシュフレームの空間プロパティに従って決定される。したがって、3Dメッシュフレームのシーケンス内の各3Dメッシュフレームについての開始頂点は、各3Dメッシュフレームについてほぼ同じ位置にある。一例では、開始頂点は最大の座標値を持つ。別の例では、開始頂点は最小の座標値を持つ。別の例では、開始頂点は最大のガウス曲率を持つ。別の例では、開始頂点は最小のガウス曲率を持つ。別の例では、開始頂点は最大のローカル頂点密度を持つ。別の例では、開始頂点は最小のローカル頂点密度を持つ。別の例では、開始頂点は色情報について最大値を持つ。別の例では、開始頂点は色情報について最小値を持つ。
【0201】
いくつかの例では、3Dメッシュフレームについての開始頂点から、頂点の第1のサブセットは、第1の外の頂点をトラバースする前に、トラバースされる。いくつかの例では、第1のパッチの境界頂点は、第1のパッチの内部頂点(非境界)をトラバースする前に、トラバースされる。
【0202】
いくつかの例では、前のパッチ(古い現在パッチとも呼ばれる)の最後の頂点をトラバースした後、トラバースする次のパッチ(新しい現在とも呼ばれる)が、トラバースされていないパッチの前のパッチの空間的関係に従って、トラバースされていないパッチから決定される。その後、次のパッチの開始頂点が決定される。
【0203】
いくつかの例では、次のパッチは、トラバースされていないパッチの中で前のパッチに最も近いパッチである。一例では、トラバースされていないパッチと前のパッチとの間の距離を計算するために、前のパッチでトラバースされた最後の頂点とトラバースされていないパッチの各頂点との間の3Dユークリッド距離が計算され、3Dユークリッド距離の最小距離がトラバースされていないパッチと前のパッチとの間の距離になるように決定される。別の例では、トラバースされていないパッチと前のパッチとの間の距離を計算するために、トラバースされていないパッチの複数の頂点の平均3D座標が計算され、平均3D座標を持つ点と前のパッチでトラバースされた最後の頂点との間の距離に基づいて、トラバースされていないパッチと前のパッチとの間の距離が決定される。別の例では、トラバースされていないパッチと前のパッチとの間の距離を計算するために、前のパッチの第1の複数の頂点の第1の平均3D座標が計算され、トラバースされていないパッチの複数の頂点の第2の平均3D座標が計算され、トラバースされていないパッチと前のパッチの間の距離が、第1の平均3D座標を持つ第1のポイントと第2の平均3D座標を持つ第2のポイントとの間の距離に基づいて計算される。
【0204】
次のパッチの開始頂点を決定するに、一例では、最大の座標値を持つ次のパッチの頂点が次のパッチ内の開始頂点として選択される。別の例では、最小の座標値を持つ次のパッチ内の頂点が、次のパッチ内の開始頂点として選択される。別の例では、前のパッチの最後にトラバースされた頂点に最も近い次のパッチ内の頂点が、次のパッチの開始頂点として選択される。別の例では、最大の座標値を持つ次のパッチ内の境界頂点が、次のパッチ内の開始頂点として選択される。別の例では、最小の座標値を持つが次のパッチ内の境界頂点が、次のパッチ内の開始頂点として選択される。別の例では、前のパッチでトラバースされた最後の頂点に最も近い次のパッチ内の境界頂点が、次のパッチ内の開始頂点として選択される。
【0205】
本開示の一態様によれば、属性の配列を形成するために、いくつかの例では、メッシュフレームのシーケンスの頂点トラバースの後に、メッシュフレーム内の頂点の最大数が決定される。頂点の最大数に基づいて、2Dイメージサイズを決定できる。その後、メッシュフレームの各々内の頂点の属性を、2Dイメージサイズの2D配列に再整形できる。
【0206】
属性の配列をエンコーディングするために、一例では、頂点の3D座標の配列に対応する2Dイメージがビットストリームにエンコーディングされる。別の例では、頂点のuv座標の配列に対応する2Dイメージがビットストリームにエンコーディングされる。別の例では、頂点のu座標の第1の配列と頂点のv座標の第2の配列にそれぞれ対応する第1の2Dイメージと第2の2Dイメージがビットストリームにエンコーディングされる。いくつかの例では、頂点の他の属性(例えば、色情報、ノーマルなど)の配列に対応する2Dイメージがビットストリームにエンコーディングされる。
【0207】
いくつかの例では、各パッチについて、パッチ内の頂点の数を示す第1の値がビットストリームにエンコーディングされる。さらに、いくつかの例では、各パッチについて、パッチ内の境界頂点の数を示す第2の値がビットストリームにエンコーディングされる。
【0208】
いくつかの例では、パッチ内の境界頂点の属性が、パッチ内の他の頂点(例えば、非境界頂点)の属性よりも前にビットストリームにエンコーディングされる。
【0209】
いくつかの例では、不可逆圧縮が使用される。エンコーダ側では、パッチについて、頂点のエンコーディングされた属性に基づいて、パッチの境界頂点の再構成された属性が決定される。次に、境界頂点の再構成された座標と境界頂点の元の座標に基づいて、パッチの境界頂点についての境界座標残差が決定される。境界座標残差はビットストリームにエンコーディングされる。境界頂点の座標は、境界頂点の3D座標及び/又は境界頂点のuv座標であることができる。
【0210】
いくつかの例では、各パッチ内の頂点の接続性情報がビットストリームにエンコーディングされる。
【0211】
その後、プロセスは(S1499)に進み、終了する。
【0212】
プロセス(1400)は、適切に適応させることができる。プロセス(1400)のステップ(複数可)は、変更及び/又は省略することができる。追加のステップ(複数可)を追加することができる。任意の適切な実装順序を使用することができる。
【0213】
図15は、本開示の一実施形態によるプロセス(1500)の概要を示すフローチャートを示している。プロセス(1500)は、メッシュのデコーディングプロセス中に使用することができる。様々な実施形態では、プロセス(1500)は処理回路によって実行される。いくつかの実施形態では、プロセス(1500)はソフトウェア命令で実装され、shいたがって、処理回路がソフトウェア命令を実行するとき、処理回路はプロセス(1500)を実行する。プロセスは(S1501)においてスタートし、(S1510)に進む。
【0214】
(S1510)において、複数のパッチを含む3Dメッシュフレームを運ぶビットストリームから属性の配列がデコーディングされる。属性の配列は、パッチごとに順序付けられた3Dメッシュフレームの頂点に対応する。たとえば、頂点は複数のパッチにそれぞれ属するサブセットに順序付けられる。
【0215】
(S1520)において、3Dメッシュフレームの頂点の第1のサブセットに対応する属性の配列の第1の部分が決定される。第1のサブセットは、複数のパッチ内の第1のパッチに属する。
【0216】
(S1530)において、頂点の第1のサブセットの第1の接続性情報が決定される。
【0217】
(S1540)において、属性の配列の第1の部分と第1の接続性情報に基づいて、3Dメッシュフレームの第1のパッチが再構成される。
【0218】
属性の配列をデコーディングするために、一例では、頂点の3D座標の配列に対応する2Dイメージがデコーディングされる。別の例では、頂点のuv座標の配列に対応する2Dイメージがデコーディングされる。別の例では、頂点のu座標の第1の配列と頂点のv座標の第2の配列にそれぞれ対応する第1の2Dイメージと第2の2Dイメージがデコーディングされる。
【0219】
属性の配列の第1の部分を決定するために、一例では、3Dメッシュフレームの頂点の第1のサブセット内の頂点の数を示す第1の値がビットストリームからデコーディングされる。属性の配列の第1の部分は、第1の値に基づいて選択される。いくつかの例では、第1のサブセット内の境界頂点の数を示す第2の値がビットストリームからデコーディングされる。次に、境界頂点の属性は、第2の値に基づいて属性の配列の第1の部分から決定される。
【0220】
いくつかの例では、第1のパッチの境界頂点の属性は、第1のパッチについての第1のサブセット内の他の頂点の属性よりも前に順序付けられる。
【0221】
いくつかの例では、頂点の座標など、頂点の属性をコーディングするために不可逆圧縮が使用される。一例では、境界頂点についての境界座標残差がビットストリームからデコーディングされる。境界頂点のデコーディングされた座標は、境界頂点の回復された座標を取得するために、境界頂点の境界座標残差と組み合わされる。境界頂点の回復された座標は、エンコーダ側の境界頂点の元の座標と等しくすることができる。境界頂点の座標は、境界頂点の3D座標であることができる又は、境界頂点のuv座標であることができる。
【0222】
いくつかの例では、不可逆圧縮のため、デコーディングされた属性に従って重複した頂点(同じ3D座標又は同じuv座標を持つ)が存在する場合がある。一例では、第1の頂点と第2の頂点が同じ座標を持つことが検出され、第1の頂点と第2の頂点のうちの1つが3Dメッシュフレームの再構成から削除される。
【0223】
いくつかの例では、不可逆圧縮のために、パッチの非境界頂点がパッチの境界の外側にある場合がある。一例では、パッチの境界頂点によって形成される境界の外側にあるパッチの非境界頂点が、3Dメッシュフレームの再構成から削除される。
【0224】
いくつかの例では、第1のパッチの頂点の第1のサブセットの第1の接続性情報が、3Dメッシュフレームの頂点の第1のサブセットに基づいて推測される。
【0225】
いくつかの例では、頂点の第1のサブセットの第1の接続性情報がビットストリームからデコーディングされる。
【0226】
その後、プロセスは(S1599)に進み、終了する。
【0227】
プロセス(1500)は、適切に適応させることができる。プロセス(1500)のステップ(複数可)は、変更及び/又は省略することができる。追加のステップ(複数可)を追加することができる。任意の適切な実装順序を使用することができる。
【0228】
本開示で開示された技術は、別々に又は任意の順序で組み合わせて使用され得る。さらに、各技術(例えば、方法、実施形態)、エンコーダ、及びデコーダは、処理回路(例えば、1つ以上のプロセッサ又は1つ以上の集積回路)によって実装され得る。いくつかの例では、1つ以上のプロセッサが、非一時的コンピュータ可読媒体に格納されているプログラムを実行する。
【0229】
上記の技術は、コンピュータ可読命令を使用しかつ1つ以上のコンピュータ可読媒体に物理的に格納されているコンピュータソフトウェアとして実装することができる。例えば、
図16は、開示された主題の特定の実施形態を実装するのに適したコンピュータシステム(1600)を示す。
【0230】
コンピュータソフトウェアは、1つ以上の中央演算処理装置(CPU)、グラフィクス処理ユニット(GPU)などによって、直接に、又は解釈、マイクロコード実行などを通じて、実行されることができる命令を含むコードを生成するように、アセンブリ、コンパイル、リンキングなどのメカニズムの対象となり得る任意の適切なマシンコード又はコンピュータ言語を使用してコーディングされることができる。
【0231】
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーミングデバイス、モノのインターネットデバイスなどを含む様々なタイプのコンピュータ又はそのコンポーネントで実行することができる。
【0232】
コンピュータシステム(1600)に関して
図16に示されるコンポーネントは、本質的に例示であり、本開示の実施形態を実装するコンピュータソフトウェアの使用又は機能の範囲に関して如何なる限定も示唆することを意図しない。コンポーネントの構成は、コンピュータシステム(1600)の例示的な実施形態において説明されるコンポーネントのうちのいずれか1つ又は組み合わせに関して何らかの依存又は要件を有するものとして解釈されるべきではない。
【0233】
コンピュータシステム(1600)は、特定のヒューマンインターフェース入力デバイスを含み得る。このようなヒューマンインターフェース入力デバイスは、例えば、触覚入力(例えば、キーボード、スワイプ、データグロープ動作)、音声入力(例えば、声、拍手)、視覚入力(例えば、ジェスチャ)、嗅覚入力(図示せず)を通じた一人以上のユーザによる入力に応答し得る。ヒューマンインターフェースデバイスはまた、音声(例えば、発話、音楽、周囲音)、画像(例えば、スキャンされた画像、静止画カメラから取得された写真画像)、ビデオ(例えば、2次元ビデオ、立体視ビデオを含む3次元ビデオ)などの、人による意識的な入力に必ずしも直接には関係しない特定のメディアをキャプチャするために使用されることができる。
【0234】
入力ヒューマンインターフェースデバイスは、キーボード(1601)、マウス(1602)、トラックパッド(1603)、タッチスクリーン(1610)でタグローブ(図示せず)、ジョイスティック(1605)、マイク(1606)、スキャナ(1607)、カメラ(1608)(各1つしか描かれていない)のうちの1つ以上を含み得る。
【0235】
コンピュータシステム(1600)はまた、特定のヒューマンインターフェース出力デバイスを含み得る。このようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音、光、及び匂い/味を通じて一人以上のユーザの感覚を刺激し得る。このようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(1610)でタグローブ(図示せず。)、又はジョイスティック(1605)による触覚フィードバック、しかし、入力デバイスとして機能しない触覚フィードバックデバイスがあることもできる)オーディオ出力デバイス(例えば、スピーカ(1609)、ヘッドホン(図示せず))、視覚出力デバイス(例えば、それぞれタッチスクリーン入力機能の有無によらず、それぞれ触覚フィードバック機能の有無によらず、CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含み、それらのうちのいくつかは、立体視出力、仮想現実メガネ(図示せず)、ホログラフィックディスプレイ及びスモークタンク(図示せず)などの手段により2次元視覚出力又は3次元よりも多い次元の出力を出力可能なスクリーン(1610))及びプリンタ(図示せず)を含み得る。
【0236】
コンピュータシステム(1600)はまた、人がアクセス可能なストレージデバイス及びそれらの関連する媒体、例えば、CD/DVD又は同様の媒体(1621)を伴ったCD/DVD ROM/RW(1620)、サムドライブ(1622)、リムーバブルハードディスク又はソリッドステートドライブ(1623)、レガシー磁気媒体、例えば、テープ及びフロッピー(登録商標)ディスク(図示せず)、専用のROM/ASIC/PLDベースのデバイス、例えば、セキュリティドングル(図示せず)、などを含むことができる。
【0237】
当業者はまた、目下開示されている主題に関連して使用されている「コンピュータ可読媒体」という用語が、伝送媒体、搬送波、又は他の一時的な信号を含まないことも理解すべきである。
【0238】
コンピュータシステム(1600)はまた、1つ以上の通信ネットワーク(1655)へのインターフェース(1654)を含むことができる。ネットワークは、例えば、ワイヤレス、ワイヤライン、光であることができる。ネットワークはさらに、ローカル、ワイドエリア、メトロポリタン、車両及び産業、実時間、遅延耐性、などであることができる。ネットワークの例は、イーサネット(登録商標)などのローカルエリアネットワーク、ワイヤレスLAN、GSM、3G、4G、5G、LTEなどを含むセルラーネットワーク、ケーブルTV、衛星TV、及び地上放送TVを含むTVワイヤライン又はワイヤレス広域デジタルネットワーク、CANバスを含む車両及び産業ネットワーク、などを含む。特定のネットワークは、一般に、特定の汎用目的データポート又はペリフェラルバス(1649)(例えば、コンピュータシステム(1600)のUSBポートなど)に取り付けられた外付けネットワークインターフェースアダプタを必要とする。他は、一般に、後述されるようなシステムバスへの取り付け(例えば、PCコンピュータシステムへのイーサネットネットワーク、又はスマートフォンコンピュータシステムへのセルラーネットワークインターフェース)によってコンピュータシステム(1600)のコアに組み込まれる。これらのネットワークのいずれかを使用して、コンピュータシステム(1600)は他のエンティティと通信することができる。そのような通信は、単方向の受信専用(例えば、ブロードキャストTV)、単方向の送信専用(例えば、特定のCANバスデバイスへのCANバス)、又は例えば、ローカル若しくは広域デジタルネットワークを使用して他のコンピュータシステムに対して双方向であることができる。特定のプロトコル又はプロトコルスタックが、上述されたようなネットワーク及びネットワークインターフェースの各々で使用されることができる。
【0239】
前述のヒューマンインターフェースデバイス、人がアクセス可能なストレージデバイス、及びネットワークインターフェースは、コンピュータシステム(1600)のコア(1640)に取り付けられることができる。
【0240】
コア(1640)は、1つ以上の中央演算処理装置(CPU)(1641)、グラフィクス処理ユニット(GPU)(1642)、フィールドプログラマブルゲートエリア(FPGA)(1643)の形の専用のプログラム可能処理ユニット、特定のタスクのためのハードウェアアクセラレータ(1644)、グラフィクスアダプタ(1650)などを含むことができる。これらのデバイスは、リードオンリーメモリ(ROM)(1645)、ランダムアクセスメモリ(RAM)(1646)内部のユーザアクセス不能ハードドライブなどの内蔵大容量記憶装置、SSD、など(1647)とともに、システムバス(1648)を通じて接続され得る。いくつかのコンピュータシステムでは、システムバス(1648)は、追加のCPU、GPUなどによる拡張を可能にするように、1つ以上の物理プラグの形でアクセス可能であることができる。周辺機器が、コアのシステムバス(1648)に直接又はペリフェラルバス(1649)を通じて、取り付けられることができる。ペリフェラルバスのためのアーキテクチャは、PCI、USBなどを含む。
【0241】
CPU(1641)、GPU(1642)、FPGA(1643)及びアクセラレータ(1644)は、組み合わせて上記のコンピュータコードを構成することができる特定の命令を実行することができる。そのコンピュータコードは、ROM(1645)又はRAM(1646)に格納されることができる。一時データもRAM(1646)に格納することができ、一方、永続性データは、例えば、内蔵大容量記憶装置(1647)に格納されることができる。メモリデバイスのいずれかへの高速な格納及び読み出しは、キャッシュメモリの使用により可能にされることができ、このキャッシュメモリは、1つ以上のCPU(1641)、GPU(1642)、大容量記憶装置(1647)、ROM(1645)、RAM(1646)などと密接に関連づけられることができる。
【0242】
コンピュータ可読媒体は、様々なコンピュータ実装動作を実行するためのコンピュータコードを有することができる。媒体及びコンピュータコードは、本開示の目的のために特別に設計及び構成されたものであることができ、あるいは、それらは、コンピュータソフトウェア技術で通常の知識を有する者によく知られており利用可能である種類のものであることができる。
【0243】
一例として、限定としてではなく、アーキテクチャ(1600)、具体的にはコア(1640)を有するコンピュータシステムは、1つ以上の有形なコンピュータ可読媒体において具現されているソフトウェアを実行するプロセッサ(複数可)(CPU、GPU、FPGA、アクセラレータ、などを含む)の結果として機能を提供することができる。このようなコンピュータ可読媒体は、コア内蔵大容量記憶装置(1647)又はROM(1645)などの、非一時的な性質であるコア(1640)の特定の記憶装置に加えて、先に紹介されたユーザアクセス可能な大容量記憶装置に関連した媒体であることができる。本開示の様々な実施形態を実装するソフトウェアは、そのようなデバイスに格納され、コア(1640)によって実行されることができる。コンピュータ可読媒体は、特定のニーズに応じて、1つ以上のメモリデバイス又はチップを含むことができる。ソフトウェアは、コア(1640)及び、具体的には、その中のプロセッサ(CPU、GPU、FPGAなどを含む)に、RAM(1646)に格納されているデータ構造を定義することと、ソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を変更することとを含む、本明細書で説明されている特定のプロセス又は特定のプロセスの特定の部分を実行させることができる。追加的に又は代替として、コンピュータシステムは、本明細書で説明されている特定のプロセス又は特定のプロセスの特定の部分を実行するようにソフトウェアの代わりに又はそれとともに動作することができる、回路内でハードワイヤード又はその他の方法で具現されたロジック(例えば、アクセラレータ(1644))の結果として、機能を提供することができる。ソフトウェアへの言及は、適切な場合には、ロジックを包含することができ、その逆も同様である。コンピュータ可読媒体への言及は、適切な場合には、実行のためのソフトウェアを格納する回路(例えば、集積回路(IC))、実行のためのロジックを具現する回路、又は両方を包含することができる。本開示は、ハードウェア及びソフトウェアの任意の適切な組み合わせを包含する。
【0244】
本開示はいくつかの非限定的な例示的な実施形態を説明してきたが、変更、順列、及び様々な代替均等物があり、これらは本開示の範囲内にある。したがって、当業者は、ここに明示的に示されているわけでも記述されているわけでもないが、開示の原理を具体化し、したがってその精神と範囲内にある多数のシステム及び方法を考え出すことができることが認められる。