(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-31
(45)【発行日】2024-06-10
(54)【発明の名称】画像処理のためのシステム、方法、および装置
(51)【国際特許分類】
G06V 10/422 20220101AFI20240603BHJP
【FI】
G06V10/422
(21)【出願番号】P 2023179578
(22)【出願日】2023-10-18
(62)【分割の表示】P 2022543501の分割
【原出願日】2021-01-28
【審査請求日】2023-11-17
(32)【優先日】2020-01-29
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】522283756
【氏名又は名称】ユーアイアーマー.コム エルエルシー
(74)【代理人】
【識別番号】100092956
【氏名又は名称】古谷 栄男
(74)【代理人】
【識別番号】100101018
【氏名又は名称】松下 正
(72)【発明者】
【氏名】ブルース,クリストファー ジェイ.
【審査官】新井 則和
(56)【参考文献】
【文献】特開2007-109179(JP,A)
【文献】特開昭63-024482(JP,A)
【文献】特開2004-038720(JP,A)
【文献】特開昭63-313284(JP,A)
【文献】特開平04-112276(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06V 10/422
(57)【特許請求の範囲】
【請求項1】
以下を備えた装置であって、
少なくとも1つのプロセッサと、
少なくとも1つのプロセッサによって実行されることで、当該少なくとも一つのプロセッサに
画像の少なくとも一部分のディジタルな輪郭を生成させる以下の命令を含むメモリと、
を備えた装置。
第1の状態または第1の状態の反対の第2の状態のいずれかを有するピクセルを含む入力画像をスキャンし、
第1の状態を持つ入力画像の第1のピクセルに遭遇すると、第1のクラスターと第1のクラスターに属する第1のポリゴンを開始し、
第1のポリゴンを形成するため、第1の一連の処理を実行し、
前記第1のポリゴンの形成に使用され、
前記第1のピクセルの周囲ピクセルの可能な状態の数を表す少なくとも1つのキーに、未使用のエッジが含まれていないか、未使用のソリッド点が含まれていないかを確認し、
前記入力画像のスキャンを続行し、
第1の状態にある入力画像の第2のピクセルに遭遇すると、第2のクラスターと第2のクラスターに属する第2のポリゴンを開始し、
少なくとも第1のクラスターに基づいて、入力画像の1つまたは複数の特性の表示を生成し、
前記表示を出力する。
【請求項2】
請求項1の装置において、1つのキーは参照ピクセルの周囲のいずれのピクセルも参照ピクセルと同じ状態ではなく、他のキーは参照ピクセルの周囲のいずれのピクセルも参照ピクセルと同じ状態であるような256のキーがあることを特徴とする装置。
【請求項3】
請求項1の装置において、256のキーがあり、当該256のキーは入力画像のポリゴンエッジを定義することの可能な完全なセットを形成しており、入力画像はディジタル化され、二次元画像であることを特徴とする装置。
【請求項4】
請求項1の装置において、未使用のエッジによって、前記第1のポリゴンの近傍における他のポリゴンの存在を示すことのできることを特徴とする装置。
【請求項5】
請求項1の装置において、前記プロセッサは、さらに、エッジスタックからの未使用エッジを用いた新たなポリゴンを開始するよう構成されていることを特徴とする装置。
【請求項6】
請求項1の装置において、キーの未使用エッジは、エッジスタックに格納されることを特徴とする装置。
【請求項7】
以下を備えた装置であって、
少なくとも1つのプロセッサと、
少なくとも1つのプロセッサによって実行されることで、当該少なくとも一つのプロセッサに以下を実行させる命令を含むメモリと、
を備えた装置。
第1の状態または第1の状態の反対の第2の状態のいずれかを有するピクセルを含む入力画像をスキャンし、
第1の状態を持つ入力画像の第1のピクセルに遭遇すると、第1のクラスターと第1のクラスターに属する第1のポリゴンを開始し、
第1のポリゴンを形成するため、第1の一連の処理を実行し、
前記第1のポリゴンの形成に使用され、
前記第1のピクセルの周囲ピクセルの可能な状態の数を表す少なくとも1つのキーに、未使用のエッジが含まれていないか、未使用のソリッド点が含まれていないかを確認し、
未使用のエッジまたは未使用のソリッド点に基づいて、第2のクラスターと第2のクラスターに属する第2のポリゴンを開始し、
前記第1ポリゴンと前記第2ポリゴンは、前記第1クラスターを完全に定義するために組み合わされるものであって、当該第2のポリゴンを形成するため、前記一連の処理を繰り返し実行し、
少なくとも第1のクラスターに基づいて、入力画像の1つまたは複数の特性の表示を生成し、
前記表示を出力する。
【請求項8】
画像の少なくとも一部分のディジタルな輪郭を生成するための、以下を含む方法:
第1の状態または第1の状態の反対の第2の状態のいずれかを有するピクセルを含む入力画像をスキャンし、
第1の状態を有する入力画像の第1のピクセルに遭遇したときに、第1のクラスターおよび第1のクラスターに属する第1のポリゴンを開始し、
第1のポリゴンを形成するため、第1の一連の処理を実行し、
前記第1のポリゴンの形成に使用され、
前記第1のピクセルの周囲ピクセルの可能な状態の数を表す少なくとも1つのキーに、未使用のエッジが含まれていないか、未使用のソリッド点が含まれていないかを確認し、
前記入力画像のスキャンを続行し、
第1の状態にある入力画像の第2のピクセルに遭遇すると、第2のクラスターと第2のクラスターに属する第2のポリゴンを開始し、
第2のクラスターを完全に定める、あるいは一部を定める第2のポリゴンを形成するため、第1の一連の処理を繰り返し実行し、
第1のクラスターおよび第2のクラスターに基づいて表示を生成し、
少なくとも第1のクラスターに基づいて、入力画像の1つまたは複数の特性の表示を生成し、
前記表示を出力する。
【請求項9】
請求項8の豊富において、未使用のエッジによって、前記第1のポリゴンの近傍における他のポリゴンの存在を示すことのできることを特徴とする方法。
【請求項10】
請求項8の方法において、1つのキーは参照ピクセルの周囲のいずれのピクセルも参照ピクセルと同じ状態ではなく、他のキーは参照ピクセルの周囲のいずれのピクセルも参照ピクセルと同じ状態であるような256のキーがあることを特徴とする方法。
【請求項11】
請求項8の方法において、256のキーがあり、当該256のキーは入力画像のポリゴンエッジを定義することの可能な完全なセットを形成しており、入力画像はディジタル化され、二次元画像であることを特徴とする方法。
【請求項12】
以下を備えたシステム。
ディスプレイと、
少なくとも1つのプロセッサと、
少なくとも1つのプロセッサによって実行されることで、当該少なくとも一つのプロセッサに以下を実行させる命令を含むメモリと、
第1の状態または第1の状態の反対の第2の状態のいずれかを有するピクセルを含む入力画像をスキャンし、
第1の状態を持つ入力画像の第1のピクセルに遭遇すると、第1のクラスターと第1のクラスターに属する第1のポリゴンを開始し、
第1の一連の処理を実行して、第1のポリゴンを形成し、
前記第1のポリゴンの形成に使用され、
前記第1のピクセルの周囲ピクセルの可能な状態の数を表す少なくとも1つのキーに、未使用のエッジが含まれていないか、未使用のソリッド点が含まれていないかを確認し、
前記入力画像のスキャンを続行し、
第1の状態にある入力画像の第2のピクセルに遭遇すると、第2のクラスターと第2のクラスターに属する第2のポリゴンを開始し、
少なくとも第1のクラスターに基づいて、入力画像の1つまたは複数の特性の表示を生成し、
表示をディスプレイに出力する。
【発明の詳細な説明】
【関連する出願への相互参照】
【0001】
この出願は、2020年1月29日に出願された米国仮出願第62 / 967,097号の優先権を主張し、その全内容は参照により本明細書に組み込まれる。
【分野】
【0002】
本開示は、画像処理のためのシステム、方法、および装置に関するものである。
【背景】
【0003】
画像処理技術としては、入力画像の特性を明らかにするため、および/または入力画像から出力画像を生成するために入力画像を解析する技術がある。
【概要】
【0004】
少なくとも一つの例示的実施形態は、少なくとも1つのプロセッサと、 少なくとも1つのプロセッサによって実行されることで、当該少なくとも一つのプロセッサに、第1の状態または第1の状態の反対の第2の状態のいずれかを有するピクセルを含む入力画像をスキャンさせ、第1の状態を持つ入力画像の第1のピクセルに遭遇すると、第1のクラスターと第1のクラスターに属する第1のポリゴンを開始させ、第1のポリゴンを形成するため、第1の一連の処理を実行させ、少なくとも最初のクラスターに基づいて、入力画像の1つまたは複数の特性の表示を生成させ、前記表示を出力させる命令を含むメモリと、を備えた装置に向けられたものである。
【0005】
少なくとも一つの例示的実施形態は、第1の状態または第1の状態の反対の第2の状態のいずれかを有するピクセルを含む入力画像をスキャンし、第1の状態を有する入力画像の第1のピクセルに遭遇したときに、第1のクラスターおよび第1のクラスターに属する第1のポリゴンを開始し、第1のポリゴンを形成するため、第1の一連の処理を実行し、少なくとも第1のクラスターに基づいて、入力画像の1つまたは複数の特性の表示を生成し、表示を出力することを含む方法に向けられている。
【0006】
少なくとも一つの例示的実施形態は、ディスプレイと、少なくとも1つのプロセッサと、少なくとも1つのプロセッサによって実行されることで、当該少なくとも一つのプロセッサに、第1の状態または第1の状態の反対の第2の状態のいずれかを有するピクセルを含む入力画像をスキャンさせ、第1の状態を持つ入力画像の第1のピクセルに遭遇すると、第1のクラスターと第1のクラスターに属する第1のポリゴンを開始させ、第1の一連の処理を実行して、第1のポリゴンを形成させ、少なくとも第1のクラスターに基づいて、入力画像の1つまたは複数の特性の表示を生成させ、表示をディスプレイに出力させる命令を含むメモリと、を備えたシステムに向けられている。
【0007】
その他の特徴や効果は、以下に説明するとおり、明細書及び図面によって明確にしている。
【図面の簡単な説明】
【0008】
本開示は、添付の図を参照して説明されている。これらは必ずしも一定の縮尺とはなっていない。
【
図1】
図1は、少なくとも1つの例示的な実施形態によるシステムを示している。
【
図2A】
図2Aは、ポリゴンで構成される様々なサンプル画像を示している。
【
図2B】
図2Bは、
図2Aの画像の完全なポリゴン(多角形)プロファイルを概説する表を示す。
【
図3】
図3は、
図2Aの2つのシンボルのピクセルのエッジを示す図である。
【
図4A】
図4Aは、少なくとも1つの例示的な実施形態による複数のキーを示す図である。
【
図4B】
図4Bは、少なくとも1つの例示的な実施形態による複数のキーを示す図である。
【
図4C】
図4Cは、少なくとも1つの例示的な実施形態による複数のキーを示す図である。
【
図4D】
図4Dは、少なくとも1つの例示的な実施形態による複数のキーを示す図である。
【
図5】
図5は、少なく1つの例示的な実施形態による画像処理方法を示す図である。
【
図6A】
図6Aは、少なくとも1つの例示的な実施形態における、
図5の画像処理方法をより詳細に示す図である。
【
図6B】
図6Bは、少なくとも1つの例示的な実施形態における、
図5の画像処理方法をより詳細に示す図である。
【
図7A】
図7Aは、一実施形態による画像処理方法において、入力画像に基づいて一連のポリゴンを構築する方法例を示す図である。
【
図7B】
図7Bは、一実施形態による画像処理方法において、入力画像に基づいて一連のポリゴンを構築する方法例を示す図である。
【
図8】
図8は、一実施形態による画像処理方法において、入力画像に基づいて一連のポリゴンを構築する他の方法を示す図である。
【
図9】
図9は、一実施形態による画像処理アルゴリズムにかかる時間と、処理対象ピクセル数との関係を示すグラフである。
【
図10】
図10は、一実施形態による画像処理方法において、入力画像に基づいて一連のポリゴンを構築する他の方法を示す図である。
【
図11】
図11は、少なくとも1つの例示的な実施形態による3次元画像のためのピクセルグリッドおよび複数のキーを示す図である。
【
図12】
図12は、少なくとも1つの例示的な実施形態による、3次元入力画像のための3次元ポリゴンの構築を示す図である。
【
図13】
図13は、少なくとも1つの例示的な実施形態による方法を示す図である。
【
図14】
図14は、少なくとも1つの例示的な実施形態による方法を示す図である。
【
図15】
図15は、少なくとも1つの例示的な実施形態による方法を示す。
【
図16】
図16は、少なくとも一つの実施形態による画像処理方法によって処理することができるシーン例およびオブジェクト例を示す図である。
【
図17】
図17は、少なくとも一つの例示的な実施形態による、入力画像例および入力画像を処理することによって形成された出力画像例を示す図である。
【詳細な説明】
【0009】
以下の説明は、実施形態のみを提示するものであり、特許請求の範囲、適用可能性、または構成を限定することを意図するものではない。むしろ、次の説明は、当業者に対し、実施形態を実施するための有用な説明を提供するものである。添付の特許請求の範囲の精神および範囲から逸脱することなく、要素の機能および配置に様々な変更を加えることができることが理解できるであろう。
【0010】
以下の説明から、また計算効率の観点から、システムの構成要素は、システムの動作に影響を与えることなく、構成要素の分散ネットワーク内の任意の適切な場所に配置できることが理解されよう。
【0011】
さらに、要素を接続するさまざまな結合要素は、有線、トレース、または無線リンク、あるいはそれらの任意の適切な組み合わせ、または接続された要素間でのデータの供給および/または通信することができる他の適切な既知のまたは後に開発された要素としてもよいことを理解されたい。結合要素として使用されるメディアは、たとえば、同軸ケーブル、銅線および光ファイバー、PCB上の電気トレースなど、電気信号に適した任意のキャリアとすることができる。
【0012】
この明細書において使用される「少なくとも1つ」、「1つまたは複数」、「または」、および「および/または」という句は、動作において論理積および論理和の両方である制限のない表現である。たとえば、「A、BおよびCの少なくとも1つ」、「A、BまたはCの少なくとも1つ」、「A、BおよびCの1つ以上」、「 「A、BまたはC」、「A、Bおよび/またはC」、および「A、B、またはC」は、Aのみ、Bのみ、Cのみ、AとBを一緒に、AとCを一緒に、BとCを一緒に、またはA,B,Cを一緒にを意味する。
【0013】
この明細書において使用される「決定する」、「計算する」および「計算する」という用語、およびそれらの変形は、交換可能に使用され、任意の適切なタイプの方法論、プロセス、操作または技法を含むものである。
【0014】
本開示の様々な態様は、理想化された構成の概略図である図面を参照して本明細書で説明される。
【0015】
別段の定義がない限り、この明細書で使用されるすべての用語(技術用語および科学用語を含む)は、本開示が属する当業者によって一般に理解されるのと同じ意味を有するものである。さらに、一般的に使用される辞書で定義されているような用語は、関連技術および本開示の文脈におけるそれらの意味と一致する意味を有すると解釈されるべきであることがさらに理解されよう。
【0016】
この明細書で使用される場合、単数形「a」、「an」、および「the」は、文脈が明らかに他のことを示さない限り、複数形も含むことを意図している(「複数の」という記述がなくとも、複数の場合を含むものである)。さらに、「include(含む)」、「including(含む)」、「includes(含む)」、「comprise(含む)」、「含む(comprises)」、「含む()」、および/または「含む(comprising)」という用語は、この明細書で使用される場合、記載された特徴、整数、ステージ、操作、要素、および/またはコンポーネントの存在を明らかにするものであるが、1つまたは複数の他の機能、整数、ステージ、操作、要素、コンポーネント、および/またはそれらのグループの存在または追加を排除するものではない。 「および/または」という用語は、関連するリストされた事項の1つまたは複数のありとあらゆる組み合わせを含むものである。
【0017】
特定の要素の代わりに一般的な要素または要素のセットへの参照が適切である場合、説明において、そのルート用語によって要素または要素のセットを参照する場合がある。たとえば、特定の要素X1 、X 2などを参照する必要がない場合、説明では要素を一般に「X」と呼ぶことがある。
【0018】
図1は、少なくとも1つの例示的な実施形態によるシステム100を示している。システム100は、ソース装置(または装置)104、通信ネットワーク108、および画像処理装置(または装置)112を含む。少なくとも一つの実施形態において、ソース104および/または装置112は、一以上のパーソナルコンピュータ(PC)、ラップトップ、タブレット、スマートフォン、サーバー、サーバーの集合体などに対応するものである。いくつかの実施形態において、装置104および112は、共通タイプの通信ネットワーク108にも接続されている他の装置と通信する任意の適切なタイプの装置であってもよい。別の特定の、しかし非限定的な例として、装置104および112は、システム100内のユーザ装置クライアント装置、または他のホストに情報リソース、サービス、および/またはアプリケーションを提供するサーバとしてもよい。このようなソース装置には、カメラ(スタンドアロン、または携帯電話、ラップトップ、タブレットなどの別の装置の一部として組み込まれている)、ドキュメントスキャナー(コピー機など)、ソース画像を生成したデバイスの近傍または遠隔にあって、ソース画像を記録するメモリなどが含まれる。
【0019】
通信ネットワーク108は、装置104および112間の有線および/または無線通信を可能にする有線ネットワークおよび/または無線ネットワークを含んでもよい。装置104および112を接続するために使用され得る通信ネットワーク108の例としては、インターネットプロトコル(IP)ネットワーク、イーサネットネットワーク、InfiniBand(IB)ネットワーク、ファイバーチャネルネットワーク、インターネット、セルラー通信ネットワーク、ワイヤレス通信ネットワーク、それらの組み合わせ(たとえば、イーサネット経由のファイバチャネル)、それらの変形および/またはこれらに類するものが含まれる。通信ネットワーク108は、802.11スイートのプロトコル、近距離通信(NFC)プロトコル、ブルーツースプロトコル、LTEプロトコル、5Gプロトコルなどの1つまたは複数のプロトコルを使用して、装置104と112の間の無線通信を可能にする。装置104および112は、通信ネットワーク108を介した有線および/または無線通信を容易にするための1つまたは複数の通信インターフェースを含むように構成してもよい。
【0020】
装置104および112は、通信ネットワーク108を介して通信する別個のデバイスとして示されているが、装置104および112および通信ネットワーク108は、ソース画像、ソース画像から派生した入力画像、および入力画像に基づく出力画像が、装置によって生成および/または処理されるようにするため、単一のデバイス(例えば、サーバ、パーソナルコンピュータ、および/またはこれらに類するもの)に統合してもよい。
【0021】
処理回路116は、ソース装置104からの画像を処理したり、その他のコンピューティングタスクを実行するための適切なソフトウェア、ハードウェア、またはそれらの組み合わせを備えることができる。処理回路116は、この明細書で説明される様々な画像処理操作およびアルゴリズムを実行することができる。メモリ120が実行可能命令を含み、処理回路116がメモリ120上で命令を実行するようにしてもよい。すなわち、処理回路116は、メモリ120上で命令を実行するためのマイクロプロセッサ、マイクロコントローラおよび/またはこれらに類するものを含むようにしてもよい。メモリ120は、任意の適切なタイプのメモリ装置または命令を格納するように構成されたメモリ装置の集合としてもよい。使用できる適切なメモリデバイスの非限定的な例には、フラッシュメモリ、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、それらの変形、それらの組み合わせなどが含まれる。いくつかの実施形態では、メモリ120および処理回路116は、共通のデバイスに統合してもよい(例えば、マイクロプロセッサは、統合されたメモリを含んでいてもよい)。上記に加えて、あるいは代えて、処理回路116が、特定用途向け集積回路(ASIC)などのハードウェアを含んでいてもよい。処理回路116の他の非限定的な例として、集積回路(IC)チップ、中央処理装置(CPU)、一般処理装置(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)がある、論理ゲートまたはトランジスタ、抵抗器、コンデンサ、インダクタ、ダイオードなどの集合がある。処理回路116のいくつかまたはすべては、プリント回路基板(PCB)またはPCBの集合体上に提供されるものであってもよい。任意の適切なタイプの電気部品または電気部品の集合が、処理回路116に含めるのに適している可能性があることを理解されたい。処理回路116は、システム100の様々な動作を制御するため、システム100の他の要素との間で信号を送信および/または受信することができる。
【0022】
明示的に示されていないが、装置104および112は、有線および/または無線接続を介したデータの送受信など、コンピューティング処理に一般に関連する他の処理装置、ストレージ装置、および/または通信インターフェースを含み得る。
【0023】
入力装置124は、システム100への入力(例えば、ユーザ入力)を可能にする適切なハードウェアおよび/またはソフトウェアを含む。入力装置124は、システム100の種々の機能に対するユーザ制御を可能にするために、キーボード、マウス、タッチセンシティブパッド、タッチセンシティブボタン、ディスプレイのタッチセンシティブ部分、機械的ボタン、スイッチ、および/またはシステムにユーザ入力を提供するための他の制御要素を含み得る。
【0024】
出力装置128は、処理回路116からの1つまたは複数の入力に基づいて、ユーザまたは他の関係者のために視覚的、音声的、および/または触覚的フィードバックを生成する適切なハードウェアおよび/またはソフトウェアを含むことができる。少なくとも一実施形態において、出力装置128は、装置112による入力画像の処理後に出力画像および/または入力画像の1つまたは複数の特性を表示するための1つまたは複数のディスプレイを含む。入力画像は、ソース装置104から、通信ネットワークを介して受信したソース画像に基づくことができる。ディスプレイは、液晶ディスプレイ(LDC)、発光ダイオード(LED)ディスプレイなどのような任意の適切なタイプのディスプレイとすることができる。出力装置128は、スタンドアロン装置、またはスマートフォン、ラップトップ、タブレットなどの別の装置の一部として統合された装置であってもよい。
【0025】
入力デバイス124および出力デバイス128は、画像処理デバイス112の一部として示されているが、入力デバイス124および/または出力デバイス128は、システム100の設計選好に従って、デバイス112とは別に具体化され得る。
【0026】
図2Aは、少なくとも1つの例示的な実施形態による、ポリゴンから構成される様々なサンプル画像を示している。例示的な実施形態では、各ポリゴンについて、隣接するピクセルの数、クラスターを構成する点(各クラスターは、1つ以上の相互に関連するポリゴンとして、および/または垂直、水平、および/または斜めに隣接する一組の(たとえばすぐ隣の)ピクセルとして定義される)、各クラスターの外側と内側のポリゴンを形成する点(各ポリゴンは、前の点と次の点があって、すべてのポリゴンは単純なポリゴンであり他のポリゴンと交差しない点の循環列として定義できる)、ピクセルのコーナーカットがない(つまりピクセルの丸みがない)すべてのポリゴンの正確な点列、各ポリゴンが別のポリゴンとどのように関連しているかに関する完全な情報(たとえば、共有境界、外側または内側のポリゴン、親ポリゴンの割合など)、点列を持つ結果としての各ポリゴンに関する正確な情報(たとえば位置、中心、面積、周囲など)、および/またはポリゴンに含まれるピクセルの総面積を定義している。この一連の処理目標は、画像の完全なポリゴンプロファイルの決定と呼ぶことができる。一般に、クラスターにはクラスターの外周を定義する1つのポリゴンがあり、クラスターには追加のポリゴンが含まれる場合と含まれない場合がある。クラスタに追加のポリゴンが含まれている場合、これらのポリゴンはクラスタの穴(または内部ポリゴン)に対応する。
【0027】
図2Bは、
図2Aの画像の完全なポリゴンプロファイルを概説する表を示している。入力画像の完全なポリゴンプロファイルを使用して、入力画像に関する1つ以上の結論を引き出すことができる。図示のように、この表には、各シンボル3、9、8に使用されるピクセルの総数、クラスター番号、ポリゴンの数、各ポリゴンが外側または内側のポリゴンであるかどうか、各ポリゴンのピクセルエッジまたはエッジ点の数、各シンボルのピクセル数(16、18、および19)および各ポリゴンの境界が示されている。ポリゴンの境界は、ポリゴンのピクセル座標とポリゴンのピクセル領域を示している。たとえば、
図2Bのポリゴン1には境界1,2、5x8が示されている。これは、、列0がピクセルの左端の列で、行0がピクセルの最上行としたとき、ポリゴン1が列1、行2(つまり、1,2)から始まり、そのポリゴン1は5列のピクセルと8行のピクセル(つまり、5x8)にまたがっていることを示している。
【0028】
続けて
図2Aおよび2Bを参照すると、シンボル3、8、および9に含まれる各ポリゴンには、詳細に区別可能な点列p1、p2…pN(ここで、pNはp1に接続する)が存在する。さらに、すべてのポリゴンはクラスターに関連付けられている。たとえば、クラスター3では、ポリゴン4、5、および6は相互に関連しているのに対し、マーチング・スクエア・アルゴリズムのように相互に独立している。すべてのポリゴントレース(つまり、各ポリゴンの外側と内側のエッジ)はピクセル境界上にある。すなわち、いずれのピクセルもカットまたは補間されない。さらに、2つのポリゴンが交差することはなく、すべてのポリゴンは、それ自体と交差するポリゴンがないという点で単純である。これらの双方の特性は、ポリゴンを正確に処理するためのダウンストリームの数学的ロジックに役立つ。たとえば、自己交差するポリゴンよりも、自己交差しないポリゴンの面積を計算する方が簡単である。
【0029】
独創的な概念の利点の1つを理解するには、クラスターを、(たとえば塗りつぶし(フラッドフィル)アルゴリズムのように)独立したピクセルの集まりとして、「エラー!参照元が見つかりません」の中で処理することを想像すればよいであろう。塗りつぶし(フラッドフィル)などのアルゴリズムには、ピクセルがどのように結合するかについての情報を持っていない。この制限の下では、
図2Aの3つの記号は極めて類似したものとなる。たとえば、「3」に2ピクセルを追加すると、「9」のようになり、「3」に3ピクセルを追加すると、「8」のようになる。したがって、画像を孤立したピクセルとして扱うと、この例のように、異なるシンボルを区別するための決定が、3ピクセルの小さなマージンしかもたないことになる。さらに、この制限の下でアルゴリズム的にシンボルを一致させるには、実用性を得るために、すべてのシンボルのすべてのサイズのすべてのインスタンスを総当たり的に検討(ブルートスキャン)することが必要となる。このアプローチは、メモリを大量に消費し、時間を消費し、エラーが発生しやすく、非効率的である。
【0030】
これに対し、この発明による概念は、確定的なものである。たとえば、シンボル「3」は1つのポリゴン(外側のポリゴン)のみで定義され、シンボル「9」は外側と内側のポリゴンの2つのポリゴンで定義され、シンボル「8」は3つのポリゴン(外側のポリゴン1つと外側のポリゴン2つ)で定義される。この発明によるアルゴリズムでは、3つのシンボルは完全に異なったものとなる。
【0031】
さらに、このようなポリゴンの特徴は、シンボルのサイズやフォントに関係なく、一般的に該当するものである。別の言い方をすれば、3つの記号はトポロジー的に異なっていることになる。「3」には穴がなく、「9」には1つの穴があり、「8」には2つの穴がある。この発明の概念に従ってシンボルを用いて画像を処理すれば、各シンボルの一般的な特性(例えば、ポリゴンの数)を他のシンボルの既知の特性と一致させることが可能であり、メモリ使用料を削減し、処理時間を短縮し、および/または効率を向上させ、シンボルを正しく識別するダウンストリーム処理能力を強化することができる。
【0032】
図2Aは、2つのポリゴンが点を共有するあいまいなピクセルの場合を示している。例示的な実施形態による処理方法によれば、共有点の各場合について、正確に曖昧さをなくすことができる。一実施形態において、曖昧なピクセルは、2つの辺が単一の多角形の一部であるか複数の多角形の一部であるかが不明である2つの対向する辺のピクセルとして定義される。この概念について、
図3を参照し、以下に詳述する。
【0033】
図3は、
図2Aの2つのシンボルのピクセルのエッジを示している。 「3」のピクセルPに示されているように、シンボル「3」のポリゴンの周囲を形成するため、エッジE1とE2は最終的に交わる。一方、「9」のピクセルPの場合、各エッジは一意のポリゴンの一部であるため、エッジE1とE2は交わらない。例示的な実施形態による画像処理方法では、ピクセルエッジがポリゴンにどのように関連するかを決定するために、各ポリゴンのすべてのエッジを接続して各ピクセルのエッジを明確にし、ピクセルがシンボルにおいてどのように使用されるかを明らかにする。この明細書から理解できるように、例示的な実施形態による画像処理方法は、入力画像に応じた、最適なO(n)~O(n
2)実行時間を有する。
【0034】
図4Aから4Dに、少なくとも1つの例示的な実施形態による複数のキーを示す。例示的な各実施形態による各画像処理方法においては、入力画像を処理するため、
図4A~
図4Dのキーを生成し、参照する。図を参照して以下でより詳細に述べるように、例示的な実施形態による画像処理方法では、ソース画像をピクセルごとの1ビット画像に変換することにより、ソース画像(たとえば、カラー画像、グレースケール画像など)を入力画像に変換する。すなわち、ソース画像は入力画像に変換され、これにより、入力画像の各ピクセルが2つの状態(または色)のいずれかを持つようにされる。たとえば、入力画像の各ピクセルは、第1の状態(黒色または白色のいずれか一方)または2番目の状態(黒色または白色の他方)を有している。画像処理は、入力画像を(たとえば、ラスター形式で)スキャンして、ピクセルの「ヒット」を探すことにより始まる。少なくとも1つの例示的な実施形態において、ピクセルヒットは、ピクセルが第1の状態(例えば、黒)を有するときに発生し、ピクセルミスは、ピクセルが第2の状態(例えば、白)を有するときに発生する。
【0035】
再び
図4A~4Dを参照すると、各キーは一意であり、参照ピクセルRPの周りの可能な状態を表す。参照ピクセルRPは、上記のスキャンプロセス中においてピクセルヒットであると決定されたピクセルに対応する。次に、例示的な実施形態による画像処理方法は、参照ピクセルRPのムーア近傍のピクセルのピクセル状態を決定し、どのピクセルが参照ピクセルRPの状態と一致する状態を有するかを確認する(ここで、ムーア近傍とは、参照ピクセルRPに直接隣接する8つのピクセルを指す)。たとえば、
図4Aのピクセルグリッドを参照すると、参照ピクセルRPのムーア近傍のピクセルがピクセル0から始まってピクセル7まで反時計回り(CCW)に1つずつ調べられる。
図4Aのピクセルグリッドは、
図4A~
図4Dの各キーに適用され、参照ピクセルRPのムーア近傍の各ピクセル0から7は、2つの状態(例えば、白または黒)のうちの1つを有する。参照ピクセルRPのムーア近傍の8つのピクセルのそれぞれが2つの状態のいずれかを持つため、参照ピクセルRPのムーア近傍の8つのピクセルのピクセル状態の可能な組み合わせは256(すなわち2
8)である。したがって、256の可能なキーがある(つまり、キー000からキー255)。キー000は参照ピクセルRPを囲むピクセルが同じ状態にないシナリオを示し、キー255は、参照ピクセルRPを囲むすべてのピクセルが同じ状態であるシナリオを示し、キー001~254はその間のすべてのシナリオを示す。
【0036】
以下で詳述するように、各キーには、それぞれのキーの1以上のピクセルの1以上の辺にまたがる1以上の(矢印で示される)エッジも含まれ、各キーの1以上のエッジを使用して、出力画像および/またはポリゴンプロファイル用のポリゴンが構築される。各エッジの開始点、方向、および終了点は、参照ピクセルRPのムーア近傍の隣接するピクセル間のピクセル状態によって異なる。
【0037】
たとえば、各キー001~254のピクセルグリッドのピクセル0から開始し、CCW方向に移動し、ピクセルヒットの後にピクセルミスが続くと(
図4A~
図4Dにあるようにピクセルヒットは斜線にて図示され、ピクセルミスは斜線が無くシェーディングされていない)、エッジの尾(テイル)が始まって、参照ピクセルRPの状態に合致する状態のピクセルの境界の周りを移動して、ピクセルグリッドの1つのエッジがエッジの頭(ヘッド)になる。キー005を例として使用すると、このキーは、参照ピクセルRPとピクセル0および2が1ビット/ピクセルの入力画像で同じ状態(たとえば、黒色)を持つ入力画像の一部に対応する。キー005の場合、、参照ピクセルRPのムーア近傍において、ピクセル0がピクセルヒットであり、ピクセル1はピクセルミスであるから、最初のエッジのテールは、ピクセル0の左上角または点と、ピクセル1の右上角または点から始まる。最初のエッジは、ピクセル0、RP、2の境界に沿っており、ピクセル2の右上角または点のエッジの頭(ヘッド)で終了する。さらに、キー005は、ピクセルグリッドのピクセル2と3の間で開始され、ピクセル2、RP、および0の下部境界に沿う2番目のエッジを示している。
【0038】
図4A~4Dでは、各キーの各エッジは、ムーア近傍の検査と同じ方向、この場合はCCW方向に流れる必要がある。さらに、各キーの各エッジは、参照ピクセルRPと同じ状態のピクセルを、そうでない状態のピクセルから「ウォールオフ」または分離します。
図4A~4Dにおいては、参照ピクセルRPの中心および/または参照ピクセルRPを囲む1つまたは複数のピクセル内のドットをも示している。キー001~254の場合、参照ピクセルRPを囲むピクセルに含まれるドットの数は、そのキーのエッジの数に対応する。周囲のピクセルの各ドットは、エッジのヘッドが配置されているピクセルに配置される。
【0039】
上記のように、例示的な実施形態は、既知の技術を使用して任意のビット深度の入力画像を形成し、ピクセルあたりnビットの画像をピクセルあたり1ビットの入力画像に変換する。たとえば、ソース画像は(変換が必要な場合)グレースケールに変換され、グレースケール画像の各ピクセル値を参照ピクセル値に対してしきい値処理することによって、(たとえば、(50%未満の輝度の黒ピクセルと、50%以上の輝度の白ピクセルを生成することによって)1ピクセルあたり1ビットの空間が形成される。ここで、この決定プロセスにおける、黒としてのヒットピクセルおよび白としてのピクセルミスは、設計事項であり、必要に応じて、ピクセルヒットを白ピクセル、ピクセルミスを黒ピクセルとすることもできる。さらに、参照ピクセル値は、経験的実証および/または適宜設定された設計パラメータである。少なくとも1つの例示的な実施形態では、上記および下記の画像処理アルゴリズム(例えば、
図5および6Aの方法)は、ピクセルごとに異なる1ビットの入力画像を生成するために、異なる参照ピクセル値を使用するアルゴリズムのそれぞれの反復により、単一のソース画像に対して複数回実行してもよい。処理結果としては、単一の複合出力(たとえば、単一の複合ポリゴンプロファイル)にコンパイルできる複数の出力(たとえば、完全なポリゴンプロファイル)を生成するか、複数の出力(たとえば、複数の別々のポリゴンプロファイル)として分離したままにすることができる。少なくとも1つの例示的な実施形態では、1つまたは複数のアルゴリズムを複数の出力に適用して、追加の情報を引き出すことができる。例えば、入力画像のポリゴンプロファイルをニューラルネットワークに入力して、入力画像内の追加情報を示す1つまたは複数の出力を生成することができる。少なくとも1つの例示的な実施形態では、そのような追加情報は、入力画像内の1つまたは複数のオブジェクトのオブジェクト認識および/またはラベリングに関連たものとすることができる。
【0040】
上記を考慮して、各参照ピクセルRPは、参照ピクセルRPを取り巻くピクセルの状態を一意に識別するキーを有する。例示的な実施形態においては、
図4A~4Dに示されるキーを生成し、出力画像および/またはポリゴンプロファイル用のポリゴンを構築するため、後の処理で用いるために、これらキーを保存する。たとえば、各キーは、ピクセルグリッドの右上隅から開始し、CCWにより各キーを右から左に塗りつぶすことによって形成される(ここで、白はピクセルミスo、黒はピクセルヒットである)。白いピクセルがバイナリ0で、黒いピクセルがバイナリ1であるとすると、キー50はバイナリの00110010である。ここで、ピクセルグリッドのピクセル0は最下位ビット(LSB)であり、ピクセル7は最上位ビット(MSB)である。残りの各順列には、ビット位置0~7ごとに黒または白に0または1を設定することによって形成された一意のキーがあり、256個の可能なキーが生成される。
【0041】
図4A~4Dの各キーには、エッジが、3x3マトリックスの片側の白と黒のピクセルを分離するエッジ情報がさらに含まれている。
図4Aから4Dに示されるように、2つの当該エッジがあり、これらエッジは2つの特性、エッジを示す点およびリンク点を有している。どちらの特性でも、点の順序が有用となる場合がある。
図4Aのキー50の場合、最初のエッジには、4つのエッジ点(0,-1)、(0,0)、(0,1)、(-1,1)および2つのリンク点=入(0,1)、出(0,-1)が含まれる。キー50には、4つのエッジ点(1,2)、(1,1)、(1,0)、(1,-1)および2つのリンク点=入(0,1)、出(0,-1)を持つ2番目のエッジが含まれる。。ピクセルグリッドを参照すると理解できるように、エッジの入リンク点トは、エッジの尾の点座標に対応し、出リンク点は、エッジの頭の点座標に対応する。
図4A~4Dでは、リンクインデックス内のエッジ(すなわち、参照ピクセルRPのムーア近傍におけるピクセルの位置)によってエッジを順序付けている。この場合、最初のエッジはピクセルグリッドの位置1にあり、2番目のエッジはピクセルグリッドの位置5にあるため、最初のエッジが2番目のエッジより先になる。
【0042】
図示されているように、エッジ情報はすべてのキーについて計算される。キーは、ルックアップテーブル(LUT)または別の適切な形式で保存される。キーのセットは、参照ピクセルRPを取り巻くすべての可能な隣接状態を表している。同様に、このキーセットを外れて、隣接状況を設定することはできない。特に、この画像処理方法は、入力画像のピクセルを丸めたり切り捨てたりせず、すべてのピクセル情報を保持する。さらに、すべてのエッジ(または入エッジから出エッジへのベクトル)は、矢印で示されているように、中心に対してまさに反時計回りに方向付けられる。参照ピクセルRPの点以外のすべての点は、特定のエッジまたは矢印のための出力リンク点を表している。キー255は、エッジのないピクセルの塗りつぶされた領域を表し、キー000は、周囲のピクセルのない単一のピクセルを表している。理解されるように、キー000および255を除くすべてのキーには、少なくとも1つの重要な(些細ではない)エッジがある。重要な各エッジには2つの点がある。キー配列[1…254]を(各キーがノードで、各エッジがグラフエッジ)有向グラフに投影すると、全てのノードは等しい出入り角度を有する。したがって、オイラーの定理によれば、任意のエッジに沿って横断すると、閉じたポリゴンになる。これにより、この画像処理方法により、で閉じたポリゴンが生成される。
【0043】
さらに理解され得るように、キー85および170は、最大4コネクタ(すなわち、最も多くのエッジまたは最も多くの矢印を有する要素)を表す。すなわち、キーあたりのエッジ数は、0から4の範囲である。各エッジは、左上隅から反時計回りに順序付けられ、キー255を除くすべてのエッジに少なくとも3つのポイントがあり、キー0と255を除くすべてのエッジが他のすべてのエッジに接続している。以下の説明では、エッジに隣接していないキー内の点またはピクセルであるソリッド点に言及する。たとえば、キー223には5つのソリッド点(座標ポイントまたはピクセル7、0、1、2、3)があり、キー216にはゼロのソリッド点がある。
【0044】
例示的な実施形態において、ピクセルリンクの曖昧さは、エッジ点の順によって解決される。たとえば、キー005のピクセルグリッドの座標点を参照すると、両方のエッジが点(1、0)と(0,0)(点は、(列、行)形式で表される)を共有している。また、この2つのエッジはリンク点(1,-1)、(1,-1)を共有する。点が同等であるにもかかわらず、赤と青のエッジの順は点の「意味」を区別し、それによって共有参照を明確にする。これは、例示的な実施形態による画像処理方法の独特の特徴であり、ピクセルを孤立した実体として扱うアルゴリズムに対して改善された決定力を提供するものである。
【0045】
エッジは、反時計回り(
図4A~4Dに示す規則のように)またはすべてのエッジの矢印の方向を逆にすることによって時計回りに構築できる。いずれの場合でも、完全な方向セットは、機能的に同等で有効なものである。キー000~255の完全なセットのエッジの総数は513である。各エッジは、2つの方向(CCWまたはCW)のいずれかになる。
図4A~4Dの矢印を方向付けるための2513の可能な方法のうち、2つの組み合わせ(すべてCWまたはすべてCCW)のみでポリゴンが作成される。これは、ポリゴンを保証する(正しい)エッジセットと、そうでない(正しくない)エッジセットの比率が1:2
512 (1:1.34 x 10
154 )であることを意味する。これは、例示的な実施形態による画像処理方法の固有の特徴(指紋)である。
【0046】
図4A~4Dの各キーは、ムーア近傍の検査が右上のピクセルから始まることを前提とした自然キーから形成される。自然キーは、1ピクセルあたり1ビットの入力画像内の1バイトの情報(または8ピクセル相当の情報)に1対1でマップするキーである。すなわち、参照ピクセルRPのムーア近傍の各ピクセルの状態がキー番号の2進値に対応するため、
図4Aのピクセルグリッドは自然キーと考えられる。たとえば、ピクセルグリッドのピクセル0から始まり、CCWに移動すると、キー050の各ピクセルの状態は0、1、0、0、1、1、0、0になる。ピクセル0がLSBで、ピクセル7がこれらの状態から形成されたバイナリシーケンスのMSBの場合、00110010のバイナリ値は10進数の50(つまり、キー050)に対応する。これは、各キーのピクセル状態が2進数に対応し、2進数がキーの10進数に対応するということを示しています。
【0047】
他の自然キー指定は、
図4Aのピクセルグリッドを並べ替えることによって形成できる。合計で、18の組み合わせは基本的に同等である。参照ピクセルRPではないボックスの1つに「0」を配置して参照ピクセルRPのムーア近傍に番号を付け始め(9つの可能性)、残りのボックスに時計回り(CW)またはCCW方向(2つの可能性)で、合計18個の同等の自然キーに到達する。他のアドホックマッピングでも、256の可能性のそれぞれを一意の番号にマッピングできる(ただし、自然キーへのコードをアドホックに接続するには別のルックアップステージ(および256キーメモリマップ)が必要になる場合があるため、上記の自然キーの1つを使用するよりも効率が悪い場合がある)。
【0048】
以下でより詳細に説明するように、ピクセルあたり1ビットの入力画像は、
図4A~4Dのキーを参照することによって処理される。
【0049】
図5は、少なくとも1つの例示的な実施形態による画像処理方法を示すものである。
【0050】
方法500は、動作504で開始し、動作556で終了する。方法500(および/またはその1つまたは複数のステージ)は、例えば、少なくとも1つのプロセッサによって実行され、あるいはその他の形式で実行される。少なくとも1つのプロセッサは、上記のデバイス112の処理回路116と同じまたは類似のものとしてもよい。本明細書に記載の任意のプロセッサ以外のプロセッサを使用して、方法500を実行することもできる。少なくとも1つのプロセッサは、メモリ120などのメモリに格納された命令を実行することによって方法500を実行することができる。命令は、以下に説明する方法500の方法の1つまたは複数のステージに対応してもよい。命令により、プロセッサは、以下でより詳細に説明されるような画像処理アルゴリズムなどの1つまたは複数のアルゴリズムを実行することができる。
【0051】
一般に、本発明の概念による画像処理方法は、エッジの開始をスキャンし、ピクセルヒットに遭遇したときにクラスタ(例えば、1つまたは複数のポリゴンのクラスタ)を作成し、完全なポリゴンになるまで(つまり、ポリゴンが閉じるまで)エッジを追加することから始まる。クラスタは、たとえば、外側のポリゴンと1つまたは複数の内側のポリゴンとして相互に関連している1つまたは複数のポリゴンで構成されるものとすることができる。以下でより詳細に説明するように、各ポリゴンはクラスターを完全に定義するか、1つ以上の他のポリゴンと組み合わせてクラスターを完全に定義することができる。処理中に、この方法は、未使用または未処理のエッジの位置に関する情報を、メモリ(例えば、メモリ120)内の「エッジスタック」に格納することができる。この方法においては、エッジスタック内のいずれかのエッジが前のポリゴンによって使用されていない場合、新しいポリゴンを開始し、ポリゴンが閉じるまでエッジを追加する。このプロセスは、エッジスタック内のすべてのエッジに対して繰り返すことができる。さらに、この方法においては、分析中にソリッド点に遭遇した場合、ソリッド点を保存し(たとえば、メモリ120に)、ソリッド点を処理して、新しいエッジまたはまだ識別されていないエッジに隣接するソリッド点があるかどうかを確認する。 あれば、新しいエッジに隣接するソリッド点を使用して新しいポリゴンを作成し、ポリゴンが閉じるまでエッジを追加する。エッジスタック内のすべてのエッジが使用された場合、ポリゴンをコミットし、新しいクラスターをスキャンする。新しいクラスターに遭遇すると、上記の段階が繰り返されて、新しいクラスターを定義する別のポリゴンが形成される。この処理は、入力画像が完全に処理されるまで繰り返される。これらの操作については、
図5を参照して以下で詳しく説明する。
【0052】
処理508は、1ピクセル当たり1ビットの入力画像をスキャンすることを含む。例えば、処理508は、入力画像の左上のピクセルの第1の行で始まり、入力画像のピクセルの第1の行を横切って入力画像の右上に進み、第2行を左右に移動してスキャンするために、入力画像の左側の第2行に移動し、という処理を入力画像の右下において終了するまで繰り返す、入力画像のラスタースキャンを実行する。しかしながら、例示的な実施形態はそれに限定されず、他の走査方向が可能である。例えば、処理508は、左から右、右から左、上から下または下から上(4つのスキャン方向)の任意の組み合わせを伴う水平方向または、左から右、右から左、上から下、または下から上(別の4つのスキャン方向)の任意の組み合わせを伴う垂直方向の8つのスキャン方向のいずれかで入力画像のラスタースタイルスキャンを実行することができる。
【0053】
処理512では、入力画像内のすべての点が処理されたかどうかを判断する。点は、入力画像のピクセルのコーナーを参照する場合がある(たとえば、(-1、-1)から(2、2)の範囲の座標を持つ点を持つ
図4Aのピクセルグリッドを参照のこと)。方法500によって入力画像を処理する際、処理512において、すべての点が処理されたかどうかを判断できるように、処理済みの点がマークされる。各プロセス点は、入力画像のすべての点にマッピングされた座標系に従ってマークすることができる。未処理の点は、以下に説明する処理の反復中にメソッド500が検出され、マークされていない点である。処理された点は、点が処理されたことを示すフラグを付け、当該フラグをメモリ120に格納することによってマークすることができる。すべての画像ポイントが処理された場合、方法500は処理556にて終了する。そうでない場合、方法500は処理514に進む。
【0054】
処理514は、ピクセルヒットにより入力画像内の点に遭遇することを含んでいる。たとえば、1ビット/ピクセルの入力画像は、ピクセルのヒットを示す状態に設定された状態を持つピクセルの点に遭遇するまでスキャンされる。
【0055】
処理516において、方法500は、ピクセルヒットを有する点が既知のクラスタ、例えば、
図5~6Bにて以下に説明する動作を繰り返すことによって、すでに構築された、あるいは構築される入力画像内の既存のクラスタであるかどうかを決定する。 そうである場合、方法500は、処理508に戻り、入力画像のスキャンを継続する。そうでない場合、方法は、処理520に進む。点が上述の方法でマークされているかどうかを決定することにより、点が既知の多角形に属することを知るようにしてもよい。
【0056】
処理520は、新しいクラスター、新しいクラスターに属する新しいポリゴン、新しいエッジスタック、および新しいソリッドスタックの開始を含んでいる。上記で説明され、以下でより詳細に説明されるように、エッジスタックは、方法500のために格納されたエッジの集合であり、ソリッドポイントスタック(またはソリッドスタック)は、方法500のために格納されたソリッド点の集合である。
【0057】
処理524は、処理512および516で識別された点のエッジ情報を取得することを含んでいる。例えば、処理524は、
図4A~4Dからキーを計算および検索する点を含む参照ピクセルRPのムーア近傍(例えば、ピクセルヒット)を調べることを含んでいる。エッジ情報(エッジは矢印で示されている)はキーから取得され、新しいポリゴンの構築を開始するためのエッジ情報セットとして保存される。キーにソリッド点が含まれている場合、これらのソリッド点は、後で調べるためにソリッドスタックに保存される。ソリッド点は、エッジに隣接していないキー内の点またはピクセルである。
【0058】
処理528は、キーのエッジ(矢印の頭で示される)によって示される方向に新しいエッジを追加すること、およびポリゴン内の次の点を決定することを含んでいる(キー255を除くすべてのキーはエッジを有する)。キーの未使用または未消費のエッジは、エッジスタックに保存される。処理528については、
図6A1および6Bを参照し、以下でより詳細に説明する。
【0059】
処理532は、処理520で開始された多角形について多角形ループが閉じたかを判断することを含んでいる。そうでない場合、方法500は、処理524に戻る。そうである場合、方法は、処理536に進む。
【0060】
処理536は、エッジスタックに未使用のエッジがあるかを判断することを含んでいる。そうである場合、方法500は処理540に進む。そうでない場合、方法500は処理548に進む。
【0061】
処理540は、現在のポリゴンを生成することを含んでおり、これは、入力画像内のすべてのポリゴンが構築された後、出力画像および/またはポリゴンプロファイルに含めるために現在のポリゴンを格納することを含んでもよい。
【0062】
処理536が、エッジスタックに未使用のエッジがあったと判断した場合、(1つまたは複数の)未使用のエッジは、現在のポリゴンの近くに別のポリゴンが存在することを示している可能性がある。したがって、処理544は、エッジスタックからの未使用のエッジを使用して新しいポリゴンを開始することを含んでいる。エッジスタックから未使用のエッジを持つ新しいポリゴンを開始することには、未使用のエッジの尾にあるピクセルのキーを取得することが含まれてもよい。次に、方法500は、処理524に戻り、処理524、528、532、および536を反復することによって新しいポリゴンの構築を開始する。エッジスタックにエッジがなかった場合、方法500は、処理536をスキップする。
【0063】
処理548は、処理524で形成されたソリッド点スタック内のソリッド点トが新しいエッジを生成するかを決定することを含んでいる。そうである場合、方法500は、処理540および544に進んで、現在のポリゴンに注力し、新しいエッジのテールにあるピクセルのキーを取得することによって、新しいエッジで新しいポリゴンを開始する。そうでない場合、方法500は、処理525から548を反復することによって形成された多角形に注力するために処理552に進み、処理524から548を反復することによって形成された多角形によって定義される完全なクラスタを形成する。方法500は、処理508に戻り、入力画像のスキャンを続行する。ソリッド点がない場合、方法500は、処理548をスキップして、処理552に直接進む。
【0064】
図6Aおよび6Bは、少なくとも1つの例示的な実施形態による、
図5からの動作の詳細をより詳細に示している。より詳細には、
図6Aは、
図5の少なくとも処理524、528、および532として全般的なフローチャートを示し、
図6Bは、出力画像および/またはメソッド500および600に従うことによるポリゴンプロファイルを生成するために、入力画像に多角形を構築するための詳細な例を示している。
【0065】
方法600(および/またはその1つまたは複数の段階)は、例えば、少なくとも1つのプロセッサによって実行するか、そうでなければ他の方法によって実行することができる。少なくとも1つのプロセッサは、上記の装置112の処理回路116と同じまたは類似のものでもよい。本明細書に記載の任意のプロセッサ以外のプロセッサを使用して、方法600を実行することもできる。少なくとも1つのプロセッサは、メモリ120などのメモリに格納された命令を実行することによって方法600を実行することができる。命令は、以下に説明する方法600の1つまたは複数の段階に対応させることができる。命令によって、プロセッサは、以下でより詳細に説明されるような画像処理アルゴリズムなどの1つまたは複数のアルゴリズムを実行することができる。
【0066】
上述のように、処理524は、
図4A~4Dからピクセルヒットに遭遇してキーを検索することを含んでいる。ここで、ピクセルヒットを有するピクセルは、参照ピクセルRPとして使用される。この段階で、方法500は、処理608から開始して、方法600の様々な処理の実行に進むことができる。3つのピクセルP1、P2、およびP3を持つ入力画像のポリゴンを示す
図6Bの例において、方法600の処理は、1つまたは複数の段階に対応させることができる。 ここで、ピクセルP1は、クラスターを開始するピクセルヒットと、そのクラスターに属するポリゴンである。
【0067】
ここで、
図5の処理は、処理508でスキャンを開始するように促されると、自動的に(例えば、ユーザの介入がほとんどまたはまったくない状態で)実行され得るものである。
【0068】
処理608は、検索されたキーが自己ループであるエッジを含むかを決定することを含んでいる。そうである場合、方法600は、処理612に進む。そうでない場合、方法600は、処理616に進む。矢印の頭が矢印の尾で終わるという点で、
図4Aのキー000のみが自己ループであるエッジに該当する。他のすべての場合、メソッドは処理616に進む。
【0069】
処理612は、処理648においてポリゴンループを閉じる(ポリゴンを完成させる)キー000のエッジ情報点へのポリゴン点の設定を含んでいる。言い換えれば、処理608および612は、参照ピクセルRPのムーア近傍にピクセルヒットがないことを決定し、単一のピクセル(つまり、参照ピクセルRP)で形成されたポリゴンとする。 別の言い方をすれば、処理612は、キー000に対応する形状で閉じられた多角形を決定する。一方、処理608が、参照ピクセルRPのムーア近傍で1つまたは複数のピクセルヒットを検出した場合、方法600は処理616に進む。
【0070】
処理616は、部分的に構築された多角形のエッジの一部と重なる、操作524で検索されたキーのエッジ(例えば、エッジの一部)を選択することを含んでいる。この方法において、ポリゴンの最初のピクセルヒットに遭遇した直後に処理616に到達し、キーに複数のエッジがある場合、方法600は、ピクセルグリッドのピクセル0から開始しCCW(反時計)方向に移動してピクセル7まで移動しながら参照ピクセルのムーア近傍を調べるときに遭遇するキーの最初のエッジを選択できる。
【0071】
処理620は、処理616で選択されなかったキーの残りのエッジがあるかを決定することを含んでいる。そうであれば、方法600は、処理624に進み、未使用または未選択のエッジをエッジスタックに追加する。そうでない場合、方法は処理628に進む。
【0072】
場合によっては、たとえば、キーのエッジが1つしかない場合など、処理616および620がスキップされる。エッジを選択したり、エッジスタックに保存する追加のエッジがあるかどうかを判断したりする必要はない。
【0073】
処理628は、3つの重なり合う点をスキップし、残りの点を多角形に追加することによって、部分的に構築された多角形に新しいエッジの重なり合わない部分を追加することを含んでいる。キーの各エッジには少なくとも3つの点があるため、3つのオーバーラップポイントは少なくとも部分的にスキップされる。
【0074】
処理632は、スキップされ追加されたポイントを使用済みまたは消費済みとしてマークすることを含んでいる。
【0075】
処理636は、現在構築されている多角形の次の点が、処理520で開始された多角形を開始した点であるかを決定することを含んでいる。そうでない場合、方法600は、処理640に進む。そうであれば、
図5の処理532でポリゴンループが閉じているか?に対して「yes」であり、これは、ポリゴンが完成し、出力画像やポリゴンプロファイルに含める準備ができていることを意味している。
【0076】
処理640は、現在のキーのエッジの最後の点を含むピクセルを参照ピクセルRPとして設定することを含んでいる。処理640は、初期参照ピクセルRPを、ピクセルヒットを有する初期参照ピクセルのムーア近傍の次のピクセルに移動させる。その後、方法600は、
図5の処理524に戻り、次のピクセルのキーを検索する。
【0077】
ここで、
図6の処理は、自動的に実行され得る(例えば、ユーザーの介入がほとんどまたはまったくない)ことを理解されたい。
【0078】
上記のように、
図6Bは、3つのピクセルP1、P2、およびP3を有する入力画像のポリゴンを示している。ここで、ピクセルP1は、新しいクラスターおよび新しいポリゴンを開始するピクセルヒットである。
図6Bは、入力画像の特定のポリゴンについての
図6Aの参照処理として示されている。
【0079】
ここで、
図6Bの段階1は、入力画像においてピクセルP1のピクセルヒットに遭遇し、参照ピクセルRPとして設定される動作524に対応し得るものである。続いて、ピクセルP1(現在は参照ピクセルRP)のムーア近傍がスキャンされ、ムーア近傍でヒットした唯一のピクセルがキー128に対応するピクセルP2であることが決定される。参照ピクセル(つまり、P1)のムーア近傍には、ピクセルP2としてヒットした単一のピクセルが含まれる。キー128にはエッジ(矢印)が1つしかないため、以下で詳しく説明するように、当該エッジにてこの方法の処理が開始される。言い換えれば、処理608での決定は「NO」であり、処理616は適用できず、処理620での決定は「NO」であるため、処理628に進むことになる。しかし、キー128は1以上のエッジ(キー136を参照)を有しているので、処理616において異なるエッジが選択され、処理624において、エッジスタックに非選択のエッジが格納される。
【0080】
図6Bの段階1で明らかなように、ピクセルP1とP2はキー128に対応する。段階1に示すように、段階2(処理628)においてポリゴンの一部を生成するため、キー128のエッジ上の3つの点がスキップされる(点は「スキップ3」で識別されるピクセルのコーナーに対応する)。つまり、ステージ1でスキップされなかったキー128の3つの点は、最終的なポリゴンの一部を形成するエッジ(つまり、段階2のポリゴンのエッジ)として追加される。この段階では、キー128には未検査または未消費のエッジが含まれていないため(キー128にはエッジが1つしかないため)、エッジスタックにエッジは保存されない(処理620での決定は「いいえ」である)。ここで、番号は
図4Aから4Dキーセットのために有用であるから、エッジの最初の3つの点は、入力画像内のすべてのポリゴンを処理するためにスキップされ得るものである。当業者によって理解され得るように、異なるキーのセットは、処理628において異なる数の点をスキップする結果となる可能性がある。
【0081】
ピクセルP1のムーア近傍が処理され、ステージ2のポリゴンのエッジがピクセルP2で終了するため、ピクセルP2をステージ2の参照ピクセルとして設定し、ピクセルP2の周りのムーア近傍を調べてキー136を生成する。ピクセルP1とP3が、現在の参照ピクセルP2のムーア近傍のピクセルヒットだからである。図示のように、キー136は、上端および下端として2つの縁(矢印)を含んでいる。
【0082】
段階2には、キー136の下端がステージ2の部分ポリゴンのエッジと重なると、そのエッジを選択し、キー136の下端の3つの点をスキップすることが含まれている。キー136の下端は、このエッジが段階2の部分的に構築されたポリゴン(処理616)のエッジと重なるので、選択されることになる。キー136の下端の3つの点をスキップすると、ピクセルP3に1つの点が残り、段階3でポリゴンに追加されて、ポリゴンのエッジが1ポイント延長される(処理628)。 次に、キー136の下端上のすべての点が、段階3(処理632)でポリゴンによって使用または消費されているものとしてマークされる。キー136は、段階2と段階3との間の移行で使用または消費されなかった上端を依然として含むので、キー136の上端は、エッジスタックに保存される(処理620での決定は「YES」であり、エッジは処理624でエッジスタックに保存される)。さらに、段階2と3との間の遷移において、ピクセルP3が参照ピクセルとして設定される(処理640)。この段階で、ポリゴンの次の点(ピクセルP3の下部のポイント)がステージ2のポリゴンの最初の点(ピクセルP1の左下の点)ではないと判断されるため、ポリゴンに対する処理は続行される(処理636での決定は「いいえ」であり、処理524に戻って参照ピクセルとして設定されているピクセルP3の適切なキーを検索する前に、処理640でピクセルP3を参照ピクセルとして設定する)。
【0083】
段階3においては、ピクセルヒットについて参照ピクセルP3のムーア近傍を調べることが含まれている。入力画像に示されているように、ピクセルP3のムーア近傍でヒットした唯一のピクセルはピクセルP2であり、これはキー008に対応する。キー008にはエッジが1つしかなく処理620の決定は「NO」であるため、処理616は適用されない(つまりスキップされる)。操作620は「いいえ」です。段階2と同様に、キー008のエッジの最初の3つの点は、エッジの尾からスキップされ、キー008の上位3つの点は、段階4(処理628)に示されているポリゴンに追加される。スキップされた3つの点と、ポリゴンに追加された3つの点は、消費済みとしてマークされる(処理632)。一般に、キー内のすべてのスキップされた点と、最終的なポリゴンに追加されたすべての点は、消費済みとしてマークされる。
【0084】
段階3でポリゴンに追加された3つの点により、ポリゴンのエッジが段階4のピクセルP2で終了するため、ピクセルP2が段階4(処理640)で参照ピクセルとして設定され、処理524に戻って参照ピクセルP2のキーが取得される。ピクセルP2のムーア近傍を調べると、ピクセルP1とP3でピクセルヒットが発生する。これは、キー136に対応する。ただし、段階2でキー136の下端が消費済みとしてマークされているため、キー136の上端のみが考慮される(処理616はスキップされ、処理620での決定は「いいえ」である)。図示のように、キー136の上端の最初の3つの点はスキップされ、それは段階5(処理628)でポリゴンに追加される単一の点を残す。この単一の点は消費済みとしてマークされる(処理632)。段階5のポリゴンでエッジが終了する点は、段階2からの最初の点ではないため、処理636での決定は「NO」である。ポリゴンのエッジはピクセルP1で終了するので、ピクセルP1が再び参照ピクセルとして設定され(処理640)、操作524に戻って適切なキーが取得される。
【0085】
段階5に示すように、処理524においてピクセルP1のムーア近傍を調べると、ピクセルP2が唯一のピクセルヒットであるため、キー128が返される。キー128にはエッジが1つしかないため、処理616はスキップされ、操作620の決定は「NO」になる。段階5に示すように、キー128の最初の3つの点はスキップされ、段階5(処理628)でポリゴンに追加する1つのポイントが残る。この単一の点は消費済みとしてマークされる(処理632)。さらに、この単一の点は、ポリゴンがステージ2で開始したのと同じ点である。したがって、処理636での決定は「YES」であり、ポリゴンは、処理536に戻る前に、出力画像および/またはポリゴンプロファイルに含めるために閉じられるように設定される。
【0086】
ここで、
図5~6Bに示されるように、処理532においてポリゴンが完了したと決定されると、処理536における次のタスクは、エッジスタック(もしあれば)からエッジを取り出して、新しいポリゴンの作成を開始することである。例えば、
図6の処理の反復においてエッジスタックに保存された第1のエッジを選択し、その結果、処理624において、エッジがエッジスタックに保存される(すなわち、エッジのエッジスタックへの保存は、先入れ先出し(FIFO)方式にて処理される)。しかしながら、例示的な実施形態はそれに限定されず、保存されたエッジがエッジスタックから処理される(取り出される)順序は、経験的実証および/または適宜の設計パラメータセットである。エッジスタックに保存されたエッジは、以前に作成されたポリゴンに属していない新しいエッジと見なされる。新しいエッジのための処理540および544に進んで、方法500の実行が続けられる。
【0087】
さらに、上述のように、処理548では、ソリッドスタックに格納されたソリッド点があるかどうかを決定する。この場合、すべてのエッジがエッジスタックから使い果たされた後、ソリッドスタック内のソリッドポイントを繰り返し処理して、既に構築されたポリゴン(新しいエッジ)に属していないエッジを検索する。そのようなソリッド点が存在する場合、処理540および544に進んで、新しい多角形を開始する。
【0088】
図5~6Bにおける上記の処理は、以下のとおり擬似コードにて要約できる。
【0089】
【0090】
【0091】
図7Aおよび7Bは、例示的な実施形態による画像処理方法において、入力画像に基づいて一連のポリゴン(例えば、出力画像用)を構築する方法を示している。
図7Aおよび7Bは、
図1および6Bを参照して上記の方法に従って形成することができる。
【0092】
図7Aに示すように、入力画像は、顔の外側ポリゴン、顔の内側のポリゴン1、目の2つの内側ポリゴン2と3、および口の内側ポリゴン4の合計5つのポリゴンを含む顔である。理解され得るように、例示的な実施形態による画像処理方法は、外側の多角形をCCW方向に形成させ、内側の多角形1から4をCW方向に形成させる。
図7Aおよび7Bの各ドットは、入力画像上のピクセルの点を表す。顔の目はそれぞれのムーア近傍にピクセルがない単一のピクセルであり、これらポリゴン2と3はキー000に対応するものであるため、ポリゴン2と3の構成は示していない。
図7Aおよび7Bは、各ポリゴンのキーシーケンス、ポリゴンの方向(外部ポリゴンの場合はCCW、内部ポリゴンの場合はCW)、ループの反復ごとに追加されるポイント、および段階の順番とループの終了によって定義される4つの異なるピクセルのグループを持つクラスターを示している。
【0093】
図8は、例示的な実施形態による画像処理方法によって、複雑な入力画像に基づいて(例えば、出力画像のために)一連のポリゴンを構築する方法の例を示している。関連技術の画像処理技術では、決定論的に解決する必要のある多数の分岐と交差、および可能性のあるあいまいなピクセルの場合のために、
図8の入力画像内のすべてのクラスターとポリゴンを正しく識別するのに苦労していた。しかし、
図1~6B従って画像処理方法を実行すれば、標準のパーソナルコンピュータを使用して、0.328秒で正確な出力画像と出力画像の1つまたは複数の特性を生成することができる。出力画像では、内側と外側の影付きの領域は、線で囲まれた内側と外側のポリゴンである。ここで説明する画像処理アルゴリズムは、3,454ポリゴン、23クラスター、 0.328秒で60,910の合計ピクセル領域を正しく識別する。
図8の複雑さにもかかわらず、ポリゴンやエッジを見逃すことはない。出力画像の任意の領域を拡大すると、各ポリゴンが丸め誤差なしで忠実にトレースされていることがわかる。さらに、アルゴリズムのすべての実行は、同じ画像に対して決定論的である(つまり、同じ画像に対して、アルゴリズムは常にまたはほとんど常に同じ結果を生成する)。
【0094】
図8の例では、ポリゴンは、米国の地図内の48の隣接する州の郡の境界を定義する場合がある。明確に示されていないが、
図8の出力画像の生成に関連する有用性の少なくともいくつかは、出力画像の後処理によるものであることを理解されたい。たとえば、各郡が出力画像で正しく識別されている場合、出力画像は、データを各郡に関連付けるダッシュボードまたはその他のWebベースのアプリケーション(たとえば、人口統計データ、気象データ、および/またはその他の有用なデータ)で使用できる。このようなダッシュボードのユーザーには、特定の郡にマウスを選択またはカーソルを合わせて、その郡に関連付けられている関連データを表示するオプションが表示されるようにしてもよい。したがって、例示的な実施形態は、入力画像を正確に処理して出力画像を生成することに関するということができ、出力画像は、出力画像の有用性を改善するために追加の操作を受けてもよい。
【0095】
図9は、例示的な実施形態による画像処理アルゴリズムにかかる時間と、処理されるピクセルの数とを示すグラフを示している。
【0096】
図9のグラフは、さまざまな画像で実行されたアルゴリズムのサンプルを示している。ピクセル数は、ピクセルヒットのあるピクセルの数である(たとえば、白い背景の画像の黒いピクセルの数)。行L1は、ピクセル数によるアルゴリズムの実行を示している。線L2は、ピクセル数の平方根に比例する。論理的には、アルゴリズムは、
Edges*O(n)+(SolidPoints+EmptySpace)O(n
2)
である。したがって、細い線のあるまばらな画像の場合、アルゴリズムはO(n)に近づく。画像の空きスペースやエッジ間の実線のピクセルが増えると(つまり、「太い線」)、アルゴリズムのパフォーマンスはO(n
2)になる。
【0097】
図10は、例示的な実施形態による画像処理方法において、複雑な入力画像に基づいて出力画像のために一連のポリゴンを構築する方法の例を示している。この例では、アルゴリズムは437個のポリゴン(州の境界とテキストで構成されている)を正しく識別する。すべての州の境界が正しくトレースされている。また、テキスト文字も既知の位置を持つポリゴンであるため、各境界内のテキストの位置も既知である。
【0098】
図1~10は、背景が白でピクセルが黒の入力画像を処理する画像処理アルゴリズムについて示している。しかし、例示的な実施形態は、反対の場合(すなわち、黒い背景と白いピクセルを有する入力画像)に対しても同等に機能する。1ビット・ビットマップにコントラストがある場合、そのコントラストは入力画像の処理に使用される。任意の適切なビットマップを入力として使用し、(適応的にも)スペースを「ヒット」および「ミス」の1ビット・ビットマップに変換できる。
【0099】
グレースケールまたはカラー画像の場合、画像処理アルゴリズムにおいて、ヒット/ミス基準の任意の適切な連続体(たとえば、40%、50%、60%、70%、80%またはその他の分布)を使用できる。また、すべてのヒット/ミス基準では、各実行が独立しているため、アルゴリズムを並行して実行できる。各ビット深度の結果のポリゴンを重ね合わせて、コンセンサスポリゴンの輪郭を作成できる。
【0100】
さらに、時計回りの規則と反時計回りの規則は同等である。さらに、
図4A~4Dのキーの任意の符号化順列によれば、アルゴリズムの同等の実装を得ることができる。
【0101】
上記のように、例示的な実施形態による画像処理アルゴリズムは、任意の2D画像表面上で実行され、すべてのクラスタおよびポリゴンを識別することを理解されたい。 2D画像のすべてのピクセルをスキャンする場合、アルゴリズムはO(n2)の最大で実行されるようにバインドされている。ただし、ユーザーがクラスターの境界を選択した場合、そのポリゴンの輪郭のみをトレースするようにアルゴリズムを適合させるようにしてもよい。このモードにおいて、アルゴリズムはO(n)時間内に実行される。
【0102】
例示的な実施形態による画像処理アルゴリズムは、2D画像以外の画像を処理する能力をさらに提供することができる。たとえば、超立方体のバリエーションにおいては、2立方体の場合(デカルト平面)のアルゴリズムが、n立方体にスケーリングされる。 n立方体の場合、隣接するn立方体は3n-1である。
【0103】
1)各次元においては、乗算ルールにより、単位移動(-1,0,1)を選択できる。=> 3n
2)(0,0,0)は、ここから移動することはない中心である。=> -1
3立方体の場合、33-1=26個の隣接がある。各隣接について、ピクセルヒットまたはピクセルミスの可能性がある。したがって、edgeInfoブロックの総数は、下式により67,108,864個となる。
【0104】
【0105】
n立方体に必要なedgeInfoブロックの数の一般式は次のとおりである。
【0106】
【0107】
同じ概略アルゴリズムが、次の定義を持つn立方体に適用される。
【0108】
エッジ = (n-1)flat
ポリゴン = n-Flat
ソリッド = n-Flat
このアルゴリズムにおいては、エッジの開始をスキャンし、新しいクラスターと新しいクラスターの新しいポリゴンを開始し、ポリゴンが閉じるまでエッジを追加する。これには、エッジスタックに未消費のエッジを追加することが含まれてもよい。エッジスタック上のいずれかのエッジが前のポリゴンによって消費されなかった場合は、消費されていないエッジを使用して新しいポリゴンを作成し、ポリゴンが閉じるまでエッジを追加する。これは、エッジスタック上のすべてのエッジに対して繰り返すことができる。ソリッドポイントがあった場合は、それらすべてを処理して、新しいエッジに隣接しているかどうかを確認する。その場合は、新しいエッジで新しいポリゴンを作成し、新しいポリゴンが閉じるまでエッジを追加する。すべてのエッジが消費された場合は、すべてのポリゴンをクラスターとしてコミットし、新しいクラスターをスキャンして、繰り返す。
【0109】
例えば:
2D:エッジ=線(1-フラット)、ポリゴン=平面(2-フラット)、ソリッド=平面(2-フラット)
3D:エッジ=平面(2-フラット)、ポリゴン= 3Dソリッド(3-フラット)、ソリッド= 3Dソリッド(3-フラット)
4D:エッジ= 3Dソリッド(3-フラット)、ポリゴン= 4-フラット、ソリッド=4-フラット
等々。
【0110】
3D画像では、3個の立方体の中心を囲む26個の立方体で、
図11のピクセルグリッドに示すように、 CCWを上向きにらせん状にするセル・アドレス・エンコーディング(右手系)を選択する。これにより、図示されたようなキーシーケンスが得られる(簡潔にするために省略されているが、
図4Aから4Dのキーと同じ方法で構成されている)。
【0111】
図12は、3Dピースを組み合わせて成長するボリュームを示している。
図1~10を参照して説明された2Dの場合、エッジのつながりはポリゴン境界を形成する。 3Dの場合、表面のつながりははボリューム境界を形成する。前述のように、キー[1…67,108,862]の任意の組み合わせは、完全な定義になる。
図12のキー3981からキー3981において、2つの任意のキーがどのように結合するか(2D結合手順に類似)を示している。
【0112】
両方のキーの上部の「ノッチ」を組み合わせると、「リンクされた結果」の上部に長方形のノッチとして表示される新しいボリューム境界が形成される。すべての3Dキー(最初と最後のキーを除く)は、エッジサーフェスで定義されているように、インとアウトの次数が等しくなる。2D画像を処理するための同じリンクメカニズムを使用して(
図5~6Bを参照)、ボリューム境界が拡大していき、最終的には自己閉鎖して完全に定義された境界が形成される。類推すると、ピクセルの3Dグループは隣接するピクセルのボリュームであり、3Dポリゴンは3D空間内のすべてのボリュームを完全に分離するサーフェスである。
【0113】
図13は、少なくとも1つの例示的な実施形態による方法700を示している。
【0114】
方法700(および/またはその1つまたは複数の段階)は、例えば、少なくとも1つのプロセッサによって実行されるか、あるいはその他の方法で実行される。少なくとも1つのプロセッサは、上記のデバイス112の処理回路116と同じまたは類似のものとすることができる。本明細書に記載の任意のプロセッサ以外のプロセッサを使用して、方法700を実行することもできる。少なくとも1つのプロセッサは、メモリ120などのメモリに格納された命令を実行することによって方法700を実行することができる。命令は、以下に説明する方法700の方法の、1つまたは複数の段階に対応することができる。命令により、プロセッサは、以下でより詳細に説明されるような画像処理アルゴリズムなどの1つまたは複数のアルゴリズムを実行することができる。
【0115】
動作704は、上述の複数のキーを生成することを含み、複数のキーの数は、処理される入力画像内のピクセルのムーア近傍のピクセルの数に基づく。例えば、処理704においては、各キーが参照ピクセルRPのムーア近傍内のピクセルの状態の1つの可能な順列に対応するように、
図4A~4Dに示される複数のキーが生成される。。
【0116】
処理708は、ソース画像の各ピクセルのピクセル値に基づいて、ソース画像の各ピクセルを第1の状態または第2の状態に変換することによって、ソース画像から入力画像を生成することを含んでいる。
図1~12を参照して上で論じたように、ソース画像がカラー画像である場合、カラー画像を、既知の技術に従ってグレースケールに変換してもよい。グレースケール画像は、1ピクセルあたり1ビットの画像として入力画像を生成するために、しきい値処理の対象としてもよい(たとえば、各ピクセルは黒または白である)。少なくとも1つの例示的な実施形態では、第1の状態は黒のピクセルに対応し、第2の状態は白のピクセルに対応する。しかしながら、他の実施形態では、第1の状態は、白色ピクセルに対応し、第2の状態は、黒色ピクセルに対応するようにしてもよい。
【0117】
ここで、処理704および708はオプションの操作としてもよいことに注意が必要である。少なくとも1つの例示的な実施形態では、画像処理装置112は、すでに処理704および708がなされた入力画像を受信する(例えば、これらの処理は、ソース装置104またはシステム100に示されていない他のデバイスによって実行される)。
【0118】
処理712は、第1の状態または第1の状態の反対の第2の状態のいずれかを有するピクセルを含む入力画像をスキャンすることを含んでいる。例えば、処理712は、処理508に関して言及した8つの方法のいずれかで入力画像をスキャンする。
【0119】
処理716は、第1の状態を有する入力画像の第1のピクセルに遭遇したときに、第1のクラスタおよび第1のポリゴンを開始することを含んでいる。以下でより詳細に説明するように、第1のポリゴンは、第1のクラスタを部分的に定義するか、または完全に定義することができる。
【0120】
処理720は、第1のポリゴンを形成するための第1の一連の操作を実行することを含んでいる。例えば、処理720は、
図5および
図6Aを参照して説明した動作を繰り返し、
図6Bの例について示したのと同じまたは同様の方法で第1の多角形を形成することを含んでいる。
図5、6A、6Bおよび13~15での説明を考慮して理解できるように、方法800および/または900における1つまたは複数の処理は、処理720で実行される操作の第1のセットの追加の詳細を定義することができる。
【0121】
処理724は、入力画像の1つまたは複数の特性の表示を生成することを含んでいる。入力画像の1つまたは複数の特性には、入力画像の完全なポリゴンプロファイルを定義するのに役立つ情報の一部またはすべてなど、入力画像に関する情報を含むことができる(たとえば、
図2Bを参照)。例えば、処理724は、入力画像が完全に処理されたとの決定に応答して、入力画像の1つまたは複数の特性の表示を生成する(すなわち、処理512における決定が「はい」である)。入力画像の1つまたは複数の特性が入力画像のポリゴンプロファイルを含む場合、入力画像のポリゴンプロファイルは、
図5および6Aの方法の実行中に形成された第1のポリゴンおよび他のポリゴン(もしあれば)のポリゴンプロファイル情報を含むことができる。処理724における表示の生成は、
図5および6Aの動作を反復することによって形成された入力画像の表現である出力画像を生成することを、さらに含んでいてもよい。 さらに、この表示は、入力画像のポリゴンプロファイルに関する情報に加えて他の情報を含んでもよい。例えば、処理724は、追加情報を生成するために処理された入力画像についてポリゴンプロファイル内の情報を検査することを含んでいてもよく、追加情報は、入力としてポリゴンプロファイルを使用するオブジェクト認識アルゴリズムによって識別およびラベル付けされたオブジェクトやポリゴンプロファイルから収集される可能性のあるその他の有用な情報を含んでいてもよい。これに追加して、またはこれに代えてに、処理724は、インタラクティブダッシュボードまたは他のインタラクティブアプリケーションに含めるために、データを出力画像のポリゴンに関連付けることを含んでいてもよい。
【0122】
処理728は、処理724で生成された表示を出力することを含んでおり、これは、表示(例えば、入力画像および/または出力画像の多角形プロファイル)を出力デバイス128のディスプレイまたはユーザインターフェースに出力することや、表示が可能なフォーマットにて表示を記録するメモリ(例えば、メモリ120または他のローカルまたはリモートメモリ)に出力することおよび/または別の適切な宛先に表示を格納することを含んでいる。表示は、本質的に音声および/または視覚画像とすることができる。
【0123】
図14は、少なくとも1つの例示的な実施形態による方法800を示している。方法800は、方法700のすべての処理または選択された処理に加えて実行することができる。例えば、少なくとも1つの例示的な実施形態では、方法800は、処理720と処理724の間で実行することができる。
【0124】
方法800(および/またはその1つまたは複数の段階)は、例えば、少なくとも1つのプロセッサによって実行もしくはその他の処理がなされる。少なくとも1つのプロセッサは、上記の装置112の処理回路116と同じまたは類似とすることができる。本明細書に記載の任意のプロセッサ以外のプロセッサを使用して、方法800を実行することもできる。少なくとも1つのプロセッサは、メモリ120などのメモリに格納された命令を実行することによって方法800を実行することができる。命令は、1つまたは複数の段階に対応することができる。下記の方法800の命令により、プロセッサは、以下でより詳細に説明されるような画像処理アルゴリズムなどの1つまたは複数のアルゴリズムを実行することができる。
【0125】
処理804には、第1の多角形を形成するために使用される少なくとも1つのキーが、未使用のエッジを含むか、または未使用のソリッドポイントを含むかを決定することが含まれる(例えば、
図5の処理536および548を参照)。そうである場合、方法800は処理808に進む。そうでない場合、方法800は処理828に進む。
【0126】
処理804での決定が「いいえ」である場合、これは、第1のポリゴンが入力画像の第1のクラスターを完全に定義していることを示しているとしてもよい。例えば、
図5A~6Bを参照して上で論じたように、第1の多角形のエッジがそれ自体で閉じるとき(すなわち、エッジの頭がピクセルの点でエッジの尾と出会うとき)、第1の多角形は完全に形成され、第1のクラスタを完全に定義する。言い換えれば、第1のクラスタを完全に定義する第1の多角形は、処理804が「いいえ」の決定である結果として自動的に続けて得ることができる。
【0127】
処理808は、処理804における「いいえ」の決定に応答して、入力画像をスキャンし続けることを含んでいる。例えば、スキャンは、処理712で選択されたのと同じ方法で続行することができる。
【0128】
処理812は、第1の状態にある入力画像の第2のピクセルに遭遇したときに、第2のクラスターおよび第2のクラスターに属する第2のポリゴンを開始することを含んでいる。すなわち、
図5の処理512における決定は「いいえ」であるため、方法はピクセルヒットの検索を継続する。この場合のピクセルヒットは、第2のクラスタおよび2番目のポリゴンを開始する第1の状態を有する第2のピクセルによって決定される。
【0129】
処理816は、第1のセットの処理を繰り返し実行して、入力画像の第2のクラスタを部分的に定義するかまたは完全に定義する第2のポリゴンを形成することを含んでいる。例えば、処理816は、第2のポリゴン(構築中)のエッジがそれ自体で閉じて第2のクラスタを部分的に定義するか(処理540のように)、または第2のクラスタを完全に定義する(処理552のように)まで、
図5および
図6Aの動作を反復することを含んでいる。その後、方法800は、処理724に戻り、方法800の出力に基づいて指示を生成する。
【0130】
上記のように、処理808~816は、2つの別個の多角形の形成に関連し、第1の多角形は完全なクラスターを定義し、第2の多角形は第2のクラスターを部分的に定義または完全に定義する。ただし、場合によっては、第1のポリゴンと第2のポリゴンを組み合わせて、第1のクラスターを完全に定義するようにしてもよい(たとえば、
図7Aおよび7Bの顔の外側のポリゴンと内側のポリゴン1を参照)。この場合、最初のポリゴンを形成するために使用されるキーが、
図5および6Aの処理の1回以上の反復中に生成されたエッジスタック内のエッジまたはソリッド点スタック内のソリッド点を含むことから、処理804は「はい」であると判断される。これにより、最初のクラスターがまだ完全に定義されていない可能性があることをが示される。
【0131】
処理804における決定が「はい」である場合、これは、第1のポリゴンが入力画像の第1のクラスターを部分的に定義していることを示しているとすることができる。言い換えれば、方法700によって形成された第1の多角形は、クラスターの外側境界を定義するが、クラスターの内側境界を定義することはできない(例えば、クラスターの外側境界を定義するが、内側の境界を定義していない
図7の外側クラスターを参照のこと)。第1のクラスタを完全に定義する第1の多角形は、処理804が「はい」の決定である結果として自動的に続けられて得ることができる。
【0132】
処理828は、未使用のエッジまたは未使用のソリッド点に基づいて、第1のクラスタに属する第2のポリゴンを開始することを含んでいる。処理828は、
図5の処理544に対応させることができる。
【0133】
処理832は、第1の一連の操作を繰り返し実行して第2のポリゴンを形成することを含んでいる。例えば、処理816は、第2の多角形(構築中)のエッジがそれ自体で閉じて第2の多角形を完全に形成するまで、
図5および
図6Aの処理を反復することを含んでいる。完全に形成された2番目のポリゴンは、入力画像の最初のポリゴンの内側にあり、最初のポリゴンと組み合わせて最初のクラスターを完全に定義することができる (例えば、
図7Aおよび7Bの外側多角形および内側多角形1を参照)。次に、処理828および832の結果を反映するために、処理724において表示が生成される。
【0134】
図15は、少なくとも1つの例示的な実施形態による方法900を示している。方法900は、
図13および
図14の説明で言及された処理の第1のセットにおける1つまたは複数の処理に対応させることができる。少なくとも1つの例示的な実施形態では、動作の第1のセットは、
図5Aおよび6Bの動作のすべてまたは選択されたものを含んでいる。方法900の操作は、異なった表現にて説明されているが
図5Aおよび6Bの操作に対応させることができる。
【0135】
方法900(および/またはその1つまたは複数の段階)は、例えば、少なくとも1つのプロセッサによって実行されるか、その他の処理がなされる。少なくとも1つのプロセッサは、上記の装置112の処理回路116と同じまたは類似とすることができる。この明細書に記載の任意のプロセッサ以外のプロセッサを使用して、方法900を実行することもできる。少なくとも1つのプロセッサは、メモリ120などのメモリに格納された命令を実行することによって方法900を実行することができる。この命令は、以下に説明する方法900の1つまたは複数の段階に対応していてもよい。この命令により、プロセッサは、以下でより詳細に説明されるような画像処理アルゴリズムなどの1つまたは複数のアルゴリズムを実行することができる。
【0136】
処理904は、第1のピクセルのムーア近傍が、第1の状態を有する少なくとも1つの他のピクセルを含むことを決定することを含んでいる。例えば、処理904は、
図5Aおよび6Bを参照して説明した上記の操作に従って、第1のピクセルのムーア近傍をスキャンし、少なくとも1つの他のピクセルが第1のピクセルと同じ第1の状態を有することを決定する(すなわち、少なくとも1つの他のピクセルもピクセルヒットである)。
【0137】
処理908は、第1のピクセルおよび少なくとも1つの他のピクセルによって形成される形状に対応する複数のキーからキーを検索することを含んでいる(
図5の処理524も参照のこと)。例えば、上で論じたように、操作908は、
図4A~4Dのキーを含むルックアップテーブル(LUT)へのアクセスすることや、最初のピクセルと少なくとも1つの他のピクセルによって形成される形状に基づいてキーを取得することを含んでいる。ここで、キーの影付きの領域には、最初のピクセルと、最初のピクセルのムーア近傍のピクセルヒットであると判断された少なくとも1つの他のピクセル内の他のピクセルが含まれることに注意が必要である。処理908は、第1のピクセルおよび少なくとも1つの他のピクセルによって形成された形状をキーの形状と一致させることによってキーを検索する。
【0138】
処理912は、第1の多角形を形成するために、複数のキーのうちのキーおよび1つまたは複数の他のキーを使用することを含んでいる。例えば、処理912は、第1の多角形が完全に形成されたとの決定に達するまで(例えば、操作532、540、および/または552)、
図5および6Aの処理(例えば、処理528(例えば、
図6Aの操作を含んでいてもよい)、532、536、および548)を繰り返すことを含んでいてもよい。
【0139】
明示的に示されていないが、例示的な実施形態は、処理724および728を参照して説明された指示を生成するために、入力画像全体について方法800および900を反復してもよいことに注意が必要である。加えて、方法700、800および900の全てまたは一部の処理は、自動的に実行される(つまり、ユーザーの介入がほとんどまたはまったく無い)。
【0140】
図16は、例示的な実施形態による画像処理方法によって処理することができる例示的なシーンおよび例示的なオブジェクトを示す図である。示されているように、シーンには、一時停止の標識、道路標識、車線の仕切り、横断歩道、街灯柱、トラフィックコーン、縁石、交差点が含まれている。現実の世界では、歩行者、他の車、自転車などのオブジェクトがさらに増えると、シーンの分析がさらに複雑になる。シーンには、道路の敷設が含まれる可能性があり、シーンは車両やその他の移動オブジェクトによりリアルタイムで移動しており、大きな計算容量の問題があることを付言しておく。しかしながら、例示的な実施形態によるアルゴリズムは、そのようなシーンのリアルタイム分析を可能にする効率をもたらすものである。このアルゴリズムはシーン内のすべての識別可能な形状を識別できるため、アルゴリズムはダウンストリームプロセッサが実行する必要のある作業を簡素化する。たとえば、このアルゴリズムは、道路標識、一時停止標識、ランプポスト、円錐形を識別し、車線分離器と横断歩道を区別し、道路と縁石を区別し、これらの形によって「メインストリート」「ストップ」というテキストを認識するためのポリゴン情報を提供することができる。例示的な実施形態によるアルゴリズムは、すべてのポリゴン情報およびそれらのポリゴン間の関係を迅速かつ低減された処理能力で正確に見つけ、自動運転車が人間の運転手が持つのと同じ視覚情報で動作できるようにする。さらに、自動運転プロセッサが強力であるほど、プロセッサはアルゴリズムを使用してより効率的に動作できるため、好ましいものである。
【0141】
図17に、少なくとも1つの例示的な実施形態による、例示的な入力画像および入力画像を処理することによって形成された出力画像を示す。理解できるように、
図17は、3D構造を表す2D線地形図を示している。この場合、プログラムは、画像スタックの輪郭が3D空間の表現を形成することを「理解」することが望ましい。アルゴリズムの1つのアプリケーションは、まさにこれである。アルゴリズムが入力画像を処理するとき、ポリゴンプロファイル情報には、ポリゴンがどのようにスタックするかを示す包含情報が含まれる。出力画像では、アルゴリズムによって決定された各レイヤーまたはポリゴンに陰影を付けることで、Zオーダーのスタッキングが示されている。
【0142】
上記を考慮して、本発明の概念は、高速で正確な出力画像を提供し、任意の1ビット/ピクセルの入力画像に対して正確な完全なポリゴンプロファイル(
図2Bを参照)を生成し得る画像処理技術に関するものであることを理解されたい。出力画像および/またはポリゴンプロファイルには、コンピュータビジョン、光学的文字認識(OCR)、自律車両環境検知(例えば、周囲の物体を正しく識別する)、地図および地図作成(例えば、一般的な形状マッチング)、自動テスト、ドキュメント作成、ユーザテスト生成、ビデオ、地図情報システム(GIS)、画像内のオブジェクトを識別するためのAIの機械学習、暗号化、ロボット工学、数学、セルラーオートマン、トポロジー、離散数学、ディジタル信号処理などを含んでよいが、これらに限定されない。
【0143】
実施形態の完全な理解を提供するために、特定の詳細を説明した。しかしながら、実施形態はこれらの特定の詳細なしで実施され得ることが当業者によって理解されるであろう。他の例では、実施形態を曖昧にすることを回避するために、周知の回路、プロセス、アルゴリズム、構造、および技法を不必要な詳細なしに示すことができる。
【0144】
本開示の例示的な実施形態が本明細書で詳細に説明されているが、この発明概念は、他の方法で様々に具体化および使用することができ、添付の特許請求の範囲は、先行技術を除いてこれら変形例を含むように構築されている。
【0145】
説明の目的で、本実施形態の完全な理解を提供するために、多くの詳細が示されている。しかしながら、本明細書の技術は、本明細書に記載されている特定の詳細を超えて、様々な方法で実施できることを理解されたい。
【0146】
さらに、本明細書に示される例示的な実施形態について、併置されたシステムの様々な構成要素を示すことができるが、システムの様々な構成要素は、たとえば、通信ネットワークおよび/またはインターネット、または専用の安全な、安全でない、および/または暗号化されたシステムなどの分散ネットワークの離れた点に位置してもよい。したがって、システムのコンポーネントは、1つまたは複数の装置に組み合わせることができるか、または通信ネットワークなどの分散ネットワークの特定のノード/要素に併置することができることを理解されたい。説明から理解できるように、計算効率の理由から、システムのコンポーネントは、システムの動作に影響を与えることなく、分散ネットワーク内の任意の場所に配置することができる。
【0147】
さらに、通信チャネル(1または複数)を含む、要素(表示されない場合がある)を接続する様々なリンクは、接続された要素との間でデータおよび/または信号を供給および/または通信することができる/可能であるような、有線または無線リンク、あるいはそれらの任意の組み合わせ、または他の既知のまたは後に開発された要素であってもよい。この明細書にて使用されるモジュールという用語は、その要素に関連する機能を実行することができる、既知または後に開発されたハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせを指すことができる。この明細書で使用される決定、計算、計算、およびそれらの変形の用語は、交換可能に使用され、任意のタイプの方法論、プロセス、数学的操作または技術を含むものである。
【0148】
上記のフローチャート/処理フローは、イベントの特定の例示的なシーケンスに関連して説明してきたが、このシーケンスへの変更は、実施形態の処理に実質的に影響を与えることなく起こり得ることを理解されたい。さらに、例示的な実施形態に示されるように、イベントの正確なシーケンスが発生する必要はなく、むしろ、ステップは、システム内の1つまたは他の装置によって実行されてもよい。さらに、この明細書に示される例示的な技術は、具体的に示される実施形態に限定されず、他の例示的な実施形態とともに利用することもでき、記載される各特徴は、個別におよび別個に請求可能である。
【0149】
当業者によって理解されるように、本開示の態様は、システム、方法、および/またはコンピュータプログラム製品として具体化することおができる。したがって、本開示の態様は、完全にハードウェア、完全にソフトウェア(ファームウェア、プログラムコード、常駐ソフトウェア、マイクロコードを含むがこれらに限定されない)、またはハードウェアとソフトウェアの組み合わせで具体化することができる。そのようなすべての実施形態は、一般に、この明細書では、回路、モジュール、またはシステムと呼ばれることがある。さらに、この発明の態様は、コンピュータ可読プログラムコードが具体化された1つまたは複数のコンピュータ可読媒体に具体化されたコンピュータプログラム製品の形態であってもよい。
【0150】
本明細書に記載のコンピュータ可読媒体は、コンピュータ可読記憶媒体とすることができる。その例には、電子、磁気、光学、電磁気、赤外線、または半導体システム、装置、またはデバイス、または任意の適切な組み合わせが含まれるが、これらに限定されない。この明細書で使用される場合、コンピュータ可読記憶媒体は、非一時的、恒久的な媒体であって、命令実行システム、装置、デバイス、コンピュータ、コンピューティングシステム、コンピュータシステム、または命令、コマンド、またはデータを入力、処理、および出力するプログラム可能なマシンまたはデバイスを含んでいたり、記録したりするものとできる。コンピュータ可読記憶媒体の特定の例の非網羅的なリストとして、1つまたは複数のワイヤを有する電気接続、ポータブルコンピュータディスケット、フロッピーディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、USBフラッシュドライブ、不揮発性RAM(NVRAMまたはNOVRAM)、消去可能なプログラム可能な読み取り専用メモリ(EPROMまたはフラッシュメモリ)、フラッシュメモリカード、電気的に消去可能なプログラム可能な読み取り専用メモリ(EEPROM) 、光ファイバ、読み取り専用のポータブルコンパクトディスク(CD-ROM)、DVD-ROM、光ストレージデバイス、磁気ストレージデバイスまたはそれらの任意の適切な組み合わせを挙げることができる。コンピュータ可読記憶媒体は、コンピュータ可読プログラムコードが組み込まれた伝搬データ信号などのコンピュータ可読信号媒体ではない任意のコンピュータ可読媒体であってもよい。
【0151】
プログラムコードは、例えば、ソースコード、オブジェクトコード、解釈コード、実行可能コード、またはそれらの組み合わせとして、コンピュータ可読記憶媒体上またはコンピュータ可読記憶媒体に格納されたコンピュータ可読命令として具体化することができる。コンピュータで実行可能な命令を生成するために、標準または独自のプログラミング言語または解釈言語を使用できる。このような言語の例には、C、C ++、C#、Pascal、JAVA、JAVA Script、BASIC、Smalltalk、Visual BasicおよびVisualC++が含まれる。
【0152】
コンピュータ可読媒体上に具現化されたプログラムコードの送信は、無線、有線、光ファイバケーブル、無線周波数(RF)、またはそれらの任意の適切な組み合わせを含むがこれらに限定されない任意の適切な媒体を使用して行うことができる。
【0153】
プログラムコードは、全体をユーザー/オペレーター/管理者のコンピューター上で実行することができ、一部をスタンドアロンソフトウェアパッケージとしてユーザー/オペレーター/管理者のコンピューター上で実行して、一部をリモートコンピュータ上で実行することができ、あるいは、全体をリモートコンピュータもしくはサーバにて実行することができる。このようなリモートコンピュータは、ローカルエリアネットワーク(LAN)やワイドエリアネットワーク(WAN)など、あらゆる種類のネットワークを介してユーザー/オペレータ/管理者のコンピュータに接続でき、あるいは外部コンピュータに接続することもできる(たとえば、インターネットサービスプロバイダーを使用したインターネット経由にて)。
【0154】
さらに、本明細書に記載のシステム、方法およびプロトコルは、1つまたは複数の専用コンピュータ、プログラムされたマイクロプロセッサまたはマイクロコントローラおよび周辺集積回路要素、ASICまたは他の集積回路、デジタル信号プロセッサ、ディスクリート要素回路などの有線電子回路または論理回路、PLD、PLA、FPGA、PALなどのプログラマブル論理デバイス、スマートフォン、任意の同等の手段などを改良して実装することができる。一般に、本明細書に示される方法論を実施することができる状態機械を実施することができる任意の装置は、この明細書に提供される開示による様々な通信方法、プロトコル、および技術から利益を得ることができる。
【0155】
本明細書で説明するプロセッサの例には、4G LTE統合および64ビットコンピューティングを備えたQualcomm(商標)Snapdragon(商標)800および801、Qualcomm(商標)Snapdragon(商標)610および615、Apple(商標)A7、A8、 64ビットアーキテクチャのA8X、A9、A9X、またはA10プロセッサ、Apple(商標)M7、M8、M9、またはM10モーションコプロセッサ、Samsung(商標)Exynos(商標)シリーズ、Intel(商標)Core(商標)プロセッサファミリ、Intel(商標)Xeon(商標)ファミリプロセッサー、Intel(商標)Atom(商標)プロセッサーファミリー、IntelItanium(商標)プロセッサーファミリー、Intel(商標)Core(商標)i5-4670Kおよびi7-4770K 22nm Haswell、Intel(商標)Core(商標)i5-3570K22nm Ivy Bridge、AMD(商標)FX(商標)ファミリープロセッサ、AMD(商標)FX-4300、FX-6300、およびFX-8350 32nm Vishera、AMD(商標)Kaveriプロセッサ、TexasInstruments(商標)JacintoC6000(商標)車載インフォテインメントプロセッサ、TexasInstruments(商標)OMAP(商標)車載グレードモバイルプロセッサ、ARM(商標)Cortex(商標) -Mプロセッサ、ARM(商標)Cortex-AおよびARM926EJ-S(商標)プロセッサ、Broadcom(商標)AirForce BCM4704 / BCM4703ワイヤレスネットワーキングプロセッサ、AR7100ワイヤレスネットwork Processing Unit、その他の業界同等のプロセッサなどがあり、既知または将来開発される標準、命令セット、ライブラリ、および/またはアーキテクチャを使用して計算機能を実行できる。
【0156】
さらに、開示された方法は、さまざまなコンピュータ、ワークステーション、またはモバイルデバイスプラットフォーム、例えば、スマートフォンまたは携帯電話または車両で使用できるポータブルソースコードを提供するオブジェクトまたはオブジェクト指向ソフトウェア開発環境を使用するソフトウェアで容易に実装することができる。あるいは、開示されたシステムは、標準的な論理回路またはVLIS設計を使用して、ハードウェアとして部分的に実装することができる。ソフトウェアまたはハードウェアが本発明によるシステムを実装するために使用されるかどうかは、システムの速度および/または効率要件、特定の機能、および利用される特定のソフトウェアまたはハードウェアシステムまたはマイクロプロセッサまたはマイクロコンピュータシステムに依存する。しかしながら、本明細書に示される方法は、この明細書にて示された機能的説明およびコンピュータと画像処理技術の知識から、適用可能な技術の通常の技術者による任意の既知のまたは後に開発されたシステムまたは構造、デバイスおよび/またはソフトウェアを使用して、一般的な基本を用いてハードウェアおよび/またはソフトウェアに容易に実装することができる。。
【0157】
さらに、開示された方法は、プログラムされた汎用コンピュータ、専用コンピュータ、モバイルデバイス、スマートフォン、マイクロプロセッサなどで実行されるソフトウェアにて容易に実施することができる。これらの例では、本発明のシステムおよび方法は、JAVA(商標)またはCGIスクリプトなどのパーソナルコンピュータに埋め込まれたプログラムとして、サーバまたはグラフィックスワークステーションに常駐するリソースとして、プラグインなど専用の画像処理システムに埋め込まれたルーチンとして実装することができる。システムはまた、システムおよび方法を、画像プロセッサのハードウェアおよびソフトウェアシステムなどのソフトウェアおよび/またはハードウェアシステムに物理的に組み込むことによって実施することができる。
【0158】
この技術は多くの実施形態と併せて説明されてきたが、多くの代替、修正、および変形が、適用可能な技術の通常の技術者にとって自明である。したがって、本開示の精神および範囲内にあるそのようなすべての代替、修正、同等物、および変形を包含することが意図されている。
【0159】
本発明の概念は、任意の1つまたは複数の他の実施形態、本明細書に開示される任意の1つまたは複数の特徴、本明細書に実質的に開示される任意の1つまたは複数の特徴、本明細書で実質的に開示される任意の1つまたは複数の他の特徴と組み合わせて本明細書で実質的に開示される、任意の1つまたは複数の他の態様/特徴/実施形態と組み合わせた態様/特徴/実施形態のいずれか1つ、実施形態のいずれか1つまたは複数の使用または本明細書に開示されるような特徴。本明細書に記載の任意の特徴は、その特徴が同じ記載の実施形態に由来するかどうかに関係なく、本明細書に記載される他の任意の特徴と組み合わせて請求することができることを理解されたい。
【0160】
例示的な実施形態は、以下に従って構成することができる。
【0161】
(1)以下を備えた装置であって、
少なくとも1つのプロセッサと、
少なくとも1つのプロセッサによって実行されることで、当該少なくとも一つのプロセッサに以下を実行させる命令を含むメモリと、
を備えた装置。
【0162】
第1の状態または第1の状態の反対の第2の状態のいずれかを有するピクセルを含む入力画像をスキャンし、
第1の状態を持つ入力画像の第1のピクセルに遭遇すると、第1のクラスターと第1のクラスターに属する第1のポリゴンを開始し、
第1のポリゴンを形成するため、第1の一連の処理を実行し、
少なくとも最初のクラスターに基づいて、入力画像の1つまたは複数の特性の表示を生成し、
前記表示を出力する。
【0163】
(2)(1)の装置において、前記少なくとも1つのプロセッサは、前記第1のポリゴンを形成するため、前記第1の一連の処理を繰り返し実行することを特徴とする装置。
【0164】
(3)(1)または(2)の一以上の装置において、前記命令は、前記少なくとも一つのプロセッサに以下を実行させることを特徴とする装置。
【0165】
前記第1のポリゴンの形成に使用される少なくとも1つのキーに、未使用のエッジが含まれていないか、未使用のソリッド点が含まれていないかを確認し、
前記入力画像のスキャンを続行し、
第1の状態にある入力画像の2番目のピクセルに遭遇すると、2番目のクラスターと2番目のクラスターに属する2番目のポリゴンを開始する。
【0166】
(4)(1)~(3)の一以上の装置において、前記命令は、前記少なくとも一つのプロセッサに以下を実行させることを特徴とする装置。
【0167】
前記第1の一連の操作を繰り返し実行して、入力画像の第2のクラスターを完全に定義または部分的に定義する第2ののポリゴンを形成し、
前記第1ののクラスターと第2のクラスターに基づいて表示を生成する。
【0168】
(5)(1)~(4)の一以上の装置において、前記命令は、前記少なくとも一つのプロセッサに以下を実行させることを特徴とする装置。
【0169】
前記第1のポリゴンの形成に使用される少なくとも1つのキーに、未使用のエッジが含まれていないか、未使用のソリッド点が含まれていないかを確認し、
未使用のエッジまたは未使用のソリッド点に基づいて、第2のクラスターと第1のクラスターに属する第2のポリゴンを開始し、
第2のポリゴンを形成するため、前記第1の一連の処理を繰り返し実行し、第1のポリゴンと第2のポリゴンを組み合わせて、第1のクラスターを完全に定義する。
【0170】
(6)(1)~(5)の一以上の装置において、前記命令は、前記少なくとも一つのプロセッサに以下を実行させることを特徴とする装置。
【0171】
ソース画像の各ピクセルのピクセル値に基づいて、ソース画像の各ピクセルを第1の状態または第2の状態に変換することによって、ソース画像から入力画像を生成する。
【0172】
(7)(1)~(6)の一以上の装置において、前記第1の状態は、黒色着色または白色着色のうちの一方に対応し、第2の状態は、黒色着色または白色着色のうちの他方に対応することを特徴とする装置。
【0173】
(8)(1)~(7)の一以上の装置において、前記第1の一連の処理は以下を含むことを特徴とする装置。
【0174】
ピクセルのムーア近傍が、第1の状態を有する少なくとも1つの他のピクセルを含むことを決定し、
第1のピクセルと少なくとも1つの他のピクセルによって形成される形状に基づいて、複数のキーからキーを検索し、
キーと複数のキーの1つまたは複数の他のキーを使用して、最初のポリゴンを形成する。
【0175】
(9)(1)~(8)の一以上の装置において、前記命令は、前記少なくとも一つのプロセッサに、第1のピクセルのムーア近傍のピクセルの数に基づく複数のキーを生成させることを特徴とする装置。
【0176】
(10)(1)~(9)の一以上の装置において、前記複数のキーの数が少なくとも256であることを特徴とする装置。
【0177】
(11)以下を含む方法:
第1の状態または第1の状態の反対の第2の状態のいずれかを有するピクセルを含む入力画像をスキャンし、
第1の状態を有する入力画像の第1のピクセルに遭遇したときに、第1のクラスターおよび第1のクラスターに属する第1のポリゴンを開始し、
第1のポリゴンを形成するため、第1の一連の処理を実行し、
少なくとも第1のクラスターに基づいて、入力画像の1つまたは複数の特性の表示を生成し、
表示を出力する。
【0178】
(12)(11)の方法において、前記第1の一連の処理の実行は、前記第1の一連の処理を繰り返し実行して、前記第1のポリゴンを形成することを特徴とする方法。
【0179】
(13)(11)または(12)の一以上の方法において、さらに以下を含む方法。
【0180】
第1のポリゴンを形成するために使用される少なくとも1つのキーに、未使用のエッジが含まれていないか、未使用のソリッド点が含まれていなかを確認し、
入力画像のスキャンを続行し、
第1の状態にある入力画像の第2のピクセルに遭遇したときに、第2のクラスターおよび第2のクラスターに属する第2のポリゴンを開始する。
【0181】
第1の一連の処理を繰り返し実行し、第2のクラスターを完全に定義または部分的に定義する第2のポリゴンを形成し、
第1のクラスターと第2のクラスターに基づいて表示を生成する。
【0182】
(14)(11)~(13)の一以上の方法において、さらに以下を含む方法。
【0183】
第1のポリゴンを形成するために使用される少なくとも1つのキーに、未使用のエッジが含まれているか、未使用のソリッド点が含まれているかを判断し、
未使用のエッジまたは未使用のソリッド点に基づいて、第1のクラスターに属する第2のポリゴンを開始し、
第1の一連の処理を繰り返し実行し、第2のポリゴンを形成する。
【0184】
(15)(11)~(14)の一以上の方法において、前記第1の多角形および前記第2の多角形が組み合わされて、前記第1のクラスタを完全に定義することを特徴とする方法。
【0185】
(16)(11)~(15)の一以上の方法において、さらに以下を含む方法。
【0186】
ソース画像の各ピクセルのピクセル値に基づいて、ソース画像の各ピクセルを第1の状態または第2の状態に変換することによって、ソース画像から入力画像を生成する。
【0187】
(17)(11)~(16)の一以上の方法において、前記第1の状態が、黒色着色または白色着色のうちの一方に対応し、第2の状態が、黒色着色または白色着色の他方に対応することを特徴とする方法。
【0188】
(18)(11)~(17)の一以上の方法において、前記第1の一連の処理は以下を含むことを特徴とする方法。
【0189】
ピクセルのムーア近傍が、第1の状態を有する少なくとも1つの他のピクセルを含むことを決定し、
第1のピクセルと少なくとも1つの他のピクセルによって形成される形状に基づいて、複数のキーからキーを検索し、
キーと複数のキーの1つまたは複数の他のキーを使用して、第1のピクセルと少なくとも1つの他のピクセルを含む第1のポリゴンを形成する。
【0190】
(19)(11)~(18)の一以上の方法において、さらに以下を含む方法。
【0191】
最初のピクセルのムーア近傍のピクセルの数に基づく数の複数のキーを生成する。
【0192】
(20)以下を備えたシステム。
【0193】
ディスプレイと、
少なくとも1つのプロセッサと、
少なくとも1つのプロセッサによって実行されることで、当該少なくとも一つのプロセッサに以下を実行させる命令を含むメモリと、
第1の状態または第1の状態の反対の第2の状態のいずれかを有するピクセルを含む入力画像をスキャンし、
第1の状態を持つ入力画像の第1のピクセルに遭遇すると、第1のクラスターと第1のクラスターに属する第1のポリゴンを開始し、
第1の一連の処理を実行して、第1のポリゴンを形成し、
少なくとも第1のクラスターに基づいて、入力画像の1つまたは複数の特性の表示を生成し、
表示をディスプレイに出力する。