IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ テンセント・アメリカ・エルエルシーの特許一覧

特許7352020ビデオコーディングの方法、コンピュータシステム、及びコンピュータプログラム
<>
  • 特許-ビデオコーディングの方法、コンピュータシステム、及びコンピュータプログラム 図1
  • 特許-ビデオコーディングの方法、コンピュータシステム、及びコンピュータプログラム 図2
  • 特許-ビデオコーディングの方法、コンピュータシステム、及びコンピュータプログラム 図3
  • 特許-ビデオコーディングの方法、コンピュータシステム、及びコンピュータプログラム 図4
  • 特許-ビデオコーディングの方法、コンピュータシステム、及びコンピュータプログラム 図5
  • 特許-ビデオコーディングの方法、コンピュータシステム、及びコンピュータプログラム 図6
  • 特許-ビデオコーディングの方法、コンピュータシステム、及びコンピュータプログラム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-19
(45)【発行日】2023-09-27
(54)【発明の名称】ビデオコーディングの方法、コンピュータシステム、及びコンピュータプログラム
(51)【国際特許分類】
   H04N 19/102 20140101AFI20230920BHJP
   H04N 19/136 20140101ALI20230920BHJP
   H04N 19/182 20140101ALI20230920BHJP
【FI】
H04N19/102
H04N19/136
H04N19/182
【請求項の数】 17
(21)【出願番号】P 2022521626
(86)(22)【出願日】2021-03-31
(65)【公表番号】
(43)【公表日】2022-12-09
(86)【国際出願番号】 US2021025059
(87)【国際公開番号】W WO2021211296
(87)【国際公開日】2021-10-21
【審査請求日】2022-04-11
(31)【優先権主張番号】63/011,895
(32)【優先日】2020-04-17
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/077,488
(32)【優先日】2020-10-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ドゥ,イーシン
(72)【発明者】
【氏名】ジャオ,シン
(72)【発明者】
【氏名】リィウ,シャン
【審査官】岩井 健二
(56)【参考文献】
【文献】特開2017-188765(JP,A)
【文献】特開2014-239338(JP,A)
【文献】米国特許出願公開第2009/0148062(US,A1)
【文献】国際公開第2011/158657(WO,A1)
【文献】Steinar Midtskogen, and Jean-Marc Valin,THE AV1 CONSTRAINED DIRECTIONAL ENHANCEMENT FILTER (CDEF),ICASSP 2018,IEEE,2018年,pp.1193-1197
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
プロセッサによって実行される、ビデオコーディングの方法であって、
ビデオデータを受け取るステップと、
前記受け取られたビデオデータのサンプル内に存在するエッジを検出するステップと、
前記検出されたエッジに関連した方向に対応する傾き値を計算するステップであり、前記傾き値は、前記検出されたエッジに関連したサンプル値の増加又は減少を示す、前記計算するステップと、
前記計算された傾き値に基づき前記ビデオデータを復号するステップと
を有する方法。
【請求項2】
前記エッジは、Sobelエッジ検出器、Cannyエッジ検出器、及び前記受け取られたビデオデータのブロックを1つ以上の所定のエッジ方向と比較することに基づく方向探索、のうちの1つ以上に基づき、検出される、
請求項1に記載の方法。
【請求項3】
前記エッジの検出は、前記受け取られたビデオデータの前記サンプルに関連したサイズに基づき、ピクセルレベル及びブロックレベルのうちの1つで実行される、
請求項1に記載の方法。
【請求項4】
前記傾き値は、前記検出されたエッジに関連した前記方向に直交する方向で計算される、
請求項に記載の方法。
【請求項5】
前記傾き値は、前記検出されたエッジに沿ったサンプル値の対の差分を合計することによって、計算される、
請求項に記載の方法。
【請求項6】
前記検出されたエッジに関連した方向に対応する傾き値を計算するステップは、
【数1】
として前記傾き値を計算することを有し、
xi及びyiは、当該方向に沿ったサンプル値の対であり、kは前記傾き値であり、
k>0であるとき、それは、前記サンプル値が当該方向に沿って増えることを表し、k<0であるとき、それは、前記サンプル値が当該方向に沿って減ることを意味する、
請求項1に記載の方法。
【請求項7】
前記受け取られたビデオデータの前記サンプルに1つ以上のオフセット値を加えるステップを更に有する、
請求項1に記載の方法。
【請求項8】
前記1つ以上のオフセット値は、エッジ検出が適用される色成分とは異なる色成分に加えられる、
請求項7に記載の方法。
【請求項9】
前記1つ以上のオフセット値は、エッジ検出が適用される色成分と同じである色成分に加えられる、
請求項7に記載の方法。
【請求項10】
前記1つ以上のオフセット値は、ブロック内の全てのサンプルに加えられる、
請求項7に記載の方法。
【請求項11】
前記1つ以上のオフセット値は、前記検出されたエッジに位置しているサンプルにのみ加えられる、
請求項7に記載の方法。
【請求項12】
前記1つ以上のオフセット値は、前記検出されたエッジの前記方向及び前記計算された傾き値に基づき導出される、
請求項7に記載の方法。
【請求項13】
前記1つ以上のオフセット値を含むルックアップテーブルが予め定義される、
請求項12に記載の方法。
【請求項14】
前記1つ以上のオフセット値は、前記検出されたエッジの前記方向及び前記傾き値の符号に基づき導出される、
請求項12に記載の方法。
【請求項15】
ビデオコーディングのためのコンピュータシステムであって、
コンピュータプログラムコードを記憶するよう構成された1つ以上のコンピュータ可読非一時記憶媒体と、
前記コンピュータプログラムコードにアクセスし、前記コンピュータプログラムコードによって指示されるように動作するよう構成された1つ以上のコンピュータプロセッサと
を有し、
前記コンピュータプログラムコードは、前記1つ以上のコンピュータプロセッサによって実行される場合に、前記1つ以上のコンピュータプロセッサに、請求項1乃至14のうちいずれか一項に記載の方法を実行させる、
コンピュータシステム。
【請求項16】
ビデオコーディングのためのコンピュータプログラムであって、
1つ以上のコンピュータプロセッサによって実行される場合に、前記1つ以上のコンピュータプロセッサに、請求項1乃至14のうちいずれか一項に記載の方法を実行させる、コンピュータプログラム。
【請求項17】
プロセッサによって実行される、ビデオコーディングの方法であって、
ビデオデータを受け取るステップと、
前記受け取られたビデオデータのサンプル内に存在するエッジを検出するステップと、
前記検出されたエッジに関連した方向に対応する傾き値を計算するステップであり、前記傾き値は、前記検出されたエッジに関連したサンプル値の増加又は減少を示す、前記計算するステップと、
前記計算された傾き値に基づき前記ビデオデータを符号化するステップと
を有する方法。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願への相互参照]
本願は、米国特許商標庁において、2020年4月17日付けで出願された米国特許仮出願第63/011895号及び2020年10月22日付けで出願された米国特許出願第17/077488号からの優先権を主張するものである。これらの米国特許出願は、その全文を参照により本願に援用される。
【0002】
[分野]
本開示は、データ処理の分野に概して関係があり、より具体的には、ビデオ符号化及び復号化に関係がある。
【背景技術】
【0003】
AOMedia Video 1(AV1)は、インターネット上でのビデオ伝送のために設計されたオープンなビデオコーディングフォーマットである。それは、半導体産業、ビデオ・オン・デマンドのプロバイダ、ビデオコンテンツの製作会社、ソフトウェア開発会社、及びウェブブラウザ提供元を含む、2015年に設立された共同体であるAlliance for Open Media(AOMedia)によって、VP9の後継として開発された。AV1プロジェクトのコンポーネントの多くは、団体のメンバーによるこれまでの研究努力から得られた。個々の出資者は、数年前に実験的なテクノロジプラットフォームを開始した。Xiph/MozillaのDaalaは2010年に既にコードを公開しており、Googleの実験的なVP9進化プロジェクトであるV10は2014年9月12日に発表され、CiscoのThorは2015年8月11日に公開された。VP9のコードベースに基づいて構築されたAV1は、追加の技術を組み込み、それらの技術のいくつは、これらの実験的フォーマットで開発された。AV1リファレンスコーデックの第1バージョン0.1.0は、2016年4月7日に公開された。団体は、2018年3月28日にAV1ビットストリーム仕様のリリースを、リファレンスソフトウェアに基づいた符号器及び復号器とともに発表した。2018年6月25日には、仕様の検証済みバージョン1.0.0がリリースされた。2019年1月8日には、仕様の正誤表付き検証済みバージョン1.0.0がリリースされた。AV1ビットストリーム仕様は、リファレンスビデオコーデックを含む。
【発明の概要】
【0004】
実施形態は、ビデオコーディングのための方法、システム、及びコンピュータ可読媒体に関する。一態様に従って、ビデオコーディングの方法が提供される。方法は、ビデオデータを受信及び/又は送信するステップを含み得る。ビデオデータのサンプル内に存在するエッジが検出される。検出されたエッジに関連した方向に対応する傾き値が計算される。ビデオデータは、計算された傾きに基づき復号及び/又は符号化される。
【0005】
他の態様に従って、ビデオコーディングのためのコンピュータシステムが提供される。コンピュータシステムは、1つ以上のプロセッサと、1つ以上のコンピュータ可読メモリと、1つ以上のコンピュータ可読有形記憶デバイスと、1つ以上のメモリの少なくとも1つを介した1つ以上のプロセッサの少なくとも1つによる実行のために1つ以上の記憶デバイスの少なくとも1つに記憶されているプログラム命令とを含み得る。これによって、コンピュータシステムは、方法を実行することができる。方法は、ビデオデータを受信及び/又は送信するステップを含み得る。ビデオデータのサンプル内に存在するエッジが検出される。検出されたエッジに関連した方向に対応する傾き値が計算される。ビデオデータは、計算された傾きに基づき復号及び/又は符号化される。
【0006】
更なる他の態様に従って、ビデオコーディングのためのコンピュータ可読媒体が提供される。コンピュータ可読媒体は、1つ以上のコンピュータ可読記憶デバイスと、1つ以上の有形記憶デバイスの少なくとも1つの記憶されているプログラム命令とを含み得る。プログラム命令はプロセッサによって実行可能である。プログラム命令は、ビデオデータを受信及び/又は送信するステップを然るべく含み得る方法を実行するために、プロセッサによって実行される。ビデオデータのサンプル内に存在するエッジが検出される。検出されたエッジに関連した方向に対応する傾き値が計算される。ビデオデータは、計算された傾きに基づき復号及び/又は符号化される。
【0007】
これら及び他の目的、特徴、及び利点は、添付の図面とともに読まれるべきである、実例となる実施形態の以下の詳細な説明から明らかになるだろう。図面の様々な特徴は、詳細な説明と併せて当業者の理解を容易にするためのものであるため、実寸ではない。
【図面の簡単な説明】
【0008】
図1】少なくとも一実施形態に従う、ネットワーク化されたコンピュータ環境を表す。
図2】少なくとも一実施形態に従う、例となるエッジ検出の図である。
図3】少なくとも一実施形態に従う、例となる傾き計算の図である。
図4】少なくとも一実施形態に従う、ビデオデータ内に存在するエッジを検出することに基づきビデオデータをコーディングするプログラムによって実行されるステップを表す動作フローチャートである。
図5】少なくとも一実施形態に従う、図1に表されたコンピュータ及びサーバの内部及び外部コンポーネントのブロック図である。
図6】少なくとも一実施形態に従う、図1に表されたコンピュータシステムを含む、実例となるクラウドコンピューティング環境のブロック図である。
図7】少なくとも一実施形態に従う、図6の実例となるクラウドコンピューティング環境の機能レイヤのブロック図である。
【発明を実施するための形態】
【0009】
請求されている構造及び方法の詳細な実施形態が、本明細書で開示されるが、開示されている実施形態は、様々な形態で具現化される可能性がある請求されている構造及び方法の実例にすぎないことが理解され得る。なお、これらの構造及び方法は、多数の異なった形態で具現化される可能性があり、本明細書で説明されている例示的な実施形態に限定されるものとして解釈されるべきではない。むしろ、それらの例示的な実施形態は、本開示が完全かつ完ぺきであり、その範囲を当業者に十分に伝えるように、提供されている。明細書中、よく知られている特徴及び技術の詳細は、提示されている実施形態を不必要に不明りょうにしないように省略されることがある。
【0010】
実施形態は、データ処理の分野に概して関係があり、より具体的には、ビデオ符号化及び復号化に関係がある。下記の例示的な実施形態は、とりわけ、ビデオデータ内の検出されたエッジの傾きを計算することに基づきビデオデータを符号化及び復号するシステム、方法、及びコンピュータプログラムを提供する。従って、いくつかの実施形態は、ビデオデータにおけるエッジの改善された検出を通じてビデオデータの改善された符号化及び復号化によってコンピューティングの分野を改善する能力を有している。
【0011】
上述されたように、AOMedia Video 1(AV1)は、インターネット上でのビデオ伝送のために設計されたオープンなビデオコーディングフォーマットである。それは、半導体産業、ビデオ・オン・デマンドのプロバイダ、ビデオコンテンツの製作会社、ソフトウェア開発会社、及びウェブブラウザ提供元を含む、2015年に設立された共同体であるAlliance for Open Media(AOMedia)によって、VP9の後継として開発された。AV1プロジェクトのコンポーネントの多くは、団体のメンバーによるこれまでの研究努力から得られた。個々の出資者は、数年前に実験的なテクノロジプラットフォームを開始した。Xiph/MozillaのDaalaは2010年に既にコードを公開しており、Googleの実験的なVP9進化プロジェクトであるV10は2014年9月12日に発表され、CiscoのThorは2015年8月11日に公開された。VP9のコードベースに基づいて構築されたAV1は、追加の技術を組み込み、それらの技術のいくつは、これらの実験的フォーマットで開発された。AV1リファレンスコーデックの第1バージョン0.1.0は、2016年4月7日に公開された。団体は、2018年3月28日にAV1ビットストリーム仕様のリリースを、リファレンスソフトウェアに基づいた符号器及び復号器とともに発表した。2018年6月25日には、仕様の検証済みバージョン1.0.0がリリースされた。2019年1月8日には、仕様の正誤表付き検証済みバージョン1.0.0がリリースされた。AV1ビットストリーム仕様は、リファレンスビデオコーデックを含む。
【0012】
AV1では、ループフィルタは、ビデオ圧縮プロセス中のアーチファクト及び情報損失を扱う。前記ループフィルタは、ALF、SAO、デブロッキング、CDEF、CCALF、LRを含むが、これらに限られない。CCALは、クロマ成分においてエッジを強調するハイパスフィルタである。最初に、従来のフィルタ処理方法のように、CCALFは、複数組のフィルタ係数を通知する必要がある。更に、CCALFは、クロマ成分にのみ適用され得る。しかし、不可逆コーディングモジュールは情報損失を導入する。情報損失の一例は、圧縮後のエッジの弱化又は消失である。これは、コーディング効率及び視覚品質に影響を及ぼす可能性がある。従って、第1及び/又は第2色成分に属するサンプルを用いてエッジ方向及びエッジ位置を決定し、それらのサンプルを用いてサンプル値の増加又は減少を示す傾き値を計算し、オフセット値を加えることが、有利であり得る。フィルタ係数は、通知される必要がなくてもよく、フィルタ処理は、Y/Cb/Cr及びR/G/Bのような全ての色成分に適用され得る。
【0013】
本明細書では、様々な実施形態に従う方法、装置(システム)、及びコンピュータ可読媒体のフローチャート図及び/又はブロック図を参照して、態様が記載される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装され得ることが理解されるだろう。
【0014】
これより図1を参照すると、ビデオデータ内に存在するエッジを検出することに基づき
ビデオデータを符号化及び復号するビデオコーディングシステムシステム100(以降「システム」)を表すネットワーク化されたコンピュータ環境の機能ブロック図が示されている。当然ながら、図1は、1つの実施の実例を単に提供しており、異なる実施形態が実装される可能性がある環境に関して如何なる限定も示唆するものではない。表されている環境に対する多くの変更は、設計及び実装要件に基づき行われてもよい。
【0015】
システム100は、コンピュータ102及びサーバコンピュータ114を含み得る。コンピュータ102は、通信ネットワーク110(以降「ネットワーク」)を介してサーバコンピュータ114と通信し得る。コンピュータ102は、プロセッサ104と、データ記憶デバイス106に記憶されており、ユーザとインターフェース接続しかつサーバコンピュータ114と通信することを可能にされるソフトウェアプログラム108とを含み得る。図5を参照して以下で記載されるように、コンピュータ102は、内部コンポーネント800A及び外部コンポーネント900Aを夫々含んでもよく、サーバコンピュータ114は、内部コンポーネント800B及び外部コンポーネント900Bを夫々含んでもよい。コンピュータ102は、例えば、モバイルデバイス、電話機、パーソナル・デジタル・アシスタント、ネットブック、ラップトップコンピュータ、タブレットコンピュータ、デスクトップコンピュータ、又はプログラムの実行、ネットワークへのアクセス、及びデータベースへのアクセスが可能なあらゆるタイプのコンピューティングデバイス、であってよい。
【0016】
サーバコンピュータ114はまた、図6及び図7に関連して後述されるように、SaaS(Software as a Service)、PaaS(Platform as a Service)、又はIaaS(Infrastructure as a Service)などのクラウドコンピューティングサービスモデルで作動してもよい。サーバコンピュータ114はまた、プライベートクラウド、コミュニティクラウド、パブリッククラウド、又はハイブリッドクラウドなどのクラウドコンピューティングデプロイメントモデルで配置されてもよい。
【0017】
ビデオデータ内のエッジを検出することに基づきビデオデータをコーディングするために使用され得るサーバコンピュータ114は、データベース112と相互作用し得るビデオコーディングプログラム116(以降「プログラム」)を実行することを可能にされる。ビデオコーディングプログラムメソッドは、図4に関連して以下で更に詳細に説明される。一実施形態で、コンピュータ102は、ユーザインターフェースを含む入力デバイスとして作動してもよく、一方、プログラム116は、サーバコンピュータ114で主に実行されてもよい。代替の実施形態では、プログラム116は、1つ以上のコンピュータ102で主に実行されてもよく、一方、サーバコンピュータ114は、プログラム116によって使用されるデータの処理及び記憶のために使用されてもよい。留意されるべきは、プログラム116は、スタンドアロンのプログラムであってもよく、あるいは、より大きいビデオコーディングプログラムに組み込まれてもよい点である。
【0018】
なお、留意されるべきは、プログラム116の処理は、いくつかの事例では、任意の比率でコンピュータ102とサーバコンピュータ114との間で共有されてもよい点である。他の実施形態では、プログラム116は、1よりも多いコンピュータ、サーバコンピュータ、又はコンピュータとサーバコンピュータとの何らかの組み合わせ、例えば、ネットワーク110にわたって単一のサーバコンピュータ114と通信する複数のコンピュータ102、で作動してもよい。他の実施形態では、例えば、プログラム116は、ネットワーク110にわたって複数のクライアントコンピュータと通信する複数のサーバコンピュータ114で作動してもよい。代替的に、プログラムは、ネットワークにわたってサーバ及び複数のクライアントコンピュータと通信するネットワークサーバで作動してもよい。
【0019】
ネットワーク110は、有線接続、無線接続、光ファイバ接続、又はそれらの何らかの組み合わせを含んでもよい。一般に、ネットワーク110は、コンピュータ102とサーバコンピュータ114との間の通信をサポートする接続及びプロトコルの任意の組み合わせであることができる。ネットワーク110は、例えば、ローカル・エリア・ネットワーク(LAN)、インターネットのようなワイド・エリア・ネットワーク(WAN)、PSTN(Public Switched Telephone Network,PSTN)のような電気通信網、無線ネットワーク、公衆交換網、衛星網、セルラー網(例えば、第5世代(5G)ネットワーク、ロング・ターム・エボリューション(LTE)ネットワーク、第3世代(3G)ネットワーク、符号分割多重アクセス(CDMA)ネットワーク、など)、公衆陸上移動体通信網(PLMN)、メトロポリタン・エリア・ネットワーク(MAN)、プライベートネットワーク、アドホックネットワーク、イントラネット、光ファイバ網、など、及び/又はこれら若しくは他のタイプのネットワークの組み合わせといった、様々なタイプのネットワークを含んでもよい。
【0020】
図1に示されているデバイス及びネットワークの数及び配置は、一例として与えられている。実際には、図1に示されているものと比べて、追加のデバイス及び/又はネットワーク、より少ないデバイス及び/又はネットワーク、異なるデバイス及び/又はネットワーク、あるいは、異なるように配置されたデバイス及び/又はネットワークが存在してもよい。更に、図1に示されている2つ以上のデバイスは、単一のデバイス内に実装されてもよく、あるいは、図1に示されている単一のデバイスは、複数の分散したデバイスとして実装されてもよい。追加的に、又は代替的に、システム100のデバイス(例えば、1つ以上のデバイス)の組は、システム100のデバイスの他の組によって実行されるものとして記載されている1つ以上の機能を実行してもよい。
【0021】
これより図2を参照すると、例となるエッジ検出200の図が表されている。エッジは、強度値の突然の変化が起こるビデオ及びイメージデータの連続した位置にあるサンプルの組を表し得る。エッジは、エッジに沿った単位ベクトルを表し得る方向を有し得る。エッジは、エッジが位置しているサンプル位置に対応し得る位置を有し得る。従って、エッジ検出は、エッジ方向及びエッジ位置を決定するために使用され得るプロセスに対応し得る。例えば、エッジ検出は、エッジに沿った傾きを決定することによって実行され得る。傾きは、エッジ方向とは異なり得る方向に沿ったサンプル値の増加又は減少に対応し得る。負の傾き値は、所与の方向に沿ってサンプル強度がより小さい強度に変化することに対応し得る。一方、正の傾き値は、所与の方向に沿ってサンプル強度がより大きい強度に変化することに対応し得る。エッジ検出200は、例えば、水平エッジ202、垂直エッジ204、45度エッジ206、及び135度エッジ208を含み得る。十分に大きいサンプルブロックサイズを考えると、実質的に如何なる角度のエッジも存在してよいことが理解されるだろう。
【0022】
エッジ検出は、M×Nブロックに適用され得る。ここで、M及びNは正の整数であり、M及びNの値の例には、1、2、3、4、8などが含まれるが、これらに限られない。このプロセスの入力は、サンプルのM×Nブロックであり、出力は、そのブロックのエッジ方向及びエッジ位置である。一実施形態で、M=N=1であるとき、エッジ検出プロセスはピクセルレベルで実行される。一実施形態で、M>1及び/又はN>1であるとき、エッジ検出はブロックレベルで実行される。一実施形態で、エッジ検出は、より小さいエラー値を有しているブロックの方向探索に基づき、決定される。方向探索は、デブロッキングの直後に、再構成されたピクセルに対して機能する。これらのピクセルは復号器で利用可能であるから、方向は通知不要である。探索は8×8ブロックに対して機能する。これは、非直線エッジを適切に処理するのに十分に小さい一方で、量子化されたイメージに適用される場合に方向を確実に推定するのに十分に大きい。8×8領域上で一定の方向を有することは、フィルタのベクトル化も容易にする。ブロックごとに、そのブロック内のパターンと最もよく一致する方向は、量子化されたブロックと最も近い完全な方向性を持ったブロックとの間の差分の二乗和(sum of squared differences,SSD)を最小化することによって、決定され得る。完全な方向性を持ったブロック(perfectly directional block)は、1つの方向での直接に沿ったピクセルの全てが同じ値を有しているブロックである。一実施形態で、エッジ検出は、Cannyエッジ検出器を用いて実行される。一実施形態で、エッジ検出は、Sobelエッジ検出器を用いて実行される。
【0023】
これより図3を参照すると、例となる傾き計算300の図が表されている。傾きは、水平エッジ302、垂直エッジ304、45度エッジ306、及び135度エッジ308に沿って計算され得る。傾き値は、サンプル値の増加又は減少を示し得る方向に沿って計算され得る。このプロセスへの入力は、M×Nブロックを含んでよく、このプロセスの出力は、数kを含んでよい。一例で、k>0であるとき、それは、サンプル値がその方向に沿って増えることを表し、k<0であるとき、それは、サンプル値がその方向に沿って減ることを意味する。ある方向に沿った傾きは、
【数1】
として計算される。ここで、xi及びyiは、当該方向に沿ったサンプル値の対であり得る。
【0024】
一実施形態で、傾きは、エッジ方向に直交し得る方向で計算されてもよい。一例で、エッジが水平である場合には、垂直傾きが計算される。他の例では、エッジが垂直である場合には、水平傾きが計算される。他の例では、エッジが45度である場合には、135度の傾きが計算される。他の例では、エッジが135度である場合には、45度の方向きが計算される。
【0025】
オフセット値は、サンプルに加えられ得る整数であってよい。例えば、オフセット値には、0、+1、-1、+2、-2、+3、-3、などが含まれ得る。一実施形態で、オフセットは、エッジ検出が適用される色成分とは異なる色成分に加えられる。一例で、エッジ検出はY(ルーマ成分)に適用され、オフセットはCb(青色差分クロマ成分)及び/又はCr(赤色差分クロマ成分)に加えられる。一実施形態で、オフセットは、エッジ検出が適用される色成分と同じである色成分に加えられる。一例で、エッジ検出はYに適用され、オフセットはYに加えられる。
【0026】
一実施形態で、オフセットは、ブロック内の全てのサンプルに加えられる。一例で、エッジ検出が8×8ルーマブロックに適用される場合に、オフセットは、8×8ルーマブロック内の全てのサンプルに加えられる。一例で、エッジ検出が8×8ルーマブロックに適用される場合に、オフセットは、対応する4×4クロマブロック内の全てのサンプルに加えられる。一実施形態で、オフセットは、エッジに位置しているサンプル、例えば、エッジ位置にのみ加えられる。一例で、エッジ検出が8×8ルーマブロックに適用される場合に、オフセットは、8×8ルーマブロック内のエッジに位置しているサンプルにのみ加えられる。一例で、エッジ検出が8×8ルーマブロックに適用される場合に、オフセットは、対応する4×4クロマブロック内のエッジに位置しているサンプルにのみ加えられる。
【0027】
一実施形態で、サンプル値が最大又は最小値を超えないことを確かにするために、クリッピングが、オフセットを加えるときに実行される。一例で、クリッピングは、clip(x)=max(min(x,max_val),min_val)として実行され、このとき、max及びminは、最大及び最小演算子を指し、max_val及びmin_valは、最大及び最小サンプル値を表し、xは、クリップされるサンプル値である。
【0028】
一実施形態で、オフセット値は、エッジ方向及び傾きに応じて導出される。一例では、導出されたエッジ方向i及び傾き値gをルックアップテーブルへの入力として仮定して、ルックアップテーブルが予め定義される。このルックアップテーブルは、ハイレベルパラメータセット(DPS、VPS、SPS、PPS、APS)、スライスヘッダ、ピクチャヘッダ、SEIメッセージ、又はCTUレベルで通知され得る。一例で、オフセット値は、エッジ方向及び傾きの符号に応じて導出される。一例で、エッジ方向は同じであるが傾きの符号が異なる場合に適用されるオフセット値は、異なる符号値を有する。例えば、正の傾きを有する45度エッジのオフセット値と、負の傾き値を有する45度エッジのオフセット値とは、反対の符号を有する。
【0029】
これより図4を参照すると、ビデオデータをコーディングする方法400のステップを表す動作フローチャートが表されている。いくつかの実施で、図4の1つ以上のプロセスブロックは、コンピュータ102(図1)及びサーバコンピュータ114(図1)によって実行され得る。いくつかの実施で、図4の1つ以上のプロセスブロックは、コンピュータ102及びサーバコンピュータ114とは別個の又はそれらを含む他のデバイス又はデバイスのグループによって実行されてもよい。
【0030】
402で、方法400は、ビデオデータを受け取るステップを含む。
【0031】
404で、方法400は、受け取られたビデオデータのサンプル内に存在するエッジを検出するステップを含む。
【0032】
406で、方法400は、検出されたエッジに関連した方向に対応する傾き値を計算するステップを含む。
【0033】
408で、方法400は、計算された傾きに基づきビデオデータを復号するステップを含む。
【0034】
図4は、単に1つの実施の説明を与えるものであり、どのように異なる実施形態が実装され得るかに関して如何なる限定も示唆するものではないことが理解され得る。表されている環境に対する多くの変更は、設計及び実装要件に基づき行われ得る。例えば、方法は、記載されている実施形態の主旨から外れずに、ビデオデータのサンプル内に存在するエッジを検出するステップと、検出されたエッジに関連した方向に対応する傾き値を計算するステップと、計算された傾きに基づきビデオデータを符号化するステップと、符号化されたビデオデータを送信するステップとを含んでもよい。
【0035】
図5は、実例となる実施形態に従う、図1で表されているコンピュータの内部及び外部コンポーネントのブロック図500である。理解されるべきは、図5は、単に1つの実施の説明を与えるものであり、異なる実施形態が実装される可能性がある環境に関して如何なる限定も示唆するものではない点である。表されている環境に対する多くの変更は、設計及び実装要件に基づき行われてもよい。
【0036】
コンピュータ102(図1)及びサーバコンピュータ114(図1)は、図5に表されている内部コンポーネント800A、B及び外部コンポーネント900A、Bの各々の組を含み得る。内部コンポーネント800の組の夫々は、1つ以上のバス826上にある1つ以上のプロセッサ820、1つ以上のコンピュータ読み出し可能なRAM822、及び1つ以上のコンピュータ読み出し可能なROM824と、1つ以上のオペレーティングシステム828と、1つ以上のコンピュータ可読有形記憶デバイス830とを含む。
【0037】
プロセッサ820は、ハードウェア、ファームウェア、ハードウェアとソフトウェアとの組み合わせで実装される。プロセッサ820は、中央演算処理装置(CPU)、グラフィクス・プロセッシング・ユニット(GPU)、アクセラレーテッド・プロセッシング・ユニット(APU)、マイクロプロセッサ、マイクロコントローラ、デジタル・シグナル・プロセッサ(DSP)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途向け集積回路(ASIC)、又は他のタイプのプロセッシングコンポーネントである。いくつかの実施で、プロセッサ820は、機能を実行するようプログラミングされることが可能な1つ以上のプロセッサを含む。バス826は、内部コンポーネント800A、Bの中で通信を可能にするコンポーネントを含む。
【0038】
サーバコンピュータ114(図1)上の1つ以上のオペレーティングシステム828、ソフトウェアプログラム108(図1)、及びビデオコーディングプログラム116(図1)は、各々のRAM822(通常はキャッシュメモリを含む。)の1つ以上を介した各々のプロセッサ820の1つ以上による実行のために各々のコンピュータ可読有形記憶デバイス830の1つ以上に記憶される。図5に表されている実施形態では、コンピュータ可読有形記憶デバイス830の夫々は、内蔵ハードドライブの磁気ディスク記憶デバイスである。代替的に、コンピュータ可読有形記憶デバイス830の夫々は、ROM824のような半導体記憶デバイス、EPROM、フラッシュメモリ、光ディスク、光学磁気ディスク、固体状態ディスク、コンパクトディスク(CD)、デジタルバーサタイルディスク(DVD)、フロッピー(登録商標)ディスク、カートリッジ、磁気テープ、及び/又はコンピュータプログラム及びデジタル情報を記憶することができる他のタイプの非一時的なコンピュータ可読有形記憶デバイスである。
【0039】
内部コンポーネント800A、Bの各組はまた、CD-ROM、DVD、メモリスティック、磁気テープ、磁気ディスク、光ディスク又は半導体記憶デバイスなどの1つ以上の、持ち運び可能な、コンピュータ可読有形記憶デバイス936に対して読み書きを行うためのR/Wドライブ又はインターフェース832も含む。ソフトウェアプログラム108(図1)及びビデオコーディングプログラム116(図1)のようなソフトウェアプログラムは、各々の持ち運び可能なコンピュータ可読有形記憶デバイス936の1つ以上に記憶され、各々のR/Wドライブ又はインターフェース832により読み出され、各々のハードドライブ830にロードされ得る。
【0040】
内部コンポーネント800A、Bの各組はまた、TCP/IPアダプタカード、無線Wi-Fiインターフェースカード、又は3G、4G若しくは5G無線インターフェースカード、あるいは、他の有線又は無線通信リンクなどのネットワークアダプタ又はインターフェース836も含む。サーバコンピュータ114(図1)上のソフトウェアプログラム108(図1)及びビデオコーディングプログラム116(図1)は、外部コンピュータからネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、又は他のワイド・エリア・ネットワーク)及び各々のネットワークアダプタ又はインターフェース836を経由してコンピュータ102(図1)及びサーバコンピュータ114(図1)にダウンロードされ得る。ネットワークアダプタ又はインターフェース836から、サーバコンピュータ114上のソフトウェアプログラム108及びビデオコーディングプログラム116は、各々のハードドライブ830にロードされる。ネットワークは、銅線、光ファイバ、無線伝送、ルータ、ファイヤウォール、スイッチ、ゲートウェイコンピュータ、及び/又はエッジサーバを有してもよい。
【0041】
外部コンポーネント900A、Bの組の夫々は、コンピュータ表示モニタ920、キーボード930、及びコンピュータマウス934を含むことができる。外部コンポーネント900A、Bはまた、タッチスクリーン、仮想キーボード、タッチパッド、ポインティングデバイス、及び他のヒューマンインターフェースデバイスを含むこともできる。内部コンポーネント800A、Bの組の夫々はまた、コンピュータ表示モニタ920、キーボード930、及びコンピュータマウス934へインターフェース接続するためのデバイスドライバ840も含む。デバイスドライバ840、R/Wドライブ又はインターフェース832、及びネットワークアダプタ又はインターフェース836は、ハードウェア及びソフトウェア(記憶デバイス830及び/又はROM824に記憶される。)を有する。
【0042】
本開示はクラウドコンピューティングに関する詳細な説明を含むが、本明細書で説明されている教示の実施はクラウドコンピューティング環境に限られないことが事前に理解される。むしろ、いくつかの実施形態は、現在知られているか又は後に開発されるあらゆる他のタイプのコンピューティング環境とともに実装可能である。
【0043】
クラウドコンピューティングは、管理労力やサービスのプロバイダとのインタラクションが最小限でありながら迅速にプロビジョニング及びリリースすることができる構成可能なコンピューティングリソース(例えば、ネットワーク、ネットワークバンド幅、サーバ、プロセッシング、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールへの都合の良いオンデマンドのネットワークアクセスを可能にするためのサービス提供のモデルである。このクラウドモデルは、少なくとも5つの特徴、少なくとも3つのサービスモデル、及び少なくとも4つのデプロイメントモデルを含み得る。
【0044】
特徴は次の通りである:
オンデマンドのセルフサービス(On-demand Self-service):クラウドコンシューマは、サービスのプロバイダとのヒューマンインタラクションを必要とせずに自動的に必要に応じて、サーバ時間及びネットワークストレージなどのコンピューティング機能を一方的にプロビジョニングすることができる。
幅広いネットワークアクセス(Broad Network Access):機能はネットワーク上で利用可能であり、異種のシン(thin)又はシック(thick)クライアントプラットフォーム(例えば、携帯電話機、ラップトップ、及びPDA)による使用を促進する標準メカニズムを通じてアクセスされ得る。
リソースの共用(Resource Pooling):プロバイダのコンピューティングリソースは、マルチテナントモデルを用いて複数のコンシューマにサービスを提供するようプールされ、異なる物理的及び仮想的なリソースが要求に応じて動的に割り当て及び再割り当てされる。コンシューマは、一般的に、提供されているリソースの正確な位置に関して制御又は知識を有しておらず、より高いレベルの抽象化(例えば、国、州、又はデータセンター)で位置を指定することが可能であるという点で、場所に依存しないという感覚がある。
スピーディな拡張性(Rapid Elasticity):機能は、迅速にスケールアウトするよう、いくつかの場合には自動的に、迅速かつ柔軟にプロビジョニングされ、かつ、迅速にスケールインするよう直ちにリリースされ得る。コンシューマには、プロビジョニングに利用可能な機能は、無限であるようにしばしば見え、いつでも如何なる量でも購入可能である。
計測可能なサービス(Measured Service):クラウドシステムは、サービスのタイプ(ストレージ、プロセッシング、バンド幅、アクティブなユーザアカウント、など)に適した何らかの抽象化レベルで計測機能を活用することによって、リソース使用を自動的に制御及び最適化する。リソース利用は、利用されているサービスのプロバイダ及びコンシューマの両方に透明性を提供するように、監視、制御、及び報告され得る。
【0045】
サービスモデルは次の通りである:
SaaS(Software as a Service):コンシューマに提供される機能は、クラウドインフラストラクチャで実行されているプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブブラウザ(例えば、ウェブベースの電子メール)などのシンクライアントインターフェースを通じて様々なクライアントデバイスからアクセス可能である。コンシューマは、ネットワーク、サーバ、オペレーティングシステム、ストレージ、更には個々のアプリケーション機能を含む基幹クラウドインフラストラクチャを管理又は制御しない。ただし、ユーザ固有のアプリケーション構成設定が限られている場合を除く。
PaaS(Platform as a Service):コンシューマに提供される機能は、プロバイダによってサポートされているプログラミング言語及びツールを使用して、コンシューマが作成又は取得したアプリケーションをクラウドインフラストラクチャにデプロイすることである。コンシューマは、ネットワーク、サーバ、オペレーティングシステム、ストレージを含む基幹クラウドインフラストラクチャを管理又は制御しないが、デプロイされたアプリケーション、及び場合によっては、アプリケーションホスティング環境に対する制御を有する。
IaaS(Infrastructure as a Service):コンシューマに提供される機能は、プロセッシング、ストレージ、ネットワーク、及び他の基本的なコンピューティングリソースをプロビジョニングすることであり、コンシューマは、オペレーティングシステム及びアプリケーションを含むことができる任意のソフトウェアをデプロイ及び実行することができる。コンシューマは、基幹クラウドインフラストラクチャを管理又は制御しないが、オペレーティングシステム、ストレージ、及びデプロイされたアプリケーションに対する制御を有し、場合により、選択したネットワーキングコンポーネント(例えば、ホストファイヤウォール)の限られた制御を有する。
【0046】
デプロイメントモデルは次の通りである:
プライベートクラウド(Private Cloud):クラウドインフラストラクチャは、1つの組織のためにのみ運用される。それは、組織又はサードパーティによって管理されてもよく、オンプレミス又はオフプレミスに存在し得る。
コミュニティクラウド(Community Cloud):クラウドインフラストラクチャは、いくつかの組織によって共有され、共通の懸案事項(例えば、ミッション、セキュリティ要件、ポリシー、及びコンプライアンス懸念)を有している特定のコミュニティをサポートする。それは、組織又はサードパーティによって管理されてもよく、オンプレミス又はオフプレミスに存在し得る。
パブリッククラウド(Public Cloud):クラウドインフラストラクチャは、一般の人々又は大規模な業界グループに利用可能にされており、クラウドサービスを販売する組織によって所有されている。
ハイブリッドクラウド(Hybrid Cloud):クラウドインフラストラクチャは、2つ以上のクラウド(プライベート、コミュニティ、又はパブリック)の複合であり、一意のエンティティのままであるが、データ及びアプリケーションの移植性を可能にする標準化された又は独自の技術(例えば、クラウド間の負荷分散のためのクラウドバースト)によって結合されている。
【0047】
クラウドコンピューティング環境は、無国籍(statelessness)、低結合度、モジュール性、セマンティック相互運用性に焦点を合わせたサービス指向である。クラウドコンピューティングの中心には、相互接続されたノードのネットワークを有するインフラストラクチャがある。
【0048】
図6を参照すると、実例となるクラウドコンピューティング環境600が表されている。図示されるように、クラウドコンピューティング環境600は、1つ以上のクラウドコンピューティングノード10を有し、それらと、例えば、パーソナル・デジタル・アシスタント(PDA)又は携帯電話機54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、及び/又は自動車コンピュータシステム54Nなどの、クラウドコンシューマによって使用されるローカルコンピューティングデバイスが、通信し得る。クラウドコンピューティングノード10は、互いに通信することもできる。それらは、上記のプライベート、コミュニティ、パブリック若しくはハイブリッドなどの1つ以上のネットワーク、又はそれらの組み合わせにおいて、物理的又は仮想的にグループ化されてもよい(図示せず)。これは、クラウドコンピューティング環境600が、クラウドコンシューマがローカルコンピューティングデバイスでリソースを保持する必要がないサービスとしてインフラストラクチャ、プラットフォーム及び/又はソフトウェアを提供することを可能にする。図6に示されているコンピューティングデバイス54A~Nのタイプは、単に実例であるよう意図され、クラウドコンピューティングノード10及びクラウドコンピューティング環境600は、任意のタイプのネットワーク及び/又はネットワークアドレッシング可能な接続にわたって(例えば、ウェブブラウザを用いて)任意のタイプのコンピュータ化されたデバイスと通信可能であることが理解される。
【0049】
図7を参照すると、クラウドコンピューティング環境600(図6)によって提供される機能抽象化レイヤ700の組が示されている。図7に示されているコンポーネント、レイヤ、及び機能は、単に実例であるよう意図され、実施形態はそれに限られないことが事前に理解されるべきである。表されているように、次のレイヤ及び対応する機能が提供される。
【0050】
ハードウェア及びソフトウェアレイヤ60は、ハードウェア及びソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例には、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ62、サーバ63、ブレードサーバ64、記憶デバイス65、並びにネットワーク及びネットワーキングコンポーネント66が含まれる。いくつかの実施形態で、ソフトウェアコンポーネントには、ネットワークアプリケーションサーバソフトウェア67及びデータベースソフトウェア68が含まれる。
【0051】
仮想化レイヤ70は、抽象化レイヤを提供し、それから、仮想エンティティの次の例、つまり、仮想サーバ71、仮想ストレージ72、仮想プライベートネットワークを含む仮想ネットワーク73、仮想アプリケーション及びオペレーティングシステム74、並びに仮想クライアント75、が提供され得る。
【0052】
一例で、管理レイヤ80は、後述される機能を提供し得る。リソースプロビジョニング81は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソース及び他のリソースの動的な調達を提供する。計測及び価格提示(Metering and Pricing)82は、クラウドコンピューティング環境内でリソースが利用される場合の費用追跡と、それらのリソースの消費に対する会計又は請求とを提供する。一例で、これらのリソースは、アプリケーションソフトウェアライセンスを有してもよい。セキュリティは、データ及び他のリソースの保護とともに、クラウドコンシューマ及びタスクの身元確認を提供する。ユーザポータル83は、コンシューマ及びシステムアドミストレータのためにクラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、必要とされるサービスレベルが満足されるようなクラウドコンピューティングリソース割り当て及び管理を提供する。サービス水準合意(Service Level Agreement,SLA)の立案及び履行(planning and fulfillment)85は、SLAに従って将来の要求が予想されるクラウドコンピューティングリソースの事前準備及び調達を提供する。
【0053】
作業負荷レイヤ90は、クラウドコンピューティング環境が利用される可能性がある機能の例を提供する。このレイヤから提供され得る作業負荷及び機能の例には、地図作成及びナビゲーション91、ソフトウェア開発及びライフサイクル管理92、仮想クラスルーム教育配信93、データアナリティクス処理94、トランザクション処理95、及びビデオコーディング96が含まれる。ビデオコーディング96は、ビデオデータ内のエッジを検出することに基づきビデオデータを符号化及び復号し得る。
【0054】
いくつかの実施形態は、任意の可能な技術的詳細レベルの統合でシステム、方法、及び/又はコンピュータ可読媒体に関係し得る。コンピュータ可読媒体は、プロセッサに動作を実行させるためのコンピュータ読み出し可能なプログラム命令をその上に有する1つ以上のコンピュータ読み出し可能な非一時記憶媒体を含んでもよい。
【0055】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を保有又は記憶することができる有形なデバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、又はそれらの任意の適切な組み合わせであってもよいが、これらに限られない。コンピュータ可読記憶媒体のより具体的な例の非包括的リストには、次の、ポータブルコンピュータディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去可能なプログラム可能リード・オンリー・メモリ(EPROM又はフラッシュメモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブルコンパクトディスク型リード・オンリー・メモリ(CD-ROM)、デジタルバーサタイルディスク(DVD)、メモリスティック、フロッピー(登録商標)ディスク、機械的に符号化されたデバイス(例えば、パンチカード、又は命令が記録されている溝の隆起構造)、及びそれらの任意の適切な組み合わせが含まれる。本明細書で使用されるコンピュータ可読記憶媒体は、電波又は他の自由に伝搬する電磁波、導波路又は他の伝送媒体を通って伝搬する電磁波(例えば、光ファイバケーブルを通る光パルス)、あるいは、配線を通じて伝送される電気信号などのような、一時的な信号自体であると解釈されるべきではない。
【0056】
本明細書で記載されるコンピュータ読み出し可能なプログラム命令は、コンピュータ可読記憶媒体から各々のコンピューティング/プロセッシングデバイスへ、あるいは、ネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク及び/又は無線ネットワークを経由して外部コンピュータ又は外部記憶デバイスへ、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイヤウォール、スイッチ、ゲートウェイコンピュータ、及び/又はエッジサーバを有してもよい。各コンピューティング/プロセッシングデバイスのネットワークアダプタカード又はネットワークインターフェースは、ネットワークからコンピュータ読み出し可能なプログラム命令を受け取り、コンピュータ読み出し可能なプログラム命令を、各々のコンピューティング/プロセッシングデバイス内のコンピュータ可読記憶媒体での記憶のために転送する。
【0057】
動作を実行するためのコンピュータ読み出し可能なプログラムコード/命令は、アセンブラ命令、命令セットアーキテクチャ(instruction-set-architecture,ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、又はSmalltalk、C++、などのようなオブジェクト指向のプログラミング言語と、“C”プログラミング言語又は同様のプログラミング言語などの手続き型プログラミング言語とを含む1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコード若しくはオブジェクトコードのどちらか、であってもよい。コンピュータ読み出し可能なプログラム命令は、全体的にユーザのコンピュータで、部分的にユーザのコンピュータで、スタンドアロンのソフトウェアパッケージとして、部分的にユーザのコンピュータでかつ部分的に遠隔のコンピュータで、又は全体的に遠隔のコンピュータ若しくはサーバで、実行され得る。後者のシナリオでは、遠隔のコンピュータは、ローカル・エリア・ネットワーク(LAN)又はワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータへ接続されてもよく、あるいは、接続は、外部コンピュータに対して(例えば、インターネット・サービス・プロバイダを用いてインターネットを通じて)行われてもよい。いくつかの実施形態で、例えば、プログラム可能なロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、態様又は動作を実行するために、電子回路をパーソナル化するようコンピュータ読み出し可能なプログラム命令の状態情報を利用することによって、コンピュータ読み出し可能なプログラム命令を実行してもよい。
【0058】
これらのコンピュータ読み出し可能なプログラム命令は、マシンを出現させるよう汎用のコンピュータ、特別目的のコンピュータ、又は他のプログラム可能なデータ処理装置のプロセッサへ供給されてもよく、それにより、コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサにより実行される命令は、フローチャート及び/又はブロック図の1つ以上のブロックで特定されている機能/動作を実装する手段を生み出す。これらのコンピュータ読み出し可能なプログラム命令はまた、コンピュータ、プログラム可能なデータ処理装置、及び/又は他のデバイスに、特定の様態で機能するよう指示することができるコンピュータ可読記憶媒体に記憶されてもよく、それにより、命令を記憶しているコンピュータ可読記憶媒体は、フローチャート及び/又はブロック図の1つ以上のブロックで特定されている機能/動作の態様を実装する命令を含む製品を有する。
【0059】
コンピュータ読み出し可能なプログラム命令はまた、コンピュータ実装プロセスを出現させるように一連の動作ステップをコンピュータ、他のプログラム可能なデータ処理装置又は他のデバイスで実行させるようコンピュータ、他のプログラム可能なデータ処理装置又は他のデバイスにロードされてもよく、それにより、コンピュータ、他のプログラム可能なデータ処理装置又は他のデバイスで実行される命令は、フローチャート及び/又はブロック図の1つ以上のブロックで特定されている機能/動作を実装する。
【0060】
図面のフローチャート及びブロック図は、様々な実施形態に従うシステム、方法、及びコンピュータ可読媒体の可能な実施のアーキテクチャ、機能、及び動作を表す。これに関連して、フローチャート又はブロック図の各ブロックは、特定されている論理的機能を実装するための1つ以上の実行可能命令を有するモジュール、セグメント、又は命令の部分に相当し得る。方法、コンピュータシステム、及びコンピュータ可読媒体は、図面に表されているものと比べて、追加のブロック、より少ないブロック、異なるブロック、又は異なるように配置されたブロックを含んでもよい。いくつかの代替の実施では、ブロックで記述されている機能は、図面で記述されている順序を外れて起こってもよい。例えば、連続して示されている2つのブロックは、実際には、同時に又は略同時に実行されてもよく、あるいは、ブロックは、関連する機能に応じて、時々、逆の順序で実行されてもよい。また、ブロック図及び/又はフローチャート図の各ブロック、並びにブロック図及び/又はフローチャート図のブロックの組み合わせは、特定されている機能又は動作を実行するか、あるいは、特別目的のハードウェア及びコンピュータ命令の組み合わせを実行する特別目的のハードウェアベースシステムによって、実装され得ることも留意されたい。
【0061】
明らかなように、本明細書で記載されるシステム及び/又は方法は、種々の形態のハードウェア、ファームウェア、又はハードウェアとソフトウェアとの組み合わせで実装されてもよい。このようなシステム及び/又は方法を実装するために使用される実際の特殊な制御ハードウェア又はソフトウェアコードは、実施を制限するものではない。よって、システム及び/又は方法の動作及び挙動は、特定のソフトウェアコードを参照せずに本明細書で記載された。つまり、ソフトウェア及びハードウェアは、本明細書の記載に基づきシステム及び/又は方法を実装するよう設計され得ることが理解される。
【0062】
本明細書で使用される要素、動作、又は命令は、重要又は必須であると、そのようなものとして明示的に記載されない限りは、解釈されるべきではない。また、本明細書で使用されるように、冠詞「a」及び「an」は、1つ以上のアイテムを含むよう意図され、「one or more」(1つ以上)と同義的に使用され得る。更に、本明細書で使用されるように、「set」(セット又は組)との用語は、1つ以上のアイテム(例えば、関連アイテム、非関連アイテム、又は関連アイテムと非関連アイテムとの組み合わせ、など)を含むよう意図され、「one or more」(1つ以上)と同義的に使用され得る。ただ1つのアイテムが意図される場合には、「one」(1つ)との用語又は同様の言語が使用される。また、本明細書で使用されるように、「has」、「have」、「having」(有している)などの用語は、オープンエンド(open-ended)の用語であるよう意図される。更に、「based on」(~に基づく)との表現は、明示的に別なふうに述べられない限りは、「based, at least in part, on」(少なくとも部分的に~に基づく)を意味するよう意図される。
【0063】
様々な態様及び実施形態の記載が、例示のために提示されてきたが、包括的であるよう、あるいは、開示されている実施形態に限定されるよう意図されない。たとえ特徴の組み合わせが特許請求の範囲で列挙され、かつ/あるいは、明細書で開示されているとしても、それらの組み合わせは、可能な実施の開示を制限するよう意図されない。実際に、それらの特徴の多くは、具体的に特許請求の範囲で列挙されておらず、かつ/あるいは、明細書で開示されていない方法で、組み合わされてもよい。以下で挙げられている各従属請求項は、ただ1つの請求項にしか直接には依存しないことがあるが、可能な実施の開示は、特許請求の範囲内のあらゆる他の請求項との組み合わせで各従属請求項を含む。多くの変更及び変形は、記載されている実施形態の範囲から外れずに、当業者にとって明らかである。本明細書で使用されている専門用語は、実施形態の原理、市場で見られる技術に対する実際の適用又は技術的改善を最もよく説明するために、あるいは、当業者が本明細書に開示される実施形態を理解できるようにするために、選択された。
図1
図2
図3
図4
図5
図6
図7