JP2017091473A - 立体物造形用データ出力規制装置 - Google Patents
立体物造形用データ出力規制装置 Download PDFInfo
- Publication number
- JP2017091473A JP2017091473A JP2015225097A JP2015225097A JP2017091473A JP 2017091473 A JP2017091473 A JP 2017091473A JP 2015225097 A JP2015225097 A JP 2015225097A JP 2015225097 A JP2015225097 A JP 2015225097A JP 2017091473 A JP2017091473 A JP 2017091473A
- Authority
- JP
- Japan
- Prior art keywords
- inscribed circle
- distribution
- polygon
- radius
- frequency distribution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Image Generation (AREA)
Abstract
【課題】 ポリゴンモデルを基に立体物の出力を行う際に、2次元の画像を基準として、出力を規制すべきか否かの判定を的確に行うことが可能な立体物造形用データ出力規制装置を提供する。【解決手段】 規制画像から抽出された対象物の3つのエッジ点により形成されるエッジ点間三角形の外接円と内接円の半径を算出し、最大外接円半径で正規化した内接円半径の度数分布である内接円分布を算出する画像度数分布算出手段92と、対象モデル内の3つのポリゴン上の点で形成されるポリゴン間三角形の外接円と内接円の半径を算出し、最大外接円半径で正規化した内接円半径の度数分布である内接円分布を算出するモデル度数分布算出手段10と、画像度数分布算出手段92により算出された規制画像の内接円分布と、モデル度数分布算出手段10により算出された対象モデルの内接円分布を照合し、出力規制すべきか否かを判定する度数分布照合手段20を有する。【選択図】 図17
Description
本発明は、立体物を表すデータを基に、樹脂等を加工して立体物を造形する3Dプリンタ等の立体物造形装置の利用に際して、立体物造形装置からの出力に不適切なものを判別するための技術に関する。
近年、立体物を表すデータをもとに、樹脂や石膏等を加工して造形する3Dプリンタが立体物造形装置として普及してきている。3Dプリンタは、立体物の3次元形状をポリゴンの集合で表現したポリゴンモデルを用いて立体物の出力を行う。3Dプリンタの医療応用として、医療診断で撮影されるCT/MRI画像(DICOM形式3次元ボクセルデータ)を基に、3Dプリンタ出力用モデリングデータ(ポリゴンモデル)を作成し、手術シミュレーション・医学教育・インフォームドコンセント向けの臓器模型を出力したり、体内埋め込み用の人工臓器(血管、骨、関節など)を作成したりする試みが始まっている。
3Dプリンタには、インターネットを介して情報だけでなく、モノを遠隔地に間接的に伝搬できる革新性を備えている。そのため、これまで税関で規制されていた銃砲・刀剣などの危険物がデータ形態で国境を越えて流布され、3Dプリンタによりモノとして容易に入手可能になるという問題が発生している。
具体的には、あるWEBサイトにて3Dプリンタを用いて所定のモデルの拳銃を製造できるSTL(Standard Triangulated Language)が無償で公開されている。金属製に比べて射程距離などは多少劣るが、3Dプリンタで作成された弾丸でも殺傷能力はそれなりにある。更に、現状の3Dプリンタで造形可能な材料は樹脂・石膏に限定され、金属が使用できないという欠点が裏目に出て、空港の金属探知機で見逃されるという問題も指摘されている。今後、民生用の3Dプリンタが普及するにあたり、3Dプリンタ側に投入される出力データの形状認証と危険物の出力規制などのセキュリティ機能をもたせることが求められる。また、危険物だけでなく、3Dプリンタでは、キャラクターを3次元化したもの等を出力することができるため、著作権侵害となる可能性のあるモノが出力されてしまうという問題もある。
これに対して、ウィルス対策ツールと類似した手法で出力可否判定を行うシステムを構築する手法が考えられ、その実現にあたり、ポリゴン同士を照合する技術が用いられている(特許文献1参照)。しかし、3Dプリンタでの出力を規制すべき対象としては、3次元のポリゴンモデルを複製したものだけでなく、イラストや写真等の2次元で表現されたものを3次元化したものも含める必要がある。これに対応するため、2次元の画像を基に3次元のポリゴンモデルと照合を行う技術も開発されている(特許文献2〜4参照)。
しかしながら、上記従来の技術は、いずれも3次元のポリゴンモデルを2次元に投影して画像を生成し、この画像から得られる特徴ベクトルを照合に用いるものであるため、投影条件により特徴ベクトルが一意に定まらない。このため、2次元の画像を基にして、3次元のポリゴンモデルの出力適正を判定するのは、難しいという問題がある。
そこで、本発明は、ポリゴンモデルを基に立体物の出力を行う際に、2次元の画像を基準として、出力を規制すべきか否かの判定を的確に行うことが可能な立体物造形用データ出力規制装置を提供することを課題とする。
上記課題を解決するため、本発明第1の態様では、
ポリゴンの集合として表現されたポリゴンモデルを立体物造形装置に立体物造形用データとして出力する際に、規制すべきか否かを判定する装置であって、
出力を規制すべき画像である規制画像の特徴を表現した内接円分布が登録されたデータベースと、
出力対象のポリゴンモデルである対象モデルに対して、当該対象モデル内から選択された3つのポリゴン上の所定の点により形成される三角形であるポリゴン間三角形の外接円の半径と内接円の半径を算出し、外接円の半径の最大値を用いて正規化した内接円の半径の度数分布である内接円分布を算出するモデル度数分布算出手段と、
前記モデル度数分布算出手段により算出された対象モデルの内接円分布を、前記データベースに登録されている規制画像の内接円分布と照合し、出力を規制すべきか否かを判定する度数分布照合手段と、を備え、
前記データベースに登録された前記内接円分布は、
前記規制画像に対して、対象物のエッジを構成する画素をエッジ点として抽出し、抽出されたエッジ点のうち選択された3つのエッジ点により形成される三角形であるエッジ点間三角形の外接円の半径と内接円の半径を算出し、外接円の半径の最大値を用いて正規化した内接円の半径の度数分布である内接円分布を算出する画像度数分布算出手段を備えた画像度数分布算出装置により得られたものであることを特徴とする立体物造形用データ出力規制装置を提供する。
ポリゴンの集合として表現されたポリゴンモデルを立体物造形装置に立体物造形用データとして出力する際に、規制すべきか否かを判定する装置であって、
出力を規制すべき画像である規制画像の特徴を表現した内接円分布が登録されたデータベースと、
出力対象のポリゴンモデルである対象モデルに対して、当該対象モデル内から選択された3つのポリゴン上の所定の点により形成される三角形であるポリゴン間三角形の外接円の半径と内接円の半径を算出し、外接円の半径の最大値を用いて正規化した内接円の半径の度数分布である内接円分布を算出するモデル度数分布算出手段と、
前記モデル度数分布算出手段により算出された対象モデルの内接円分布を、前記データベースに登録されている規制画像の内接円分布と照合し、出力を規制すべきか否かを判定する度数分布照合手段と、を備え、
前記データベースに登録された前記内接円分布は、
前記規制画像に対して、対象物のエッジを構成する画素をエッジ点として抽出し、抽出されたエッジ点のうち選択された3つのエッジ点により形成される三角形であるエッジ点間三角形の外接円の半径と内接円の半径を算出し、外接円の半径の最大値を用いて正規化した内接円の半径の度数分布である内接円分布を算出する画像度数分布算出手段を備えた画像度数分布算出装置により得られたものであることを特徴とする立体物造形用データ出力規制装置を提供する。
ここで、対象物(オブジェクト)とは、ポリゴンモデルに造形される規制画像中の対象領域であり、それ以外の領域は背景である。したがって、対象物とは、画像が写真であれば、被写体に相当する部分であり、人工的に作成された画像であれば、イラストやキャラクター等に相当する部分である。画像において対象物であるか背景であるかは、主観的なものとなるが、規制画像として登録される画像は、複製を防止したい部分が対象物として明確であることが多いため、対象物と背景の区分は比較的明確である。
本発明第1の態様によれば、規制画像内の3つのエッジ点で形成される三角形の内接円の半径の度数分布である内接円分布が登録されたデータベースを備え、対象モデルに対して、対象モデル内から選択された3つのポリゴン上の所定の点により形成される三角形であるポリゴン間三角形の外接円の半径と内接円の半径を算出し、外接円の半径の最大値を用いて正規化した内接円の半径の度数分布である内接円分布を算出し、算出された対象モデルの内接円分布を、データベースに登録されている規制画像の内接円分布と照合し、出力を規制すべきか否かを判定するようにし、データベースに登録された規制画像の内接円分布は、規制画像に対して、対象物のエッジを構成する画素をエッジ点として抽出し、エッジ点のうち選択された3つのエッジ点により形成される三角形であるエッジ点間三角形の外接円の半径と内接円の半径を算出し、外接円の半径の最大値を用いて正規化した内接円の半径の度数分布である内接円分布を算出する装置により得られたものであるので、ポリゴンモデルを基に立体物の出力を行う際に、次元の異なる2次元の規制画像と照合を行うことにより出力を規制すべきか否かの判定を的確に行うことが可能となる。
特に、ポリゴンモデル(対象モデル)および規制画像の内接円分布を、外接円の半径の最大値を用いて正規化した内接円の半径の度数分布としているため、出力を規制すべきか否かの判定をポリゴンモデルおよび規制画像の対象物の形状に鋭敏に反映する内接円分布を用いて高精度に行うことが可能となる。ここで、内接円分布がポリゴンモデルおよび規制画像の対象物の形状に鋭敏に反映するとは、以下のような意味である。3D形状の基本である球体および2D形状の基本である円形では、内接円の半径が半径0から当該球体および円形の半径(外接円半径の最大値)の所定の割合(好ましくは35%〜50%、例えば1/2(50%))の範囲で広範な分布になる。そこで、内接円分布を外接円の半径の最大値を用いて正規化することにより、形状が球体および円形からずれるに伴い、分布が半径0方向に局所的に偏り、形状差異に明確に反応する複雑な分布になる。また、「外接円の半径の最大値を用いて正規化した内接円の半径」とは、外接円の半径の最大値そのものではなく、外接円の半径の最大値の所定の割合で正規化することを意味する。
また、本発明第2の態様では、
ポリゴンの集合として表現されたポリゴンモデルを立体物造形装置に立体物造形用データとして出力する際に、規制すべきか否かを判定する装置であって、
出力を規制すべき画像である規制画像に対して、対象物(オブジェクト)のエッジ(端)を構成する画素をエッジ点として抽出し、抽出されたエッジ点のうち選択された3つのエッジ点により形成される三角形であるエッジ点間三角形の外接円の半径と内接円の半径を算出し、外接円の半径の最大値を用いて正規化した内接円の半径の度数分布である内接円分布を算出する画像度数分布算出手段と、
出力対象のポリゴンモデルである対象モデルに対して、当該対象モデル内から選択された3つのポリゴン上の所定の点により形成される三角形であるポリゴン間三角形の外接円の半径と内接円の半径を算出し、外接円の半径の最大値を用いて正規化した内接円の半径の度数分布である内接円分布を算出するモデル度数分布算出手段と、
前記画像度数分布算出手段により算出された規制画像の内接円分布と、前記モデル度数分布算出手段により算出された対象モデルの内接円分布と、を照合し、出力を規制すべきか否かを判定する度数分布照合手段と、を有することを特徴とする立体物造形用データ出力規制装置を提供する。
ポリゴンの集合として表現されたポリゴンモデルを立体物造形装置に立体物造形用データとして出力する際に、規制すべきか否かを判定する装置であって、
出力を規制すべき画像である規制画像に対して、対象物(オブジェクト)のエッジ(端)を構成する画素をエッジ点として抽出し、抽出されたエッジ点のうち選択された3つのエッジ点により形成される三角形であるエッジ点間三角形の外接円の半径と内接円の半径を算出し、外接円の半径の最大値を用いて正規化した内接円の半径の度数分布である内接円分布を算出する画像度数分布算出手段と、
出力対象のポリゴンモデルである対象モデルに対して、当該対象モデル内から選択された3つのポリゴン上の所定の点により形成される三角形であるポリゴン間三角形の外接円の半径と内接円の半径を算出し、外接円の半径の最大値を用いて正規化した内接円の半径の度数分布である内接円分布を算出するモデル度数分布算出手段と、
前記画像度数分布算出手段により算出された規制画像の内接円分布と、前記モデル度数分布算出手段により算出された対象モデルの内接円分布と、を照合し、出力を規制すべきか否かを判定する度数分布照合手段と、を有することを特徴とする立体物造形用データ出力規制装置を提供する。
本発明第2の態様によれば、規制画像に対して、対象物のエッジを構成する画素をエッジ点として抽出し、抽出されたエッジ点のうち選択された3つのエッジ点により形成される三角形であるエッジ点間三角形の外接円の半径と内接円の半径を算出し、外接円の半径の最大値を用いて正規化した内接円の半径の度数分布である内接円分布を算出し、対象モデル内から選択された3つのポリゴン上の所定の点により形成される三角形であるポリゴン間三角形の外接円の半径と内接円の半径を算出し、外接円の半径の最大値を用いて正規化した内接円の半径の度数分布である内接円分布を算出し、算出された規制画像の内接円分布と、算出された対象モデルの内接円分布と、を照合し、出力を規制すべきか否かを判定するようにしたので、ポリゴンモデルを基に立体物の出力を行う際に、次元の異なる2次元の規制画像と照合を行うことにより、出力を規制すべきか否かの判定を的確に行うことが可能となる。特に、3次元の対象モデルが、2次元の画像中の対象物に基づいて作成されたポリゴンモデルであった場合、対象モデルの出力を規制することができる。特に、ポリゴンモデル(対象モデル)および規制画像の内接円分布を、外接円の半径の最大値を用いて正規化した内接円の半径の度数分布としているため、出力を規制すべきか否かの判定をポリゴンモデルおよび規制画像の対象物の形状に鋭敏に反映する内接円分布を用いて高精度に行うことが可能となる。
また、本発明第3の態様では、前記画像度数分布算出手段は、前記内接円分布を算出するにあたり、所定数の要素で構成される1次元の配列を準備し、前記算出された内接円の半径の最大値の35%〜50%で正規化された範囲を前記所定数に均等に分割した上で、前記各内接円の半径を当該内接円の半径の値に基づいて前記所定数のいずれかの要素に割り当て、当該要素に該当する数を計数することにより、前記内接円分布を算出することを特徴とする。
本発明第3の態様によれば、エッジ点間三角形の内接円分布を算出するにあたり、所定数の要素で構成される1次元配列を準備し、外接円に基づく値の最大値の35%〜50%で正規化された範囲を所定数に均等分割した上で、各内接円の半径を当該内接円の半径の値に基づいて所定数のいずれかの要素に割り当て、その要素に該当する数を計数することにより、内接円分布を算出するようにしたので、外接円半径と内接円半径との間のスケール比が維持された分布ができ、分布の広がりが狭くシャープになり、形状識別性が高くなる。
また、本発明第4の態様では、前記モデル度数分布算出手段は、前記内接円分布を算出するにあたり、所定数の要素で構成される1次元の配列を準備し、前記算出された内接円の半径の最大値の35%〜50%で正規化された範囲を前記所定数に均等に分割した上で、前記各内接円の半径を当該内接円の半径の値に基づいて前記所定数のいずれかの要素に割り当て、当該要素に該当する数を計数することにより、前記内接円分布を算出することを特徴とする。
本発明第4の態様によれば、内接円分布を算出するにあたり、所定数の要素で構成される1次元配列を準備し、算出された外接円の半径の最大値の35%〜50%で正規化された範囲を所定数に均等分割した上で、各内接円の半径をその内接円の半径の値に基づいて所定数のいずれかの要素に割り当て、その要素に該当する数を計数することにより、内接円分布を算出するようにしたので、外接円半径と内接円半径との間のスケール比が維持された分布ができ、分布の広がりが狭くシャープになり、形状識別性が高くなる。
また、本発明第5の態様では、前記画像度数分布算出手段は、前記規制画像に対して、当該規制画像内のエッジ点を第1エッジ点グループ、第2エッジ点グループ、第3エッジ点グループの3つのグループに分類し、各グループから1つずつエッジ点を選択することにより、前記3つのエッジ点を選択することを特徴とする。
本発明第5の態様によれば、規制画像内のエッジ点を第1エッジ点グループ、第2エッジ点グループ、第3エッジ点グループの3つのグループに分類し、各グループから1つずつエッジ点を選択するようにしたので、エッジ点間三角形を形成するための3つのエッジ点の組み合わせを互いに重複することなく作成することができ、効率的な処理を行うことが可能となる。グループに分類せずにランダムに選択されれば、ある確率で重複が発生する方が自然である。第3の態様では、重複が発生しないように、各グループからエッジ点を1つずつ選択している。
また、本発明第6の態様では、前記画像度数分布算出手段は、前記各グループのエッジ点の数をNe/3個とした際、Ne/3個の連続する整数をランダムに入れ替えた(シャッフル)乱数配列を作成するとともに、前記乱数配列の先頭から末尾への順序を逆にした反転乱数配列を作成し、前記3つのグループのうち、1つのグループに前記乱数配列、他の1つのグループに前記反転乱数配列をそれぞれ適用してグループ内のエッジ点の順序を入れ替えた後、各グループの先頭から順に、前記エッジ点の選択を行うことを特徴とする。
本発明第6の態様によれば、各グループのエッジ点の数Ne/3の連続する整数をランダムに入れ替えた乱数配列を作成するとともに、乱数配列の先頭から末尾への順序を逆にした反転乱数配列を作成し、3つのグループのうち、1つのグループに乱数配列、他の1つのグループに反転乱数配列をそれぞれ適用してグループ内のエッジ点の順序を入れ替えた後、各グループの先頭から順に、エッジ点の選択を行うようにしたので、3つのグループのエッジ点の配列順序を、二次元平面における位置からランダムに設定することができ、ランダムかつ互いに重複しないエッジ点の組み合わせで算出されたエッジ点間三角形の外接円の半径に基づいて、外接円分布を求めることが可能となる。
また、本発明第7の態様では、前記画像度数分布算出手段は、
前記第1エッジ点グループのエッジ点に前記乱数配列、前記第2エッジ点グループのエッジ点に前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第3エッジ点グループのエッジ点の順序を入れ替えずに前記エッジ点の選択を行ってNe/3個の第1エッジ点間三角形を形成し、
前記第2エッジ点グループのエッジ点に前記乱数配列、前記第3エッジ点グループのエッジ点に前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第1エッジ点グループのエッジ点の順序を入れ替えずに前記エッジ点の選択を行ってNe/3個の第2エッジ点間三角形を形成し、
前記第3エッジ点グループのエッジ点に前記乱数配列、前記第1エッジ点グループのエッジ点に前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第2エッジ点グループのエッジ点の順序を入れ替えずに前記エッジ点の選択を行ってNe/3個の第3エッジ点間三角形を形成することを特徴とする。
前記第1エッジ点グループのエッジ点に前記乱数配列、前記第2エッジ点グループのエッジ点に前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第3エッジ点グループのエッジ点の順序を入れ替えずに前記エッジ点の選択を行ってNe/3個の第1エッジ点間三角形を形成し、
前記第2エッジ点グループのエッジ点に前記乱数配列、前記第3エッジ点グループのエッジ点に前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第1エッジ点グループのエッジ点の順序を入れ替えずに前記エッジ点の選択を行ってNe/3個の第2エッジ点間三角形を形成し、
前記第3エッジ点グループのエッジ点に前記乱数配列、前記第1エッジ点グループのエッジ点に前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第2エッジ点グループのエッジ点の順序を入れ替えずに前記エッジ点の選択を行ってNe/3個の第3エッジ点間三角形を形成することを特徴とする。
本発明第7の態様によれば、第1エッジ点グループのエッジ点に乱数配列、第2エッジ点グループのエッジ点に反転乱数配列をそれぞれ適用して順序を入れ替え、第3エッジ点グループのエッジ点の順序を入れ替えずにエッジ点の選択を行ってNe/3個の第1エッジ点間三角形を形成し、第2エッジ点グループのエッジ点に乱数配列、第3エッジ点グループのエッジ点に反転乱数配列をそれぞれ適用して順序を入れ替え、第1エッジ点グループのエッジ点の順序を入れ替えずにエッジ点の選択を行ってNe/3個の第2エッジ点間三角形を形成し、第3エッジ点グループのエッジ点に乱数配列、第1エッジ点グループのエッジ点に反転乱数配列をそれぞれ適用して順序を入れ替え、第2エッジ点グループのエッジ点の順序を入れ替えずにエッジ点の選択を行ってNe/3個の第3エッジ点間三角形を形成するようにしたので、規制画像のエッジ点の数Neと同数のトータルNe個のエッジ点間三角形をランダムかつ互いに重複することなく形成することが可能となる。
また、本発明第8の態様では、前記画像度数分布算出手段は、前記規制画像の各画素の値に対して、事前に定義された複数のフィルタマトリクスを適用し、各画素について前記各フィルタマトリクスで算出されたフィルタ演算値の最大値をエッジ強度とし、当該エッジ強度が所定の値を超える画素を前記エッジ点として抽出することを特徴とする。
本発明第8の態様によれば、規制画像の各画素の値に対して、事前に定義された複数のフィルタマトリクスを適用し、各画素について各フィルタマトリクスで算出されたフィルタ演算値の最大値をエッジ強度とし、当該エッジ強度が所定の値を超える画素を前記エッジ点として抽出するようにしたので、モデル度数分布算出手段により得られる対象モデルの外接円分布と整合性をもたせた外接円分布を規制画像からも算出することができ、2次元の規制画像と3次元の対象モデルという相互に次元の異なるデータどうしの類似性を各々の外接円分布を的確に照合することが可能となる。
また、本発明第9の態様では、前記フィルタマトリクスとして、事前に定義された16方向の3×3画素のフィルタマトリクスを適用し、各方向について事前に設定された値を用いて、前記フィルタ演算値を求める演算を行うことを特徴とする。
本発明第9の態様によれば、フィルタマトリクスとして、事前に定義された16方向の3×3画素のフィルタマトリクスを適用し、各方向について事前に設定された値を用いて、フィルタ演算値を求める演算を行うようにしたので、規制画像において、対象物のエッジを構成する画素であるエッジ点を多くの方向から漏れなく抽出することが可能となる。
また、本発明第10の態様では、前記画像度数分布算出手段は、前記16方向の各方向について事前に設定された強度補正量を用いて、前記求められたエッジ強度を補正することを特徴とする。
本発明第10の態様によれば、フィルタマトリクスに対応した16方向の各方向について事前に設定された強度補正量を用いて、求められたエッジ強度を補正するようにしたので、フィルタマトリクスの特性に応じた方向によるエッジ強度の偏りを適正なものに補正することが可能となる。
また、本発明第11の態様では、前記画像度数分布算出手段は、各画素について算出されたエッジ強度に対して、所定の設定最小値を減算し、減算した値に、エッジ強度の階調数を乗算し、当該階調数と前記設定最小値との差を除算することにより前記エッジ強度を補正し、補正されたエッジ強度が正の値になる画素を前記エッジ点として抽出することを特徴とする。
本発明第11の態様によれば、各画素について算出されたエッジ強度に対して、所定の設定最小値を減算し、減算した値に、エッジ強度の階調数を乗算し、階調数と設定最小値との差を除算することによりエッジ強度を補正し、補正されたエッジ強度が正の値になる画素をエッジ点として抽出するようにしたので、補正後のエッジ強度が正の値であるか否かを判定するだけで済み、効率的なエッジ点の抽出が可能となる。
また、本発明第12の態様では、
前記画像度数分布算出手段は、
前記内接円分布を1回算出するごとに、前記3つのグループのうち2つのグループ内のエッジ点の順序を変化させて、前記内接円分布を改めて算出する処理を所定の回数、繰り返し行い、算出された前記内接円分布の平均値を、照合対象の内接円分布とするものであることを特徴とする。
前記画像度数分布算出手段は、
前記内接円分布を1回算出するごとに、前記3つのグループのうち2つのグループ内のエッジ点の順序を変化させて、前記内接円分布を改めて算出する処理を所定の回数、繰り返し行い、算出された前記内接円分布の平均値を、照合対象の内接円分布とするものであることを特徴とする。
本発明第12の態様によれば、内接円分布を1回算出するごとに、3つのグループのうち2つのグループ内のエッジ点の順序を変化させて、内接円分布を改めて算出する処理を所定の回数繰り返し行い、算出された内接円分布の平均値を、照合対象の内接円分布とするようにしたので、既に算出されたNe個のエッジ点間三角形とは重複しない新規なNe個のエッジ点間三角形を基に内接円分布が算出され、内接円分布が更新されるようになるため、3つのエッジ点の組み合わせであるエッジ点間三角形のサンプルが少な過ぎることにより内接円分布が特異な形態に偏らないように的確な内接円分布を得ることが可能となる。
また、本発明第13の態様では、
前記画像度数分布算出手段は、
前記内接円分布を1回算出するごとに、前記3つのグループのうち2つのグループ内のエッジ点の順序を変化させて、前記内接円分布を改めて算出する処理を繰り返し行い、
算出直後の内接円分布と、その直前に得られた内接円分布を比較し、比較の結果で類似性が認められる場合に、前記算出直後の内接円分布を、照合対象の内接円分布とするものであることを特徴とする。
前記画像度数分布算出手段は、
前記内接円分布を1回算出するごとに、前記3つのグループのうち2つのグループ内のエッジ点の順序を変化させて、前記内接円分布を改めて算出する処理を繰り返し行い、
算出直後の内接円分布と、その直前に得られた内接円分布を比較し、比較の結果で類似性が認められる場合に、前記算出直後の内接円分布を、照合対象の内接円分布とするものであることを特徴とする。
本発明第13の態様によれば、内接円分布を1回算出するごとに、3つのグループのうち2つのグループ内のエッジ点の順序を変化させて、内接円分布を改めて算出する処理を繰り返し行い、算出直後の内接円分布と、直前に得られた内接円分布を比較し、比較の結果で類似性が認められる場合に、算出直後に得られた内接円分布を、照合対象の内接円分布とするようにしたので、3つのエッジ点の組み合わせであるエッジ点間三角形のサンプルが少な過ぎることにより内接円分布が特異な形態に偏りそうか否かを自動的に判断しながら最適な内接円分布を得ることが可能となる。
また、本発明第14の態様では、
前記画像度数分布算出手段は、前記規制画像に対して、前記内接円分布に加えて、前記エッジ点間三角形の外接円の半径の度数分布である外接円分布を算出するものであり、
前記モデル度数分布算出手段は、前記対象モデルに対して、前記内接円分布に加えて、前記ポリゴン間三角形の外接円の半径の度数分布である外接円分布を算出するものであり、
前記度数分布照合手段は、前記内接円分布の照合に加えて、前記算出された前記対象モデルの外接円分布を、前記規制画像の外接円分布と照合し、出力を規制すべきか否かを判定するものであることを特徴とする。
前記画像度数分布算出手段は、前記規制画像に対して、前記内接円分布に加えて、前記エッジ点間三角形の外接円の半径の度数分布である外接円分布を算出するものであり、
前記モデル度数分布算出手段は、前記対象モデルに対して、前記内接円分布に加えて、前記ポリゴン間三角形の外接円の半径の度数分布である外接円分布を算出するものであり、
前記度数分布照合手段は、前記内接円分布の照合に加えて、前記算出された前記対象モデルの外接円分布を、前記規制画像の外接円分布と照合し、出力を規制すべきか否かを判定するものであることを特徴とする。
本発明第14の態様によれば、規制画像に対して、内接円分布に加えて、エッジ点間三角形の外接円の半径を算出し、算出結果である外接円の半径の度数分布である外接円分布を算出し、対象モデルに対して、内接円分布に加えて、ポリゴン間三角形の内接円の半径を算出し、算出結果である外接円の半径の度数分布である外接円分布を算出し、内接円分布の照合に加えて、算出された対象モデルの外接円分布を、規制画像の外接円分布と照合し、出力を規制すべきか否かを判定するようにしたので、複数の観点から対象モデルと規制画像の類似性を判定することになり、出力を規制すべきか否かの判定をより的確に行うことが可能となる。
また、本発明第15の態様では、
前記画像度数分布算出手段は、前記外接円分布を算出するにあたり、所定数の要素で構成される1次元の配列を準備し、前記算出された外接円の半径の最大値の範囲を前記所定数に均等に分割した上で、前記各外接円の半径を当該外接円の半径の値に基づいて前記所定数のいずれかの要素に割り当て、当該要素に該当する数を計数することにより、前記外接円分布を算出することを特徴とする。
前記画像度数分布算出手段は、前記外接円分布を算出するにあたり、所定数の要素で構成される1次元の配列を準備し、前記算出された外接円の半径の最大値の範囲を前記所定数に均等に分割した上で、前記各外接円の半径を当該外接円の半径の値に基づいて前記所定数のいずれかの要素に割り当て、当該要素に該当する数を計数することにより、前記外接円分布を算出することを特徴とする。
本発明第15の態様によれば、外接円分布を算出するにあたり、所定数の要素で構成される1次元配列を準備し、算出された外接円の半径の最大値の範囲を前記所定数に均等に分割した上で、各外接円の半径を当該外接円の半径の値に基づいて所定数のいずれかの要素に割り当て、その要素に該当する数を計数することにより、外接円分布を算出するようにしたので、3つのエッジ点で形成されるエッジ点間三角形の外接円の半径に基づいて容易に外接円分布を算出することが可能となる。
また、本発明第16の態様では、前記度数分布算出手段は、前記要素に該当する数を計数する際、前記選択された3つのエッジ点のエッジ強度の平均値で重み付けするようにしていることを特徴とする。
本発明第16の態様によれば、外接円分布または内接円分布を算出するにあたり、割り当てられた要素に該当する数を計数する際、選択された3つのエッジ点のエッジ強度の平均値で重み付けするようにしたので、規制画像の解像度の差異が、外接円分布または内接円分布にあまり反映せず、規制画像中で表現されている対象物自体が類似するポリゴンモデルに対して、出力を規制すべきであると判定させることが可能となる。
また、本発明第17の態様では、前記画像度数分布算出手段は、前記割り当てられた要素に該当する数を計数する際、i組目に選択された3つのエッジ点のエッジ強度の平均値を算出し、i組目の前記エッジ点間三角形の外接円の半径をDe(i)、前記エッジ点間三角形の外接円の半径の最大値をDemaxとしたとき、De(i)・{Demax2−De(i)2}1/2なる値を、前記i組目の3つのエッジ点のエッジ強度の平均値に乗じた値で重み付けすることを特徴とする。
本発明第17の態様によれば、割り当てられた要素に該当する数を計数する際、i組目に選択された3つのエッジ点のエッジ強度の平均値を算出し、i組目のエッジ点間三角形の外接円の半径をDe(i)、全てのエッジ点間三角形の外接円の半径の最大値をDemaxとしたとき、De(i)・{Demax2−De(i)2}1/2なる値を、i組目の3つのエッジ点のエッジ強度の平均値に乗じた値で重み付けするようにしたので、2次元の平面的な規制画像から3次元の球面的な特徴を有する外接円分布が得られ、3次元の対象モデルと照合を行う際に次元の相違を吸収し、より的確な判定を行うことが可能となる。
また、本発明第18の態様では、前記画像度数分布算出手段は、前記割り当てられた要素に該当する数を計数する際、i組目に選択された3つのエッジ点のエッジ強度の平均値を算出し、i組目の前記エッジ点間三角形の内接円の半径をAe(i)、前記エッジ点間三角形の内接円の半径の最大値をAemaxとしたとき、Ae(i)・{Aemax2−Ae(i)2}1/2なる値を、前記i組目の3つのエッジ点のエッジ強度の平均値に乗じた値で重み付けすることを特徴とする。
本発明第18の態様によれば、割り当てられた要素に該当する数を計数する際、i組目に選択された3つのエッジ点のエッジ強度の平均値を算出し、i組目のエッジ点間三角形の内接円の半径をAe(i)、全てのエッジ点間三角形の内接円の半径の最大値をAemaxとしたとき、Ae(i)・{Aemax2−Ae(i)2}1/2なる値を、i組目の3つのエッジ点のエッジ強度の平均値に乗じた値で重み付けするようにしたので、2次元の平面的な規制画像から3次元の球面的な特徴を有する内接円分布が得られ、3次元の対象モデルと照合を行う際に次元の相違を吸収し、より的確な判定を行うことが可能となる。
また、本発明第19の態様では、前記モデル度数分布算出手段は、前記対象モデルに対して、当該対象モデル内のポリゴンを第1ポリゴングループ、第2ポリゴングループ、第3ポリゴングループの3つのグループに分類し、各グループから1つずつポリゴンを選択することにより、前記3つのポリゴンを選択することを特徴とする。
本発明第19の態様によれば、対象モデル内のポリゴンを第1ポリゴングループ、第2ポリゴングループ、第3ポリゴングループの3つのグループに分類し、各グループから1つずつポリゴンを選択するようにしたので、ポリゴン間三角形を形成するための3つのポリゴンの組み合わせを互いに重複することなく作成することができ、効率的な処理を行うことが可能となる。グループに分類せずにランダムに選択されれば、ある確率で重複が発生する方が自然である。第18の態様では、重複が発生しないように、各グループからポリゴンを1つずつ選択している。
また、本発明第20の態様では、前記モデル度数分布算出手段は、前記各グループのポリゴン数をN/3個とした際、N/3個の連続する整数をランダムに入れ替えた(シャッフル)乱数配列を作成するとともに、前記乱数配列の先頭から末尾への順序を逆にした反転乱数配列を作成し、前記3つのグループのうち、1つのグループに前記乱数配列、他の1つのグループに前記反転乱数配列をそれぞれ適用してグループ内のポリゴンの順序を入れ替えた後、各グループの先頭から順に、前記ポリゴンの選択を行うことを特徴とする。
本発明第20の態様によれば、各グループのポリゴン数N/3の連続する整数をランダムに入れ替えた乱数配列を作成するとともに、乱数配列の先頭から末尾への順序を逆にした反転乱数配列を作成し、3つのグループのうち、1つのグループに乱数配列、他の1つのグループに反転乱数配列をそれぞれ適用してグループ内のポリゴンの順序を入れ替えた後、各グループの先頭から順に、ポリゴンの選択を行うようにしたので、3つのグループのポリゴンの配列順序を、三次元空間における位置からランダムに設定することができ、ランダムかつ互いに重複しないポリゴンの組み合わせで算出されたポリゴン間三角形の内接円の半径に基づいて、内接円分布を求めることが可能となる。
また、本発明第21の態様では、前記モデル度数分布算出手段は、
前記第1ポリゴングループのポリゴンに前記乱数配列、前記第2ポリゴングループのポリゴンに前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第3ポリゴングループのポリゴンの順序を入れ替えずに前記ポリゴンの選択を行ってN/3個のポリゴン間三角形を形成し、
前記第2ポリゴングループのポリゴンに前記乱数配列、前記第3ポリゴングループのポリゴンに前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第1ポリゴングループのポリゴンの順序を入れ替えずに前記ポリゴンの選択を行ってN/3個のポリゴン間三角形を形成し、
前記第3ポリゴングループのポリゴンに前記乱数配列、前記第1ポリゴングループのポリゴンに前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第2ポリゴングループのポリゴンの順序を入れ替えずに前記ポリゴンの選択を行ってN/3個のポリゴン間三角形を形成することを特徴とする。
前記第1ポリゴングループのポリゴンに前記乱数配列、前記第2ポリゴングループのポリゴンに前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第3ポリゴングループのポリゴンの順序を入れ替えずに前記ポリゴンの選択を行ってN/3個のポリゴン間三角形を形成し、
前記第2ポリゴングループのポリゴンに前記乱数配列、前記第3ポリゴングループのポリゴンに前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第1ポリゴングループのポリゴンの順序を入れ替えずに前記ポリゴンの選択を行ってN/3個のポリゴン間三角形を形成し、
前記第3ポリゴングループのポリゴンに前記乱数配列、前記第1ポリゴングループのポリゴンに前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第2ポリゴングループのポリゴンの順序を入れ替えずに前記ポリゴンの選択を行ってN/3個のポリゴン間三角形を形成することを特徴とする。
本発明第21の態様によれば、第1ポリゴングループのポリゴンに乱数配列、第2ポリゴングループのポリゴンに反転乱数配列をそれぞれ適用して順序を入れ替え、第3ポリゴングループのポリゴンの順序を入れ替えずにポリゴンの選択を行ってN/3個のポリゴン間三角形を形成し、第2ポリゴングループのポリゴンに乱数配列、第3ポリゴングループのポリゴンに反転乱数配列をそれぞれ適用して順序を入れ替え、第1ポリゴングループのポリゴンの順序を入れ替えずにポリゴンの選択を行ってN/3個のポリゴン間三角形を形成し、第3ポリゴングループのポリゴンに乱数配列、第1ポリゴングループのポリゴンに反転乱数配列をそれぞれ適用して順序を入れ替え、第2ポリゴングループのポリゴンの順序を入れ替えずにポリゴンの選択を行ってN/3個のポリゴン間三角形を形成するようにしたので、ポリゴンモデルのポリゴン数Nと同数のトータルN個のポリゴン間三角形をランダムかつ互いに重複することなく形成することが可能となる。
また、本発明第22の態様では、
前記モデル度数分布算出手段は、
前記内接円分布を1回算出するごとに、前記3つのグループのうち2つのグループ内のポリゴンの順序を変化させて、前記内接円分布を改めて算出する処理を所定の回数、繰り返し行い、算出された内接円分布の平均値を、照合対象の内接円分布とするものであることを特徴とする。
前記モデル度数分布算出手段は、
前記内接円分布を1回算出するごとに、前記3つのグループのうち2つのグループ内のポリゴンの順序を変化させて、前記内接円分布を改めて算出する処理を所定の回数、繰り返し行い、算出された内接円分布の平均値を、照合対象の内接円分布とするものであることを特徴とする。
本発明第22の態様によれば、内接円分布を1回算出するごとに、3つのグループのうち2つのグループ内のポリゴンの順序を変化させて、内接円分布を改めて算出する処理を所定の回数、繰り返し行い、算出された内接円分布の平均値を、照合対象の内接円分布とするようにしたので、既に算出されたN個のポリゴン間三角形とは重複しない新規なN個のポリゴン間三角形を基に内接円分布が算出され、内接円分布が更新されるようになる。そのため、3つのポリゴン上の点の組み合わせであるポリゴン間三角形が少な過ぎることにより内接円分布が特異な形態に偏らないように的確な内接円分布を得ることが可能となる。
また、本発明第23の態様では、
前記モデル度数分布算出手段は、
前記内接円分布を1回算出するごとに、前記3つのグループのうち2つのグループ内のポリゴンの順序を変化させて、前記内接円分布を改めて算出する処理を繰り返し行い、
算出直後の内接円分布と、その直前に得られた内接円分布を比較し、比較の結果で類似性が認められる場合に、前記算出直後の内接円分布を、照合対象の内接円分布とするものであることを特徴とする。
前記モデル度数分布算出手段は、
前記内接円分布を1回算出するごとに、前記3つのグループのうち2つのグループ内のポリゴンの順序を変化させて、前記内接円分布を改めて算出する処理を繰り返し行い、
算出直後の内接円分布と、その直前に得られた内接円分布を比較し、比較の結果で類似性が認められる場合に、前記算出直後の内接円分布を、照合対象の内接円分布とするものであることを特徴とする。
本発明第23の態様によれば、内接円分布を1回算出するごとに、3つのグループのうち2つのグループ内のポリゴンの順序を変化させて、内接円分布を改めて算出する処理を繰り返し行い、算出直後の内接円分布と、直前に得られた内接円分布を比較し、比較の結果で類似性が認められる場合に、算出直後に得られた内接円分布を、照合対象の内接円分布とするようにしたので、3つのポリゴン上の点の組み合わせであるポリゴン間三角形のサンプルが少な過ぎることにより内接円分布が特異な形態に偏りそうか否かを自動的に判断しながら最適な内接円分布を得ることが可能となる。
また、本発明第24の態様では、前記モデル度数分布算出手段は、前記外接円分布を算出するにあたり、所定数の要素で構成される1次元の配列を準備し、前記算出された外接円の半径の最大値の範囲を前記所定数に均等に分割した上で、前記各外接円の半径を当該外接円の半径の値に基づいて前記所定数のいずれかの要素に割り当て、当該要素に該当する数を計数することにより、前記外接円分布を算出することを特徴とする。
本発明第24の態様によれば、外接円分布を算出するにあたり、所定数の要素で構成される1次元配列を準備し、算出された外接円の半径の最大値の範囲を前記所定数に均等分割した上で、各外接円の半径をその外接円の半径の値に基づいて所定数のいずれかの要素に割り当て、その要素に該当する数を計数することにより、外接円分布を算出するようにしたので、ポリゴン間三角形に基づいて容易に外接円分布を算出することが可能となる。
また、本発明第25の態様では、前記モデル度数分布算出手段は、前記要素に該当する数を計数する際、前記選択された3つのポリゴンの面積の平均値で重み付けするようにしていることを特徴とする。
本発明第25の態様によれば、外接円分布または内接円分布を算出するにあたり、割り当てられた要素に該当する数を計数する際、選択された3つのポリゴンの面積の平均値で重み付けするようにしたので、ポリゴン分割の精細度の差異が、外接円分布または内接円分布にあまり反映せず、ポリゴン分割の精細度が異なる複数のポリゴンモデルに対して同一(出力を規制すべき)であると判定させることが可能となる。
また、本発明第26の態様では、前記モデル度数分布算出手段は、前記各対象モデルを構成するポリゴンの面積の総和値により、前記各要素の値を除算するようにしていることを特徴とする。
本発明第26の態様によれば、外接円分布、内接円分布を算出するにあたり、各対象モデルを構成するポリゴンの面積の総和値により、各要素の値を除算するようにしたので、対象モデルの表面積や容積の影響を排除した外接円分布、内接円分布を得ることが可能となる。
また、本発明第27の態様では、出力対象のポリゴンモデルである対象モデルを複数の部分対象モデルに分離する対象モデル分離手段を更に備え、前記部分対象モデルに対して、前記モデル度数分布算出手段が処理を行うことを特徴とする。
本発明第27の態様によれば、まず、対象モデルを複数の部分対象モデルに分離し、各部分対象モデルに対して、内接円分布を算出するようにしたので、複数の部品で構成される物品を表現した対象モデルの照合の際、規制モデルと対象モデルとで互いに部品構成が異なる場合でも、適切に出力が適正か否かの判断を行うことが可能となる。
また、本発明第28の態様では、前記ポリゴンは三角形状であり、前記対象モデル分離手段は、あるポリゴンと、当該ポリゴンと辺を共有する3つの隣接ポリゴンが、同一の部分対象モデルに属するように、分離することを特徴とする。
本発明第28の態様によれば、ポリゴンは三角形状であり、対象モデル分離手段は、あるポリゴンと、そのポリゴンと辺を共有する3つの隣接ポリゴンが、同一の部分対象モデルに属するように分離するようにしたので、複数の部品で構成される物品を表現した対象モデルを、迅速かつ的確に複数の部分対象モデルに分離することが可能となる。
また、本発明第29の態様では、
前記度数分布照合手段は、前記モデル度数分布算出手段により前記対象モデルから算出された内接円分布を前記規制画像の内接円分布と照合するにあたり、
前記内接円分布どうしの相関係数を算出し、算出された相関係数が所定の正のしきい値より大きい場合に、出力を規制すべきであると判定することを特徴とする。
前記度数分布照合手段は、前記モデル度数分布算出手段により前記対象モデルから算出された内接円分布を前記規制画像の内接円分布と照合するにあたり、
前記内接円分布どうしの相関係数を算出し、算出された相関係数が所定の正のしきい値より大きい場合に、出力を規制すべきであると判定することを特徴とする。
本発明第29の態様によれば、対象モデルから算出された内接円分布を、規制画像の内接円分布と照合するにあたり、内接円分布同士の相関係数を算出し、算出された相関係数が所定の正のしきい値より大きい場合に、出力を規制すべきであると判定するようにしたので、対象モデルと規制画像の特徴の照合を、迅速かつ的確に行うことが可能となる。
また、本発明第30の態様では、前記画像度数分布算出装置により算出された内接円分布を受信し、受信した内接円分布を前記データベースに登録する登録手段を更に有することを特徴とする。
本発明第30の態様によれば、画像度数分布算出装置から規制画像の内接円分布を受信し、データベースに登録するようにしたので、データベースの更新を遠隔地から迅速に行うことが可能となる。
また、本発明第31の態様では、
前記対象モデルを、接続された立体物造形装置に出力する手段と、
前記立体物造形装置による立体物の造形処理と並行して実行される前記度数分布照合手段により、出力を規制すべきである(出力不適)と判定された場合に、前記立体物造形装置に、前記対象モデルの出力中止命令を出力する手段と、
を更に有することを特徴とする。
前記対象モデルを、接続された立体物造形装置に出力する手段と、
前記立体物造形装置による立体物の造形処理と並行して実行される前記度数分布照合手段により、出力を規制すべきである(出力不適)と判定された場合に、前記立体物造形装置に、前記対象モデルの出力中止命令を出力する手段と、
を更に有することを特徴とする。
本発明第31の態様によれば、対象モデルを、接続された立体物造形装置に出力し、並行して実行される度数分布照合手段による照合の結果、出力を規制すべきであると判定された場合に、立体物造形装置に、対象モデルの出力中止命令を出力するようにしたので、時間のかかる立体物の造形を遅延させることなく、出力不適の場合にのみ、出力を中止することが可能となる。
また、本発明第32の態様では、
出力制御用端末と、処理サーバがネットワークを介して接続された構成であって、
前記出力制御用端末は、前記モデル度数分布算出手段を有し、
前記処理サーバは、
前記データベースと、
ネットワークを介して前記出力制御用端末から前記対象モデルの内接円分布を受信する受信手段と、
前記度数分布照合手段と、
前記度数分布照合手段により判定された、出力を規制すべきか否かに基づくデータを前記出力制御用端末に送信する出力適否データ送信手段と、
を有することを特徴とする。
出力制御用端末と、処理サーバがネットワークを介して接続された構成であって、
前記出力制御用端末は、前記モデル度数分布算出手段を有し、
前記処理サーバは、
前記データベースと、
ネットワークを介して前記出力制御用端末から前記対象モデルの内接円分布を受信する受信手段と、
前記度数分布照合手段と、
前記度数分布照合手段により判定された、出力を規制すべきか否かに基づくデータを前記出力制御用端末に送信する出力適否データ送信手段と、
を有することを特徴とする。
本発明第32の態様によれば、ネットワークを介して対象モデルの内接円分布を受信し、出力を規制すべきか否かの判定により得られた出力を規制すべきか否かに基づくデータを対象モデルの内接円分布の送信元に送信するようにしたので、出力を規制すべきか否かの判定をクラウド型で提供することができ、出力側における処理を軽減することができる。更に、データベースをクラウド側で一元管理でき、3Dプリンタ等の立体物造形装置ごとに接続されている出力制御用端末内でデータベースを管理する必要がないため、常に最新のデータベースに基づいて出力を規制すべきか否かの判定を行うことが可能になる。
また、本発明第33の態様では、
前記立体物造形用データ出力規制装置と、
前記立体物造形用データ出力規制装置で出力を規制すべきでないと判定されたポリゴンモデルを用いて立体物を造形する立体物造形装置と、
を有することを特徴とする立体物造形システムを提供する。
前記立体物造形用データ出力規制装置と、
前記立体物造形用データ出力規制装置で出力を規制すべきでないと判定されたポリゴンモデルを用いて立体物を造形する立体物造形装置と、
を有することを特徴とする立体物造形システムを提供する。
本発明第33の態様によれば、立体物造形用データ出力規制装置と、立体物造形用データ出力規制装置で出力を規制すべきでないと判定されたポリゴンモデルを用いて立体物を造形する立体物造形装置により立体物造形システムを実現するようにしたので、ボードコンピュータを組み込んだ3Dプリンタ等の形態で、立体物造形システムを提供することが可能となる。
また、本発明第34の態様では、コンピュータを、前記のいずれか一項に記載の立体物造形用データ出力規制装置として機能させるためのプログラムを提供する。
本発明第34の態様によれば、コンピュータを、立体物造形用データ出力規制装置として機能させるためのプログラムを提供するので、このプログラムを組み込むことにより、コンピュータが立体物造形用データ出力規制装置として機能する。
本発明によれば、ポリゴンモデルを基に立体物の出力を行う際に、2次元の画像を基準として、出力を規制すべきか否かの判定を的確に行うことが可能となる。
以下、本発明の好適な実施形態について図面を参照して詳細に説明する。
<1.本発明の基本概念>
最初に、本発明の基本概念について説明しておく。3Dプリンタでキャラクターのモチーフ画像を基にフィギュアを造形するためには、3次元のポリゴンモデルを制作する必要があるが、近年、画面上に表示されているイラストや写真の上をトレースするだけで、自動的に円柱形状などにより奥行きを付加し、3次元のポリゴンモデルを半自動的に制作できるツールの開発が活発になっている。これに伴い、キャラクターやイラストなど著作物性の高い2次元の画像を基に、3Dプリンタにより違法なフィギュアが容易に制作され、金型等で成形されるフィギュア正規品の市場が圧迫されようとしている。
<1.本発明の基本概念>
最初に、本発明の基本概念について説明しておく。3Dプリンタでキャラクターのモチーフ画像を基にフィギュアを造形するためには、3次元のポリゴンモデルを制作する必要があるが、近年、画面上に表示されているイラストや写真の上をトレースするだけで、自動的に円柱形状などにより奥行きを付加し、3次元のポリゴンモデルを半自動的に制作できるツールの開発が活発になっている。これに伴い、キャラクターやイラストなど著作物性の高い2次元の画像を基に、3Dプリンタにより違法なフィギュアが容易に制作され、金型等で成形されるフィギュア正規品の市場が圧迫されようとしている。
本発明では、キャラクターやイラストなど著作物性の高い2次元の画像を基に、3次元のポリゴンモデルを作成し、このポリゴンモデルをキャラクターやイラストの権利者の許可なく出力しようとした際に、出力を規制することを一つの目的としている。しかし、事前に違法なフィギュアの3次元のポリゴンモデルをデータベース化することは困難である。たとえデータベースに登録できても、キャラクターのモチーフ画像を基に制作される3次元のポリゴンモデルの形状には無尽蔵の多様性があり、出力対象のポリゴンモデルをデータベースに登録されているポリゴンモデルと照合する方法ではタイムリーな出力規制を行うことができない。そこで、データベースには多様性が少ない典型的なキャラクターの2次元モチーフ画像を登録し、3次元のポリゴンモデルを3Dプリンタで出力しようとした際に、登録されている2次元の画像を用いて照合を行えるようにする機能を実現する必要がある。
図1は、本発明の基本概念を説明するための図である。図1(a)は、出力しようとする3次元のポリゴンモデルであり、図1(b)は、データベースに登録された規制すべき2次元の画像である。本発明では、図1(a)に示したポリゴンモデルから図1(c)に示した所定の三角形の外接円の半径、内接円の半径についての2種の度数分布(ヒストグラム)を作成し、図1(b)に示した画像から図1(c)に示したような所定の三角形の外接円の半径、内接円の半径についての2種の度数分布(ヒストグラム)を図1(d)に示すように作成する。そして、図1(c)および図1(d)に示す外接円の半径、内接円の半径についての2種の度数分布に対して、互いに整合性をもたせるようにする。2種の度数分布を照合し、その相関をとることにより、図1(a)に示すポリゴンモデルと図1(b)に示す画像の類似性を判定することができる。照合する度数分布については、必ずしも2種ではなく、1種のみとすることもできる。ポリゴンモデルが登録された画像に類似する特徴をもつ場合には、当該ポリゴンモデルの出力が規制されることになる。
<2.第1の実施形態>
<2.1.画像度数分布算出装置の装置構成>
第1の実施形態では、3次元のポリゴンモデルの出力適否の判定を行う際に、ポリゴンモデルから作成した度数分布と、規制対象とする2次元の画像から作成し、データベースに登録された度数分布との照合を行う。このため、事前に画像から度数分布を作成してデータベースに登録しておく必要がある。まず、このような画像から度数分布を作成する画像度数分布算出装置について説明する。
<2.1.画像度数分布算出装置の装置構成>
第1の実施形態では、3次元のポリゴンモデルの出力適否の判定を行う際に、ポリゴンモデルから作成した度数分布と、規制対象とする2次元の画像から作成し、データベースに登録された度数分布との照合を行う。このため、事前に画像から度数分布を作成してデータベースに登録しておく必要がある。まず、このような画像から度数分布を作成する画像度数分布算出装置について説明する。
図2は、画像度数分布算出装置のハードウェア構成図である。画像度数分布算出装置300は、汎用のコンピュータで実現することができ、図2に示すように、CPU(Central Processing Unit)81と、コンピュータのメインメモリであるRAM(Random Access Memory)82と、CPU81が実行するプログラムやデータを記憶するためのハードディスク、フラッシュメモリ等の大容量の記憶装置83と、キーボード、マウス等のキー入力I/F(インターフェース)84と、3Dプリンタやデータ記憶媒体等の外部装置とデータ通信するためのデータ入出力I/F(インターフェース)85と、液晶ディスプレイ等の表示デバイスである表示部86と、を備え、互いにバスを介して接続されている。
図3は、画像度数分布算出装置の構成を示す機能ブロック図である。図3において、91は規制画像記憶手段、92は画像度数分布算出手段、93は画像度数分布記憶手段である。
画像度数分布算出手段92は、規制対象の画像である規制画像に対して、規制画像内のエッジ点を第1エッジ点グループ、第2エッジ点グループ、第3エッジ点グループの3つのグループに同数ずつ分類し、分類された各グループ内のエッジ点の順序の入れ替え(シャッフル)を行い、第1エッジ点グループ内の各エッジ点と第2エッジ点グループ内の各エッジ点と第3エッジ点グループ内の各エッジ点の対応付けを行い、3つのエッジ点を頂点とする三角形であるエッジ点間三角形を形成し、形成されたエッジ点間三角形の外接円の半径を算出するとともに、形成されたエッジ点間三角形の内接円の半径を算出し、算出結果である外接円の半径の度数分布である外接円分布と、内接円の半径の度数分布である内接円分布を算出する処理を行う。
画像度数分布算出手段92は、CPU81が、記憶装置83に記憶されているプログラムを実行することにより実現される。規制画像記憶手段91は、出力を規制すべき画像である規制画像を記憶した記憶手段であり、記憶装置83により実現される。
画像度数分布記憶手段93は、出力を規制すべき画像である規制画像に対して、2種の度数分布として算出された外接円分布および内接円分布を記憶して、データベース化したものであり、記憶装置83により実現される。2種の度数分布である外接円分布および内接円分布は、規制画像の特徴を表現した特徴ベクトルとしての役割を果たすものとなる。即ち、2種の度数分布により、元の規制画像の相違を識別可能であるが、元の規制画像を復元できるわけではない。これは、指紋(フィンガープリント)により個人の相違を識別可能であるが、人物の姿そのものを復元できるわけではないのと同様である。したがって、2種の度数分布は、著作物としての役割は果たさないが、2つの著作物の同一性を証明する、いわゆるフィンガープリントとしての役割を果たすことになる。画像度数分布記憶手段93には、外接円分布および内接円分布だけでなく、外接円分布および内接円分布の算出の基になった規制画像自体を登録しておけば類似性が判定された規制画像に対してヒトが目視で確認できるため、通常は、著作権者から許諾を受け、商用品質に値しない解像度で規制画像自体も登録される。
図3の機能ブロックに示した各構成手段は、現実には図2に示したように、コンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。すなわち、コンピュータが、専用のプログラムに従って各手段の内容を実行することになる。
図2に示した記憶装置83には、CPU81を動作させ、コンピュータを、画像度数分布算出装置として機能させるための専用のプログラムが実装されている。この専用のプログラムを実行することにより、CPU81は、画像度数分布算出手段92としての機能を実現することになる。また、記憶装置83は、規制画像記憶手段91、画像度数分布記憶手段93として機能するだけでなく、画像度数分布算出装置としての処理に必要な様々なデータを記憶する。
<2.2.画像度数分布算出装置の処理動作>
<2.2.1.第1の手法>
次に、図2、図3に示した画像度数分布算出装置の処理動作について説明する。画像度数分布算出装置の画像度数分布算出手段92は、出力を規制すべき画像である規制画像について、2種の度数分布である外接円分布および内接円分布を算出する。このような画像度数分布の算出処理としては、第1の手法と第2の手法の2通りが存在する。まず、第1の手法について説明する。図4は、第1の手法による画像度数分布の算出処理の詳細を示すフローチャートである。ここでは、後述するフィルタ演算を簡便に行うため、規制画像を256階調のモノクロ画像として扱う。したがって、カラー画像の場合は、事前に256階調のモノクロ画像に変換する処理を行っておき、二値画像の場合は、0または255のいずれかの値をもつ256階調のモノクロ画像として処理する。したがって、x方向の画素数Xs、y方向の画素数Ysの規制画像は、Img(x,y)=0〜255(x=0,・・・,Xs−1;y=0,・・・,Ys−1)と定義される。規制画像には、対象物部分と背景部分が存在し、対象物部分はグレーまたは白く表示されるImg(x,y)>0に設定し、背景は黒く表示されるImg(x,y)=0に設定する。規制画像の四隅は、背景となるため、Img(0,0)=Img(0,Ys−1)=Img(Xs−1,0)=Img(Xs−1,Ys−1)=0となっている。
<2.2.1.第1の手法>
次に、図2、図3に示した画像度数分布算出装置の処理動作について説明する。画像度数分布算出装置の画像度数分布算出手段92は、出力を規制すべき画像である規制画像について、2種の度数分布である外接円分布および内接円分布を算出する。このような画像度数分布の算出処理としては、第1の手法と第2の手法の2通りが存在する。まず、第1の手法について説明する。図4は、第1の手法による画像度数分布の算出処理の詳細を示すフローチャートである。ここでは、後述するフィルタ演算を簡便に行うため、規制画像を256階調のモノクロ画像として扱う。したがって、カラー画像の場合は、事前に256階調のモノクロ画像に変換する処理を行っておき、二値画像の場合は、0または255のいずれかの値をもつ256階調のモノクロ画像として処理する。したがって、x方向の画素数Xs、y方向の画素数Ysの規制画像は、Img(x,y)=0〜255(x=0,・・・,Xs−1;y=0,・・・,Ys−1)と定義される。規制画像には、対象物部分と背景部分が存在し、対象物部分はグレーまたは白く表示されるImg(x,y)>0に設定し、背景は黒く表示されるImg(x,y)=0に設定する。規制画像の四隅は、背景となるため、Img(0,0)=Img(0,Ys−1)=Img(Xs−1,0)=Img(Xs−1,Ys−1)=0となっている。
画像度数分布算出手段92は、まず、規制画像の各画素についてフィルタ演算を行い、各画素のエッジ強度を算出する(ステップS501)。まず、フィルタ演算に用いるフィルタマトリクスであるエッジ抽出フィルタについて説明する。フィルタマトリクスとは、マトリクスフィルタ、空間フィルタなどとも呼ばれ、一般には、注目画素とその周辺画素の画素値を使用して注目画素の画素値を変換するために用いられるものである。基本的には、規制画像内の全ての画素を対象として行う。
図5は、本実施形態で用いる16方向エッジ抽出フィルタを示す図である。図5に示す16方向エッジ抽出フィルタは、中心画素である自身を含めた8近傍の9画素の値を、16方向の各方向に応じて重みを変化させたものとなっている。図5の例では、方向0から方向15までの16方向について示している。方向0の場合を例にとって説明すると、(0.0,−1.0)は、方向0を特定する単位ベクトルである方向ベクトルを示している。また、縦3×横3の9個の数字は、M(d,u,v)=[−2,−1,1,2]で定義される重みを示している。重みは、−2,−1,1,2の4つの値をとる。そして、9個の数字は、中心を(u,v)=(0,0)として、u,vがそれぞれ−1,0,1の3通りの値をとる範囲に含まれるものである。中心の場合、方向dの値のいかんに関わらず必ずM(d,0,0)=1であり、中心以外の場合、方向dに応じてM(d,u,v)の値の−2、−1,1および2の位置が異なっている。図5に示した16方向エッジ抽出フィルタは22.5度刻みで方向を変化させたものである。
画像度数分布算出手段92は、図5に示したエッジ抽出フィルタM(d,u,v)を用いて以下の〔数式1〕に従った処理を実行し、各画素のエッジ強度を決定する。
〔数式1〕
F(d,x,y)=[Σv=-1,1Σu=-1,1M(d,u,v)[Img(x,y)−128] ]/6
EK(x,y)=F(dmax,x,y)=MAXd=0,D-1F(d,x,y)
F(d,x,y)=[Σv=-1,1Σu=-1,1M(d,u,v)[Img(x,y)−128] ]/6
EK(x,y)=F(dmax,x,y)=MAXd=0,D-1F(d,x,y)
上記〔数式1〕の第1式において、Σの添え字の“v=−1,1”、“u=−1,1”は、vが−1から1、uが−1から1の全ての整数をとる場合について、総和を求めることを示している。上記〔数式1〕の第1式により、各画素について、強度を表すフィルタ演算値F(d,x,y)が得られる。上記〔数式1〕の第2式において、“MAXd=0,D-1”は、方向d=0から方向d=D−1までの全ての方向の中での最大値を示している。16方向エッジ抽出フィルタを用いる場合は、D=16である。上記〔数式1〕の第2式により、最大のフィルタ演算値が、各画素のエッジ強度EK(x,y)として得られる。また、最大のフィルタ演算値をとり、エッジ強度を与える方向dをdmaxとする。
次に、画像度数分布算出手段92は、各画素のエッジ強度の補正および階調補正を行う(ステップS502)。まず、方向別のエッジ強度補正量を用いてエッジ強度の補正を行う。方向別のエッジ強度補正量Tc(d)を記録したエッジ強度補正テーブルを図6に示す。図6に示すように、エッジ強度補正テーブルには、方向d=0〜15それぞれについて、エッジ強度補正量が記録されている。図6に示すエッジ強度補正テーブルでは、エッジ強度補正量を%単位で示している。上述のように、16方向エッジ抽出フィルタは22.5度刻みとなっており、これに対応してエッジ強度補正テーブルも22.5度刻みとなっている。図6の例では、方向dが4つ異なるごと、すなわち90度異なるごとにエッジ強度補正量が同一値となるように繰り返されている。これは、16方向エッジ抽出フィルタにより算出されるエッジ強度が、90度単位で所定の特性をもつため、それに応じて補正をする必要が生じることを意味している。
画像度数分布算出手段92は、図6に示したエッジ強度補正量Tc(d)を用いて以下の〔数式2〕に従った処理を実行し、各画素のエッジ強度を補正する。
〔数式2〕
EK´(x,y)=EK(x,y)・Tc(d)/100
EK´(x,y)=EK(x,y)・Tc(d)/100
上記〔数式2〕において、“・”は、乗算を示している。以下の他の〔数式〕においても同様である。Tc(d)は、図6に示したような%単位の数値であるため、補正前のエッジ強度に乗じた後、100で除算している。エッジ強度補正量Tc(d)の方向dについては、その画素についてエッジ強度が最大となる方向dmaxを用いる。この結果、補正されたエッジ強度EK´(x,y)が得られる。
次に、画像度数分布算出手段92は、エッジ強度の階調補正(コントラスト補正)を行う。具体的には、以下の〔数式3〕に従った処理を実行し、各画素のエッジ強度の階調補正を行う。
〔数式3〕
EK´´(x,y)={EK´(x,y)−SL}・256/(256−SL)
EK´´(x,y)={EK´(x,y)−SL}・256/(256−SL)
上記〔数式3〕において、256は階調数であり、規制画像の画素が取り得る0〜255の数を示している。SLは、階調補正後に最小とする値である設定最小値を示している。設定最小値SLについては、適宜設定することができるが、元の画像が0〜255の値を取り得る場合に、72程度とすることが好ましい。この設定最小値は、実質的には、エッジ強度と比較することによりエッジ点とするか否かを判定するためのしきい値として機能する。上記〔数式3〕においては、各画素について算出されたエッジ強度に対して、所定の設定最小値SLを減算し、減算した値に、エッジ強度の階調数256を乗算し、階調数256と設定最小値SLとの差を除算することによりエッジ強度を補正している。
〔数式2〕によるエッジ強度補正、〔数式3〕による階調補正を行った結果、補正されたエッジ強度EK´´(x,y)が得られるが、説明が繁雑になるのを避けるため、以下では、補正されたエッジ強度をEK(x,y)として説明する。
次に、規制画像におけるエッジ点を抽出する(ステップS503)。具体的には、ステップS502において補正されたエッジ強度と、事前に設定されたしきい値とを比較し、エッジ強度がしきい値以上の画素をエッジ点として抽出する。ステップS502において階調補正を行っている場合は、しきい値として “0”を設定し、階調補正後のエッジ強度が0以上の画素が抽出されるようにすることが好ましい。
エッジ点の抽出順をiとすると、Ne個のエッジ点が抽出された場合、エッジ点の配列は[Xe(i),Ye(i)](i=0,・・・,Ne−1)と定義することができる。そして、i番目のエッジ点のエッジ強度EK(i)=EK(Xe(i),Ye(i))とする。
次に、規制画像におけるエッジ点の集合を3つのグループに分け、各グループのエッジ点の順序を入れ替える(ステップS504)。3つのグループへの分け方としては、同数に分けることができれば、どのような手法を用いてもよい。本実施形態では、エッジ点のデータ配列における順序に基づき、3で除して余りが0となる順番のエッジ点の第1エッジ点グループと、3で除して余りが1となる順番のエッジ点の第2エッジ点グループと、3で除して余りが2となる順番のエッジ点の第3エッジ点グループに分けている。これにより、規制画像から抽出されたNe個のエッジ点は、Ne/3個ずつのグループに分けられることになる。各グループのエッジ点の数が同数になるように、元のエッジ点の数Neの3の剰余が2の場合、先頭のエッジ点[Xe(0),Ye(0)]と同一の点を最後尾のエッジ点[Xe(Ne),Ye(Ne)]として追加し、全エッジ点の数がNe+1個になるように修正する。また、元のエッジ点の数Neの3の剰余が1の場合、先頭のエッジ点[Xe(0),Ye(0)]および先頭から2番目のエッジ点[Xe(1),Ye(1)]を、最後尾から2番目のエッジ点[Xe(Ne),Ye(Ne)]=エッジ点[Xe(0),Ye(0)]、最後尾のエッジ点[Xe(Ne+1),Ye(Ne+1)]=エッジ点[Xe(1),Ye(1)]として重複してもたせ、全エッジ点の数がNe+2個になるように修正する。各グループのエッジ点の数が同数になるように、エッジ点を重複して追加し、全エッジ点の数がNe+1個またはNe+2個となった場合、これをNeとして置き換え、以下では、全エッジ点の数を3の倍数であるNe個として説明していく。
3で除した余りによりグループ分けすることにより、各グループについて、配列G1(f)=3f、G2(f)=3f+1、G3(f)=3f+2(f=0,・・・,Ne/3−1)が得られる。次に、各グループのエッジ点の配列の順序を入れ替える。順序の入れ替えは無作為に行われる。すなわち、シャッフルされる。エッジ点の配列の順序を入れ替えることができれば、どのような手法を用いてもよいが、本実施形態では、以下のような手法によりエッジ点の配列の順序を入れ替えている。
まず、3種類の乱数配列R1(k)、R2(k)、R3(k)を作成する。具体的には、k=0,・・・,Ne/3−1について、R1(k)=kに初期化する。続いて、0≦Rnd(k)<1の範囲で実数値の一様乱数をNe/3回発生させ、1回発生させるごとに、pp=Rnd(k)・Ne/3なる演算で0≦pp≦Ne/3の整数値を算出し、R1(k)の値とR1(pp)の値を交換する処理をNe/3回繰り返す。繰り返しの結果、Ne/3個の連続する整数をランダムに入れ替えた乱数配列R1(k)が得られる。これにより、例えば、第1エッジ点グループのエッジ点の配列G1(f)に対して、f=R1(k)で与え、G1(R1(k))=3R1(k)(k=0,・・・,Ne/3−1)のように、順序が入れ替えられた配列を得ることができる。第2の乱数配列R2(k)に対しては、R2(k)=R1(Ne/3−1−k)で与える。すなわち、第1の乱数配列R1(k)の先頭から末尾への順序を逆にしたものが乱数配列R2(k)である。乱数配列R1(k)、乱数配列R2(k)は、互いに他方の反転乱数配列となる。また、乱数配列R3(k)=kとし乱数にせず、k=0,・・・,Ne/3−1なるシーケンシャルな値に設定する。このように、エッジ点の配列の順序を入れ替えることにより、各グループのエッジ点の配列順序を、2次元平面である規制画像内のエッジ点からランダムに設定することができ、ランダムなエッジ点の組み合わせで作成されたエッジ点間三角形の外接円の半径およびエッジ点間三角形の内接円の半径に基づいて、外接円分布および内接円分布を求めることが可能となる。
このように3つのグループにエッジ点を分類するのは、3つのエッジ点をランダムに選択してエッジ点間三角形を作成する際、互いに重複しないようにするためである。規制画像から抽出された全てのエッジ点の組み合わせで3つのエッジ点間三角形を順次構成することも可能であるが、エッジ点の数が多いと組み合わせが膨大な数になり実用的ではない。また、グループ分けをせず、規制画像から抽出された全てのエッジ点よりランダムに3つのエッジ点を選択してエッジ点間三角形を構成する方法も考えられるが、ある確率で同一のエッジ点間三角形が発生する。ランダムに抽出されるエッジ点間三角形のサンプル数が十分に多くないと、偏った度数分布が算出される可能性がある。本実施形態のように、3つのグループに分類し、各グループから1つずつエッジ点を選択して計3つ選択するようにすることにより、エッジ点間三角形を形成するための3つのエッジ点を互いに重複することなくランダム性をもたせながら効率的に選択することが可能になる。
次に、初期設定を行う(ステップS505)。具体的には、算出する外接円分布、内接円分布の初期化、ループカウンタの初期化を行う。本実施形態で算出される外接円分布は、エッジ強度加重した外接円の半径の分布であり、要素数をMDとし、各要素md(md=0,・・・,MD−1)の度数をHdo(md)と表す。Hdo(md)は、所定数MDの要素で構成される1次元配列である。画像度数分布算出手段92は、初期値をHdo(md)=0と設定する。本実施形態で算出される内接円分布は、エッジ強度加重した内接円の半径の分布であり、要素数をMAとし、各要素ma(ma=0,・・・,MA−1)の度数をHao(ma)と表す。要素数MAは、上記要素数MDと同一であってもよい。Hao(ma)は、所定数MAの要素で構成される1次元配列である。画像度数分布算出手段92は、初期値をHao(ma)=0と設定する。ループカウンタLCについては、初期値LC=0と設定する。
次に、画像度数分布算出手段92は、3つのグループ間における各エッジ点を頂点とするエッジ点間三角形の作成を行う(ステップS506)。エッジ点間三角形の数がエッジ点総数Neと同一になるように、グループ間の組み合わせを変えて3通り作成する。具体的には、第1エッジ点グループのf(f=0,・・・,Ne/3−1)番目のエッジ点G1(f)に対して乱数配列R1(k)によりランダムに順番を入れ替えたG1(R1(k))のエッジ点(Xe(G1(R1(k))),Ye(G1(R1(k))))、第2エッジ点グループの対応する順序fのエッジ点G2(f)に対して乱数配列R2(k)によりランダムに順番を入れ替えたG2(R2(k))のエッジ点(Xe(G2(R2(k))),Ye(G2(R2(k))))、第3エッジ点グループの対応する順序fのエッジ点G3(f)に対して乱数配列R3(k)によりランダムに順番を入れ替えたG3(R3(k))のエッジ点(Xe(G3(R3(k))),Ye(G3(R3(k))))の3点を頂点とする第1エッジ点間三角形をNe/3個作成する。
同様に、第2エッジ点グループのf番目のエッジ点G2(f)に対して乱数配列R1(k)によりランダムに順番を入れ替えたG2(R1(k))のエッジ点(Xe(G2(R1(k))),Ye(G2(R1(k))))、第3エッジ点グループの対応する順序fのエッジ点G3(f)に対して乱数配列R2(k)によりランダムに順番を入れ替えたG3(R2(k))のエッジ点(Xe(G3(R2(k))),Ye(G3(R2(k))))、第1エッジ点グループの対応する順序fのエッジ点G1(f)に対して乱数配列R3(k)によりランダムに順番を入れ替えたG1(R3(k))のエッジ点(Xe(G1(R3(k))),Ye(G1(R3(k))))の3点を頂点とする第2エッジ点間三角形をNe/3個作成する。
さらに、第3エッジ点グループのf番目のエッジ点G3(f)に対して乱数配列R1(k)によりランダムに順番を入れ替えたG3(R1(k))のエッジ点(Xe(G3(R1(k))),Ye(G3(R1(k))))、第1エッジ点グループの対応する順序fのエッジ点G1(f)に対して乱数配列R2(k)によりランダムに順番を入れ替えたG1(R2(k))のエッジ点(Xe(G1(R2(k))),Ye(G1(R2(k))))、第2エッジ点グループの対応する順序fのエッジ点G2(f)に対して乱数配列R3(k)によりランダムに順番を入れ替えたG2(R3(k))のエッジ点(Xe(G2(R3(k))),Ye(G2(R3(k))))の3点を頂点とする第3エッジ点間三角形をNe/3個作成する。
次に、画像度数分布算出手段92は、各エッジ点を頂点とする三角形であるエッジ点間三角形の外接円の半径の算出を行う(ステップS507)。具体的には、まず、以下の〔数式4〕に従った処理を実行することにより、k=0,・・・,Ne/3−1の範囲で、第1エッジ点間三角形の面積Se(k)を算出する。
〔数式4〕
De12=[[Xc(G2(R2(k)))−Xc(G1(R1(k)))]2+[Yc(G2(R2(k)))−Yc(G1(R1(k)))]2]1/2
De23=[[Xc(G3(R3(k)))−Xc(G2(R2(k)))]2+[Yc(G3(R3(k)))−Yc(G2(R2(k)))]2]1/2
De31=[[Xc(G1(R1(k)))−Xc(G3(R3(k)))]2+[Yc(G1(R1(k)))−Yc(G3(R3(k)))]2]1/2
De=(De12+De23+De31)/2
Se(k)=[De・(De−De12)・(De−De23)・(De−De31)]1/2
De12=[[Xc(G2(R2(k)))−Xc(G1(R1(k)))]2+[Yc(G2(R2(k)))−Yc(G1(R1(k)))]2]1/2
De23=[[Xc(G3(R3(k)))−Xc(G2(R2(k)))]2+[Yc(G3(R3(k)))−Yc(G2(R2(k)))]2]1/2
De31=[[Xc(G1(R1(k)))−Xc(G3(R3(k)))]2+[Yc(G1(R1(k)))−Yc(G3(R3(k)))]2]1/2
De=(De12+De23+De31)/2
Se(k)=[De・(De−De12)・(De−De23)・(De−De31)]1/2
そして、以下の〔数式5〕に従った処理を実行することにより、k=0,・・・,Ne/3−1の範囲で、第1エッジ点間三角形の外接円の半径De(k)を算出する。
〔数式5〕
De(k)=De12・De23・De31/(4・Se(k))
De(k)=De12・De23・De31/(4・Se(k))
画像度数分布算出手段92は、同様に、以下の〔数式6〕に従った処理を実行することにより、k=0,・・・,Ne/3−1の範囲で、第2エッジ点間三角形の面積Se(k)を算出する。
〔数式6〕
De12=[[Xe(G3(R2(k)))−Xe(G2(R1(k)))]2+[Ye(G3(R2(k)))−Ye(G2(R1(k)))]2]1/2
De23=[[Xe(G1(R3(k)))−Xe(G3(R2(k)))]2+[Ye(G1(R3(k)))−Ye(G3(R2(k)))]2]1/2
De31=[[Xe(G2(R1(k)))−Xe(G1(R3(k)))]2+[Ye(G2(R1(k)))−Ye(G1(R3(k)))]2]1/2
De=(De12+De23+De31)/2
Se(k)=[De・(De−De12)・(De−De23)・(De−De31)]1/2
De12=[[Xe(G3(R2(k)))−Xe(G2(R1(k)))]2+[Ye(G3(R2(k)))−Ye(G2(R1(k)))]2]1/2
De23=[[Xe(G1(R3(k)))−Xe(G3(R2(k)))]2+[Ye(G1(R3(k)))−Ye(G3(R2(k)))]2]1/2
De31=[[Xe(G2(R1(k)))−Xe(G1(R3(k)))]2+[Ye(G2(R1(k)))−Ye(G1(R3(k)))]2]1/2
De=(De12+De23+De31)/2
Se(k)=[De・(De−De12)・(De−De23)・(De−De31)]1/2
そして、上記〔数式5〕に従った処理を実行することにより、k=0,・・・,Ne/3−1の範囲で、第2エッジ点間三角形の外接円の半径De(k)を算出する。
画像度数分布算出手段92は、同様に、以下の〔数式7〕に従った処理を実行することにより、k=0,・・・,Ne/3−1の範囲で、第3エッジ点間三角形の面積Se(k)を算出する。
〔数式7〕
De12=[[Xe(G1(R2(k)))−Xe(G3(R1(k)))]2+[Ye(G1(R2(k)))−Ye(G3(R1(k)))]2]1/2
De23=[[Xe(G2(R3(k)))−Xe(G1(R2(k)))]2+[Ye(G2(R3(k)))−Ye(G1(R2(k)))]2]1/2
De31=[[Xe(G3(R1(k)))−Xe(G2(R3(k)))]2+[Ye(G3(R1(k)))−Ye(G2(R3(k)))]2]1/2
De=(De12+De23+De31)/2
Se(k)=[De・(De−De12)・(De−De23)・(De−De31)]1/2
De12=[[Xe(G1(R2(k)))−Xe(G3(R1(k)))]2+[Ye(G1(R2(k)))−Ye(G3(R1(k)))]2]1/2
De23=[[Xe(G2(R3(k)))−Xe(G1(R2(k)))]2+[Ye(G2(R3(k)))−Ye(G1(R2(k)))]2]1/2
De31=[[Xe(G3(R1(k)))−Xe(G2(R3(k)))]2+[Ye(G3(R1(k)))−Ye(G2(R3(k)))]2]1/2
De=(De12+De23+De31)/2
Se(k)=[De・(De−De12)・(De−De23)・(De−De31)]1/2
そして、上記〔数式5〕に従った処理を実行することにより、k=0,・・・,Ne/3−1の範囲で、第3エッジ点間三角形の外接円の半径De(k)を算出する。
上記〔数式4〕〔数式6〕〔数式7〕においては、エッジ点間三角形の各辺の長さD12、D23、D31が、以下の〔数式8〕に示した6条件全てを満たしたエッジ点間三角形のみ、外接円半径の度数分布の対象とする。したがって、〔数式8〕に示した6条件のうち1つでも満たさなかったエッジ点間三角形については、外接円半径の度数分布の対象としない。下記〔数式8〕に示した6条件を満たさない場合は、外接円の半径De(k)が極端に大きくなり、精度のよい度数分布を求めることができないためである。
〔数式8〕
De12>0
De23>0
De31>0
|De12−De23−De31|/De12>0.1
|De23−De31−De12|/De23>0.1
|De31−De12−De23|/De31>0.1
De12>0
De23>0
De31>0
|De12−De23−De31|/De12>0.1
|De23−De31−De12|/De23>0.1
|De31−De12−De23|/De31>0.1
上記〔数式8〕に示すように、6条件のうち前半3条件は、全ての辺が0でない正の値をとること、すなわち三角形を形成することを意味する。6条件のうち後半3条件は、作成される三角形が極端に偏平な形状にならないことを意味する。三角形が極端に偏平な形状になると、外接円の半径が無限大に近付き、精度のよい度数分布が得られないことになる。上記〔数式8〕に示した6条件を満たさない場合は、三角形を形成しないか(いずれかの辺が0の場合)、外接円の半径De(k)が極端に大きくなり、精度のよい度数分布を求めることができないためである。特に、2D規制画像から外接円半径を算出する場合、エッジ点座標値[Xe(i),Ye(i)]は画素単位の整数値になるため、後述する3D対象モデルから外接円半径を算出する場合に比べ、いずれかの辺が0になる頻度が高い。3辺のいずれも0でなくても、面積が0に近い値になり、2辺の長さの和が残りの1辺の長さに近い値になる頻度も高い。このような場合でも、〔数式4〕〔数式6〕〔数式7〕に従って、外接円半径は算出可能であるが、物理的な意味を成さない異常値になる。ただし、後述する内接円半径は、このような場合には面積に比例した0に近い値が算出され、異常値にならない。
上記〔数式5〕により算出されたNe/3個の第1エッジ点間三角形の外接円の半径と、Ne/3個の第2エッジ点間三角形の外接円の半径と、Ne/3個の第3エッジ点間三角形の外接円の半径の3種のNe/3個の配列De(k)に対し、第2エッジ点間三角形のNe/3個の配列にはNe/3だけオフセットを加え、第3エッジ点間三角形のNe/3個の配列には2Ne/3だけオフセットを加えた上で、通し番号iでまとめて、その範囲をi=0,・・・,Ne−1に設定し直してNe個のエッジ点間三角形の外接円の半径De(i)(i=0,・・・,Ne−1)を得る。そして、i=0,・・・,Ne−1のNe個の外接円の半径De(i)のうち最大のものを最大外接円半径Demaxとする。
次に、画像度数分布算出手段92は、エッジ点間三角形の内接円の半径の算出を行う(ステップS508)。具体的には、以下の〔数式9〕に従った処理を実行することにより、k=0,・・・,Ne/3−1の範囲で第1エッジ点間三角形、第2エッジ点間三角形、第3エッジ点間三角形の内接円の半径Ae(k)を算出する。
〔数式9〕
Ae(k)=2・Se(k)/(De12+De23+De31)
Ae(k)=2・Se(k)/(De12+De23+De31)
上記〔数式9〕において、De12、De23、De31およびSe(k)は、上記〔数式4〕〔数式6〕〔数式7〕に従った処理により算出された第1エッジ点間三角形、第2エッジ点間三角形、第3エッジ点間三角形の三辺の長さと面積である。なお、〔数式8〕に示した6条件のうち1つでも満たさなかったエッジ点間三角形については、内接円半径の度数分布の対象としない。
上記〔数式9〕により算出されたNe/3個の第1エッジ点間三角形の内接円の半径Ae(k)と、Ne/3個の第2エッジ点間三角形の内接円の半径Ae(k)と、Ne/3個の第3エッジ点間三角形の内接円の半径Ae(k)の3種のNe/3個の配列Ae(k)に対し、第2エッジ点間三角形のNe/3個の配列にはNe/3だけオフセットを加え、第3エッジ点間三角形のNe/3個の配列には2Ne/3だけオフセットを加えた上で、通し番号iの範囲をi=0,・・・,Ne−1に設定し直してNe個のエッジ点間三角形の内接円の半径Ae(i)(i=0,・・・,Ne−1)を得る。そして、i=0,・・・,Ne−1のNe個の内接円の半径Ae(i)のうち最大のものを最大内接円半径Aemaxとする。
次に、画像度数分布算出手段92は、エッジ点間三角形の外接円の半径の度数分布である外接円分布を算出する(ステップS509)。具体的には、以下の〔数式10〕に従った処理を実行することにより、要素mdの度数Hdo(md)を、i=0,・・・,Ne−1について、算出する。
〔数式10〕
Demax・md/MD≦De(i)<Demax・(md+1)/MDならば、
Hdo(md)←Hdo(md)+EK
0≦i≦Ne/3−1の場合
EK=[EK(G1(R1(i)))+EK(G2(R2(i)))+EK(G3(R3(i)))]/3
Ne/3≦i≦2Ne/3−1の場合
EK=[EK(G2(R1(i)))+EK(G3(R2(i)))+EK(G1(R3(i)))] /3
2Ne/3≦i≦Ne−1の場合
EK=[EK(G3(R1(i)))+EK(G1(R2(i)))+EK(G2(R3(i)))]/3
Demax・md/MD≦De(i)<Demax・(md+1)/MDならば、
Hdo(md)←Hdo(md)+EK
0≦i≦Ne/3−1の場合
EK=[EK(G1(R1(i)))+EK(G2(R2(i)))+EK(G3(R3(i)))]/3
Ne/3≦i≦2Ne/3−1の場合
EK=[EK(G2(R1(i)))+EK(G3(R2(i)))+EK(G1(R3(i)))] /3
2Ne/3≦i≦Ne−1の場合
EK=[EK(G3(R1(i)))+EK(G1(R2(i)))+EK(G2(R3(i)))]/3
上記〔数式10〕は、エッジ点間三角形の外接円半径De(i)が、最大外接円半径Demaxにmd/MDを乗じた値以上で、(md+1)/MDを乗じた値より小さい場合に、エッジ点間三角形の頂点となる3つのエッジ点の平均エッジ強度EKをHdo(md)に加算することを意味している。
上記〔数式10〕に従った処理を、Ne個のエッジ点間三角形について実行することにより、外接円分布Hdo(md)(md=0,・・・,MD−1)が算出される。各要素には、単なる頻度ではなく、エッジ強度が加算されているため、外接円分布Hdo(md)は、エッジ強度加重の外接円分布を示すことになる。エッジ強度でなく単に1を加算するようにすることも可能であるが、その場合、エッジ点のエッジ強度が加味されない外接円分布となり、同一内容の規制画像に対して画素が粗い場合と細かい場合とで、外接円分布に顕著な差が生じてしまう。そこで、本実施形態では、外接円分布の算出時にエッジ点のエッジ強度を加算するようにしている。エッジ強度でなく単に1を加算するようにした場合は、ある要素mdに該当する数Hdo(md)を計数することにより、外接円分布を算出することになる。
上記〔数式10〕に従った処理により算出される外接円分布は、2次元の規制画像から得られるものであるので、このままでは、後に3次元のポリゴンモデルから得られる外接円分布との照合に最適な状態とはなっていない。このため、2次元の規制画像から外接円分布を算出する際、球面補正を行うことが好ましい。具体的には、以下の〔数式11〕に従った処理を実行することにより、i=0,・・・,Ne−1について、球面補正エッジ強度EKaを算出する。
〔数式11〕
EKa=EK・De(i)・{Demax2−De(i)2}1/2
EKa=EK・De(i)・{Demax2−De(i)2}1/2
上記〔数式11〕では、i組目に選択された3つのエッジ点の平均エッジ強度を球面補正している。上記〔数式11〕に従った処理を実行することにより算出された球面補正エッジ強度EKaを、上記〔数式10〕における平均エッジ強度EKと置き換えて上記〔数式10〕に従った処理を実行する。球面補正エッジ強度EKaを用いることにより、球面補正が行われ、平面的な規制画像から球面的な特徴を有する外接円分布が得られる。
次に、画像度数分布算出手段92は、各エッジ点間三角形の内接円分布を算出する(ステップS510)。具体的には、以下の〔数式12〕に従った処理を実行することにより、要素maの度数Hao(ma)を、i=0,・・・,Ne−1について、算出する。
〔数式12〕
Demax・ma/2MA≦Ae(i)<Demax・(ma+1)/2MAならば、
Hao(ma)←Hao(ma)+EK
Demax・ma/2MA≦Ae(i)<Demax・(ma+1)/2MAならば、
Hao(ma)←Hao(ma)+EK
上記〔数式12〕における、3つのエッジ点の平均エッジ強度EKについても、上記〔数式10〕に従った処理により算出したものを用いる。上記〔数式12〕は、エッジ点間三角形の内接円の半径Ae(i)が、最大外接円半径Demaxにma/2MAを乗じた値以上で、(ma+1)/2MAを乗じた値より小さい場合に、エッジ点間三角形の頂点となる3つのエッジ点の平均エッジ強度EKをHao(ma)に加算することを意味している。これは、最大外接円半径Demaxの半分の長さであるDemax/2にma/MAを乗じた値以上で、(ma+1)/MAを乗じた値より小さい場合に、エッジ点間三角形の頂点となる3つのエッジ点の平均エッジ強度EKをHa(ma)に加算することと同じである。
結局、上記〔数式12〕に従った処理を実行することにより、画像度数分布算出手段92は、所定数MAの要素で構成される1次元の配列を準備し、算出された外接円の半径の最大値(最大外接円半径Demax)の50%の値で正規化された範囲を、所定数MAに均等に分割した上で、各内接円の半径Ae(i)を、その値に基づいて所定数MAのいずれかの要素maに割り当て、要素maに該当する数を計数することにより、内接円分布を算出している。
外接円半径や内接円半径は2D規制画像のスケールに依存するため、横軸を最大値の範囲に正規化して分布を作成すると、スケールに依存しない分布ができる。この時、外接円半径と内接円半径とで異なる最大値で独立して正規化した分布を作成すると、外接円半径と内接円半径との間のスケールにも依存しない分布ができ、形状変形に対するロバストが強くなる反面、形状識別性が弱くなる。本発明では、内接円半径も外接円半径と同一の基準値である最大外接円半径を用いて正規化した分布を作成するようにしたため、外接円半径と内接円半径との間のスケール比が維持された分布ができ、外接円半径と内接円半径とで異なる最大値で独立して正規化した場合よりも、分布の広がりが狭くシャープになり、形状識別性が高くなる。実際には、内接円半径は外接円半径の最大値(最大外接円半径)の1/2(50%)以上の値はとらないため、最大値の1/2の範囲で正規化するようにする。本実施形態では、上記〔数式12〕に示したように、最大外接円半径Demaxの1/2の長さであるDemax/2で正規化している。正規化の範囲は、適宜設定することが可能であるが、外接円半径の最大値の35%〜50%、すなわち、7/20〜10/20(1/2)であることが好ましい。35%未満の場合は、内接円半径が要素ma(スケール)の最大値(外接円半径の最大値の35%)を超える割合が増えて分布が要素maの最大値に集中してしまい、形状を正確に反映しなくなる。また、50%を超える場合は、要素maの最大値側の空白が大きい分布ができてしまうためである。
上記〔数式12〕に従った処理を、Ne個のエッジ点間三角形について実行することにより、内接円分布Hao(ma)(ma=0,・・・,MA−1)が算出される。各要素には、単なる頻度ではなく、平均エッジ強度が加算されているため、内接円分布Hao(ma)は、平均エッジ強度が加重された内接円分布を示すことになる。平均エッジ強度でなく単に1を加算するようにすることも可能であるが、その場合、エッジ点の平均エッジ強度が加味されない内接円分布となり、同一内容の規制画像に対して画素が粗い場合と細かい場合とで、内接円分布に顕著な差が生じてしまう。そこで、本実施形態では、内接円分布算出時にエッジ点の平均エッジ強度を加算するようにしている。エッジ強度でなく単に1を加算するようにした場合は、ある要素maに該当する数Hao(ma)を計数することにより、内接円分布を算出することになる。
上記〔数式12〕に従った処理により算出される内接円分布は、2次元の規制画像から得られるものであるので、このままでは、後に3次元のポリゴンモデルから得られる内接円分布との照合に最適な状態とはなっていない。このため、2次元の規制画像から内接円分布を算出する際、球面補正を行うことが好ましい。具体的には、以下の〔数式13〕に従った処理を実行することにより、i=0,・・・,Ne−1について、球面補正エッジ強度EKbを算出する。
〔数式13〕
EKb=EK・Ae(i)・{Aemax2−Ae(i)2}1/2
EKb=EK・Ae(i)・{Aemax2−Ae(i)2}1/2
上記〔数式13〕では、i組目に選択された3つのエッジ点の平均エッジ強度を球面補正している。上記〔数式13〕に従った処理を実行することにより算出された球面補正エッジ強度EKbを、上記〔数式12〕におけるEKと置き換えて上記〔数式12〕に従った処理を実行する。球面補正エッジ強度EKbを用いることにより、球面補正が行われ、平面的な規制画像から球面的な特徴を有する内接円分布が得られる。
外接円分布および内接円分布が算出されたら、次に、ループカウンタLCが規定値以上であるかどうかを判定する(ステップS511)。判定の結果、ループカウンタLCが規定値未満である場合は、2つのグループの配列を1だけずらす処理を行う(ステップS512)。例えば、第1エッジ点グループの順序を固定する場合、本実施形態では、以下の〔数式14〕に従った処理を実行することにより、第2エッジ点グループ、第3エッジ点グループの2つのグループに用いる乱数配列R2(k)、乱数配列R3(k)の順序をずらしている。
〔数式14〕
Ro=R2(0)、Ro3=R3(0)とし、
k=0,・・・,Ne/3−2に対して、
R2(k)←R2(k+1)、R3(k)←R3(k+1)を繰り返し、
R2(Ne/3−1)=Ro、R3(Ne/3−1)=Ro3とする。
Ro=R2(0)、Ro3=R3(0)とし、
k=0,・・・,Ne/3−2に対して、
R2(k)←R2(k+1)、R3(k)←R3(k+1)を繰り返し、
R2(Ne/3−1)=Ro、R3(Ne/3−1)=Ro3とする。
第2エッジ点グループの順序を固定する場合、第3エッジ点グループの順序を固定する場合については、グループの関係を変えて、〔数式14〕に従った処理を実行することにより行われる。併せて、ループカウンタLCをインクリメント(LC←LC+1)する処理も行う。既に算出された度数分布が存在する場合は、その度数分布の各要素について、各要素に該当する度数の値を加算する。ステップS512において、2つのグループの配列をずらした後、2つのグループともう1つのグループのエッジ点の組み合わせを1回目とは変えて、ステップS506〜ステップS510の処理を実行し、外接円分布および内接円分布を算出する。ステップS506〜ステップS510の外接円分布および内接円分布の算出処理は、規定値として設定された所定の回数だけ繰り返される。規定値としては、適宜設定することが可能であるが、エッジ点の総数Ne=10000の場合、10程度である。
ループカウンタLCが規定値に達した場合、ステップS511において、ループカウンタLCが規定値以上であると判定されるため、2種の度数分布の正規化を行う(ステップS513)。具体的には、上記〔数式10〕で算出されたHdo(md)に、更に100/{EKsum・LC}を乗じてHdo(md)と置き換えることにより、単位をエッジ強度率[%]に正規化している。EKsumとは、抽出されたNe個のエッジ点のエッジ強度EK(i)の総和値である。すなわち、エッジ点のエッジ強度の総和値EKsumとループ回数LCの乗算値により、各要素の値Hdo(md)を除算している。これにより、エッジ点のエッジ強度の総和値が異なる、即ち画素数が異なる規制画像であっても同一の外接円分布に変換され、同一内容の規制画像として判定が可能になる。また、ループ回数LCで除算していることになるため、ループ回数分の平均値が得られることになる。
また、上記〔数式12〕で算出されたHao(ma)に、更に100/{EKsum・LC}を乗じてHao(ma)と置き換えることにより、単位をエッジ強度率[%]に正規化している。すなわち、エッジ点のエッジ強度の総和値EKsumとループ回数LCの乗算値により、各要素の値Hao(ma)を除算している。これにより、エッジ点のエッジ強度の総和値が異なる。即ち画素数が異なる規制画像であっても同一の内接円分布に変換され、同一内容の規制画像として判定が可能になる。また、ループ回数LCで除算していることになるため、ループ回数分の平均値が得られることになる。図4に示した処理により得られた外接円分布と内接円分布の2種の度数分布は、規制画像を特定する識別情報と対応付けて、画像度数分布記憶手段93に格納される。
<2.2.2.第2の手法>
次に、第2の手法について説明する。図7および図8は、第2の手法による画像度数分布の算出処理の詳細を示すフローチャートである。第1の手法と同様の処理については、同一符号を付して説明を省略する。第2の手法においても、ステップS501〜ステップS510までは、第1の手法と同様に行われる。そして、第1の手法のステップS513と同様に、2種の度数分布の正規化を行う(ステップS513)。第2の手法では、2種の度数分布の算出後、強制的に正規化を行う。具体的には、上記〔数式10〕で算出されたHdo(md)に、更に100/EKsumを乗じてHdo(md)と置き換えることにより、単位をエッジ強度率[%]に正規化している。また、上記〔数式12〕で算出されたHao(ma)に、更に100/EKsumを乗じてHao(ma)と置き換えることにより、単位をエッジ強度率[%]に正規化している。第1の手法とは異なり、ループカウンタLCによる除算は行わない。
次に、第2の手法について説明する。図7および図8は、第2の手法による画像度数分布の算出処理の詳細を示すフローチャートである。第1の手法と同様の処理については、同一符号を付して説明を省略する。第2の手法においても、ステップS501〜ステップS510までは、第1の手法と同様に行われる。そして、第1の手法のステップS513と同様に、2種の度数分布の正規化を行う(ステップS513)。第2の手法では、2種の度数分布の算出後、強制的に正規化を行う。具体的には、上記〔数式10〕で算出されたHdo(md)に、更に100/EKsumを乗じてHdo(md)と置き換えることにより、単位をエッジ強度率[%]に正規化している。また、上記〔数式12〕で算出されたHao(ma)に、更に100/EKsumを乗じてHao(ma)と置き換えることにより、単位をエッジ強度率[%]に正規化している。第1の手法とは異なり、ループカウンタLCによる除算は行わない。
外接円分布および内接円分布の正規化が行われたら、次に、ループカウンタLCが1以上であるかどうかを判定する(ステップS521)。これは、度数分布の算出が初回であるか否かの判定を行っている。ループカウンタLCが1未満である場合は、度数分布の算出が初回であることを意味するので、2つのグループの配列を1だけずらす処理を行う(ステップS512)。具体的には、第1の手法のステップS512と同様に、上記〔数式14〕に従った処理を実行することにより、配列R2(k)、R3(k)の順序をずらしている。
ステップS521において、2つのグループの配列をずらした後、2つのグループともう1つのグループのエッジ点の組み合わせを1回目とは変えて、ステップS506〜ステップS513の処理を実行し、外接円分布および内接円分布の正規化を行う。すなわち、外接円分布および内接円分布を1回算出するごとに、3つのグループのうち2つのグループ内のエッジ点の順序を変化させて、外接円分布および内接円分布を改めて算出する処理を繰り返し行う。2回目以降では、ステップS521において、ループカウンタLCが1以上と判定されるため、直前の外接円分布および内接円分布との比較を行う(ステップS522)。まず、以下の〔数式15〕に従った処理を実行することにより、算出された外接円分布と直前の外接円分布のユークリッド距離DDを算出する。ユークリッド距離とは、各要素の度数同士の差分の絶対値を2乗した値で与えられるユークリッド空間上の距離である。ユークリッド距離DDは、MD次元ユークリッド空間内の2点の距離として求められる。
〔数式15〕
DD=Σmd=0,MD-1[{Hdo(md)−Hdp(md)}2/MD]1/2
DD=Σmd=0,MD-1[{Hdo(md)−Hdp(md)}2/MD]1/2
上記〔数式15〕において、Σの添え字の“md=0,MD−1”は、mdが0からMD−1の全ての整数をとる場合について、後続の[・・・]1/2の総和を求めることを示している。また、Hdp(md)は、直前の外接円分布を示している。
続いて、以下の〔数式16〕に従った処理を実行することにより、算出された内接円分布と直前の内接円分布のユークリッド距離DAを算出する。ユークリッド距離DAは、MA次元ユークリッド空間内の2点の距離として求められる。
〔数式16〕
DA=Σma=0,MA-1[{Hao(ma)−Hap(ma)}2/MA]1/2
DA=Σma=0,MA-1[{Hao(ma)−Hap(ma)}2/MA]1/2
上記〔数式16〕において、Σの添え字の“ma=0,MA−1”は、maが0からMA−1の全ての整数をとる場合について、後続の[・・・]1/2の総和を求めることを示している。また、Hap(ma)は、直前の内接円分布を示している。
次に、画像度数分布算出手段92は、ステップS522において算出された外接円分布、内接円分布のユークリッド距離と、判定しきい値との比較を行う(ステップS523)。具体的には、ユークリッド距離DD、DAが判定しきい値よりともに小さい場合は、飽和状態と判定し、ユークリッド距離DD、DAのいずれか一方が判定しきい値以上である場合は、生成途上と判定する。判定しきい値としては、任意に設定可能であるが、ここでは、0.05としてある。
ステップS523において飽和状態と判定された場合、すなわち両者に類似性が認められる場合には、画像度数分布算出手段92は、最後に算出された外接円分布および内接円分布を、正式に2種の度数分布とすることを決定する(ステップS524)。すなわち、算出直後の外接円分布および内接円分布と、その直前に得られた外接円分布および内接円分布を比較し、比較の結果で類似性が認められる場合に、算出直後の外接円分布および内接円分布を、照合対象の外接円分布および内接円分布とする。ステップS523において生成途上と判定された場合には、2つのグループの配列を1だけずらす処理を行った後(ステップS512)、ステップS506〜ステップS513の処理を繰り返し実行する。
規制画像(2D画像)から得られた外接円分布と内接円分布における外接円と内接円を図9に示す。規制画像から選択された3つのエッジ点を結ぶことによりエッジ点間三角形が作成される。そして、エッジ点間三角形の外接円と内接円を求める。図9において、網掛けされた多角形は、規制画像の対象物部分(背景部分以外)を示している。また、黒丸は選択された3つのエッジ点を示している。図9(a)は、エッジ点間三角形とその外接円と半径の関係を示し、図9(b)は、エッジ点間三角形とその内接円と半径の関係を示している。図9(a)(b)において、下向きの矢印は、それぞれ外接円の半径、内接円の半径を示している。
<2.3.立体物造形用データ出力規制装置の構成>
次に、本発明第1の実施形態に係る立体物造形用データ出力規制装置について説明する。図10は、本発明の一実施形態に係る立体物造形用データ出力規制装置100を含む立体物造形システムのハードウェア構成図である。本実施形態に係る立体物造形用データ出力規制装置100は、汎用のコンピュータで実現することができ、図10に示すように、CPU(Central Processing Unit)1と、コンピュータのメインメモリであるRAM(Random Access Memory)2と、CPU1が実行するプログラムやデータを記憶するためのハードディスク、フラッシュメモリ等の大容量の記憶装置3と、キーボード、マウス等のキー入力I/F(インターフェース)4と、3Dプリンタやデータ記憶媒体等の外部装置とデータ通信するためのデータ入出力I/F(インターフェース)5と、液晶ディスプレイ等の表示デバイスである表示部6と、を備え、互いにバスを介して接続されている。
次に、本発明第1の実施形態に係る立体物造形用データ出力規制装置について説明する。図10は、本発明の一実施形態に係る立体物造形用データ出力規制装置100を含む立体物造形システムのハードウェア構成図である。本実施形態に係る立体物造形用データ出力規制装置100は、汎用のコンピュータで実現することができ、図10に示すように、CPU(Central Processing Unit)1と、コンピュータのメインメモリであるRAM(Random Access Memory)2と、CPU1が実行するプログラムやデータを記憶するためのハードディスク、フラッシュメモリ等の大容量の記憶装置3と、キーボード、マウス等のキー入力I/F(インターフェース)4と、3Dプリンタやデータ記憶媒体等の外部装置とデータ通信するためのデータ入出力I/F(インターフェース)5と、液晶ディスプレイ等の表示デバイスである表示部6と、を備え、互いにバスを介して接続されている。
3Dプリンタ7は、汎用の3Dプリンタであり、立体物の3次元形状をポリゴンの集合で表現したポリゴンモデルである立体物造形用データを基に樹脂、石膏等の素材を加工して立体物を造形する立体物造形装置である。3Dプリンタ7は、データ処理部7aと出力部7bを有している。3Dプリンタ7のデータ処理部7aは、データ入出力I/F5に接続されており、データ入出力I/F5から受け取った立体物造形用データを基に、出力部7bが立体物を造形するようになっている。
図10では、立体物造形用データ出力規制装置100と3Dプリンタ7は分離した形態で示されているが、現在市販されている殆どの3Dプリンタ製品には立体物造形用データ出力規制装置100の構成要素である、CPU1、RAM2、記憶装置3、キー入力I/F4(汎用コンピュータ向けキーボード・マウスではなく、テンキーレベルの数種のボタン)、データ入出力I/F5、表示部6(数行の文字を表示可能な小型液晶パネルやタッチパネルを重畳させてキー入力I/F4を兼ねることも多い)も小規模ながら重複して備えている。従って、3Dプリンタ7自体が外部記憶媒体経由で立体物造形用データを直接受け取り、単独で立体物を造形する運用も可能になっている(特に民生用の3Dプリンタではこちらの形態の方が多い)。すなわち、図10に示した立体物造形システムを1つの筐体に収めて、“3Dプリンタ”という製品として流通することも多い。
図11は、本実施形態に係る立体物造形用データ出力規制装置の構成を示す機能ブロック図である。図11において、10はモデル度数分布算出手段、20は度数分布照合手段、30は対象モデル記憶手段、40は度数分布データベースである。
モデル度数分布算出手段10は、出力対象のポリゴンモデルである対象モデルに対して、対象モデル内のポリゴンにより形成された三角形であるポリゴン間三角形の外接円の半径とポリゴン間三角形の内接円の半径を算出し、算出結果である外接円の半径の度数分布である外接円分布と、内接円の半径の度数分布である内接円分布を算出する処理を行う。度数分布照合手段20は、対象モデルについて算出された外接円分布、内接円分布をそれぞれ、度数分布データベース40に登録されている規制画像の外接円分布、内接円分布と照合し、出力を規制すべきか否か、すなわち出力不適であるか出力適正であるかを判定する。
モデル度数分布算出手段10、度数分布照合手段20は、CPU1が、記憶装置3に記憶されているプログラムを実行することにより実現される。対象モデル記憶手段30は、出力を規制すべきか否かの判定対象となるポリゴンモデルである対象モデルを記憶した記憶手段であり、記憶装置3により実現される。ポリゴンモデルとは、ポリゴンの集合により3次元空間における所定の立体形状を表現したデータであり、3Dプリンタ等の立体物造形装置に立体物造形用データとして出力されるものである。本実施形態では、ポリゴンモデルのデータ形式としてSTL(Standard Triangulated Language)を採用している。
度数分布データベース40は、出力を規制すべき画像である規制画像に対して2種の度数分布として算出された外接円分布および内接円分布を記憶して、データベース化したものであり、記憶装置3により実現される。2種の度数分布である外接円分布および内接円分布は、規制画像の特徴を表現した特徴ベクトルとしての役割を果たすものとなる。すなわち、2種の度数分布により、元の規制画像の相違を識別可能であるが、元の規制画像を復元できるわけではない。これは、指紋(フィンガープリント)により個人の相違を識別可能であるが、人物の姿そのものを復元できるわけではないのと同様である。したがって、2種の度数分布は、著作物としての役割は果たさないが、2つの著作物の同一性を証明する、いわゆるフィンガープリントとしての役割も果たすことになる。度数分布データベース40には、外接円分布および内接円分布だけでなく、外接円分布および内接円分布の算出の基になった規制画像自体を登録しておくことも可能であるが、通常は、著作権の問題から規制画像自体は登録されていない。
図11に示した各構成手段は、現実には図10に示したように、コンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。すなわち、コンピュータが、専用のプログラムに従って各手段の内容を実行することになる。なお、本明細書において、コンピュータとは、CPU等の演算処理部を有し、データ処理が可能な装置を意味し、パーソナルコンピュータなどの汎用コンピュータだけでなく、製品としての“3Dプリンタ”に組み込まれたボードコンピュータも含む。
図10に示した記憶装置3には、CPU1を動作させ、コンピュータを、立体物造形用データ出力規制装置として機能させるための専用のプログラムが実装されている。この専用のプログラムを実行することにより、CPU1は、モデル度数分布算出手段10、度数分布照合手段20としての機能を実現することになる。また、記憶装置3は、対象モデル記憶手段30、度数分布データベース40として機能するだけでなく、立体物造形用データ出力規制装置としての処理に必要な様々なデータを記憶する。
図10に示したハードウェア構成において、コンピュータをモデル度数分布算出手段10として機能させるための専用のプログラムのみを、記憶装置3に実装しておくことにより、度数分布を算出するためのモデル度数分布算出装置を実現することもできる。モデル度数分布算出装置は、対象モデル記憶手段30から読み込んだ対象モデルを基に、2種の度数分布を算出して出力する。出力された度数分布は、別途、度数分布照合手段20、度数分布データベース40を備えた装置に入力され、照合および出力規制の判定を行うことができる。
<2.4.立体物造形用データ出力規制装置の処理動作>
<2.4.2.前処理>
次に、図10、図11に示した立体物造形用データ出力規制装置の処理動作について説明する。まず、上述のような、画像度数分布算出装置により、出力を規制すべき画像である規制画像から2種の度数分布を作成し、作成した度数分布を、度数分布データベース40に登録しておく。画像度数分布算出装置は、立体物造形用データ出力規制装置と別のコンピュータで実現する必要はなく、立体物造形用データ出力規制装置を実現するコンピュータに、画像度数分布算出装置を実現するためのプログラムを組み込んでおくこともできる。
<2.4.2.前処理>
次に、図10、図11に示した立体物造形用データ出力規制装置の処理動作について説明する。まず、上述のような、画像度数分布算出装置により、出力を規制すべき画像である規制画像から2種の度数分布を作成し、作成した度数分布を、度数分布データベース40に登録しておく。画像度数分布算出装置は、立体物造形用データ出力規制装置と別のコンピュータで実現する必要はなく、立体物造形用データ出力規制装置を実現するコンピュータに、画像度数分布算出装置を実現するためのプログラムを組み込んでおくこともできる。
さらに、規制画像から作成した度数分布だけでなく、規制対象とするポリゴンモデルである規制モデルを表現した度数分布を作成し、度数分布データベース40に登録しておくこともできる。この場合、規制モデルについて、2種の度数分布である外接円分布および内接円分布を作成する。ポリゴンモデルからの外接円分布および内接円分布の作成については、後述する立体物造形用データ出力規制装置における処理と同様にして行うことができる。規制モデルからの外接円分布および内接円分布の作成は、立体物造形用データ出力規制装置で行ってもよいし、別のコンピュータで同様のプログラムを実行することにより行ってもよい。作成された外接円分布および内接円分布は、度数分布データベース40に登録される。2次元データである規制画像から作成される度数分布と、3次元データである規制モデルから作成される度数分布は、同一の形式になるように作成される。これにより、後述する照合時において、規制画像と規制モデルのどちらについても、同様に照合を行うことが可能となる。
出力規制の対象は、銃砲・刀剣などの危険物だけでなく、キャラクターなどの著作物となることもある。いずれの場合においても、制作された画像やポリゴンモデルには著作権者が存在する著作物になる。したがって、著作物である画像やポリゴンモデルをデータベースに登録するためには、その行為自体に著作者の許諾が必要となる。画像については著作権者が明示されている法人である場合が多く、許諾を得ることが可能であるが、ポリゴンモデルについては個人など著作権者が不明なものも多く、許諾を得ることが困難である。外接円分布および内接円分布の形式により、元の画像やポリゴンモデルの相違を識別可能であるが、元の画像やポリゴンモデルを復元できるわけではない。これは、指紋(フィンガープリント)により個人の相違を識別可能であるが、人物の姿そのものを復元できるわけではないのと同様で、外接円分布および内接円分布の形式はフィンガープリントに相当し、著作物には該当しない。そこで、本実施形態のように、外接円分布および内接円分布の形式で登録することにより、著作者の許諾を必要とせずに、規制画像や規制モデルの特徴を記録したデータベースを構築することができる。ただし、規制画像については、著作者の許諾を得て商用利用できないレベルに解像度を落とした状態で規制画像自体も併せて登録し、外接円分布および内接円分布の形式で照合し適合した規制画像をヒトが目視で確認できるようにする運用をとることが望ましい。
<2.4.3.処理概要>
次に、図10、図11に示した立体物造形用データ出力規制装置の処理動作について説明する。図12は、本発明の一実施形態に係る立体物造形用データ出力規制装置の処理概要を示すフローチャートである。まず、モデル度数分布算出手段10が、ポリゴンモデルである対象モデルについて、2種の度数分布である外接円分布および内接円分布を算出する(ステップS100)。そして、算出された対象モデルの度数分布と、度数分布データベース40に登録された規制画像の度数分布との照合を行う(ステップS200)。
次に、図10、図11に示した立体物造形用データ出力規制装置の処理動作について説明する。図12は、本発明の一実施形態に係る立体物造形用データ出力規制装置の処理概要を示すフローチャートである。まず、モデル度数分布算出手段10が、ポリゴンモデルである対象モデルについて、2種の度数分布である外接円分布および内接円分布を算出する(ステップS100)。そして、算出された対象モデルの度数分布と、度数分布データベース40に登録された規制画像の度数分布との照合を行う(ステップS200)。
<2.5.モデル度数分布の算出処理>
<2.5.1.第1の手法>
まず、ステップS100のモデル度数分布の算出処理について説明する。モデル度数分布の算出処理としては、第1の手法と第2の手法の2通りが存在する。まず、第1の手法について説明する。図13は、第1の手法によるモデル度数分布の算出処理の詳細を示すフローチャートである。ここでは、対象モデルのポリゴン数N、ポリゴンを特定する変数i(i=0,・・・,N−1)とし、各ポリゴンiの頂点を(Xu(i),Yu(i),Zu(i))と定義されたものとする。uは頂点番号を示しており、本実施形態では、ポリゴンが三角形状であるため、u=0,1,2の3つの値をとる。したがって、例えばXu(i)は、X0(i)、X1(i)、X2(i)とも表記される。頂点を特定したポリゴンおよび法線ベクトルは、立体物造形装置である3Dプリンタによる出力に必要なものであり、法線ベクトルの方向が造形面の外側(材料から空中方向)を示す。法線ベクトルは、3Dプリンタに出力用のポリゴンモデルにおいては、各ポリゴンについて記録されているのが普通である。
<2.5.1.第1の手法>
まず、ステップS100のモデル度数分布の算出処理について説明する。モデル度数分布の算出処理としては、第1の手法と第2の手法の2通りが存在する。まず、第1の手法について説明する。図13は、第1の手法によるモデル度数分布の算出処理の詳細を示すフローチャートである。ここでは、対象モデルのポリゴン数N、ポリゴンを特定する変数i(i=0,・・・,N−1)とし、各ポリゴンiの頂点を(Xu(i),Yu(i),Zu(i))と定義されたものとする。uは頂点番号を示しており、本実施形態では、ポリゴンが三角形状であるため、u=0,1,2の3つの値をとる。したがって、例えばXu(i)は、X0(i)、X1(i)、X2(i)とも表記される。頂点を特定したポリゴンおよび法線ベクトルは、立体物造形装置である3Dプリンタによる出力に必要なものであり、法線ベクトルの方向が造形面の外側(材料から空中方向)を示す。法線ベクトルは、3Dプリンタに出力用のポリゴンモデルにおいては、各ポリゴンについて記録されているのが普通である。
モデル度数分布算出手段10は、まず、対象モデルを構成する各ポリゴンiの面積S(i)、N個のポリゴンの面積S(i)の総和である総面積Ssumを以下の〔数式17〕に従った処理を実行することにより算出する(ステップS601)。
〔数式17〕
Vx=[Y1(i)−Y0(i)][Z2(i)−Z0(i)]−[Z1(i)−Z0(i)][ Y2(i)−Y0(i)]
Vy=[Z1(i)−Z0(i)][X2(i)−X0(i)]−[X1(i)−X0(i)][ Z2(i)−Z0(i)]
Vz=[X1(i)−X0(i)][Y2(i)−Y0(i)]−[Y1(i)−Y0(i)][X2(i)−X0(i)]
S(i)=[Vx(i)2+Vy(i)2+Vz(i)2]1/2
Ssum=Σi=0,N-1S(i)
Vx=[Y1(i)−Y0(i)][Z2(i)−Z0(i)]−[Z1(i)−Z0(i)][ Y2(i)−Y0(i)]
Vy=[Z1(i)−Z0(i)][X2(i)−X0(i)]−[X1(i)−X0(i)][ Z2(i)−Z0(i)]
Vz=[X1(i)−X0(i)][Y2(i)−Y0(i)]−[Y1(i)−Y0(i)][X2(i)−X0(i)]
S(i)=[Vx(i)2+Vy(i)2+Vz(i)2]1/2
Ssum=Σi=0,N-1S(i)
上記〔数式17〕において、Σの添え字の“i=0,N−1”は、iが0からN−1の全ての整数をとる場合について、総和を求めることを示している。次に、対象モデルを構成する各ポリゴンについて、頂点の平均となる平均点を算出する(ステップS602)。具体的には、以下の〔数式18〕に従った処理を実行することにより、各ポリゴンiの平均点であるポリゴン平均点(Xc(i),Yc(i),Zc(i))を算出する。
〔数式18〕
Xc(i)={X0(i)+X1(i)+X2(i)}/3
Yc(i)={Y0(i)+Y1(i)+Y2(i)}/3
Zc(i)={Z0(i)+Z1(i)+Z2(i)}/3
Xc(i)={X0(i)+X1(i)+X2(i)}/3
Yc(i)={Y0(i)+Y1(i)+Y2(i)}/3
Zc(i)={Z0(i)+Z1(i)+Z2(i)}/3
上記〔数式18〕において、X0(i)、X1(i)、X2(i)はそれぞれXu(i)において、頂点番号u=0,1,2の場合を示し、Y0(i)、Y1(i)、Y2(i)はそれぞれYu(i)において、頂点番号u=0,1,2の場合を示し、Z0(i)、Z1(i)、Z2(i)はそれぞれZu(i)において、頂点番号u=0,1,2の場合を示している。上記〔数式18〕に示すように、各ポリゴンの平均点は、ポリゴンの各頂点の平均座標をもつ点として算出される。
次に、ポリゴンモデルを構成するポリゴンの集合を3つのグループに分け、各グループのポリゴンの順序を入れ替える(ステップS603)。3つのグループへの分け方としては、同数に分けることができれば、どのような手法を用いてもよい。本実施形態では、ポリゴンモデルのデータ配列における順序に基づき、3で除して余りが0となる順番のポリゴンの第1ポリゴングループと、3で除して余りが1となる順番のポリゴンの第2ポリゴングループと、3で除して余りが2となる順番のポリゴンの第3ポリゴングループに分けている。これにより、ポリゴンモデルを構成するN個のポリゴンは、N/3個ずつのグループに分けられることになる。
各グループのポリゴン数が同数になるように、元のポリゴン数Nの3の剰余が2の場合、先頭のポリゴン0を、最後尾のポリゴンN=ポリゴン0として重複してもたせ、全ポリゴン数がN+1個になるように修正する。また、元のポリゴン数Nの3の剰余が1の場合、先頭のポリゴン0および2番目のポリゴン1を、最後尾から2番目のポリゴンN=ポリゴン0、最後尾のポリゴンN+1=ポリゴン1として重複してもたせ、全ポリゴン数がN+2個になるように修正する。各グループのポリゴン数が同数になるように、ポリゴンを重複して追加し、全ポリゴン数がN+1個またはN+2個となった場合であっても、これをNとして置き換え、以下では、全ポリゴン数を3の倍数であるN個として説明していく。
3で除した余りによりグループ分けすることにより、3つの配列G1(f)=3f、G2(f)=3f+1、G3(f)=3f+2(f=0,・・・,N/3−1)が得られる。次に、各グループのポリゴンの配列の順序を入れ替える。順序の入れ替えは無作為に行われる。すなわち、シャッフルされる。ポリゴンの配列の順序を入れ替えることができれば、どのような手法を用いてもよいが、本実施形態では、以下のような手法によりポリゴンの配列の順序を入れ替えている。
まず、3種類の乱数配列R1(k)、R2(k)、R3(k)を作成する。具体的には、k=0,・・・,N/3−1について、R1(k)=kに初期化する。続いて、0≦Rnd(k)<1の範囲で実数値の一様乱数をN/3回発生させ、1回発生させるごとに、pp=Rnd(k)・N/3なる演算で0≦pp≦N/3の整数値を算出し、R1(k)の値とR1(pp)の値を交換する処理をN/3回繰り返す。繰り返しの結果、N/3個の連続する整数をランダムに入れ替えた乱数配列R1(k)が得られる。これにより、例えば、第1ポリゴングループのポリゴンの配列G1(f)に対して、f=R1(k)で与え、G1(R1(k))=3R1(k)(k=0,・・・,N/3−1)のように、順序が入れ替えられた配列を得ることができる。第2の乱数配列R2(k)に対しては、R2(k)=R1(N/3−1−k)で与える。すなわち、第1の乱数配列R1(k)の先頭から末尾への順序を逆にしたものが乱数配列R2(k)である。乱数配列R1(k)、乱数配列R2(k)は、互いに他方の反転乱数配列となる。また、乱数配列R3(k)=kとし乱数にせず、k=0,・・・,N/3−1なるシーケンシャルな値に設定する。このように、ポリゴンの配列の順序を入れ替えることにより、各グループのポリゴンの配列順序を、3次元空間である対象モデル内のポリゴンからランダムに設定することができ、ランダムなポリゴン上の点の組み合わせで算出されたポリゴン間三角形の外接円の半径および内接円の半径に基づいて、外接円分布および内接円分布を求めることが可能となる。
このように3つのグループにポリゴンを分類するのは、3つのポリゴンをランダムに選択してポリゴン間三角形を作成する際、互いに重複しないようにするためである。ポリゴンモデルを構成する全てのポリゴンの組み合わせでポリゴン間三角形を順次構成することも可能であるが、ポリゴン数が多いと組み合わせが膨大な数になり実用的ではない。また、グループ分けをせず、ポリゴンモデルを構成する全てのポリゴンよりランダムに3つのポリゴンを選択してポリゴン間三角形を構成する方法も考えられるが、ある確率で同一のポリゴン間三角形が発生してしまう。ランダムに抽出されるポリゴン間三角形のサンプル数が十分に多くないと、偏った度数分布が算出される可能性がある。本実施形態のように、3つのグループに分類し、各グループから1つずつポリゴンを選択して計3つ選択するようにすることにより、ポリゴン間三角形を形成するための3つのポリゴンを互いに重複することなくランダム性をもたせながら効率的に選択することが可能になる。
次に、初期設定を行う(ステップS604)。具体的には、算出する外接円分布、内接円分布の初期化、ループカウンタの初期化を行う。本実施形態で算出される外接円分布は、ポリゴンの面積を加重したポリゴン間三角形の外接円の半径の分布であり、要素数をMDとし、各要素md(md=0,・・・,MD−1)の度数をHd(md)と表す。Hd(md)は、所定数MDの要素で構成される1次元配列である。このような1次元の配列を準備した後、モデル度数分布算出手段10は、初期値をHd(md)=0と設定する。本実施形態で算出される内接円分布は、ポリゴンの面積を加重したポリゴン間三角形の内接円の半径の分布であり、要素数をMAとし、各要素ma(ma=0,・・・,MA−1)の度数をHa(ma)と表す。要素数MAは、上記要素数MDと同一であってもよい。Ha(ma)は、所定数MAの要素で構成される1次元配列である。このような1次元の配列を準備した後、モデル度数分布算出手段10は、初期値をHa(ma)=0と設定する。ループカウンタLCについては、初期値LC=0と設定する。
次に、モデル度数分布算出手段10は、3つのグループ間における各ポリゴン平均点を頂点とするポリゴン間三角形の作成を行う(ステップS605)。3つのポリゴンを用いてポリゴン間三角形を作成する際、ポリゴン平均点に限らず、ポリゴン上の点としては、様々な点を用いることができる。しかし、ポリゴン平均点が、1つのポリゴンを代表する点として好ましいため、本実施形態では、ポリゴン平均点を頂点としてポリゴン間三角形を作成する。ポリゴン上の点とは、ポリゴンを構成する頂点を全て通る面上であって、これらの頂点に囲まれる範囲に位置する点を意味する。
ステップS605においては、ポリゴン間三角形の数がポリゴン総数Nと同一になるように、グループ間の組み合わせを変えて3通り作成する。具体的には、第1ポリゴングループのf(f=0,・・・,N/3−1)番目のポリゴンG1(f)に対して乱数配列R1(k)によりランダムに順番を入れ替えたG1(R1(k))の平均点(Xc(G1(R1(k))),Yc(G1(R1(k))),Zc(G1(R1(k))))から第2ポリゴングループの対応する順序fのポリゴンG2(f)に対して乱数配列R2(k)によりランダムに順番を入れ替えたG2(R2(k))の平均点(Xc(G2(R2(k))),Yc(G2(R2(k))),Zc(G2(R2(k))))、第3ポリゴングループの対応する順序fのポリゴンG3(f)に対して乱数配列R3(k)によりランダムに順番を入れ替えたG3(R3(k))の平均点(Xc(G3(R3(k))),Yc(G3(R3(k))),Zc(G3(R3(k))))の3点を頂点とする第1ポリゴン間三角形をN/3個作成する。
同様に、第2ポリゴングループのf番目のポリゴンG2(f)に対して乱数配列R1(k)によりランダムに順番を入れ替えたG2(R1(k))の平均点(Xc(G2(R1(k))),Yc(G2(R1(k))),Zc(G2(R1(k))))、第3ポリゴングループの対応する順序fのポリゴンG3(f)に対して乱数配列R2(k)によりランダムに順番を入れ替えたG3(R2(k))の平均点(Xc(G3(R2(k))),Yc(G3(R2(k))),Zc(G3(R2(k))))、第1ポリゴングループの対応する順序fのポリゴンG1(f)に対して乱数配列R3(k)によりランダムに順番を入れ替えたG1(R3(k))の平均点(Xc(G1(R3(k))),Yc(G1(R3(k))),Zc(G1(R3(k))))の3点を頂点とする第2ポリゴン間三角形をN/3個作成する。
さらに、第3ポリゴングループのf番目のポリゴンG3(f)に対して乱数配列R1(k)によりランダムに順番を入れ替えたG3(R1(k))の平均点(Xc(G3(R1(k))),Yc(G3(R1(k))),Zc(G3(R1(k))))、第1ポリゴングループの対応する順序fのポリゴンG1(f)に対して乱数配列R2(k)によりランダムに順番を入れ替えたG1(R2(k))の平均点(Xc(G1(R2(k))),Yc(G1(R2(k))),Zc(G1(R2(k))))、第2ポリゴングループの対応する順序fのポリゴンG2(f)に対して乱数配列R3(k)によりランダムに順番を入れ替えたG2(R3(k))の平均点(Xc(G2(R3(k))),Yc(G2(R3(k))),Zc(G2(R3(k))))の3点を頂点とする第3ポリゴン間三角形をN/3個作成する。
次に、モデル度数分布算出手段10は、各ポリゴン平均点を頂点とするポリゴン間三角形の外接円の半径の算出を行う(ステップS606)。具体的には、まず、以下の〔数式19〕に従った処理を実行することにより、k=0,・・・,N/3−1の範囲で、第1ポリゴン間三角形の面積S(k)を算出する。
〔数式19〕
D12=[[Xc(G2(R2(k)))−Xc(G1(R1(k)))]2+[Yc(G2(R2(k)))−Yc(G1(R1(k)))]2]1/2
D23=[[Xc(G3(R3(k)))−Xc(G2(R2(k)))]2+[Yc(G3(R3(k)))−Yc(G2(R2(k)))]2]1/2
D31=[[Xc(G1(R1(k)))−Xc(G3(R3(k)))]2+[Yc(G1(R1(k)))−Yc(G3(R3(k)))]2]1/2
D=(D12+D23+D31)/2
S(k)=[D・(D−D12)・(D−D23)・(D−D31)]1/2
D12=[[Xc(G2(R2(k)))−Xc(G1(R1(k)))]2+[Yc(G2(R2(k)))−Yc(G1(R1(k)))]2]1/2
D23=[[Xc(G3(R3(k)))−Xc(G2(R2(k)))]2+[Yc(G3(R3(k)))−Yc(G2(R2(k)))]2]1/2
D31=[[Xc(G1(R1(k)))−Xc(G3(R3(k)))]2+[Yc(G1(R1(k)))−Yc(G3(R3(k)))]2]1/2
D=(D12+D23+D31)/2
S(k)=[D・(D−D12)・(D−D23)・(D−D31)]1/2
そして、以下の〔数式20〕に従った処理を実行することにより、k=0,・・・,N/3−1の範囲で、第1ポリゴン間三角形の外接円の半径D(k)を算出する。
〔数式20〕
D(k)=D12・D23・D31/(4・S(k))
D(k)=D12・D23・D31/(4・S(k))
モデル度数分布算出手段10は、同様に、以下の〔数式21〕に従った処理を実行することにより、k=0,・・・,N/3−1の範囲で、第2ポリゴン間三角形の面積S(k)を算出する。
〔数式21〕
D12=[[Xc(G3(R2(k)))−Xc(G2(R1(k)))]2+[Yc(G3(R2(k)))−Yc(G2(R1(k)))]2]1/2
D23=[[Xe(G1(R3(k)))−Xc(G3(R2(k)))]2+[Yc(G1(R3(k)))−Yc(G3(R2(k)))]2]1/2
D31=[[Xc(G2(R1(k)))−Xc(G1(R3(k)))]2+[Yc(G2(R1(k)))−Yc(G1(R3(k)))]2]1/2
D=(D12+D23+D31)/2
S(k)=[D・(D−D12)・(D−D23)・(D−D31)]1/2
D12=[[Xc(G3(R2(k)))−Xc(G2(R1(k)))]2+[Yc(G3(R2(k)))−Yc(G2(R1(k)))]2]1/2
D23=[[Xe(G1(R3(k)))−Xc(G3(R2(k)))]2+[Yc(G1(R3(k)))−Yc(G3(R2(k)))]2]1/2
D31=[[Xc(G2(R1(k)))−Xc(G1(R3(k)))]2+[Yc(G2(R1(k)))−Yc(G1(R3(k)))]2]1/2
D=(D12+D23+D31)/2
S(k)=[D・(D−D12)・(D−D23)・(D−D31)]1/2
そして、上記〔数式20〕に従った処理を実行することにより、k=0,・・・,N/3−1の範囲で、第2ポリゴン間三角形の外接円の半径D(k)を算出する。
モデル度数分布算出手段10は、同様に、以下の〔数式22〕に従った処理を実行することにより、k=0,・・・,N/3−1の範囲で、第3ポリゴン間三角形の面積S(k)を算出する。
〔数式22〕
D12=[[Xc(G1(R2(k)))−Xc(G3(R1(k)))]2+[Yc(G1(R2(k)))−Yc(G3(R1(k)))]2]1/2
D23=[[Xc(G2(R3(k)))−Xc(G1(R2(k)))]2+[Yc(G2(R3(k)))−Yc(G1(R2(k)))]2]1/2
D31=[[Xc(G3(R1(k)))−Xc(G2(R3(k)))]2+[Yc(G3(R1(k)))−Yc(G2(R3(k)))]2]1/2
D=(D12+D23+D31)/2
S(k)=[D・(D−D12)・(D−D23)・(D−D31)]1/2
D12=[[Xc(G1(R2(k)))−Xc(G3(R1(k)))]2+[Yc(G1(R2(k)))−Yc(G3(R1(k)))]2]1/2
D23=[[Xc(G2(R3(k)))−Xc(G1(R2(k)))]2+[Yc(G2(R3(k)))−Yc(G1(R2(k)))]2]1/2
D31=[[Xc(G3(R1(k)))−Xc(G2(R3(k)))]2+[Yc(G3(R1(k)))−Yc(G2(R3(k)))]2]1/2
D=(D12+D23+D31)/2
S(k)=[D・(D−D12)・(D−D23)・(D−D31)]1/2
そして、上記〔数式20〕に従った処理を実行することにより、k=0,・・・,N/3−1の範囲で、第3ポリゴン間三角形の外接円の半径D(k)を算出する。
上記〔数式19〕〔数式21〕〔数式22〕においては、三角形の各辺の長さD12、D23、D31が、以下の〔数式23〕に示した6条件全てを満たした三角形のみ、外接円半径の度数分布の対象とする。したがって、〔数式23〕に示した6条件のうち1つでも満たさなかった三角形については、外接円半径の度数分布の対象としない。下記〔数式23〕に示した6条件を満たさない場合は、外接円の半径D(k)が極端に大きくなり、精度のよい度数分布を求めることができないためである。
〔数式23〕
D12>0
D23>0
D31>0
|D12−D23−D31|/D12>0.1
|D23−D31−D12|/D23>0.1
|D31−D12−D23|/D31>0.1
D12>0
D23>0
D31>0
|D12−D23−D31|/D12>0.1
|D23−D31−D12|/D23>0.1
|D31−D12−D23|/D31>0.1
上記〔数式23〕に示すように、6条件のうち前半3条件は、全ての辺が0でない正の値をとること、すなわち三角形を形成することを意味する。6条件のうち後半3条件は、作成される三角形が極端に偏平な形状にならないことを意味する。三角形が極端に偏平な形状になると、外接円の半径が無限大に近付き、精度のよい度数分布が得られないことになる。上記〔数式23〕に示した6条件を満たさない場合は、三角形を形成しないか(いずれかの辺が0の場合)、外接円の半径D(k)が極端に大きくなり、精度のよい度数分布を求めることができないためである。
上記〔数式20〕により算出されたN/3個の第1ポリゴン間三角形の外接円の半径と、N/3個の第2ポリゴン間三角形の外接円の半径と、N/3個の第3ポリゴン間三角形の外接円の半径の3種のN/3個の配列D(k)に対し、第2ポリゴン間三角形のN/3個の配列にはN/3だけオフセットを加え、第3ポリゴン間三角形のN/3個の配列には2N/3だけオフセットを加えた上で、通し番号iでまとめて、その範囲をi=0,・・・,N−1に設定し直してN個のポリゴン間三角形の外接円の半径D(i)(i=0,・・・,N−1)を得る。そして、i=0,・・・,N−1のN個の外接円の半径D(i)のうち最大のものを最大外接円半径Dmaxとする。
次に、モデル度数分布算出手段10は、ポリゴン間三角形の内接円の半径の算出を行う(ステップS607)。具体的には、以下の〔数式24〕に従った処理を実行することにより、k=0,・・・,N/3−1の範囲で第1ポリゴン間三角形の内接円の半径A(k)を算出する。
〔数式24〕
A(k)=2・S(k)/(D12+D23+D31)
A(k)=2・S(k)/(D12+D23+D31)
上記〔数式24〕において、D12、D23、D31およびS(k)は、上記〔数式19〕〔数式21〕〔数式22〕に従った処理により算出された第1ポリゴン間三角形、第2ポリゴン間三角形、第3ポリゴン間三角形それぞれの三辺の長さと面積である。なお、〔数式23〕に示した6条件のうち1つでも満たさなかった三角形については、内接円半径の度数分布の対象としない。
上記〔数式24〕により算出されたN/3個の第1ポリゴン間三角形の内接円の半径A(k)と、N/3個の第2ポリゴン間三角形の内接円の半径A(k)と、N/3個の第3ポリゴン間三角形の内接円の半径A(k)の3種のN/3個の配列A(k)に対し、第2ポリゴン間三角形についてのN/3個の配列にはN/3だけオフセットを加え、第3ポリゴン間三角形についてのN/3個の配列には2N/3だけオフセットを加えた上で、通し番号iの範囲をi=0,・・・,N−1に設定し直してN個のポリゴン間三角形の内接円の半径A(i)(i=0,・・・,N−1)を得る。そして、i=0,・・・,N−1のN個の内接円半径A(i)のうち最大のものを最大内接円半径Amaxとする。
次に、モデル度数分布算出手段10は、ポリゴン間三角形の外接円の半径の度数分布である外接円分布を算出する(ステップS608)。具体的には、以下の〔数式25〕に従った処理を実行することにより、要素mdの度数Hd(md)を、i=0,・・・,N−1について、算出する。
〔数式25〕
Dmax・md/MD≦D(i)<Dmax・(md+1)/MDならば、
Hd(md)←Hd(md)+S
0≦i≦N/3−1の場合
S=[σ(G1(R1(i)))+σ(G2(R2(i)))+σ(G3(R3(i)))]/3
N/3≦i≦2N/3−1の場合
S=[σ(G2(R1(i)))+σ(G3(R2(i)))+σ(G1(R3(i)))] /3
2N/3≦i≦N−1の場合
S=[σ(G3(R1(i)))+σ(G1(R2(i)))+σ(G2(R3(i)))]/3
Dmax・md/MD≦D(i)<Dmax・(md+1)/MDならば、
Hd(md)←Hd(md)+S
0≦i≦N/3−1の場合
S=[σ(G1(R1(i)))+σ(G2(R2(i)))+σ(G3(R3(i)))]/3
N/3≦i≦2N/3−1の場合
S=[σ(G2(R1(i)))+σ(G3(R2(i)))+σ(G1(R3(i)))] /3
2N/3≦i≦N−1の場合
S=[σ(G3(R1(i)))+σ(G1(R2(i)))+σ(G2(R3(i)))]/3
上記〔数式25〕において、σ(p)は、3つのグループに分類されたポリゴンpの面積である。上記〔数式25〕は、ポリゴン間三角形の外接円半径D(i)が、最大外接円半径Dmaxにmd/MDを乗じた値以上で、(md+1)/MDを乗じた値より小さい場合に、ポリゴン間三角形の頂点をポリゴン平均点として有する3つのポリゴンの平均面積SをHd(md)に加算することを意味している。すなわち、外接円の半径の最大値Dmaxの範囲を所定数mdに均等に分割した上で、各外接円の半径D(i)を外接円の半径D(i)の値に基づいて所定数mdのいずれかの要素に割り当てている。
上記〔数式25〕に従った処理を、N個のポリゴン間三角形について実行することにより、外接円分布Hd(md)(md=0,・・・,MD−1)が算出される。各要素には、単なる頻度ではなく、3つのポリゴンの平均面積が加算されているため、外接円分布Hd(md)は、ポリゴンの平均面積が加重された外接円分布を示すことになる。ポリゴンの平均面積でなく単に1を加算するようにすることも可能であるが、その場合、ポリゴンの平均面積が加味されない外接円分布となり、同一のポリゴンモデルに対してポリゴン構成が粗い場合と細かい場合とで、外接円分布に顕著な差が生じてしまう。そこで、本実施形態では、外接円分布算出時にポリゴンの平均面積を加算するようにしている。面積でなく単に1を加算するようにした場合は、ある要素mdに該当する数Hd(md)を計数することにより、外接円分布を算出することになる。
次に、モデル度数分布算出手段10は、各ポリゴン間三角形の内接円の半径の度数分布である内接円分布を算出する(ステップS609)。具体的には、以下の〔数式26〕に従った処理を実行することにより、要素maの度数Ha(ma)を、i=0,・・・,N−1について、算出する。
〔数式26〕
Dmax・ma/2MA≦A(i)<Dmax・(ma+1)/2MAならば、
Ha(ma)←Ha(ma)+S
Dmax・ma/2MA≦A(i)<Dmax・(ma+1)/2MAならば、
Ha(ma)←Ha(ma)+S
上記〔数式26〕における、3つのポリゴンの平均面積Sについても、上記〔数式25〕に従った処理により算出したものを用いる。上記〔数式26〕は、ポリゴン間三角形の内接円の半径A(i)が、最大外接円半径Dmaxにma/2MAを乗じた値以上で、(ma+1)/2MAを乗じた値より小さい場合に、ポリゴン間三角形の頂点を平均点として有する3つのポリゴンの平均面積SをHa(ma)に加算することを意味している。これは、最大外接円半径Dmaxの半分の長さであるDmax/2にma/MAを乗じた値以上で、(ma+1)/MAを乗じた値より小さい場合に、三角形の頂点を平均点として有する3つのポリゴンの平均面積SをHa(ma)に加算することと同じである。
結局、上記〔数式26〕に従った処理を実行することにより、モデル度数分布算出手段10は、所定数MAの要素で構成される1次元の配列を準備し、算出された外接円の半径の最大値(最大外接円半径Dmax)の50%の値で正規化された範囲を、所定数MAに均等に分割した上で、各内接円の半径A(i)を、その値に基づいて所定数MAのいずれかの要素maに割り当て、要素maに該当する数を計数することにより、内接円分布を算出している。
外接円半径や内接円半径はポリゴンモデルのスケールに依存するため、横軸を最大値の範囲に正規化して分布を作成すると、スケールに依存しない分布ができる。この時、外接円半径と内接円半径とで異なる最大値で独立して正規化した分布を作成すると、外接円半径と内接円半径との間のスケールにも依存しない分布ができ、形状変形に対するロバストが強くなる反面、形状識別性が弱くなる。本発明では、内接円半径も外接円半径と同一の基準値である最大外接円半径を用いて正規化した分布を作成するようにしたため、外接円半径と内接円半径との間のスケール比が維持された分布ができ、外接円半径と内接円半径とで異なる最大値で独立して正規化した場合よりも、分布の広がりが狭くシャープになり、形状識別性が高くなる。実際には、内接円半径は外接円半径の最大値(最大外接円半径)の1/2(50%)以上の値はとらないため、最大値の1/2の範囲で正規化するようにする。本実施形態では、上記〔数式26〕に示したように、最大外接円半径Dmaxの1/2の長さであるDmax/2で正規化している。正規化の範囲は、適宜設定することが可能であるが、外接円半径の最大値の35%〜50%、すなわち、7/20〜10/20(1/2)であることが好ましい。35%未満の場合は、内接円半径が要素ma(スケール)の最大値(外接円半径の最大値の35%)を超える割合が増えて分布が要素maの最大値に集中してしまい、形状を正確に反映しなくなる。また、50%を超える場合は、要素maの最大値側の空白が大きい分布ができてしまうためである。
上記〔数式26〕に従った処理を、N個のポリゴン間三角形について実行することにより、内接円分布Ha(ma)(ma=0,・・・,MA−1)が算出される。各要素には、単なる頻度ではなく、ポリゴンの平均面積が加算されているため、内接円分布Ha(ma)は、ポリゴンの平均面積が加重された内接円分布を示すことになる。ポリゴンの平均面積でなく単に1を加算するようにすることも可能であるが、その場合、ポリゴンの平均面積が加味されない内接円分布となり、同一のポリゴンモデルに対してポリゴン構成が粗い場合と細かい場合とで、内接円分布に顕著な差が生じてしまう。そこで、本実施形態では、内接円分布算出時にポリゴンの平均面積を加算するようにしている。面積でなく単に1を加算するようにした場合は、ある要素maに該当する数Ha(ma)を計数することにより、内接円分布を算出することになる。
外接円分布および内接円分布が算出されたら、次に、ループカウンタLCが規定値以上であるかどうかを判定する(ステップS610)。判定の結果、ループカウンタLCが規定値未満である場合は、2つのグループの配列を1だけずらす処理を行う(ステップS611)。例えば、第1グループの順序を固定する場合、本実施形態では、以下の〔数式27〕に従った処理を実行することにより、第2ポリゴングループ、第3ポリゴングループの2つのグループに用いる乱数配列R2(k)、乱数配列R3(k)の順序をずらしている。
〔数式27〕
Ro=R2(0)、Ro3=R3(0)とし、
k=0,・・・,N/3−2に対して、
R2(k)←R2(k+1)、R3(k)←R3(k+1)を繰り返し、
R2(N/3−1)=Ro、R3(N/3−1)=Ro3とする。
Ro=R2(0)、Ro3=R3(0)とし、
k=0,・・・,N/3−2に対して、
R2(k)←R2(k+1)、R3(k)←R3(k+1)を繰り返し、
R2(N/3−1)=Ro、R3(N/3−1)=Ro3とする。
第2ポリゴングループの順序を固定する場合、第3ポリゴングループの順序を固定する場合については、グループの関係を変えて、〔数式27〕に従った処理を実行することにより行われる。併せて、ループカウンタLCをインクリメント(LC←LC+1)する処理も行う。既に算出された度数分布が存在する場合は、その度数分布の各要素について、各要素に該当する度数の値を加算する。ステップS611において、2つのグループの配列をずらした後、2つのグループともう1つのグループのポリゴンの組み合わせを1回目とは変えて、ステップS605〜ステップS609の処理を実行し、外接円分布および内接円分布を算出する。ステップS605〜ステップS609の外接円分布および内接円分布の算出処理は、規定値として設定された所定の回数だけ繰り返される。規定値としては、適宜設定することが可能であるが、ポリゴン総数N=10000の場合、10程度である。
すなわち、外接円分布および内接円分布を1回算出するごとに、3つのグループのうち2つのグループ内のポリゴンの順序を変化させて、外接円分布および内接円分布を改めて算出する処理を繰り返し行うことになる。ループカウンタLCが規定値に達した場合、ステップS610において、ループカウンタLCが規定値以上であると判定されるため、2種の度数分布の正規化を行う(ステップS612)。
具体的には、上記〔数式25〕で算出されたHd(md)に、更に100/{Ssum・LC}を乗じてHd(md)と置き換えることにより、単位を面積率[%]に正規化している。すなわち、ポリゴンの面積の総和値Ssumとループ回数LCの乗算値により、各要素の値Hd(md)を除算している。これにより、ポリゴンの面積の総和値が異なる、即ちスケールが異なるポリゴンモデルであっても同一スケールの外接円分布に変換され、同一スケール基準のポリゴンモデルとして判定が可能になる。また、ループ回数LCで除算していることになるため、ループ回数分の平均値が得られることになる。
また、上記〔数式26〕で算出されたHa(ma)に、更に100/{Ssum・LC}を乗じてHa(ma)と置き換えることにより、単位を面積率[%]に正規化している。すなわち、ポリゴンの面積の総和値Ssumとループ回数LCの乗算値により、各要素の値Ha(ma)を除算している。これにより、ポリゴンの面積の総和値が異なる、即ちスケールが異なるポリゴンモデルであっても同一スケールの内接円分布に変換され、同一スケール基準のポリゴンモデルとして判定が可能になる。また、ループ回数LCで除算していることになるため、ループ回数分の平均値が得られることになる。
本実施形態では、ポリゴン間三角形の外接円の半径と、ポリゴン間三角形の内接円の半径の算出に際し、各ポリゴンの平均点を3つの頂点とするポリゴン間三角形を作成するようにした。ポリゴン間三角形の頂点は、ポリゴンの各頂点の平均点とすることが好ましいが、平均点以外のポリゴン上の所定の点同士を結んだポリゴン間三角形とすることも可能である。ポリゴン上の所定の点としては、例えば、ポリゴンを構成するいずれかの頂点、ポリゴンの重心点、ポリゴンの頂点のxyz座標別の最大値と最小値の丁度中間となる値をもつ点、等を用いることができる。
<2.5.2.第2の手法>
次に、第2の手法について説明する。図14は、第2の手法による度数分布の算出処理の詳細を示すフローチャートである。第1の手法と同様の処理については、同一符号を付して説明を省略する。第2の手法においても、ステップS601〜ステップS609までは、第1の手法と同様に行われる。そして、第1の手法のステップS612と同様に、2種の度数分布の正規化を行う(ステップS612)。第2の手法では、2種の度数分布の算出後、強制的に正規化を行う。具体的には、上記〔数式25〕で算出されたHd(md)に、更に100/Ssumを乗じてHd(md)と置き換えることにより、単位を面積率[%]に正規化している。また、上記〔数式26〕で算出されたHa(ma)に、更に100/Ssumを乗じてHa(ma)と置き換えることにより、単位を面積率[%]に正規化している。第1の手法とは異なり、ループカウンタLCによる除算は行わない。
次に、第2の手法について説明する。図14は、第2の手法による度数分布の算出処理の詳細を示すフローチャートである。第1の手法と同様の処理については、同一符号を付して説明を省略する。第2の手法においても、ステップS601〜ステップS609までは、第1の手法と同様に行われる。そして、第1の手法のステップS612と同様に、2種の度数分布の正規化を行う(ステップS612)。第2の手法では、2種の度数分布の算出後、強制的に正規化を行う。具体的には、上記〔数式25〕で算出されたHd(md)に、更に100/Ssumを乗じてHd(md)と置き換えることにより、単位を面積率[%]に正規化している。また、上記〔数式26〕で算出されたHa(ma)に、更に100/Ssumを乗じてHa(ma)と置き換えることにより、単位を面積率[%]に正規化している。第1の手法とは異なり、ループカウンタLCによる除算は行わない。
外接円分布および内接円分布の正規化が行われたら、次に、ループカウンタLCが1以上であるかどうかを判定する(ステップS621)。これは、度数分布の算出が初回であるか否かの判定を行っている。ループカウンタLCが1未満である場合は、度数分布の算出が初回であることを意味するので、2つのグループの配列を1だけずらす処理を行う(ステップS611)。具体的には、第1の手法のステップS611と同様に、上記〔数式27〕に従った処理を実行することにより、配列R1(k)、配列R2(k)、R3(k)のうち2つの配列の順序をずらしている。
ステップS611において、2つのグループの配列をずらした後、2つのグループともう1つのグループのポリゴンの組み合わせを1回目とは変えて、ステップS605〜ステップS609、S612、S621の処理を実行し、外接円分布および内接円分布の正規化を行う。すなわち、外接円分布および内接円分布を1回算出するごとに、3つのグループのうち2つのグループ内のポリゴンの順序を変化させて、外接円分布および内接円分布を改めて算出する処理を繰り返し行う。2回目以降では、ステップS621において、ループカウンタLCが1以上と判定されるため、直前の外接円分布および内接円分布との比較を行う(ステップS622)。まず、以下の〔数式28〕に従った処理を実行することにより、算出された外接円分布と直前の外接円分布のユークリッド距離DD2を算出する。ユークリッド距離とは、各要素の度数同士の差分の絶対値を2乗した値で与えられるユークリッド空間上の距離である。ユークリッド距離DD2は、MD次元ユークリッド空間内の2点の距離として求められる。
〔数式28〕
DD2=Σmd=0,MD-1[{Hd(md)−Hdp(md)}2/MD]1/2
DD2=Σmd=0,MD-1[{Hd(md)−Hdp(md)}2/MD]1/2
上記〔数式28〕において、Σの添え字の“md=0,MD−1”は、mdが0からMD−1の全ての整数をとる場合について、後続の[・・・]1/2の総和を求めることを示している。また、Hdp(md)は、直前の外接円分布を示している。
続いて、以下の〔数式29〕に従った処理を実行することにより、算出された内接円分布と直前の内接円分布のユークリッド距離DA2を算出する。ユークリッド距離DA2は、MA次元ユークリッド空間内の2点の距離として求められる。
〔数式29〕
DA2=Σma=0,MA-1[{Ha(ma)−Hap(ma)}2/MA]1/2
DA2=Σma=0,MA-1[{Ha(ma)−Hap(ma)}2/MA]1/2
上記〔数式29〕において、Σの添え字の“ma=0,MA−1”は、maが0からMA−1の全ての整数をとる場合について、後続の[・・・]1/2の総和を求めることを示している。また、Hap(ma)は、直前の内接円分布を示している。
次に、モデル度数分布算出手段10は、ステップS622において算出された外接円分布、内接円分布のユークリッド距離と、それぞれの判定しきい値との比較を行う(ステップS623)。具体的には、ユークリッド距離DD2、DA2が判定しきい値よりともに小さい場合は、飽和状態と判定し、ユークリッド距離DD2、DA2のいずれか一方が判定しきい値以上である場合は、生成途上と判定する。判定しきい値としては、任意に設定可能であるが、ここでは、0.05としてある。
ステップS623において飽和状態と判定された場合、すなわち両者に類似性が認められる場合には、モデル度数分布算出手段10は、最後に算出された外接円分布および内接円分布を、正式に2種の度数分布とすることを決定する(ステップS624)。すなわち、算出直後の外接円分布および内接円分布と、その直前に得られた外接円分布および内接円分布を比較し、比較の結果で類似性が認められる場合に、算出直後の外接円分布および内接円分布を、照合対象の外接円分布および内接円分布とする。
ステップS623において生成途上と判定された場合には、2つのグループの配列を1だけずらす処理を行った後(ステップS611)、ステップS605〜ステップS609、S612、S621、S622の処理を繰り返し実行する。
対象モデル(3Dポリゴンモデル)から得られた外接円分布と内接円分布における外接円と内接円を図15に示す。図15は、ポリゴンが三角形状の場合のポリゴンモデルを示している。ポリゴンモデル上から選択された3つのポリゴンについて、それぞれのポリゴンの頂点の平均座標をもつ平均点を結ぶことによりポリゴン間三角形が作成される。図15(a)と図15(b)のポリゴンモデルおよび三角形は同じものである。そして、ポリゴン間三角形の外接円と内接円を求める。図15(a)は、ポリゴン間三角形とその外接円と半径の関係を示し、図15(b)は、ポリゴン間三角形とその内接円と半径の関係を示している。図15(a)(b)において、下向きの矢印は、それぞれ外接円の半径、内接円の半径を示している。
一般に、ポリゴンモデルが球体に限りなく近い形状の場合、ランダムに選択された3つのポリゴンの中心を結ぶ三角形の外接円は、当該球体を3つの中心で形成される平面で切断したときの円になる。即ち、球体の場合、外接円半径は当該球体の半径に一致する場合が多く、外接円分布では球の半径に相当する箇所にピークが1ヶ所に現れる形態になる。ただし、ポリゴンの密度が粗くなって多面体に近づくにつれ、外接円分布は外接円半径が短い方に広がり、ポリゴンモデルが球体から逸脱するにつれ、外接円分布は複雑な形態になる。そのため、外接円半径を用いた外接円分布は3D形状を識別するのに極めて有効である。これに対して、内接円半径はポリゴンモデルが球体の場合でも種々の値をもち、内接円分布では広範に広がった形態になるため、外接円分布に比べ3D形状の改変に対するロバスト性が高い反面、形状の識別性は弱くなる。そこで、本発明では、外接円分布と内接円分布の横軸の半径のスケールを所定の比率に維持するようにした。そうすると、内接円分布が半径0の方向に局所的に偏るようになり、内接円分布の識別性が改善される。
<2.6.度数分布の照合処理>
次に、ステップS200の度数分布の照合処理について説明する。図16は、度数分布の照合処理を示すフローチャートである。まず、度数分布照合手段20は、度数分布データベース40に記憶されているRE個のレコードの中からレコードre(re=0,・・・,RE−1)に登録されている度数分布を抽出する(ステップS710)。度数分布として、外接円分布Hdo(re,md)(md=0,・・・,MD−1)、内接円分布Hao(re,ma)(ma=0,・・・,MA−1)を抽出する。
次に、ステップS200の度数分布の照合処理について説明する。図16は、度数分布の照合処理を示すフローチャートである。まず、度数分布照合手段20は、度数分布データベース40に記憶されているRE個のレコードの中からレコードre(re=0,・・・,RE−1)に登録されている度数分布を抽出する(ステップS710)。度数分布として、外接円分布Hdo(re,md)(md=0,・・・,MD−1)、内接円分布Hao(re,ma)(ma=0,・・・,MA−1)を抽出する。
次に、度数分布照合手段20は、対象モデルから算出された外接円分布と、度数分布データベース40から抽出された規制画像の外接円分布同士で各要素間の相関係数を算出する(ステップS720)。相関係数とは、二つの配列要素の関連性の強弱を示す指標である。ここでは、対象モデルと規制画像(または規制モデル)の類似性の強弱を判定するために用いる。まず、以下の〔数式30〕に従った処理を実行することにより、対象モデルから算出された外接円分布Hd(md)の平均値Ad、度数分布データベース40から抽出された規制画像の外接円分布Hdo(re,md)の平均値Ado(re)を算出する。
〔数式30〕
Ad=Σmd=0,MD-1Hd(md)/MD
Ado(re)=Σmd=0,MD-1Hdo(re,md)/MD
Ad=Σmd=0,MD-1Hd(md)/MD
Ado(re)=Σmd=0,MD-1Hdo(re,md)/MD
続いて、以下の〔数式31〕に従った処理を実行することにより、対象モデルから算出された外接円分布Hd(md)の標準偏差Sd、度数分布データベース40から抽出された規制画像の外接円分布Hdo(re,md)の標準偏差Sdo(re)を算出する。
〔数式31〕
Sd=[Σmd=0,MD-1(Hd(md)−Ad)2]1/2
Sdo(re)=[Σmd=0,MD-1(Hdo(re,md)−Ado(re))2]1/2
Sd=[Σmd=0,MD-1(Hd(md)−Ad)2]1/2
Sdo(re)=[Σmd=0,MD-1(Hdo(re,md)−Ado(re))2]1/2
厳密には、標準偏差は、上記〔数式31〕の[]内において、さらに定数MDで除算しておく必要がある。しかし、ここでは、相関係数を算出することが目的であるため、後述の〔数式32〕における分子の共分散を算出する項においても定数MDで除算する必要があり、分子と分母で重複して定数MDで除算する演算がキャンセルされる(分母は定数MDの平方根で2回除算)。
次に、算出された平均値および標準偏差を用いて、以下の〔数式32〕に従った処理を実行することにより、対象モデルの外接円分布とレコードreに対応する規制画像の外接円分布の相関係数Dd(re)を算出する。
〔数式32〕
Dd(re)=[Σmd=0,MD-1(Hd(md)−Ad)・(Hdo(re,md)−Ado(re))]/(Sdo(re)・Sd)
Dd(re)=[Σmd=0,MD-1(Hd(md)−Ad)・(Hdo(re,md)−Ado(re))]/(Sdo(re)・Sd)
上記〔数式32〕において、Σの添え字の“md=0,MD−1”は、mdが0からMD−1の全ての整数をとる場合について、総和を求めることを示している。相関係数Dd(re)は、度数分布Hd(md)、Hdo(re,md)の共分散を、それぞれの標準偏差で除したものとなっている。上記〔数式32〕の演算のように、分母の平方根の割算を2回行うのは一般に処理負荷が高い。このため、画像処理の分野においては、分子の積和演算だけで済ますものを「相関係数」と呼び、上記〔数式32〕に示したDd(re)を「正規化相関係数」と呼ぶ習慣もある。
次に、度数分布照合手段20は、ステップS720において算出された外接円分布の相関係数Dd(re)と、判定しきい値との比較を行う(ステップS730)。相関係数Dd(re)が判定しきい値以上である場合は、適合と判定し、相関係数Dd(re)が判定しきい値より小さい場合は、不適合と判定する。判定しきい値としては、正の値であれば任意に設定可能であるが、ここでは、+5.0(−1から+1の範囲をとる相関係数値を100倍して%次元で表現した場合)としてある。
ステップS730において適合と判定された場合には、度数分布照合手段20は、対象モデルから算出された内接円分布と、度数分布データベース40から抽出された規制画像の内接円分布同士で、各要素間の相関係数を算出する(ステップS740)。まず、以下の〔数式33〕に従った処理を実行することにより、対象モデルから算出された内接円分布Ha(ma)の平均値Aa、度数分布データベース40から抽出された規制画像の内接円分布Hao(re,ma)の平均値Aao(re)を算出する。
〔数式33〕
Aa=Σma=0,MA-1Ha(ma)/MA
Aao(re)=Σma=0,MA-1Hao(re,ma)/MA
Aa=Σma=0,MA-1Ha(ma)/MA
Aao(re)=Σma=0,MA-1Hao(re,ma)/MA
続いて、以下の〔数式34〕に従った処理を実行することにより、対象モデルから算出された内接円分布Ha(ma)の標準偏差Sa、度数分布データベース40から抽出された規制画像の内接円分布Hao(re,ma)の標準偏差Sao(re)を算出する。
〔数式34〕
Sa=[Σma=0,MA-1(Ha(ma)−Aa)2]1/2
Sao(re)=[Σma=0,MA-1(Hao(re,ma)−Aao(re))2]1/2
Sa=[Σma=0,MA-1(Ha(ma)−Aa)2]1/2
Sao(re)=[Σma=0,MA-1(Hao(re,ma)−Aao(re))2]1/2
厳密には、標準偏差は、上記〔数式34〕の[]内において、さらに定数MAで除算しておく必要がある。しかし、ここでは、相関係数を算出することが目的であるため、後述の〔数式35〕における分子の共分散を算出する項においても定数MAで除算する必要があり、分子と分母で重複して定数MAで除算する演算がキャンセルされる(分母は定数MAの平方根で2回除算)。
次に、算出された平均値および標準偏差を用いて、以下の〔数式35〕に従った処理を実行することにより、対象モデルの内接円分布とレコードreに対応する規制画像の内接円分布の相関係数Da(re)を算出する。
〔数式35〕
Da(re)=[Σma=0,MA-1(Ha(ma)−Aa)・(Hao(re,ma)−Aao(re))]/(Sao(re)・Sa)
Da(re)=[Σma=0,MA-1(Ha(ma)−Aa)・(Hao(re,ma)−Aao(re))]/(Sao(re)・Sa)
上記〔数式35〕において、Σの添え字の“ma=0,MA−1”は、maが0からMA−1の全ての整数をとる場合について、総和を求めることを示している。相関係数Da(re)は、度数分布Ha(ma)、Hao(re,ma)の共分散を、それぞれの標準偏差で除したものとなっている。上記〔数式35〕の演算のように、分母の平方根の割算を2回行うのは一般に処理負荷が高い。このため、画像処理の分野においては、分子の積和演算だけで済ますものを「相関係数」と呼び、上記〔数式35〕に示したDa(re)を「正規化相関係数」と呼ぶ習慣もある。
次に、度数分布照合手段20は、ステップS740において算出された内接円分布の相関係数Da(re)と、判定しきい値との比較を行う(ステップS750)。相関係数Da(re)が判定しきい値以上である場合は、適合と判定し、相関係数Da(re)が判定しきい値より小さい場合は、不適合と判定する。判定しきい値としては、正の値であれば任意に設定可能であるが、ここでは、+5.0(−1から+1の範囲をとる相関係数値を100倍して%次元で表現した場合)としてある。ステップS750において適合と判定された場合には、度数分布照合手段20は、対象モデルとレコードreの規制画像が適合することになるため、出力を規制すべきである(出力不適)との判定を行う。
ステップS730、S750のいずれかにおいて不適合と判定された場合には、度数分布照合手段20は、対象モデルとレコードreの規制画像の照合を終え、次のレコードre+1の規制画像との照合に移行する。図16のフローチャートに従った処理を、度数分布データベース40内の全レコードに対して実行し、適合となる規制画像が1つでも存在したら、対象モデルを“出力を規制すべきである(出力不適)”としてステップS200の照合処理を終了することになる。
<3.第2の実施形態>
次に、第2の実施形態について説明する。上記第1の実施形態では、画像度数分布算出装置により事前に規制画像の度数分布を作成しておき、立体物造形用データ出力規制装置の度数分布データベースに登録しておくようにした。第2の実施形態では、規制画像そのものを規制画像データベースに登録しておき、規制画像からリアルタイムにその場で上記2種の度数分布を作成し、照合まで行う。
次に、第2の実施形態について説明する。上記第1の実施形態では、画像度数分布算出装置により事前に規制画像の度数分布を作成しておき、立体物造形用データ出力規制装置の度数分布データベースに登録しておくようにした。第2の実施形態では、規制画像そのものを規制画像データベースに登録しておき、規制画像からリアルタイムにその場で上記2種の度数分布を作成し、照合まで行う。
<3.1.装置構成>
図17は、本発明第2の実施形態に係る立体物造形用データ出力規制装置の構成を示す機能ブロック図である。図17において、10はモデル度数分布算出手段、20は度数分布照合手段、30は対象モデル記憶手段、41は規制画像データベース、92は画像度数分布算出手段である。図17において、図3、図11と同等の機能を有するものについては、同一符号を付して詳細な説明を省略する。
図17は、本発明第2の実施形態に係る立体物造形用データ出力規制装置の構成を示す機能ブロック図である。図17において、10はモデル度数分布算出手段、20は度数分布照合手段、30は対象モデル記憶手段、41は規制画像データベース、92は画像度数分布算出手段である。図17において、図3、図11と同等の機能を有するものについては、同一符号を付して詳細な説明を省略する。
モデル度数分布算出手段10は、図11に示したものと同様、対象モデル内のポリゴンにより形成されたポリゴン間三角形の外接円の半径と内接円の半径を算出し、算出結果である外接円の半径の度数分布である外接円分布と、内接円の半径の度数分布である内接円分布を算出する処理を行う。画像度数分布算出手段92は、図3に示したものと同様、規制画像内のエッジ点により形成されたエッジ点間三角形の外接円の半径と内接円の半径を算出し、算出結果である外接円の半径の度数分布である外接円分布と、内接円の半径の度数分布である内接円分布を算出する処理を行う。度数分布照合手段20は、図11に示したものと同様、対象モデルについて算出された外接円分布、内接円分布と、規制画像について算出された外接円分布、内接円分布をそれぞれ照合し、出力を規制すべきか否か、すなわち出力不適であるか出力適正であるかを判定する。
モデル度数分布算出手段10、画像度数分布算出手段92、度数分布照合手段20は、図10に示したCPU1が、記憶装置3に記憶されているプログラムを実行することにより実現される。対象モデル記憶手段30は、図11に示したものと同様、対象モデルを記憶した記憶手段であり、記憶装置3により実現される。規制画像データベース41は、規制画像を記憶した記憶手段であり、記憶装置3により実現される。
図17に示した各構成手段は、現実には図10に示したように、コンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。すなわち、コンピュータが、専用のプログラムに従って各手段の内容を実行することになる。図10に示した記憶装置3には、CPU1を動作させ、コンピュータを、立体物造形用データ出力規制装置として機能させるための専用のプログラムが実装されている。この専用のプログラムを実行することにより、CPU1は、モデル度数分布算出手段10、画像度数分布算出手段92、度数分布照合手段20としての機能を実現することになる。また、記憶装置3は、対象モデル記憶手段30、規制画像データベース41として機能するだけでなく、立体物造形用データ出力規制装置としての処理に必要な様々なデータを記憶する。
<3.2.処理動作>
次に、図17に示した立体物造形用データ出力規制装置の処理動作について説明する。図18は、図17に示した立体物造形用データ出力規制装置の処理概要を示すフローチャートである。まず、モデル度数分布算出手段10が、対象モデルについて、2種の度数分布である外接円分布および内接円分布を算出する(ステップS100)。次に、画像度数分布算出手段92が、規制画像について、2種の度数分布である外接円分布および内接円分布を算出する(ステップS300)。そして、算出された対象モデルの度数分布と、規制画像の度数分布との照合を行う(ステップS200)。ステップS300の画像度数分布の算出処理、ステップS200の度数分布の照合処理は、照合処理において、出力すべきでない(出力不適)と判定された場合か、全ての規制画像との照合において不適合となって、出力適正と判定された場合に終了する。ステップS100、ステップS200における処理は、図12に示したものと同様であるので詳細な説明は省略する。また、ステップS300における処理は、図4、図7、図8に示した画像度数分布の算出処理と同様であるので詳細な説明は省略する。
次に、図17に示した立体物造形用データ出力規制装置の処理動作について説明する。図18は、図17に示した立体物造形用データ出力規制装置の処理概要を示すフローチャートである。まず、モデル度数分布算出手段10が、対象モデルについて、2種の度数分布である外接円分布および内接円分布を算出する(ステップS100)。次に、画像度数分布算出手段92が、規制画像について、2種の度数分布である外接円分布および内接円分布を算出する(ステップS300)。そして、算出された対象モデルの度数分布と、規制画像の度数分布との照合を行う(ステップS200)。ステップS300の画像度数分布の算出処理、ステップS200の度数分布の照合処理は、照合処理において、出力すべきでない(出力不適)と判定された場合か、全ての規制画像との照合において不適合となって、出力適正と判定された場合に終了する。ステップS100、ステップS200における処理は、図12に示したものと同様であるので詳細な説明は省略する。また、ステップS300における処理は、図4、図7、図8に示した画像度数分布の算出処理と同様であるので詳細な説明は省略する。
<4.3Dプリンタへのデータ出力>
上記ステップS200において、度数分布照合手段20により“出力を規制すべきでない(出力適正)”と判定された場合には、立体物造形装置である3Dプリンタ7へ対象モデルを出力する。すなわち、立体物造形用データ出力規制装置で出力が許可されたポリゴンモデルである対象モデルを、立体物を造形する立体物造形装置に出力する。一方、度数分布照合手段20により“出力を規制すべきである(出力不適)”と判定された場合には、立体物造形装置である3Dプリンタ7へ対象モデルを出力しない。また、出力適正か出力不適かの判定に時間がかかる場合には、3Dプリンタ7に対象モデルを出力し、3Dプリンタ7の出力処理(立体物造形処理)と並行して出力適正か出力不適かの判定を行い、出力不適である場合に出力中止命令を3Dプリンタ7に出力するようにしてもよい。この際、利用者から見れば、対象モデルの出力という一つの命令を行うことにより、3Dプリンタにおける立体物造形処理が開始されることが確認できるだけで、並行して出力適正か出力不適かの判定のための処理の実行が開始されることは気付かない。
上記ステップS200において、度数分布照合手段20により“出力を規制すべきでない(出力適正)”と判定された場合には、立体物造形装置である3Dプリンタ7へ対象モデルを出力する。すなわち、立体物造形用データ出力規制装置で出力が許可されたポリゴンモデルである対象モデルを、立体物を造形する立体物造形装置に出力する。一方、度数分布照合手段20により“出力を規制すべきである(出力不適)”と判定された場合には、立体物造形装置である3Dプリンタ7へ対象モデルを出力しない。また、出力適正か出力不適かの判定に時間がかかる場合には、3Dプリンタ7に対象モデルを出力し、3Dプリンタ7の出力処理(立体物造形処理)と並行して出力適正か出力不適かの判定を行い、出力不適である場合に出力中止命令を3Dプリンタ7に出力するようにしてもよい。この際、利用者から見れば、対象モデルの出力という一つの命令を行うことにより、3Dプリンタにおける立体物造形処理が開始されることが確認できるだけで、並行して出力適正か出力不適かの判定のための処理の実行が開始されることは気付かない。
<5.対象モデル分離処理>
図13、図14に示したモデル度数分布の算出処理に先立ち、対象モデルの分離を行う対象モデル分離処理を行うようにしてもよい。事前に対象モデルの分離を行っておくことにより、規制画像または規制モデルと、対象モデルがそれぞれ複数の部品で構成され、互いに部品構成が異なる場合であっても、適切に出力が適正か否かの判断を行うことが可能となる。以下に、モデル度数分布の算出処理に先立つ対象モデル分離処理について説明する。対象モデル分離処理は、図2に示したCPU1が記憶装置3に記憶されたプログラムを実行することにより実現される対象モデル分割手段により行われる。
図13、図14に示したモデル度数分布の算出処理に先立ち、対象モデルの分離を行う対象モデル分離処理を行うようにしてもよい。事前に対象モデルの分離を行っておくことにより、規制画像または規制モデルと、対象モデルがそれぞれ複数の部品で構成され、互いに部品構成が異なる場合であっても、適切に出力が適正か否かの判断を行うことが可能となる。以下に、モデル度数分布の算出処理に先立つ対象モデル分離処理について説明する。対象モデル分離処理は、図2に示したCPU1が記憶装置3に記憶されたプログラムを実行することにより実現される対象モデル分割手段により行われる。
<5.1.分離処理の概要>
対象モデル分離手段は、対象モデルを複数の部分対象モデルに分離する対象モデル分離処理を行う。より詳細には、対象モデル分離手段は、あるポリゴンと、そのポリゴンと辺を共有する3つの隣接ポリゴンが、同一の部分対象モデルに属するように分離する。図19は、対象モデル分離手段による対象モデル分離処理の詳細を示すフローチャートである。まず、対象モデル分離手段は、対象モデル記憶手段30から、分離前のポリゴンモデルを読み込み、ポリゴンモデルの構造化を行う(ステップS10)。次に、対象モデル分離手段は、ポリゴン稜線の構造化を行う(ステップS20)。次に、対象モデル分離手段は、隣接ポリゴンテーブルの作成を行う(ステップS30)。そして、対象モデル分離手段は、隣接ポリゴンテーブルが作成されたポリゴンモデルを、複数のグループに分離する(ステップS40)。なお、<5.対象モデル分離処理>においても「グループ」やポリゴンを特定する「ポリゴンID」の用語が出現する。しかし、これらは、<5.対象モデル分離処理>内でのみ用いられるものであり、<5.対象モデル分離処理>以外で出現する3つのグループや、ポリゴンを特定する「変数i」とは無関係である。
対象モデル分離手段は、対象モデルを複数の部分対象モデルに分離する対象モデル分離処理を行う。より詳細には、対象モデル分離手段は、あるポリゴンと、そのポリゴンと辺を共有する3つの隣接ポリゴンが、同一の部分対象モデルに属するように分離する。図19は、対象モデル分離手段による対象モデル分離処理の詳細を示すフローチャートである。まず、対象モデル分離手段は、対象モデル記憶手段30から、分離前のポリゴンモデルを読み込み、ポリゴンモデルの構造化を行う(ステップS10)。次に、対象モデル分離手段は、ポリゴン稜線の構造化を行う(ステップS20)。次に、対象モデル分離手段は、隣接ポリゴンテーブルの作成を行う(ステップS30)。そして、対象モデル分離手段は、隣接ポリゴンテーブルが作成されたポリゴンモデルを、複数のグループに分離する(ステップS40)。なお、<5.対象モデル分離処理>においても「グループ」やポリゴンを特定する「ポリゴンID」の用語が出現する。しかし、これらは、<5.対象モデル分離処理>内でのみ用いられるものであり、<5.対象モデル分離処理>以外で出現する3つのグループや、ポリゴンを特定する「変数i」とは無関係である。
まず、処理対象とするポリゴンモデルである対象モデルは、空間における三次元の値をもち、数万個単位のポリゴンからなることもあるが、本実施形態では、説明の便宜上、二次元空間に投影したポリゴン群を用いる。図20は、処理対象とするポリゴン群の一例を示す図である。図20の例では、18個の三角形のポリゴンからなるポリゴン群を示している。図20において、大文字のアルファベットA〜Nは特定のポリゴンに属する形式でなく、複数のポリゴンで共有される共有頂点を識別するために示している。大文字のアルファベットA〜Nは、ポリゴン群全体において共有頂点を識別するために、便宜上付されたものであり、後述する頂点座標配列データや、頂点構成テーブル、先頭頂点テーブル、頂点座標テーブル、稜線構成テーブル、先頭稜線テーブル、稜線テーブル、稜線ID別ポリゴンテーブル、隣接ポリゴンテーブルには記録されていない(一部記載されているものは、理解を容易にするために便宜上用いられている。)。
図21は、図20に示したポリゴン群を実現するための頂点座標配列データを示す図である。頂点座標配列データは、ポリゴンモデルを規定するデータであり、ポリゴンの集合体であるポリゴンモデルを配列構造で定義している。すなわち、図21は、STLデータより法線ベクトルの情報を削除した構造を示している。図21に示すように、頂点座標配列データは、ポリゴンを識別するポリゴン識別情報であるポリゴンIDP1〜P18に対応付けて、ポリゴンを構成する第1頂点、第2頂点、第3頂点の3つの頂点順に各座標値が記録されている。
また、図20、図21には、各ポリゴンおよび各ポリゴンを構成する3つの頂点を各ポリゴンIDP1〜P18と頂点順に対応付けて表現されたポリゴン別頂点ID“V1a”〜“V18c”が記載されている。ポリゴン別頂点ID“V1a”〜“V18c”は、説明の便宜上設けたものであり、頂点座標配列データ、先頭頂点テーブル、頂点構成テーブル、頂点座標テーブル、稜線構成テーブル、先頭稜線テーブル、稜線テーブル、稜線ID別ポリゴンテーブル、隣接ポリゴンテーブルには記録されていない。
ポリゴン別頂点IDは、その頂点が属するポリゴンのポリゴンIDと当該ポリゴンにおける頂点順が特定される形式で頂点を表現したものである。具体的には、図20に示すように、頂点を示すVの後に、対応するポリゴンIDに含まれる数字、そして第1頂点、第2頂点、第3頂点の頂点順を示すa、b、cのいずれかの小文字のアルファベットで表現する。例えば、図21の1行目に示すように、ポリゴンID“P1”のポリゴン(ポリゴンP1)の第1頂点は、“V1a”と表現される。頂点順“V1a”に数字“1”が入っているため、ポリゴンP1の頂点であることが明確になっている。このポリゴン別頂点IDは、実際にはシリアル番号で表現され、そのシリアル番号に従って各頂点の座標値が頂点座標配列データに記録されているが、図20との対応関係、頂点がどのポリゴンに所属するかを明らかにするため、便宜上ポリゴン別頂点IDに記号を付加して図面に掲載したものである。また、図21の頂点座標配列データにおいて、各頂点の座標は、図20で示した共有頂点A〜Nのいずれかに対応するため、各頂点の座標値が対応する共有頂点A〜Nを識別するアルファベットの小文字を添えて表現している。例えば、図21の1行目に示すように、ポリゴンP1の第1頂点V1aの座標値は、図20において“D”と表示されているので、“(Xd,Yd,Zd)”と表現される。各ポリゴンごとに、構成される3つの頂点に対応付けて3つの頂点の座標値が記録されている。
上記のような規則に従って作成されるため、頂点座標配列データにおいては、同一座標の頂点が複数箇所に重複して記録されることになる。例えば、図20に示した頂点Dは、6つのポリゴンP1,P2,P4,P5,P6,P7に共有されるため、座標値“(Xd,Yd,Zd)”は、頂点V1a,V2a,V4b,V5c,V6c,V7cとして6箇所に記録される。
<5.2.ポリゴンモデルの構造化>
ステップS10のポリゴンモデルの構造化について説明する。ポリゴンモデルの構造化とは、ポリゴンモデルを実現するデータである頂点座標配列データを、頂点構成テーブルおよび頂点座標テーブルで構成される構造に変換することにより、ポリゴンモデルにおける頂点関係(トポロジー・位相情報)が座標値(数値データ)から分離され、あるポリゴンの頂点の修正により影響を受ける周辺のポリゴンの頂点の探索が容易になり、編集し易い構造に組み替えることを意味する。
ステップS10のポリゴンモデルの構造化について説明する。ポリゴンモデルの構造化とは、ポリゴンモデルを実現するデータである頂点座標配列データを、頂点構成テーブルおよび頂点座標テーブルで構成される構造に変換することにより、ポリゴンモデルにおける頂点関係(トポロジー・位相情報)が座標値(数値データ)から分離され、あるポリゴンの頂点の修正により影響を受ける周辺のポリゴンの頂点の探索が容易になり、編集し易い構造に組み替えることを意味する。
図22は、ステップS10のポリゴンモデルの構造化の詳細を示すフローチャートである。ステップS10のポリゴンモデルの構造化は、対象モデル分離手段により行われる。まず、頂点構成テーブル、頂点座標テーブル、頂点IDの初期化を行う(S101)。頂点構成テーブルは、各ポリゴンに含まれる各頂点を、同一座標の共有頂点を同一値とする頂点IDで表現し、ポリゴンを構成する各頂点を共有頂点の頂点IDで表現して当該ポリゴンのポリゴンIDと頂点順とで対応付けて記録したテーブルである。頂点IDは、共有頂点を識別するための頂点識別情報であり、共有頂点を一意に特定することができれば、どのようなものを用いてもよいが、演算処理の効率化のため、本実施形態では、0から始まるシリアルな整数値を用いている。頂点座標テーブルは、頂点構成テーブルに記録された頂点IDと座標値を対応付けて記録したテーブルである。頂点構成テーブル、頂点座標テーブルの初期化は、各項目が記録されていない状態にすることを意味する。また、頂点IDの初期化として現在の頂点ID=0に設定する。さらに、ハッシュ値とリンク先頂点IDを対応付けた先頭頂点テーブルも初期化する。先頭頂点テーブルの初期化は、リンク先頂点IDを全て“−1”に設定することにより行われる。頂点座標テーブルと先頭頂点テーブルの2つのテーブルによりハッシュ値別頂点座標テーブルを実現する。
次に、頂点座標配列データより頂点座標値を抽出するにあたり、ポリゴンIDを“P1”に、頂点順を“0”に初期化する(S101)。そして、頂点座標配列データより現在のポリゴンIDと頂点順に対応する1つの頂点座標値を抽出する(S102)。例えば、図21に示した頂点座標配列データからは、ポリゴンID“P1”と第1頂点の頂点座標値(Xd,Yd,Zd)が抽出される。
続いて、抽出された頂点座標値(Xd,Yd,Zd)よりハッシュ値を算出する(S103)。具体的には、まず、ポリゴンモデル内の全てのポリゴンの3次元座標値x,y,zの最大値Xmax,Ymax,Zmax、最小値Xmin,Ymin,Zminを求める。これは、図21に示したような頂点座標配列データの座標ごとの最大値、最小値を求めることになる。そして、座標値x,y,zの値を均等なT段階に分類し、整数値hx,hy,hz(0≦hx,hy,hz≦T−1)に変換する。整数Tとしては、例えばT=32を設定することができる。具体的には、以下の〔数式36〕に従った処理を実行することにより、hx,hy,hzを算出する。ただし、〔数式36〕に従った処理の後、小数点以下を切り捨てた値を、整数値hx,hy,hzとして得るものとする。
〔数式36〕
hx=(x−Xmin)・T/(Xmax−Xmin)
hy=(y−Ymin)・T/(Ymax−Ymin)
hz=(z−Zmin)・T/(Zmax−Zmin)
hx=(x−Xmin)・T/(Xmax−Xmin)
hy=(y−Ymin)・T/(Ymax−Ymin)
hz=(z−Zmin)・T/(Zmax−Zmin)
そして、以下の〔数式37〕に従った処理を実行することにより、ハッシュ値hを算出する。
〔数式37〕
h=hx+hy・T+hz・T2(0≦h≦T3−1)
h=hx+hy・T+hz・T2(0≦h≦T3−1)
次に、算出されたハッシュ値を用いて先頭頂点テーブルを参照する(S104)。そして、そのハッシュ値に対応するリンク先頂点IDが先頭頂点テーブルに登録されているか否かを判定する(S105)。ハッシュ値に対応するリンク先頂点ID(図中“リンク頂点ID”と表示)が“−1”、すなわち初期状態である場合は、そのハッシュ値に対応するリンク先頂点IDが未登録、すなわち既登録でないことを意味する。
この場合、先頭頂点テーブルに頂点IDの記録を行う(S106)。具体的には、先頭頂点テーブルのハッシュ値に対応するリンク先頂点IDに、現在の頂点ID(初期状態では“0”)を書き込む。続いて、頂点座標テーブルの現在の頂点IDの位置にステップS102で抽出した座標値を書き込む(S107)。この時、頂点座標テーブルにもリンク先頂点IDを書き込む欄があるが、初期状態の“−1”のままにする。また、頂点構成テーブルにステップS102で抽出したポリゴンIDと頂点順の位置に対応付けて、現在の頂点IDを書き込む。ここでは、新規な頂点IDとして記録されることになる。そして、現在の頂点IDをインクリメントする。
一方、ステップS105において、ハッシュ値に対応するリンク先頂点IDが“−1”でない場合は、そのハッシュ値に対応するリンク先頂点IDが既登録であることを意味する。この場合、ステップS102で抽出した座標値と、頂点座標テーブルにおける既登録のリンク先頂点IDに対応する座標値が一致するか否かを判定する(S108)。判定の結果、両座標値が一致する場合は、頂点構成テーブルのポリゴンID、頂点順の位置に、既登録のリンク先頂点IDを記録する(S109)。ステップS108における判定の結果、両座標値が異なる場合は、頂点座標テーブルのリンク先頂点IDを参照し、リンク先頂点IDが0以上であるか否かを確認する(S110)。
確認の結果、リンク先頂点IDが0以上である場合は、その値を頂点IDとし、ステップS108に戻って、その頂点IDに対応する頂点座標テーブルにおける既登録の座標値とステップS102で抽出した座標値を照合する。ステップS110における確認の結果、リンク先頂点IDが負値(例えば“−1”)である場合は、頂点座標テーブルのその頂点IDに対応するリンク先頂点IDに現在の頂点IDを記録し、ステップS107に戻って、頂点座標テーブルの現在の頂点IDの位置にステップS102で抽出した座標値を記録する。この時、頂点座標テーブルの現在の頂点IDにおけるリンク先頂点IDについては、初期状態の“−1”のままにする。また、頂点構成テーブルにステップS102で抽出したポリゴンIDと頂点順の位置に現在の頂点IDを記録する。そして、頂点IDをインクリメントする。
ステップS107またはS109の処理を終えたら、全ポリゴンに対して処理を終えたか否かを判定する(S111)。具体的には、まず、頂点順をインクリメントし、頂点順が“2”を超えたら、ポリゴンIDをインクリメントして頂点順を“0”にする。例えば、現在のポリゴンIDが“P1”の場合、ポリゴンIDをインクリメントすると、ポリゴンIDは“P2”になる。ポリゴンIDがポリゴン総数を超えていなければ、ステップS102に戻って処理を繰り返す。ポリゴンIDがポリゴン総数を超えていれば、全ポリゴンに対して処理を終えたと判定して処理を終了する。
対象モデル分離手段は、ハッシュ値算出手段、座標値照合手段、頂点構成テーブル処理手段、頂点座標テーブル処理手段を備えており、図22に示したポリゴンモデルの構造化処理は、これらの手段が連携することにより実現される。
図22に示したステップS10のポリゴンモデルの構造化処理の具体例について説明する。図20に示したポリゴン群が、その頂点の座標値により図23に示すようなハッシュ値をとる場合を例にとって説明する。図23の例では、説明の都合上2次元で表現し、上記〔数式37〕においてT=2とすると、h=hx+hy・2となり、頂点A,B,D,Eのハッシュ値がh=0、頂点C,Fのハッシュ値がh=1、頂点G,H,J,L,Mのハッシュ値がh=2、頂点I,K,Nのハッシュ値がh=3であることを示している。実際には上記〔数式37〕において、T=32に設定し、h=hx+hy・32+hz・1024となり、ハッシュ値hは、0〜32767の値をとるが、以下では、説明を簡略化するため、ハッシュ値は前述の0〜3の値をとるものとして説明していく。
図24は、S101における初期化時の各テーブルの状態を示す図である。図24(a)は頂点構成テーブル、図24(b)は先頭頂点テーブル、図24(c)は頂点座標テーブルを示している。先頭頂点テーブルには、ハッシュ値に頂点IDが対応付けられてリンク先頂点IDとして記録されている。ここでは、図23に示したようにハッシュ値が0〜3の値をとるため、先頭頂点テーブルには、全てのハッシュ値0〜3に対応付けてリンク先頂点IDとして“−1”が記録されている。頂点座標テーブルには、頂点IDに対応付けられて頂点座標が記録されるとともに、リンク先頂点IDが記録されている。
図24(a)に示すように、頂点構成テーブルは、ポリゴンIDと頂点順に対応付けて3つの頂点IDが記録されるようになっているが、頂点順は、左から0,1,2となっており、図21に示した第1頂点、第2頂点、第3頂点に対応している。ステップS101における初期化の際、頂点順=0に初期化される。ステップS102において、頂点座標配列データより、ポリゴンP1の第1頂点の座標値(Xd,Yd,Zd)を抽出して、ステップS103において、ハッシュ値“0”が算出されたものとする。ステップS104において、ハッシュ値“0”で先頭頂点テーブルを参照すると、ステップS105において、リンク先の頂点IDが登録されていないため、先頭頂点テーブルのハッシュ値“0”に対応付けて、ステップS106において、現在の頂点ID“0”をリンク先として記録する。
そして、ステップS107において、頂点座標テーブルにおける現在の頂点ID“0”の位置に、ステップS102において抽出した座標値(Xd,Yd,Zd)を記録し、リンク先頂点IDとして“−1”を記録する。さらに、ステップS107において、現在のポリゴンID“P1”の現在の頂点順“0”の位置に、現在の頂点ID“0”を記録する。この結果、各テーブルは、図25に示すような状態となる。そして、頂点IDをインクリメントして現在の頂点IDを“0”→“1”とする。また、頂点順をインクリメントして現在の頂点順を“0”→“1” とする。現在のポリゴンIDは“P1”であり、“P18”を超えていないため、ステップS111において、全ポリゴンに対して処理終了していないと判断され、ステップS102に戻る。
ステップS102において、頂点座標配列データより、現在のポリゴンID“P1”、現在の頂点順“1”に基づき、ポリゴンP1の第2頂点の座標値(Xb,Yb,Zb)を抽出する。そして、ステップS103において、座標値(Xb,Yb,Zb)に対してハッシュ値“0”が算出されたものとする。ステップS104において、ハッシュ値“0”で先頭頂点テーブルを参照すると、ステップS105において、リンク先の頂点IDとして“0”が既登録であるため、ステップS108において、既登録の頂点ID“0”に対応する頂点座標テーブルの座標値(Xd,Yd,Zd)と、ステップS102で抽出した座標値(Xb,Yb,Zb)を照合する。照合の結果、不一致であるので、ステップS110において、頂点座標テーブルのリンク先の頂点IDが0以上であるか負の値であるかを確認する。
図25に示すように、リンク先の頂点IDが“−1”であるので、ステップS107において、頂点座標テーブルの現在の頂点ID“1”の位置に、ステップS102において抽出した座標値(Xb,Yb,Zb)を記録し、リンク先頂点IDとして“−1”を記録する。さらに、ステップS107において、頂点構成テーブルの、現在のポリゴンID“P1”の現在の頂点順“1”の位置に、現在の頂点ID“1”を記録する。この結果、各テーブルは、図26に示すような状態となる。そして、頂点IDをインクリメントして現在の頂点IDを“1”→“2”とする。また、頂点順をインクリメントして現在の頂点順を“1”→“2” とする。現在のポリゴンIDは“P1”であり、“P18”を超えていないため、ステップS111において、全ポリゴンに対して処理終了していないと判断され、ステップS102に戻る。
ポリゴンID“P1”、頂点ID“2”、頂点順“2”の場合は、ポリゴンID“P1”、頂点ID“1”、頂点順“1”の場合と同様に処理され、各テーブルは、図27に示すような状態となる。そして、頂点IDをインクリメントして現在の頂点IDを“2”→“3”とする。また、頂点順は、1つのポリゴンについて“0”“1”“2”の3つの値のみをとるため、ポリゴンIDをインクリメントして“P1”→“P2”とし、頂点順をリセットして現在の頂点順を“2”→“0” とする。現在のポリゴンIDは“P2”となり、“P18”を超えていないため、ステップS111において、全ポリゴンに対して処理終了していないと判断され、ステップS102に戻る。
ステップS102において、頂点座標配列データより、現在のポリゴンID“P2”、現在の頂点順“0”に基づき、ポリゴンP2の第1頂点の座標値(Xd,Yd,Zd)を抽出する。そして、ステップS103において、座標値(Xd,Yd,Zd)に対してハッシュ値“0”が算出されたものとする。ステップS104において、ハッシュ値“0”で先頭頂点テーブルを参照すると、ステップS105において、リンク先の頂点IDとして“0”が既登録であるため、ステップS108において、既登録の頂点ID“0”に対応する頂点座標テーブルの座標値(Xd,Yd,Zd)と、ステップS102で抽出した座標値(Xd,Yd,Zd)を照合する。照合の結果、一致するので、ステップS109において、頂点座標テーブルの座標値が一致した頂点ID“0”を、頂点構成テーブルの、現在のポリゴンID“P2”の現在の頂点順“0”の位置に記録する。この結果、各テーブルは、図28に示すような状態となる。
上記のようにして、ポリゴンP18まで処理を行ってステップS111の判定により処理を終了する。このとき、各テーブルは、図29に示すような状態となる。すなわち、ハッシュ値が同一の他の座標値を頂点IDより最近傍に記録した単一の頂点IDがリンク先として対応付けられているものとなる。上記説明のように、ポリゴンモデルの構造化処理においては、ステップS108において座標値の照合を行い、不一致であれば頂点座標テーブルに登録するが、一致している場合は、次々に照合を繰り返していく。この処理は、頂点座標テーブルが大きくなり、既登録の座標値が多くなる程、負荷が高くなることになる。本実施形態では、ハッシュ値を用いてハッシュ値別頂点座標テーブルを参照することにより、頂点座標テーブルの全ての座標値の照合を行うことなく、ハッシュ値が異なる座標値とは一致しないことが自明なため照合対象から除外することができ、同一ハッシュ値の頂点座標テーブルのみを参照すればよいことになる。頂点座標テーブルの中で同一ハッシュ値をもつ座標値は、本実施形態では高々1/4程度であるが、前述の通り実際には上記〔数式37〕において、T=32に設定することが多く、そうすると頂点座標テーブルの中で同一ハッシュ値をもつ座標値は1/32767程度に削減され、全件と照合する場合に比べ照合時間も1/32767程度に短縮されることになる。このため、ポリゴンモデルの構造化処理を桁違いに高速に行うことが可能となる。
図29の例で、ハッシュ値が“0”の場合、図29(c)の頂点座標テーブルでは、リンク先頂点IDに従って、頂点ID“0”“1”“2”“6”のものだけ照合すれば、頂点座標の登録が可能となる。図29(b)に示した先頭頂点テーブルを削除し、図29(c)に示した頂点座標テーブルよりリンク先頂点IDの欄を削除することにより、図30に示したような頂点構成テーブルと頂点座標テーブルを得ることができ、ポリゴンモデルの構造化は完了する。
<5.3.ポリゴン稜線の構造化>
ステップS20のポリゴン稜線の構造化について説明する。ポリゴン稜線の構造化とは、与えられたポリゴン内の頂点順において隣接する2つの頂点の頂点IDペアに対して稜線IDを付与し、ポリゴンを構成する各稜線を稜線IDで表現してポリゴンIDと稜線順とで対応付けて記録した稜線構成テーブルと、稜線構成テーブルに付与された稜線IDに対する頂点IDペアを対応付けて記録した稜線テーブルに分離する処理である。ここで、稜線順は頂点順に対応し、例えば、頂点順で“0”と“1”の隣接する2つの頂点は稜線順“0”に対応し、頂点順で“1”と“2”の隣接する2つの頂点は稜線順“1”に対応し、頂点順で“2”と“0”の隣接する2つの頂点は稜線順“2”に対応させる。この時、稜線テーブルの複数の稜線IDに同一の頂点IDペアが重複して記録されないようにすることがポイントになる。同一の頂点IDペアを共有する隣接するポリゴンの稜線は、頂点IDペアの順番が逆になることが原則になるため、頂点IDペアは番号が小さい(若い)順に設定するようにする。そして、各頂点IDペアに稜線IDを付与する際、稜線テーブルに既に登録されているか否かを探索し、既登録であれば該当する稜線IDを付与し、未登録であれば新規の稜線IDを付与し、稜線テーブルに追加登録するという処理を繰り返す。
ステップS20のポリゴン稜線の構造化について説明する。ポリゴン稜線の構造化とは、与えられたポリゴン内の頂点順において隣接する2つの頂点の頂点IDペアに対して稜線IDを付与し、ポリゴンを構成する各稜線を稜線IDで表現してポリゴンIDと稜線順とで対応付けて記録した稜線構成テーブルと、稜線構成テーブルに付与された稜線IDに対する頂点IDペアを対応付けて記録した稜線テーブルに分離する処理である。ここで、稜線順は頂点順に対応し、例えば、頂点順で“0”と“1”の隣接する2つの頂点は稜線順“0”に対応し、頂点順で“1”と“2”の隣接する2つの頂点は稜線順“1”に対応し、頂点順で“2”と“0”の隣接する2つの頂点は稜線順“2”に対応させる。この時、稜線テーブルの複数の稜線IDに同一の頂点IDペアが重複して記録されないようにすることがポイントになる。同一の頂点IDペアを共有する隣接するポリゴンの稜線は、頂点IDペアの順番が逆になることが原則になるため、頂点IDペアは番号が小さい(若い)順に設定するようにする。そして、各頂点IDペアに稜線IDを付与する際、稜線テーブルに既に登録されているか否かを探索し、既登録であれば該当する稜線IDを付与し、未登録であれば新規の稜線IDを付与し、稜線テーブルに追加登録するという処理を繰り返す。
図31は、ステップS20のポリゴン稜線の構造化の詳細を示すフローチャートである。ステップS20のポリゴン稜線の構造化は、対象モデル分離手段により行われる。まず、稜線構成テーブル、頂点ID別稜線テーブル、稜線IDの初期化を行う(S201)。稜線構成テーブルは、各ポリゴンに含まれる各稜線を稜線IDで表現してポリゴンと稜線順とで対応付けて記録したテーブルである。稜線IDは、稜線を識別するための稜線識別情報であり、稜線を一意に特定することができれば、どのようなものを用いてもよいが、演算処理の効率化のため、本実施形態では、0から始まるシリアルな整数値を用いている。稜線テーブルは、稜線構成テーブルに付与された稜線IDと頂点IDペアを対応付けて記録したテーブルである。稜線構成テーブル、稜線テーブルの初期化は、各項目が記録されていない状態にすることを意味する。また、稜線IDの初期化として現在の稜線ID=0に設定する。さらに、頂点IDペアの小さい方の頂点IDとリンク先稜線IDを対応付けた先頭稜線テーブルも初期化する。先頭稜線テーブルの初期化は、リンク先稜線IDを全て“−1”に設定することにより行われる。稜線テーブルと先頭稜線テーブルの2つのテーブルにより頂点ID別稜線テーブルを実現する。
次に、頂点構成テーブルより頂点IDペアを抽出するにあたり、ポリゴンIDを“P1”に、頂点順を“0”に初期化する(S201)。そして、頂点構成テーブルより現在のポリゴンIDと頂点順に対応する頂点IDと、次の頂点順に対応する隣接する頂点IDからなる2つの頂点IDペアを抽出する(S202)。次の頂点順は現在の頂点順に1を加えたものであるが、頂点順が“2”の場合、次の頂点順は“0”とする。例えば、図30に示した頂点構成テーブルからは、ポリゴンID“P1”と頂点ID“0”と“1”のペアが抽出される。
次に、抽出された頂点IDペアのうち小さい方の頂点IDを用いて先頭稜線テーブルを参照する(S204)。そして、その頂点IDに対応するリンク先稜線IDが先頭稜線テーブルに登録されているか否かを確認する(S205)。頂点IDに対応するリンク先稜線ID(図中“リンク稜線ID”と表示)が“−1”、すなわち初期状態である場合は、その頂点IDに対応するリンク先稜線IDが未登録、すなわち既登録でないことを意味する。
この場合、先頭稜線テーブルに稜線IDの記録を行う(S206)。具体的には、先頭稜線テーブルの頂点IDに対応するリンク先稜線IDに、現在の稜線ID(初期状態では“0”)を書き込む。続いて、稜線テーブルの現在の稜線IDの位置にステップS202で抽出した頂点IDペアを書き込む(S207)。この時、稜線テーブルにもリンク先稜線IDを書き込む欄があるが、初期状態の“−1”のままにする。また、稜線構成テーブルにおける、ステップS202で抽出したポリゴンIDと頂点順と同値の稜線順の位置に、現在の稜線IDを書き込む。ここでは、新規な稜線IDとして記録されることになる。そして、現在の稜線IDをインクリメントする。
一方、ステップS205において、頂点IDに対応するリンク先稜線IDが“−1”でない場合は、その頂点IDに対応するリンク先稜線IDが既登録であることを意味する。この場合、ステップS202で抽出した頂点IDペアと、頂点座標テーブルにおける既登録のリンク先稜線IDに対応する頂点IDペアが一致するか否かを判定する(S208)。判定の結果、両頂点IDペアが一致する場合は、稜線構成テーブルのポリゴンID、頂点順と同値の稜線順の位置に、現在の稜線IDを記録する(S209)。ステップS208における判定の結果、両座標値が異なる場合は、稜線テーブルのリンク先稜線IDを参照し、リンク先稜線IDが0以上であるか否かを確認する(S210)。確認の結果、リンク先稜線IDが0以上である場合は、その値を稜線IDとし、ステップS208に戻って、その稜線IDに対応する頂点IDペアとステップS202で抽出した頂点IDペアを照合する。ステップS210における確認の結果、リンク先稜線IDが負値(例えば“−1”)である場合は、稜線テーブルのその稜線IDに対応するリンク先稜線IDに現在の稜線IDを記録し、ステップS207に戻って、稜線テーブルの現在の稜線IDの位置にステップS202で抽出した頂点IDペアを記録する。この時、稜線テーブルの現在の稜線IDにおけるリンク先稜線IDについては、初期状態の“−1”のままにする。また、稜線構成テーブルにおける、ステップS202で抽出したポリゴンIDと頂点順と同値の稜線順の位置に現在の稜線IDを記録する。そして、稜線IDをインクリメントする。
ステップS207またはS209の処理を終えたら、全ポリゴンに対して処理を終えたか否かを判定する(S211)。具体的には、まず、頂点順をインクリメントし、頂点順が“2”を超えたら、ポリゴンIDをインクリメントして頂点順を“0”にする。ポリゴンIDがポリゴン総数を超えていなければ、ステップS202に戻って処理を繰り返す。ポリゴンIDがポリゴン総数を超えていれば、全ポリゴンに対して処理を終えたと判定して処理を終了する。
対象モデル分離手段は、頂点ID照合手段、稜線構成テーブル更新手段、稜線テーブル更新手段を備えており、図31に示したポリゴン稜線の構造化処理は、これらの手段が連携することにより実現される。
図32は、ポリゴンP1の稜線構成が記録された時点の各テーブルの状態を示す図である。図32(a)は頂点構成テーブル、図32(b)は稜線構成テーブル、図32(c)は先頭稜線テーブル、図32(d)は稜線テーブルを示している。先頭稜線テーブルには、頂点IDペアの小さい方の頂点IDに稜線IDが対応付けられてリンク先稜線IDとして記録されている。ここでは、頂点IDが0〜13の値をとるが、最終の頂点ID13を小さい方の頂点IDとする頂点IDペアは存在しないため、先頭稜線テーブルには、最終の頂点ID13を除く全ての頂点ID0〜12に対応付けてリンク先稜線IDが記録される。初期状態では、全て“−1”が記録される。稜線テーブルには、稜線IDに対応付けられて頂点IDペア(図中“頂点ペア”と表示)が記録されるとともに、リンク先稜線IDが記録されている。
図32(b)に示すように、稜線構成テーブルは、ポリゴンIDと稜線順に対応付けて3つの稜線IDが記録されるようになっているが、稜線順は頂点順と同値で、左から0,1,2となっている。ステップS201における初期化の際、頂点順=稜線順=0に初期化される。
図33は、ポリゴンP2の稜線構成が記録された時点の各テーブルの状態を示す図である。図34は、ポリゴンP3の稜線構成が記録された時点の各テーブルの状態を示す図である。図35は、ポリゴンP18の稜線構成が記録された時点の各テーブルの状態を示す図である。図31に示したフローチャートに従って処理を実行していくことにより、図35に示したような状態まで処理が行われることになる。
図35の例で、頂点IDペアの小さい方の頂点IDが“0”の場合、図35(d)の稜線テーブルでは、リンク先稜線IDに従って、稜線ID“0”“2”“3”“8”“10”“12”のものだけ照合すれば、頂点IDペアの登録が可能となる。図35(c)に示した先頭稜線テーブルを削除し、図35(d)に示した稜線テーブルよりリンク先稜線IDの欄を削除することにより、図36に示したような稜線構成テーブルと稜線テーブルを得ることができ、ポリゴン稜線の構造化は完了する。
<5.4.隣接ポリゴンテーブルの作成>
ステップS30の隣接ポリゴンテーブルの作成について説明する。隣接ポリゴンテーブルの作成は、ポリゴンの各稜線(隣接する頂点ペア)と共有する稜線をもつ隣接するポリゴンを探索し、頂点座標配列データをポリゴンIDと稜線順に対応付けて隣接ポリゴンのポリゴンIDで記述した隣接ポリゴンテーブルを作成する処理である。この探索処理はポリゴン数の2乗に比例して処理時間がかかるという問題があった。ステップS20において、稜線構成テーブルを作成しておくことにより、高速に隣接ポリゴンテーブルを作成することができる。
ステップS30の隣接ポリゴンテーブルの作成について説明する。隣接ポリゴンテーブルの作成は、ポリゴンの各稜線(隣接する頂点ペア)と共有する稜線をもつ隣接するポリゴンを探索し、頂点座標配列データをポリゴンIDと稜線順に対応付けて隣接ポリゴンのポリゴンIDで記述した隣接ポリゴンテーブルを作成する処理である。この探索処理はポリゴン数の2乗に比例して処理時間がかかるという問題があった。ステップS20において、稜線構成テーブルを作成しておくことにより、高速に隣接ポリゴンテーブルを作成することができる。
図37は、ステップS30の隣接ポリゴンテーブルの作成の詳細を示すフローチャートである。ステップS30の隣接ポリゴンテーブルの作成は、対象モデル分離手段により行われる。まず、隣接ポリゴンテーブル、稜線ID別ポリゴンテーブル、ポリゴンID、稜線順の初期化を行う(S301)。隣接ポリゴンテーブルは、各ポリゴンと隣接するポリゴンのポリゴンIDを対応付けて記録したテーブルである。稜線ID別ポリゴンテーブルは、稜線IDと稜線を含むポリゴンと当該ポリゴンにおける当該稜線の稜線順を識別するポリゴン別稜線IDを対応付けて記録したテーブルである。隣接ポリゴンテーブルの初期化は、各項目が記録されていない状態にすることを意味する。また、ポリゴンIDと稜線順の初期化として現在のポリゴンIDを“P1”、稜線順を“0”に設定する。稜線ID別ポリゴンテーブルの初期化は、ポリゴン別稜線IDを全て“−1”に設定することにより行われる。
次に、稜線構成テーブルよりポリゴンIDと、そのポリゴンIDに対応する現在の稜線順の稜線IDを抽出する(S302)。例えば、図38に示した稜線構成テーブルからは、ポリゴンID“P1”と稜線ID“0”が抽出される。
次に、抽出された稜線IDを用いて稜線ID別ポリゴンテーブルを参照する(S304)。そして、その稜線IDに対応するポリゴン別稜線IDが稜線ID別ポリゴンテーブルに登録されているか否かを確認する(S305)。稜線IDに対応するポリゴン別稜線IDが“−1”、すなわち初期状態である場合は、その稜線IDに対応するポリゴン別稜線IDが未登録、すなわち既登録でないことを意味する。
この場合、稜線ID別ポリゴンテーブルに現在のポリゴン別稜線IDの記録を行う(S306)。具体的には、稜線ID別ポリゴンテーブルの稜線IDに対応して、現在のポリゴンID(初期状態では“P1”)と稜線順(初期状態では“0”)により特定されるポリゴン別稜線IDを書き込む。
一方、ステップS305において、稜線IDに対応するポリゴン別稜線IDが“−1”でない場合は、その稜線IDに対応するポリゴン別稜線IDが既登録であることを意味し、既登録のポリゴン別稜線IDに対応する稜線と、現在のポリゴンIDと稜線順に対応する稜線とが、その稜線IDで共有することを意味する。この場合、その稜線IDに対応するポリゴン別稜線IDを取得し、隣接ポリゴンテーブルにおける、そのポリゴン別稜線IDにより特定されるポリゴンIDと稜線順の位置に、現在のポリゴンIDを記録する(S307)。ステップS307においては、さらに、隣接ポリゴンテーブルにおける、現在のポリゴンIDと現在の稜線順の位置に、ポリゴン別稜線IDにより特定されるポリゴンIDを記録する。
ステップS306またはS307の処理を終えたら、全ポリゴンに対して処理を終えたか否かを判定する(S308)。具体的には、まず、稜線順をインクリメントし、稜線順が“2”を超えたら、ポリゴンIDをインクリメントして稜線順を“0”にする。ポリゴンIDがポリゴン総数を超えていなければ、ステップS302に戻って処理を繰り返す。ポリゴンIDがポリゴン総数を超えていれば、全ポリゴンに対して処理を終えたと判定して処理を終了する。
対象モデル分離手段は、ポリゴンテーブル登録手段と、隣接ポリゴンテーブル登録手段を備えており、図37に示した隣接ポリゴンテーブルの作成処理は、これらの手段が連携することにより実現される。
図38は、ポリゴンP2のポリゴン別稜線IDが記録された時点の各テーブルの状態を示す図である。図38(a)は稜線構成テーブル、図38(b)は稜線ID別ポリゴンテーブル、図38(c)は隣接ポリゴンテーブルを示している。図38(a)の稜線構成テーブルは、図36(a)の稜線構成テーブルと同一である。稜線ID別ポリゴンテーブルには、稜線IDに対応付けて、ポリゴン別稜線IDが記録されている。ここでは、稜線IDが0〜30の値をとるため、稜線ID別ポリゴンテーブルには、全ての稜線ID0〜30に対応付けてポリゴン別稜線IDが記録される。稜線ID別ポリゴンテーブルにおいては、初期状態では、ポリゴン別稜線IDとして全て“−1”が記録される。図38(b)の空欄においては、実際には、初期値であるポリゴン別稜線IDとして全て“−1”が記録されている。隣接ポリゴンテーブルには、ポリゴンIDに対応付けられて隣接ポリゴンIDが記録される。
図38(c)に示すように、隣接ポリゴンテーブルは、ポリゴンIDに対応付けて3つの隣接ポリゴンのポリゴンIDが記録されるようになっているが、稜線順は、左から0,1,2となっている。ステップS301における初期化の際、稜線順=0に初期化される。隣接ポリゴンテーブルにおいては、必ず、対になるようにポリゴンIDの記録が行われる。すなわち、図38(c)に示すように、ポリゴンP1に対応付けて隣接ポリゴンとしてポリゴンP2が記録された場合、ポリゴンP2に対応付けて隣接ポリゴンとしてポリゴンP1も記録されることになる。
図39は、ポリゴンP4のポリゴン別稜線IDが記録された時点の各テーブルの状態を示す図である。図40は、ポリゴンP18のポリゴン別稜線IDが記録された時点の各テーブルの状態を示す図である。図37に示したフローチャートに従って処理を実行していくことにより、図40に示したような状態まで処理が行われることになる。これにより、図40(c)に示したような隣接ポリゴンテーブルが完成する。
図41は、ステップS10で完成した頂点構成テーブル、ステップS20で完成した稜線構成テーブル、ステップS30で完成した隣接ポリゴンテーブルを示す図である。
<5.5.ポリゴンモデルの分離>
ステップS40のポリゴンモデルの分離について説明する。ポリゴンモデルの分離においては、ステップS30で作成された隣接ポリゴンテーブルを用いる。隣接ポリゴンテーブルを用いることにより、高速にポリゴンモデルの分離を行うことができる。
ステップS40のポリゴンモデルの分離について説明する。ポリゴンモデルの分離においては、ステップS30で作成された隣接ポリゴンテーブルを用いる。隣接ポリゴンテーブルを用いることにより、高速にポリゴンモデルの分離を行うことができる。
図42は、ステップS40のポリゴンモデルの分離の詳細を示すフローチャートである。ステップS40のポリゴンモデルの分離は、対象モデル分離手段により行われる。まず、グループIDの仮設定を行う(S401)。具体的には、グループを識別するグループ識別情報であるグループIDを新規に定義し、グループIDが未設定のポリゴンを1つ抽出し、そのポリゴンのポリゴンIDに新規なグループIDを仮設定する。ここで、「グループIDが未設定」とは、本設定も仮設定も行われていない状態を意味する。
次に、グループIDの本設定を行う(S402)。具体的には、まず、グループIDが仮設定されているポリゴンを全て抽出し、抽出された各ポリゴンのポリゴンIDに対して、仮設定されているグループIDを本設定する。そして、隣接ポリゴンテーブルを参照し、本設定がなされた各ポリゴンに隣接するグループIDが未設定のポリゴンを全て抽出し、本設定されたグループIDと同一のグループIDを、抽出された全てのポリゴンのポリゴンIDに仮設定する。
次に、グループIDが仮設定されているポリゴンが存在するか否かを判定する(S403)。判定の結果、グループIDが仮設定されているポリゴンが存在する場合は、ステップS402に戻って、グループIDが仮設定されているポリゴンのポリゴンIDに対して、仮設定されているグループIDを本設定し、隣接ポリゴンテーブルを参照し、隣接するグループIDが未設定のポリゴンのポリゴンIDに同一のグループIDを仮設定する処理を繰り返す。
ステップS403における判定の結果、グループIDが仮設定されているポリゴンが存在しない場合は、全ポリゴンについてグループIDの本設定を終了したか否かを判定する(S404)。判定の結果、全てのポリゴンにグループIDが本設定されていない、即ちグループIDが未設定のポリゴンが存在する場合は、ステップS401に戻って、グループIDを新規に定義し、グループIDが未設定のポリゴンIDを1つ抽出し、そのポリゴンIDに新規なグループIDを仮設定する。
ステップS404における判定の結果、全てのポリゴンにグループIDが本設定されている場合は、ポリゴンIDとグループIDの関係を用いて、ポリゴンモデルを分離する(S405)。具体的には、図21に示した頂点座標配列データのポリゴンIDと座標値を、同一グループIDごとに、異なるファイルに分離する。また、バイナリSTL形式のファイルを使用する場合、ポリゴンごとに色情報を指示できる識別フラグを設定できるため、ファイル分離せず同一ファイルのまま、ポリゴンごとの識別フラグにグループIDを設定する方法もとれる。
分離された複数のSTL形式ファイルまたはポリゴンごとにグループIDが設定された単一のSTL形式ファイルを3Dプリンタに出力すると、グループIDごとに異なる材料(サポート材を含む)あるいは異なる色の材料(透明材を含む)を指定でき、多色または中身が透けて見える造形物を作成することができる。このように、ポリゴンモデルの分離とは、頂点座標配列データのポリゴンIDと座標値を、同一グループIDごとに、異なるファイルに分離するだけでなく、1つのファイル内で、明確に区別することも含む概念である。以上のようにして、対象モデル分離手段は、対象モデルを複数の部分対象モデルに分離する。対象モデル分離手段は、出力を規制すべきポリゴンモデルである規制モデルについても、同様にして部分規制モデルに分離することができる。
<6.規制画像および規制モデルの度数分布算出および登録について>
応用例として、度数分布照合手段20を備えた立体物造形用データ出力規制装置とは別の場所で、規制画像および規制モデルに対して算出された外接円分布および内接円分布を、立体物造形用データ出力規制装置にネットワークを介して送信して登録するようにしてもよい。
応用例として、度数分布照合手段20を備えた立体物造形用データ出力規制装置とは別の場所で、規制画像および規制モデルに対して算出された外接円分布および内接円分布を、立体物造形用データ出力規制装置にネットワークを介して送信して登録するようにしてもよい。
図43は、応用例における立体物造形用データ出力規制装置を含む立体物造形システムのハードウェア構成図である。図43に示した立体物造形システムにおいて、立体物造形用データ出力規制装置101は、図10に示した立体物造形用データ出力規制装置100の構成に、インターネット等の公衆ネットワークと通信するためのネットワーク通信部8を備えた構成となっている。画像度数分布算出装置301は、汎用のコンピュータで実現することができ、図43に示すように、CPU(Central Processing Unit)1aと、コンピュータのメインメモリであるRAM(Random Access Memory)2aと、CPU1aが実行するプログラムやデータを記憶するためのハードディスク、フラッシュメモリ等の大容量の記憶装置3aと、キーボード、マウス等のキー入力I/F(インターフェース)4aと、データ記憶媒体等の外部装置とデータ通信するためのデータ入出力I/F(インターフェース)5aと、液晶ディスプレイ等の表示デバイスである表示部6aと、インターネット等の公衆ネットワークと通信するためのネットワーク通信部8aを備え、互いにバスを介して接続されている。立体物造形用データ出力規制装置101のネットワーク通信部8と画像度数分布算出装置301のネットワーク通信部8aは互いに通信を行い、画像度数分布算出装置301から立体物造形用データ出力規制装置101へ規制画像に対して算出された2種の度数分布の送信を行うことが可能になっている。
図43では、立体物造形用データ出力規制装置101と3Dプリンタ7は分離した形態で示されているが、現在市販されている殆どの3Dプリンタ製品には立体物造形用データ出力規制装置101の構成要素である、CPU1、RAM2、記憶装置3、キー入力I/F4(汎用コンピュータ向けキーボード・マウスではなく、テンキーレベルの数種のボタン)、データ入出力I/F5、表示部6(数行の文字を表示可能な小型液晶パネル、タッチパネルを重畳させキー入力I/F4を兼ねることも多い)、ネットワーク通信部8(無線LAN機能)も小規模ながら重複して備えている。従って、3Dプリンタ7自体が外部記憶媒体やインターネット経由で立体物造形用データを直接受け取り、単独で立体物を造形する運用も可能になっている(特に民生用の3Dプリンタではこちらの形態の方が多い)。すなわち、図43に示した立体物造形用データ出力規制装置101および3Dプリンタ7を1つの筐体に収めて、“3Dプリンタ”という製品として流通することも多い。
画像度数分布算出装置301においては、CPU1aが、記憶装置3aに記憶されているプログラムを実行することにより、画像度数分布算出手段、度数分布送信手段が実現される。画像度数分布算出装置301で実現される画像度数分布算出手段は、画像度数分布算出装置300、立体物造形用データ出力規制装置100における画像度数分布算出手段92と同様の機能を有し、規制画像に対して2種の度数分布として外接円分布、内接円分布を算出する。度数分布送信手段は、規制画像について算出された2種の度数分布である外接円分布、内接円分布を立体物造形用データ出力規制装置101に送信する。立体物造形用データ出力規制装置101では、ネットワーク通信部8が、画像度数分布算出装置301から2種の度数分布を受信すると、CPU1が所定のプログラムを実行して度数分布登録手段として機能し、受信した2種の度数分布を記憶装置3で実現される度数分布データベース40に登録する。
<7.クラウド型の立体物造形システム>
本発明は、クラウド型の立体物造形システムに適用することも可能である。図44は、クラウド型の立体物造形システムのハードウェア構成図である。図44に示した立体物造形システムでは、出力制御用端末201と処理サーバ202により立体物造形用データ出力規制装置が実現される。図44に示した立体物造形システムにおいて、出力制御用端末201は、図43において立体物造形用データ出力規制装置101として示したコンピュータと同等のハードウェア構成を有する。すなわち、出力制御用端末201は、CPU11、RAM12、記憶装置13、キー入力I/F14、データ入出力I/F15、表示部16、ネットワーク通信部18を備え、互いにバスを介して接続されている。
本発明は、クラウド型の立体物造形システムに適用することも可能である。図44は、クラウド型の立体物造形システムのハードウェア構成図である。図44に示した立体物造形システムでは、出力制御用端末201と処理サーバ202により立体物造形用データ出力規制装置が実現される。図44に示した立体物造形システムにおいて、出力制御用端末201は、図43において立体物造形用データ出力規制装置101として示したコンピュータと同等のハードウェア構成を有する。すなわち、出力制御用端末201は、CPU11、RAM12、記憶装置13、キー入力I/F14、データ入出力I/F15、表示部16、ネットワーク通信部18を備え、互いにバスを介して接続されている。
処理サーバ202は、汎用のコンピュータに専用のプログラムを組み込むことにより実現することができる。図44に示すように、CPU11a、RAM12a、記憶装置13a、キー入力I/F14aと、データ入出力I/F15aと、表示部16aと、ネットワーク通信部18aを備え、互いにバスを介して接続されている。出力制御用端末201のネットワーク通信部18と処理サーバ202のネットワーク通信部18aは互いに通信を行い、処理サーバ202から出力制御用端末201へ出力適否の判定に基づく出力適否データの送信を行うことが可能になっている。図44では、出力制御用端末201と3Dプリンタ7は分離した形態で示されているが、図43の例と同様、3Dプリンタ製品に出力制御用端末201の構成要素である、CPU11、RAM12、記憶装置13、キー入力I/F14、データ入出力I/F15、表示部16、ネットワーク通信部18を重複して備えていてもよい。
図45は、クラウド型の立体物造形システムの機能ブロック図である。クラウド型の立体物造形システムを構成する処理サーバ202は、図11に示した立体物造形用データ出力規制装置の各手段に加えて、対象モデル受信手段50、出力適否データ送信手段60を備えた構成となっている。対象モデル記憶手段31は、対象モデル自体ではなく、対象モデルについて算出された2種の度数分布を記憶する。また、モデル度数分布算出手段10は、処理サーバ202ではなく、出力制御用端末201が備えた構成となっている。
図11に示した立体物造形用データ出力規制装置と同等の機能を有するものについては、同一符号を付して説明を省略する。対象モデル受信手段50は、出力制御用端末201から送信された対象モデルの2種の度数分布を受信して対象モデル記憶手段31に登録する手段であり、CPU11aが所定のプログラムを実行するとともに、ネットワーク通信部18aを制御することにより実現される。出力適否データ送信手段60は、度数分布照合手段20により判定された“出力を規制すべきであるか否か”に基づき、出力適否データを出力制御用端末201に送信する手段であり、CPU11aが所定のプログラムを実行するとともに、ネットワーク通信部18aを制御することにより実現される。
処理サーバ202は、インターネット等のネットワークに接続され、多数の出力制御用端末からアクセス可能になっている。クラウド型の立体物造形システムの「クラウド型」とは、3Dプリンタにより立体物を出力する出力側でなく、出力側からネットワークを介した遠隔地のコンピュータにおいて、規制すべきか否かを判定することを意味する。従来のサーバ型コンピュータでは多数の利用者のアクセスが集中すると応答性が遅くなり利用者に迷惑をかけることが多かったが、クラウド型では仮想化技術によりコンピュータの物理的構成を動的に変更することが可能になるため、常に安定した応答性を維持できるという特徴がある。処理サーバ202は物理的には複数台のコンピュータにより実現されるのが一般的である。
図44、図45に示したクラウド型の立体物造形システムの処理動作について説明する。出力制御用端末201において、利用者がキー入力I/F14を介して出力したい対象モデルを指定すると、CPU11は、記憶装置13に記憶されている指定された対象モデルを抽出し、対象モデルを特定する識別情報であるモデルIDを付与する。そして、CPU11は、モデルIDが付与された対象モデルに対して、図13、図14に示したフローチャートに従って、モデル度数分布算出手段10が処理を行い、外接円分布および内接円分布で構成される2種の度数分布を生成する。さらにCPU11は、生成された2種の度数分布を、記憶装置13に事前に設定されているURL等のアドレス宛に、ネットワーク通信部18を介して送信する。ポリゴンデータ(ポリゴンモデル)に比べ情報量が顕著に少ない2種の度数分布を送信する方法をとることにより、伝送時間が大幅に短縮されるだけでなく、処理サーバ202側には著作物であるポリゴンデータが送信されず、処理サーバ202側に複製物が残らないため、著作権侵害を回避することができる。
並行してCPU11は、モデルIDが付与された対象モデルを、データ入出力I/F15を介して3Dプリンタ7のデータ処理部7aに送信する。データ処理部7a内のプリンタキューには、出力制御用端末201から受信した対象モデルが保持され、出力ジョブとして待機状態となる。この時、3Dプリンタ出力における前処理であるポリゴン形式のデータを積層形式のデータに変換する処理のみ実行させるようにし、積層形式のデータに変換された段階で待機状態にする手法もとることができる。このデータ処理負荷もそれなりに高いため、この間に出力適否判定が完了すれば、利用者側に余分な待ち時間を感じさせないようにすることができる。
処理サーバ202では、対象モデル受信手段50が、出力制御用端末201から送信された対象モデルの2種の度数分布を受信すると、その2種の度数分布を対象モデル記憶手段31に記憶する。ここで、図16に示したフローチャートに従って、度数分布照合手段20が処理を行い、受信した2種の度数分布に対応する対象モデルの出力適否を判定する。出力適否の結果である出力適否データは、度数分布照合手段20から出力適否データ送信手段60に渡される。そして、出力適否データ送信手段60は、2種の度数分布の送信元(アクセス元)である出力制御用端末201に、モデルIDを付加した出力適否データを送信する。
出力制御用端末201では、ネットワーク通信部18が、処理サーバ202から出力適否データを受信すると、CPU11が、受信した出力適否データを、データ入出力I/F15を介して3Dプリンタ7のデータ処理部7aに送信する。データ処理部7aは、受信した出力適否データに付与されたモデルIDでプリンタキュー内の出力ジョブを参照する。そして、出力適否データが“適(出力適正)”である場合、データ処理部7aは、その出力ジョブを待機状態から出力状態に変更し、出力部7bに対象モデルを出力する。これは、出力を規制すべきでないと判定された場合を示している。一方、出力適否データが“否(出力不適)”である場合、データ処理部7aは、その出力ジョブを破棄する。すなわち、プリンタキューから削除する。
<8.度数分布算出事例>
図46、図47に、球体(実際には、球体に近似した多面体)および円について、上記実施形態に係る立体物造形用データ出力規制装置による度数分布算出事例を示す。図46、図47のいずれにおいても、左端にポリゴンモデルまたは画像、中央に他方式による度数分布、右端に本発明による度数分布を示している。度数分布については、上段が外接円分布(OutRadius)を示し、下段が内接円分布(InRadius)を示している。
図46、図47に、球体(実際には、球体に近似した多面体)および円について、上記実施形態に係る立体物造形用データ出力規制装置による度数分布算出事例を示す。図46、図47のいずれにおいても、左端にポリゴンモデルまたは画像、中央に他方式による度数分布、右端に本発明による度数分布を示している。度数分布については、上段が外接円分布(OutRadius)を示し、下段が内接円分布(InRadius)を示している。
図46(a)の球体a(実際には、球体に近似した多面体)は、ポリゴンモデル(5040ポリゴン)である。図46(d)の円bは2次元二値画像である。図47(a)は、球体aの2次元シェーディング画像である円cを示す図である。
図46、図47において、外接円分布については、図46(b)と図46(c)、図46(e)と図46(f)、図47(b)と図47(c)は、それぞれ同一である。すなわち、他方式と本発明では、外接円分布については同一である。他方式と本発明で異なるのは、内接円分布である。他方式では、内接円分布を、最大内接円半径を基準にした内接円半径の分布としており、本発明では、内接円分布を、最大外接円半径を用いて正規化した内接円半径の分布としている。なお、ここで本発明と比較する他方式は、内接円分布が異なる方式ではあるが、いわゆる従来技術ではない。他方式においても公知技術に対しては、十分に有用性を有しているが、ここでは、本発明の特徴を説明するために他方式との比較を行う。
図46、図47に示すように、球体aのポリゴンモデルと円bの2次元二値画像、球体aのポリゴンモデルと円cの2次元シェーディング画像の2組の度数分布を他方式および本発明の2方式で比較した場合、他方式の内接円分布および本発明の内接円分布では、顕著な差が見られず大きな正の相関が見られた。このため、球体のような中心から偏りのない物体については、本発明の特徴は生かされない。本発明の特徴が生かされるのは、図48〜図51に示すような例である。
図48、図49、図50に、達磨について、上記実施形態に係る立体物造形用データ出力規制装置による度数分布算出事例を示す。図48の(a)は3次元ポリゴンモデル、図48の(d)、図49の(a)(d)および図50の(a)は2次元画像で、図48、図49、図50のいずれにおいても、中央に他方式による度数分布、右端に本発明による度数分布を示している。度数分布については、上段が外接円分布(OutRadius)を示し、下段が内接円分布(InRadius)を示している。
図48(a)の達磨dは、ポリゴンモデル(15944ポリゴン)であり、図50(a)の達磨の2次元写真画像である達磨hを手本に抽象化し3Dモデルを制作したものである。図48(d)は、達磨dの2次元シェーディング画像である達磨eを示す図である。このシェーディング画像は、256階調のグレースケール画像である。図49(a)(d)は、達磨hを基に制作した2次元イラスト画像を示す図である。これらのイラスト画像は、二値または三値等の少ない階調の画像である。図49(a)は二値画像で、図49(d)は、三値画像である。図50(a)は、これらの手本にした達磨の2次元写真画像である達磨hを示す図である。図48、図49、図50において、達磨dと達磨e、達磨dと達磨f、達磨dと達磨gおよび達磨dと達磨hの4組の度数分布を他方式および本発明の2方式で比較した場合、いずれの場合においても、内接円分布が半径0の方向(図面の横軸において左端側)に局所的に偏るようになり、内接円分布の識別性が改善される。具体的には、図46(a)の球体aと図49(d)の達磨gの内接円分布を他方式および本発明の2方式で比較した場合、双方とも正の相関を示し類似性が認められるが、他方式においては、達磨dと達磨gの内接円分布の相関係数より顕著に大きな値になり、達磨gのイラスト像が達磨dより、むしろ球体aのポリゴンモデルに似ているという矛盾した結果になった。これに対して、本発明では、達磨dと達磨gの内接円分布の相関係数が他方式より大きくなり、逆に球体aと達磨gの内接円分布の相関係数が他方式より顕著に小さくなり、結果的に達磨gのイラスト像が球体aより達磨dのポリゴンモデルに似ているという適正な結果になった。
図51に、頭蓋骨について、上記実施形態に係る立体物造形用データ出力規制装置による度数分布算出事例を示す。図51においても、図46〜図50と同様、左端にポリゴンモデルおよび画像、中央に他方式による度数分布、右端に本発明による度数分布を示している。度数分布については、上段が外接円分布(OutRadius)を示し、下段が内接円分布(InRadius)を示している。
図51(a)の頭蓋骨iは、ポリゴンモデル(249854ポリゴン)である。図51(d)の頭蓋骨jは、頭蓋骨iの2次元シェーディング画像である。頭蓋骨iと頭蓋骨jの度数分布を他方式および本発明の2方式で比較した場合、図51において、頭蓋骨iと頭蓋骨jの度数分布を他方式および本発明の2方式で比較した場合、内接円分布が半径0の方向(図面の横軸において左端側)に局所的に偏るようになり、内接円分布の識別性が改善される。具体的には、内接円分布において双方とも正の相関が見られたが、本方式による相関係数は他方式より大きくなり顕著な類似性が認められた。
<9.変形例等>
以上、本発明の好適な実施形態について説明したが、本発明は上記実施形態に限定されず、種々の変形が可能である。例えば、上記実施形態では、処理対象の規制画像をモノクロ256階調の画素で表現されたラスター形式としたが、ベクトル形式のイラスト画像であってもよく、その場合はエッジ線が与えられるため、フィルタ演算によるエッジ点抽出の処理を簡素化できる。また、処理対象のポリゴンを三角形状としたが、四角形以上の多角形状であってもよい。
以上、本発明の好適な実施形態について説明したが、本発明は上記実施形態に限定されず、種々の変形が可能である。例えば、上記実施形態では、処理対象の規制画像をモノクロ256階調の画素で表現されたラスター形式としたが、ベクトル形式のイラスト画像であってもよく、その場合はエッジ線が与えられるため、フィルタ演算によるエッジ点抽出の処理を簡素化できる。また、処理対象のポリゴンを三角形状としたが、四角形以上の多角形状であってもよい。
また、上記実施形態では、度数分布データベースに、規制画像の度数分布、規制モデルの度数分布を登録しておき、対象モデルから作成した度数分布と照合するようにしたが、規制モデルの度数分布については、必ずしも登録、照合を行う必要はない。また、度数分布データベースに規制画像自体も登録することを推奨しているが、許諾が得られなければ登録しなくてもよい。また、規制モデル自体については登録しないことを推奨しているが、許諾が得られれば登録してもよい。
また、上記実施形態では、ポリゴン間三角形を構成するためのポリゴン上の一点として、ポリゴンの各頂点の平均座標をもつポリゴン平均点を用いたが、ポリゴン上の点であれば、ポリゴン平均点以外の点であってもよい。例えば、ポリゴン上の点としては、ポリゴンの重心点、ポリゴンの頂点のxyz座標別の最大値と最小値の丁度中間となる値をもつ点、等を用いることができる。
また、上記実施形態では、対象モデルと規制画像(または規制モデル)の照合対象の度数分布として外接円分布と内接円分布を用いたが、外接円分布を用いず、内接円分布のみを用いるようにしてもよい。
1、1a、11、11a、81・・・CPU(Central Processing Unit)
2、2a、12、12a、82・・・RAM(Random Access Memory)
3、3a、13、13a、83・・・記憶装置
4、4a、14、14a、84・・・キー入力I/F
5、5a、15、15a、85・・・データ入出力I/F
6、6a、16、16a、86・・・表示部
7・・・3Dプリンタ(立体物造形装置)
7a・・・データ処理部
7b・・・出力部
8、8a、18、18a・・・ネットワーク通信部
10・・・モデル度数分布算出手段
20・・・度数分布照合手段
30、31・・・対象モデル記憶手段
40・・・度数分布データベース
41・・・規制画像データベース
50・・・対象モデル受信手段
60・・・出力適否データ送信手段
91・・・規制画像記憶手段
92・・・画像度数分布算出手段
93・・・画像度数分布記憶手段
100、101・・・立体物造形用データ出力規制装置
201・・・出力制御用端末
202・・・処理サーバ
300、301・・・画像度数分布算出装置
2、2a、12、12a、82・・・RAM(Random Access Memory)
3、3a、13、13a、83・・・記憶装置
4、4a、14、14a、84・・・キー入力I/F
5、5a、15、15a、85・・・データ入出力I/F
6、6a、16、16a、86・・・表示部
7・・・3Dプリンタ(立体物造形装置)
7a・・・データ処理部
7b・・・出力部
8、8a、18、18a・・・ネットワーク通信部
10・・・モデル度数分布算出手段
20・・・度数分布照合手段
30、31・・・対象モデル記憶手段
40・・・度数分布データベース
41・・・規制画像データベース
50・・・対象モデル受信手段
60・・・出力適否データ送信手段
91・・・規制画像記憶手段
92・・・画像度数分布算出手段
93・・・画像度数分布記憶手段
100、101・・・立体物造形用データ出力規制装置
201・・・出力制御用端末
202・・・処理サーバ
300、301・・・画像度数分布算出装置
Claims (34)
- ポリゴンの集合として表現されたポリゴンモデルを立体物造形装置に立体物造形用データとして出力する際に、規制すべきか否かを判定する装置であって、
出力を規制すべき画像である規制画像の特徴を表現した内接円分布が登録されたデータベースと、
出力対象のポリゴンモデルである対象モデルに対して、当該対象モデル内から選択された3つのポリゴン上の所定の点により形成される三角形であるポリゴン間三角形の外接円の半径と内接円の半径を算出し、外接円の半径の最大値を用いて正規化した内接円の半径の度数分布である内接円分布を算出するモデル度数分布算出手段と、
前記モデル度数分布算出手段により算出された対象モデルの内接円分布を、前記データベースに登録されている規制画像の内接円分布と照合し、出力を規制すべきか否かを判定する度数分布照合手段と、を備え、
前記データベースに登録された前記内接円分布は、
前記規制画像に対して、対象物のエッジを構成する画素をエッジ点として抽出し、抽出されたエッジ点のうち選択された3つのエッジ点により形成される三角形であるエッジ点間三角形の外接円の半径と内接円の半径を算出し、外接円の半径の最大値を用いて正規化した内接円の半径の度数分布である内接円分布を算出する画像度数分布算出手段を備えた画像度数分布算出装置により得られたものであることを特徴とする立体物造形用データ出力規制装置。 - ポリゴンの集合として表現されたポリゴンモデルを立体物造形装置に立体物造形用データとして出力する際に、規制すべきか否かを判定する装置であって、
出力を規制すべき画像である規制画像に対して、対象物のエッジを構成する画素をエッジ点として抽出し、抽出されたエッジ点のうち選択された3つのエッジ点により形成される三角形であるエッジ点間三角形の外接円の半径と内接円の半径を算出し、外接円の半径の最大値を用いて正規化した内接円の半径の度数分布である内接円分布を算出する画像度数分布算出手段と、
出力対象のポリゴンモデルである対象モデルに対して、当該対象モデル内から選択された3つのポリゴン上の所定の点により形成される三角形であるポリゴン間三角形の外接円の半径と内接円の半径を算出し、外接円の半径の最大値を用いて正規化した内接円の半径の度数分布である内接円分布を算出するモデル度数分布算出手段と、
前記画像度数分布算出手段により算出された規制画像の内接円分布と、前記モデル度数分布算出手段により算出された対象モデルの内接円分布と、を照合し、出力を規制すべきか否かを判定する度数分布照合手段と、を有することを特徴とする立体物造形用データ出力規制装置。 - 前記画像度数分布算出手段は、前記内接円分布を算出するにあたり、所定数の要素で構成される1次元の配列を準備し、前記算出された内接円の半径の最大値の35%〜50%で正規化された範囲を前記所定数に均等に分割した上で、前記各内接円の半径を当該内接円の半径の値に基づいて前記所定数のいずれかの要素に割り当て、当該要素に該当する数を計数することにより、前記内接円分布を算出することを特徴とする請求項1または請求項2に記載の立体物造形用データ出力規制装置。
- 前記モデル度数分布算出手段は、前記内接円分布を算出するにあたり、所定数の要素で構成される1次元の配列を準備し、前記算出された内接円の半径の最大値の35%〜50%で正規化された範囲を前記所定数に均等に分割した上で、前記各内接円の半径を当該内接円の半径の値に基づいて前記所定数のいずれかの要素に割り当て、当該要素に該当する数を計数することにより、前記内接円分布を算出することを特徴とする請求項1から請求項3のいずれか一項に記載の立体物造形用データ出力規制装置。
- 前記画像度数分布算出手段は、前記規制画像に対して、当該規制画像内のエッジ点を第1エッジ点グループ、第2エッジ点グループ、第3エッジ点グループの3つのグループに分類し、各グループから1つずつエッジ点を選択することにより、前記3つのエッジ点を選択することを特徴とする請求項1から請求項4のいずれか一項に記載の立体物造形用データ出力規制装置。
- 前記画像度数分布算出手段は、前記各グループのエッジ点の数をNe/3個とした際、Ne/3個の連続する整数をランダムに入れ替えた乱数配列を作成するとともに、前記乱数配列の先頭から末尾への順序を逆にした反転乱数配列を作成し、前記3つのグループのうち、1つのグループに前記乱数配列、他の1つのグループに前記反転乱数配列をそれぞれ適用してグループ内のエッジ点の順序を入れ替えた後、各グループの先頭から順に、前記エッジ点の選択を行うことを特徴とする請求項5に記載の立体物造形用データ出力規制装置。
- 前記画像度数分布算出手段は、
前記第1エッジ点グループのエッジ点に前記乱数配列、前記第2エッジ点グループのエッジ点に前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第3エッジ点グループのエッジ点の順序を入れ替えずに前記エッジ点の選択を行ってNe/3個のエッジ点間三角形を形成し、
前記第2エッジ点グループのエッジ点に前記乱数配列、前記第3エッジ点グループのエッジ点に前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第1エッジ点グループのエッジ点の順序を入れ替えずに前記エッジ点の選択を行ってNe/3個のエッジ点間三角形を形成し、
前記第3エッジ点グループのエッジ点に前記乱数配列、前記第1エッジ点グループのエッジ点に前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第2エッジ点グループのエッジ点の順序を入れ替えずに前記エッジ点の選択を行ってNe/3個のエッジ点間三角形を形成することを特徴とする請求項6に記載の立体物造形用データ出力規制装置。 - 前記画像度数分布算出手段は、前記規制画像の各画素の値に対して、事前に定義された複数のフィルタマトリクスを適用し、各画素について前記各フィルタマトリクスで算出されたフィルタ演算値の最大値をエッジ強度とし、当該エッジ強度が所定の値を超える画素を前記エッジ点として抽出することを特徴とする請求項1から請求項7のいずれか一項に記載の立体物造形用データ出力規制装置。
- 前記フィルタマトリクスとして、事前に定義された16方向の3×3画素のフィルタマトリクスを適用し、各方向について事前に設定された値を用いて、前記フィルタ演算値を求める演算を行うことを特徴とする請求項8に記載の立体物造形用データ出力規制装置。
- 前記画像度数分布算出手段は、前記16方向の各方向について事前に設定された強度補正量を用いて、前記求められたエッジ強度を補正することを特徴とする請求項9に記載の立体物造形用データ出力規制装置。
- 前記画像度数分布算出手段は、各画素について算出されたエッジ強度に対して、所定の設定最小値を減算し、減算した値に、エッジ強度の階調数を乗算し、当該階調数と前記設定最小値との差を除算することにより前記エッジ強度を補正し、補正されたエッジ強度が正の値になる画素を前記エッジ点として抽出することを特徴とする請求項8から請求項10のいずれか一項に記載の立体物造形用データ出力規制装置。
- 前記画像度数分布算出手段は、
前記内接円分布を1回算出するごとに、前記3つのグループのうち2つのグループ内のエッジ点の順序を変化させて、前記内接円分布を改めて算出する処理を所定の回数、繰り返し行い、算出された前記内接円分布の平均値を、照合対象の内接円分布とするものであることを特徴とする請求項5から請求項7のいずれか一項に記載の立体物造形用データ出力規制装置。 - 前記画像度数分布算出手段は、
前記内接円分布を1回算出するごとに、前記3つのグループのうち2つのグループ内のエッジ点の順序を変化させて、前記内接円分布を改めて算出する処理を繰り返し行い、
算出直後の内接円分布と、その直前に得られた内接円分布を比較し、比較の結果で類似性が認められる場合に、前記算出直後の内接円分布を、照合対象の内接円分布とするものであることを特徴とする請求項5から請求項7のいずれか一項に記載の立体物造形用データ出力規制装置。 - 前記画像度数分布算出手段は、前記規制画像に対して、前記内接円分布に加えて、前記エッジ点間三角形の外接円の半径の度数分布である外接円分布を算出するものであり、
前記モデル度数分布算出手段は、前記対象モデルに対して、前記内接円分布に加えて、前記ポリゴン間三角形の外接円の半径の度数分布である外接円分布を算出するものであり、
前記度数分布照合手段は、前記内接円分布の照合に加えて、前記算出された前記対象モデルの外接円分布を、前記規制画像の外接円分布と照合し、出力を規制すべきか否かを判定するものであることを特徴とする請求項1から請求項13のいずれか一項に記載の立体物造形用データ出力規制装置。 - 前記画像度数分布算出手段は、前記外接円分布を算出するにあたり、所定数の要素で構成される1次元の配列を準備し、前記算出された外接円の半径の最大値の範囲を前記所定数に均等に分割した上で、前記各外接円の半径を当該外接円の半径の値に基づいて前記所定数のいずれかの要素に割り当て、当該要素に該当する数を計数することにより、前記外接円分布を算出することを特徴とする請求項14に記載の立体物造形用データ出力規制装置。
- 前記画像度数分布算出手段は、前記要素に該当する数を計数する際、前記選択された3つのエッジ点のエッジ強度の平均値で重み付けすることを特徴とする請求項3または請求項15に記載の立体物造形用データ出力規制装置。
- 前記画像度数分布算出手段は、前記要素に該当する数を計数する際、i組目に選択された3つのエッジ点のエッジ強度の平均値を算出し、i組目の前記エッジ点間三角形の外接円の半径をDe(i)、前記エッジ点間三角形の外接円の半径の最大値をDemaxとしたとき、De(i)・{Demax2−De(i)2}1/2なる値を、前記i組目の3つのエッジ点のエッジ強度の平均値に乗じた値で重み付けすることを特徴とする請求項15に記載の立体物造形用データ出力規制装置。
- 前記画像度数分布算出手段は、前記要素に該当する数を計数する際、i組目に選択された3つのエッジ点のエッジ強度の平均値を算出し、i組目の前記エッジ点間三角形の内接円の半径をAe(i)、前記エッジ点間三角形の内接円の半径の最大値をAemaxとしたとき、Ae(i)・{Aemax2−Ae(i)2}1/2なる値を、前記i組目の3つのエッジ点のエッジ強度の平均値に乗じた値で重み付けすることを特徴とする請求項16に記載の立体物造形用データ出力規制装置。
- 前記モデル度数分布算出手段は、前記対象モデルに対して、当該対象モデル内のポリゴンを第1ポリゴングループ、第2ポリゴングループ、第3ポリゴングループの3つのグループに分類し、各グループから1つずつポリゴンを選択することにより、前記3つのポリゴンを選択することを特徴とする請求項1から請求項18のいずれか一項に記載の立体物造形用データ出力規制装置。
- 前記モデル度数分布算出手段は、前記各グループのポリゴン数をN/3個とした際、N/3個の連続する整数をランダムに入れ替えた乱数配列を作成するとともに、前記乱数配列の先頭から末尾への順序を逆にした反転乱数配列を作成し、前記3つのグループのうち、1つのグループに前記乱数配列、他の1つのグループに前記反転乱数配列をそれぞれ適用してグループ内のポリゴンの順序を入れ替えた後、各グループの先頭から順に、前記ポリゴンの選択を行うことを特徴とする請求項19に記載の立体物造形用データ出力規制装置。
- 前記モデル度数分布算出手段は、
前記第1ポリゴングループのポリゴンに前記乱数配列、前記第2ポリゴングループのポリゴンに前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第3ポリゴングループのポリゴンの順序を入れ替えずに前記ポリゴンの選択を行ってN/3個のポリゴン間三角形を形成し、
前記第2ポリゴングループのポリゴンに前記乱数配列、前記第3ポリゴングループのポリゴンに前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第1ポリゴングループのポリゴンの順序を入れ替えずに前記ポリゴンの選択を行ってN/3個のポリゴン間三角形を形成し、
前記第3ポリゴングループのポリゴンに前記乱数配列、前記第1ポリゴングループのポリゴンに前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第2ポリゴングループのポリゴンの順序を入れ替えずに前記ポリゴンの選択を行ってN/3個のポリゴン間三角形を形成することを特徴とする請求項20に記載の立体物造形用データ出力規制装置。 - 前記モデル度数分布算出手段は、
前記内接円分布を1回算出するごとに、前記3つのグループのうち2つのグループ内のポリゴンの順序を変化させて、前記内接円分布を改めて算出する処理を所定の回数、繰り返し行い、算出された内接円分布の平均値を、照合対象の内接円分布とするものであることを特徴とする請求項19から請求項21のいずれか一項に記載の立体物造形用データ出力規制装置。 - 前記モデル度数分布算出手段は、
前記内接円分布を1回算出するごとに、前記3つのグループのうち2つのグループ内のポリゴンの順序を変化させて、前記内接円分布を改めて算出する処理を繰り返し行い、
算出直後の内接円分布と、その直前に得られた内接円分布を比較し、比較の結果で類似性が認められる場合に、前記算出直後の内接円分布を、照合対象の内接円分布とするものであることを特徴とする請求項19から請求項21のいずれか一項に記載の立体物造形用データ出力規制装置。 - 前記モデル度数分布算出手段は、前記外接円分布を算出するにあたり、所定数の要素で構成される1次元の配列を準備し、前記算出された外接円の半径の最大値の範囲を前記所定数に均等に分割した上で、前記各外接円の半径を当該外接円の半径の値に基づいて前記所定数のいずれかの要素に割り当て、当該要素に該当する数を計数することにより、前記外接円分布を算出することを特徴とする請求項14または請求項15のいずれか一項に記載の立体物造形用データ出力規制装置。
- 前記モデル度数分布算出手段は、前記要素に該当する数を計数する際、前記選択された3つのポリゴンの面積の平均値で重み付けするようにしていることを特徴とする請求項4または請求項24に記載の立体物造形用データ出力規制装置。
- 前記モデル度数分布算出手段は、前記各対象モデルを構成するポリゴンの面積の総和値により、前記各要素の値を除算するようにしていることを特徴とする請求項25に記載の立体物造形用データ出力規制装置。
- 前記対象モデルを複数の部分対象モデルに分離する対象モデル分離手段を更に備え、
前記部分対象モデルに対して、前記モデル度数分布算出手段が処理を行うことを特徴とする請求項1から請求項26のいずれか一項に記載の立体物造形用データ出力規制装置。 - 前記ポリゴンは三角形状であり、前記対象モデル分離手段は、あるポリゴンと、当該ポリゴンと辺を共有する3つの隣接ポリゴンが、同一の部分対象モデルに属するように、分離することを特徴とする請求項27に記載の立体物造形用データ出力規制装置。
- 前記度数分布照合手段は、前記モデル度数分布算出手段により前記対象モデルから算出された内接円分布を前記規制画像の内接円分布と照合するにあたり、
前記内接円分布どうしの相関係数を算出し、算出された相関係数が所定の正のしきい値より大きい場合に、出力を規制すべきであると判定することを特徴とする請求項1から請求項28のいずれか一項に記載の立体物造形用データ出力規制装置。 - 前記画像度数分布算出装置により算出された内接円分布を受信し、受信した内接円分布を前記データベースに登録する登録手段を更に有することを特徴とする請求項1に記載の立体物造形用データ出力規制装置。
- 前記対象モデルを、接続された立体物造形装置に出力する手段と、
前記立体物造形装置による立体物の造形処理と並行して実行される前記度数分布照合手段により、出力を規制すべきであると判定された場合に、前記立体物造形装置に、前記対象モデルの出力中止命令を出力する手段と、
を更に有することを特徴とする請求項1から請求項30のいずれか一項に記載の立体物造形用データ出力規制装置。 - 出力制御用端末と、処理サーバがネットワークを介して接続された構成であって、
前記出力制御用端末は、前記モデル度数分布算出手段を有し、
前記処理サーバは、
前記データベースと、
ネットワークを介して前記出力制御用端末から前記対象モデルの内接円分布を受信する受信手段と、
前記度数分布照合手段と、
前記度数分布照合手段により判定された、出力を規制すべきか否かに基づくデータを前記出力制御用端末に送信する出力適否データ送信手段と、
を有することを特徴とする請求項1に記載の立体物造形用データ出力規制装置。 - 請求項1から請求項32のいずれか一項に記載の立体物造形用データ出力規制装置と、
前記立体物造形用データ出力規制装置で出力を規制すべきでないと判定されたポリゴンモデルを用いて立体物を造形する立体物造形装置と、
を有することを特徴とする立体物造形システム。 - コンピュータを、請求項1から請求項32のいずれか一項に記載の立体物造形用データ出力規制装置として機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015225097A JP2017091473A (ja) | 2015-11-17 | 2015-11-17 | 立体物造形用データ出力規制装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015225097A JP2017091473A (ja) | 2015-11-17 | 2015-11-17 | 立体物造形用データ出力規制装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017091473A true JP2017091473A (ja) | 2017-05-25 |
Family
ID=58767941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015225097A Pending JP2017091473A (ja) | 2015-11-17 | 2015-11-17 | 立体物造形用データ出力規制装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2017091473A (ja) |
-
2015
- 2015-11-17 JP JP2015225097A patent/JP2017091473A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Jack et al. | Learning free-form deformations for 3d object reconstruction | |
CN112102480B (zh) | 图像数据处理方法、装置、设备以及介质 | |
US20170116787A1 (en) | System and method for processing color of three-dimensional object | |
Ozbay et al. | A hybrid method for skeleton extraction on Kinect sensor data: Combination of L1-Median and Laplacian shrinking algorithms | |
JP6569389B2 (ja) | ポリゴンモデル構造化装置および立体物造形用データ削減装置 | |
WO2020112078A1 (en) | Geometry-aware interactive design | |
Vong et al. | How to build a 2d and 3d aerial multispectral map?—all steps deeply explained | |
JP6318701B2 (ja) | 立体物造形用データ出力規制装置 | |
JP6638341B2 (ja) | 立体物造形用データ出力規制装置 | |
JP6557988B2 (ja) | 立体物造形用データ出力規制装置 | |
JP6540238B2 (ja) | 立体物造形用データ出力規制装置 | |
JP6375768B2 (ja) | 立体物造形用データ出力規制装置 | |
JP2016224887A (ja) | 立体物造形用データ出力規制装置 | |
JP2017091473A (ja) | 立体物造形用データ出力規制装置 | |
JP2017207900A (ja) | 立体物造形用データ出力規制装置 | |
JP2019018446A (ja) | 立体物造形用データ出力規制装置 | |
JP6511959B2 (ja) | 立体物造形用データ出力規制装置 | |
JP2018075755A (ja) | 立体物造形用データ出力規制装置 | |
JP6613707B2 (ja) | 立体物造形用データ出力規制装置 | |
JP6638466B2 (ja) | 立体物造形用データ出力規制装置 | |
JP6613832B2 (ja) | 立体物造形用データ出力規制装置 | |
JP2018126939A (ja) | 立体物造形用データ出力規制装置 | |
JP2016215598A (ja) | 立体物造形用データ出力規制装置 | |
JP2017091447A (ja) | 立体物造形用データ出力規制装置 | |
JP6409513B2 (ja) | 立体物造形用データ出力規制装置 |