(57)【特許請求の範囲】
【請求項１】
ポリゴンの集合として表現されたポリゴンモデルを立体物造形装置に立体物造形用データとして出力する際に、規制すべきか否かを判定する装置であって、
出力を規制すべき画像である規制画像の特徴を表現した外接円分布が登録されたデータベースと、
出力対象のポリゴンモデルである対象モデルに対して、当該対象モデル内から選択された３つのポリゴン上の所定の点により形成される三角形であるポリゴン間三角形の外接円の半径を算出し、当該外接円の半径の度数分布である外接円分布を算出するモデル度数分布算出手段と、
前記モデル度数分布算出手段により算出された対象モデルの外接円分布を、前記データベースに登録されている規制画像の外接円分布と照合し、出力を規制すべきか否かを判定する度数分布照合手段と、を備え、
前記データベースに登録された前記外接円分布は、
前記規制画像に対して、対象物のエッジを構成する画素をエッジ点として抽出し、抽出されたエッジ点のうち選択された３つのエッジ点により形成される三角形であるエッジ点間三角形の外接円の半径を算出し、当該外接円の半径の度数分布である外接円分布を算出する画像度数分布算出手段を備えた画像度数分布算出装置により得られたものであることを特徴とする立体物造形用データ出力規制装置。
【請求項２】
ポリゴンの集合として表現されたポリゴンモデルを立体物造形装置に立体物造形用データとして出力する際に、規制すべきか否かを判定する装置であって、
出力を規制すべき画像である規制画像に対して、対象物のエッジを構成する画素をエッジ点として抽出し、抽出されたエッジ点のうち選択された３つのエッジ点により形成される三角形であるエッジ点間三角形の外接円の半径を算出し、当該外接円の半径の度数分布である外接円分布を算出する画像度数分布算出手段と、
出力対象のポリゴンモデルである対象モデルに対して、当該対象モデル内から選択された３つのポリゴン上の所定の点により形成される三角形であるポリゴン間三角形の外接円の半径を算出し、当該外接円の半径の度数分布である外接円分布を算出するモデル度数分布算出手段と、
前記画像度数分布算出手段により算出された規制画像の外接円分布と、前記モデル度数分布算出手段により算出された対象モデルの外接円分布と、を照合し、出力を規制すべきか否かを判定する度数分布照合手段と、を有することを特徴とする立体物造形用データ出力規制装置。
【請求項３】
前記画像度数分布算出手段は、前記規制画像に対して、当該規制画像内のエッジ点を第１エッジ点グループ、第２エッジ点グループ、第３エッジ点グループの３つのグループに分類し、各グループから１つずつエッジ点を選択することにより、前記３つのエッジ点を選択することを特徴とする請求項１または請求項２に記載の立体物造形用データ出力規制装置。
【請求項４】
前記画像度数分布算出手段は、前記各グループのエッジ点の数をＮｅ／３個とした際、Ｎｅ／３個の連続する整数をランダムに入れ替えた乱数配列を作成するとともに、前記乱数配列の先頭から末尾への順序を逆にした反転乱数配列を作成し、前記３つのグループのうち、１つのグループに前記乱数配列、他の１つのグループに前記反転乱数配列をそれぞれ適用してグループ内のエッジ点の順序を入れ替えた後、各グループの先頭から順に、前記エッジ点の選択を行うことを特徴とする請求項３に記載の立体物造形用データ出力規制装置。
【請求項５】
前記画像度数分布算出手段は、
前記第１エッジ点グループのエッジ点に前記乱数配列、前記第２エッジ点グループのエッジ点に前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第３エッジ点グループのエッジ点の順序を入れ替えずに前記エッジ点の選択を行ってＮｅ／３個のエッジ点間三角形を形成し、
前記第２エッジ点グループのエッジ点に前記乱数配列、前記第３エッジ点グループのエッジ点に前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第１エッジ点グループのエッジ点の順序を入れ替えずに前記エッジ点の選択を行ってＮｅ／３個のエッジ点間三角形を形成し、
前記第３エッジ点グループのエッジ点に前記乱数配列、前記第１エッジ点グループのエッジ点に前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第２エッジ点グループのエッジ点の順序を入れ替えずに前記エッジ点の選択を行ってＮｅ／３個のエッジ点間三角形を形成することを特徴とする請求項４に記載の立体物造形用データ出力規制装置。
【請求項６】
前記画像度数分布算出手段は、前記規制画像の各画素の値に対して、事前に定義された複数のフィルタマトリクスを適用し、各画素について前記各フィルタマトリクスで算出されたフィルタ演算値の最大値をエッジ強度とし、当該エッジ強度が所定の値を超える画素を前記エッジ点として抽出することを特徴とする請求項１から請求項５のいずれか一項に記載の立体物造形用データ出力規制装置。
【請求項７】
前記フィルタマトリクスとして、事前に定義された１６方向の３×３画素のフィルタマトリクスを適用し、各方向について事前に設定された値を用いて、前記フィルタ演算値を求める演算を行うことを特徴とする請求項６に記載の立体物造形用データ出力規制装置。
【請求項８】
前記画像度数分布算出手段は、前記１６方向の各方向について事前に設定された強度補正量を用いて、前記求められたエッジ強度を補正することを特徴とする請求項７に記載の立体物造形用データ出力規制装置。
【請求項９】
前記画像度数分布算出手段は、各画素について算出されたエッジ強度に対して、所定の設定最小値を減算し、減算した値に、エッジ強度の階調数を乗算し、当該階調数と前記設定最小値との差を除算することにより前記エッジ強度を補正し、補正されたエッジ強度が正の値になる画素を前記エッジ点として抽出することを特徴とする請求項６から請求項８のいずれか一項に記載の立体物造形用データ出力規制装置。
【請求項１０】
前記画像度数分布算出手段は、
前記外接円分布を１回算出するごとに、前記３つのグループのうち２つのグループ内のエッジ点の順序を変化させて、前記外接円分布を改めて算出する処理を所定の回数、繰り返し行い、算出された前記外接円分布の平均値を、照合対象の外接円分布とするものであることを特徴とする請求項３から請求項５のいずれか一項に記載の立体物造形用データ出力規制装置。
【請求項１１】
前記画像度数分布算出手段は、
前記外接円分布を１回算出するごとに、前記３つのグループのうち２つのグループ内のエッジ点の順序を変化させて、前記外接円分布を改めて算出する処理を繰り返し行い、
算出直後の外接円分布と、直前に得られた外接円分布を比較し、比較の結果で類似性が認められる場合に、算出直後に得られた外接円分布を、照合対象の外接円分布とするものであることを特徴とする請求項３から請求項５のいずれか一項に記載の立体物造形用データ出力規制装置。
【請求項１２】
前記画像度数分布算出手段は、前記外接円分布を算出するにあたり、所定数の要素で構成される１次元の配列を準備し、前記算出された外接円の半径の最大値の範囲を前記所定数に均等に分割した上で、前記各外接円の半径を当該外接円の半径の値に基づいて前記所定数のいずれかの要素に割り当て、当該要素に該当する数を計数することにより、前記外接円分布を算出するようにしていることを特徴とする請求項１から請求項１１のいずれか一項に記載の立体物造形用データ出力規制装置。
【請求項１３】
前記画像度数分布算出手段は、前記規制画像に対して、前記外接円分布に加えて、前記エッジ点間三角形の内接円の半径を算出し、算出結果である内接円の半径の度数分布である内接円分布を算出するものであり、
前記モデル度数分布算出手段は、前記対象モデルに対して、前記外接円分布に加えて、前記ポリゴン間三角形の内接円の半径を算出し、算出結果である内接円の半径の度数分布である内接円分布を算出するものであり、
前記度数分布照合手段は、前記外接円分布の照合に加えて、前記算出された前記対象モデルの内接円分布を、前記規制画像の内接円分布と照合し、出力を規制すべきか否かを判定するものであることを特徴とする請求項１から請求項１２のいずれか一項に記載の立体物造形用データ出力規制装置。
【請求項１４】
前記画像度数分布算出手段は、前記内接円分布を算出するにあたり、所定数の要素で構成される１次元の配列を準備し、前記算出された内接円の半径の最大値の範囲を前記所定数に均等に分割した上で、前記各内接円の半径を当該内接円の半径の値に基づいて前記所定数のいずれかの要素に割り当て、当該要素に該当する数を計数することにより、前記内接円分布を算出することを特徴とする請求項１３に記載の立体物造形用データ出力規制装置。
【請求項１５】
前記画像度数分布算出手段は、前記要素に該当する数を計数する際、前記選択された３つのエッジ点のエッジ強度の平均値で重み付けすることを特徴とする請求項１２または請求項１４に記載の立体物造形用データ出力規制装置。
【請求項１６】
前記画像度数分布算出手段は、前記割り当てられた要素に該当する数を計数する際、ｉ組目に選択された３つのエッジ点のエッジ強度の平均値を算出し、ｉ組目の前記エッジ点間三角形の外接円の半径をＤｅ（ｉ）、前記全てのエッジ点間三角形の外接円の半径の最大値をＤｅｍａｘとしたとき、Ｄｅ（ｉ）・｛Ｄｅｍａｘ２−Ｄｅ（ｉ）２｝１／２なる値を、前記ｉ組目の３つのエッジ点のエッジ強度の平均値に乗じた値で重み付けすることを特徴とする請求項１５に記載の立体物造形用データ出力規制装置。
【請求項１７】
前記画像度数分布算出手段は、前記割り当てられた要素に該当する数を計数する際、ｉ組目に選択された３つのエッジ点のエッジ強度の平均値を算出し、ｉ組目の前記エッジ点間三角形の内接円の半径をＡｅ（ｉ）、前記全てのエッジ点間三角形の内接円の半径の最大値をＡｅｍａｘとしたとき、Ａｅ（ｉ）・｛Ａｅｍａｘ２−Ａｅ（ｉ）２｝１／２なる値を、前記ｉ組目の３つのエッジ点のエッジ強度の平均値に乗じた値で重み付けすることを特徴とする請求項１４に記載の立体物造形用データ出力規制装置。
【請求項１８】
前記モデル度数分布算出手段は、前記対象モデルに対して、当該対象モデル内のポリゴンを第１ポリゴングループ、第２ポリゴングループ、第３ポリゴングループの３つのグループに分類し、各グループから１つずつポリゴンを選択することにより、前記３つのポリゴンを選択することを特徴とする請求項１から請求項１７のいずれか一項に記載の立体物造形用データ出力規制装置。
【請求項１９】
前記モデル度数分布算出手段は、前記各グループのポリゴン数をＮ／３個とした際、Ｎ／３個の連続する整数をランダムに入れ替えた乱数配列を作成するとともに、前記乱数配列の先頭から末尾への順序を逆にした反転乱数配列を作成し、前記３つのグループのうち、１つのグループに前記乱数配列、他の１つのグループに前記反転乱数配列をそれぞれ適用してグループ内のポリゴンの順序を入れ替えた後、各グループの先頭から順に、前記ポリゴンの選択を行うことを特徴とする請求項１８に記載の立体物造形用データ出力規制装置。
【請求項２０】
前記モデル度数分布算出手段は、
前記第１ポリゴングループのポリゴンに前記乱数配列、前記第２ポリゴングループのポリゴンに前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第３ポリゴングループのポリゴンの順序を入れ替えずに前記ポリゴンの選択を行ってＮ／３個のポリゴン間三角形を形成し、
前記第２ポリゴングループのポリゴンに前記乱数配列、前記第３ポリゴングループのポリゴンに前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第１ポリゴングループのポリゴンの順序を入れ替えずに前記ポリゴンの選択を行ってＮ／３個のポリゴン間三角形を形成し、
前記第３ポリゴングループのポリゴンに前記乱数配列、前記第１ポリゴングループのポリゴンに前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第２ポリゴングループのポリゴンの順序を入れ替えずに前記ポリゴンの選択を行ってＮ／３個のポリゴン間三角形を形成することを特徴とする請求項１９に記載の立体物造形用データ出力規制装置。
【請求項２１】
前記モデル度数分布算出手段は、
前記外接円分布を１回算出するごとに、前記３つのグループのうち２つのグループ内のポリゴンの順序を変化させて、前記外接円分布を改めて算出する処理を繰り返し行い、所定の回数、算出された外接円分布の平均値を、照合対象の外接円分布とするものであることを特徴とする請求項１８から請求項２０のいずれか一項に記載の立体物造形用データ出力規制装置。
【請求項２２】
前記モデル度数分布算出手段は、
前記外接円分布を１回算出するごとに、前記３つのグループのうち２つのグループ内のポリゴンの順序を変化させて、前記外接円分布を改めて算出する処理を繰り返し行い、
算出直後の外接円分布と、その直前に得られた外接円分布を比較し、比較の結果で類似性が認められる場合に、前記算出直後の外接円分布を、照合対象の外接円分布とするものであることを特徴とする請求項１８から請求項２０のいずれか一項に記載の立体物造形用データ出力規制装置。
【請求項２３】
前記モデル度数分布算出手段は、前記外接円分布を算出するにあたり、所定数の要素で構成される１次元の配列を準備し、前記算出された外接円の半径の最大値の範囲を前記所定数に均等に分割した上で、前記外接円の半径を当該外接円の半径の値に基づいて前記所定数のいずれかの要素に割り当て、当該要素に該当する数を計数することにより、前記外接円分布を算出することを特徴とする請求項１から請求項２２のいずれか一項に記載の立体物造形用データ出力規制装置。
【請求項２４】
前記モデル度数分布算出手段は、前記内接円分布を算出するにあたり、所定数の要素で構成される１次元の配列を準備し、前記算出された内接円の半径の最大値の範囲を前記所定数に均等に分割した上で、前記各内接円の半径を当該内接円の半径の値に基づいて前記所定数のいずれかの要素に割り当て、当該要素に該当する数を計数することにより、前記内接円分布を算出することを特徴とする請求項１３または請求項１４のいずれか一項に記載の立体物造形用データ出力規制装置。
【請求項２５】
前記モデル度数分布算出手段は、前記要素に該当する数を計数する際、前記選択された３つのポリゴンの面積の平均値で重み付けするようにしていることを特徴とする請求項２３または請求項２４に記載の立体物造形用データ出力規制装置。
【請求項２６】
前記モデル度数分布算出手段は、前記各対象モデルを構成するポリゴンの面積の総和値により、前記各要素の値を除算するようにしていることを特徴とする請求項２５に記載の立体物造形用データ出力規制装置。
【請求項２７】
前記対象モデルを複数の部分対象モデルに分離する対象モデル分離手段を更に備え、
前記部分対象モデルに対して、前記モデル度数分布算出手段が処理を行うことを特徴とする請求項１から請求項２６のいずれか一項に記載の立体物造形用データ出力規制装置。
【請求項２８】
前記ポリゴンは三角形状であり、前記対象モデル分離手段は、あるポリゴンと、当該ポリゴンと辺を共有する３つの隣接ポリゴンが、同一の部分対象モデルに属するように、分離することを特徴とする請求項２７に記載の立体物造形用データ出力規制装置。
【請求項２９】
前記度数分布照合手段は、前記モデル度数分布算出手段により前記対象モデルから算出された外接円分布を前記規制画像の外接円分布と照合するにあたり、
前記外接円分布どうしの相関係数を算出し、算出された相関係数が所定の正のしきい値より大きい場合に、出力を規制すべきであると判定するようにしていることを特徴とする請求項１から請求項２８のいずれか一項に記載の立体物造形用データ出力規制装置。
【請求項３０】
前記画像度数分布算出装置により算出された外接円分布を受信し、受信した外接円分布を前記データベースに登録する登録手段を更に有することを特徴とする請求項１に記載の立体物造形用データ出力規制装置。
【請求項３１】
前記対象モデルを、接続された立体物造形装置に出力する手段と、
前記立体物造形装置による立体物の造形処理と並行して実行される前記度数分布照合手段により、出力を規制すべきであると判定された場合に、前記立体物造形装置に、前記対象モデルの出力中止命令を出力する手段と、
を更に有することを特徴とする請求項１から請求項３０のいずれか一項に記載の立体物造形用データ出力規制装置。
【請求項３２】
出力制御用端末と、処理サーバがネットワークを介して接続された構成であって、
前記出力制御用端末は、前記モデル度数分布算出手段を有し、
前記処理サーバは、
前記データベースと、
ネットワークを介して前記出力制御用端末から前記対象モデルの外接円分布を受信する受信手段と、
前記度数分布照合手段と、
前記度数分布照合手段により判定された、出力を規制すべきか否かに基づくデータを前記出力制御用端末に送信する出力適否データ送信手段と、
を有することを特徴とする請求項１に記載の立体物造形用データ出力規制装置。
【請求項３３】
請求項１から請求項３２のいずれか一項に記載の立体物造形用データ出力規制装置と、
前記立体物造形用データ出力規制装置で出力を規制すべきでないと判定されたポリゴンモデルを用いて立体物を造形する立体物造形装置と、
を有することを特徴とする立体物造形システム。
【請求項３４】
コンピュータを、請求項１から請求項３２のいずれか一項に記載の立体物造形用データ出力規制装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、立体物を表すデータを基に、樹脂等を加工して立体物を造形する３Ｄプリンタ等の立体物造形装置の利用に際して、立体物造形装置からの出力に不適切なものを判別するための技術に関する。
【背景技術】
【０００２】
近年、立体物を表すデータをもとに、樹脂や石膏等を加工して造形する３Ｄプリンタが立体物造形装置として普及してきている。３Ｄプリンタは、立体物の３次元形状をポリゴンの集合で表現したポリゴンモデルを用いて立体物の出力を行う。３Ｄプリンタの医療応用として、医療診断で撮影されるCT/MRI画像（DICOM形式３次元ボクセルデータ）を基に、３Ｄプリンタ出力用モデリングデータ（ポリゴンモデル）を作成し、手術シミュレーション・医学教育・インフォームドコンセント向けの臓器模型を出力したり、体内埋め込み用の人工臓器（血管、骨、関節など）を作成したりする試みが始まっている。
【０００３】
３Ｄプリンタには、インターネットを介して情報だけでなく、モノを遠隔地に間接的に伝搬できる革新性を備えている。そのため、これまで税関で規制されていた銃砲・刀剣などの危険物がデータ形態で国境を越えて流布され、３Ｄプリンタによりモノとして容易に入手可能になるという問題が発生している。
【０００４】
具体的には、あるＷＥＢサイトにて３Ｄプリンタを用いて所定のモデルの拳銃を製造できるＳＴＬ（Standard Triangulated Language）が無償で公開されている。金属製に比べて射程距離などは多少劣るが、３Ｄプリンタで作成された弾丸でも殺傷能力はそれなりにある。更に、現状の３Ｄプリンタで造形可能な材料は樹脂・石膏に限定され、金属が使用できないという欠点が裏目に出て、空港の金属探知機で見逃されるという問題も指摘されている。今後、民生用の３Ｄプリンタが普及するにあたり、３Ｄプリンタ側に投入される出力データの形状認証と危険物の出力規制などのセキュリティ機能をもたせることが求められる。また、危険物だけでなく、３Ｄプリンタでは、キャラクターを３次元化したもの等を出力することができるため、著作権侵害となる可能性のあるモノが出力されてしまうという問題もある。
【０００５】
これに対して、ウィルス対策ツールと類似した手法で出力可否判定を行うシステムを構築する手法が考えられ、その実現にあたり、ポリゴン同士を照合する技術が用いられている（特許文献１参照）。しかし、３Ｄプリンタでの出力を規制すべき対象としては、３次元のポリゴンモデルを複製したものだけでなく、イラストや写真等の２次元で表現されたものを３次元化したものも含める必要がある。これに対応するため、２次元の画像を基に３次元のポリゴンモデルと照合を行う技術も開発されている（特許文献２〜４参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１５−１６２１６７号公報
【特許文献２】特許第４７０９６６８号公報
【特許文献３】特許第５２７８８８１号公報
【特許文献４】特許第５５６０９２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記従来の技術は、いずれも３次元のポリゴンモデルを２次元に投影して画像を生成し、この画像から得られる特徴ベクトルを照合に用いるものであるため、投影条件により特徴ベクトルが一意に定まらない。このため、２次元の画像を基にして、３次元のポリゴンモデルの出力適正を判定するのは、難しいという問題がある。
【０００８】
そこで、本発明は、ポリゴンモデルを基に立体物の出力を行う際に、２次元の画像を基準として、出力を規制すべきか否かの判定を的確に行うことが可能な立体物造形用データ出力規制装置を提供することを課題とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、本発明第１の態様では、
ポリゴンの集合として表現されたポリゴンモデルを立体物造形装置に立体物造形用データとして出力する際に、規制すべきか否かを判定する装置であって、
出力を規制すべき画像である規制画像の特徴を表現した外接円分布が登録されたデータベースと、
出力対象のポリゴンモデルである対象モデルに対して、当該対象モデル内から選択された３つのポリゴン上の所定の点により形成される三角形であるポリゴン間三角形の外接円の半径を算出し、当該外接円の半径の度数分布である外接円分布を算出するモデル度数分布算出手段と、
前記モデル度数分布算出手段により算出された対象モデルの外接円分布を、前記データベースに登録されている規制画像の外接円分布と照合し、出力を規制すべきか否かを判定する度数分布照合手段と、を備え、
前記データベースに登録された前記外接円分布は、
前記規制画像に対して、対象物のエッジを構成する画素をエッジ点として抽出し、抽出されたエッジ点のうち選択された３つのエッジ点により形成される三角形であるエッジ点間三角形の外接円の半径を算出し、当該外接円の半径の度数分布である外接円分布を算出する画像度数分布算出手段を備えた画像度数分布算出装置により得られたものであることを特徴とする立体物造形用データ出力規制装置を提供する。
【００１０】
ここで、対象物（オブジェクト）とは、ポリゴンモデルに造形される規制画像中の対象領域であり、それ以外の領域は背景である。したがって、対象物とは、画像が写真であれば、被写体に相当する部分であり、人工的に作成された画像であれば、イラストやキャラクター等に相当する部分である。画像において対象物であるか背景であるかは、主観的なものとなるが、規制画像として登録される画像は、複製を防止したい部分が対象物として明確であることが多いため、対象物と背景の区分は比較的明確である。
【００１１】
本発明第１の態様によれば、規制画像内の３つのエッジ点で形成される三角形の外接円の半径の度数分布である外接円分布が登録されたデータベースを備え、対象モデルに対して、対象モデル内から選択された３つのポリゴン上の所定の点により形成される三角形であるポリゴン間三角形の外接円の半径を算出し、外接円の半径の度数分布である外接円分布を算出し、算出された対象モデルの外接円分布を、データベースに登録されている規制画像の外接円分布と照合し、出力を規制すべきか否かを判定するようにし、データベースに登録された規制画像の外接円分布は、規制画像に対して、対象物のエッジを構成する画素をエッジ点として抽出し、エッジ点のうち選択された３つのエッジ点により形成される三角形であるエッジ点間三角形の外接円の半径を算出し、外接円の半径の度数分布である外接円分布を算出する装置により得られたものであるので、ポリゴンモデルを基に立体物の出力を行う際に、次元の異なる２次元の規制画像と照合を行うことにより出力を規制すべきか否かの判定を的確に行うことが可能となる。特に、出力を規制すべきか否かの判定を対象モデルの３次元形状および規制画像の２次元輪郭形状に鋭敏に反映する外接円分布を用いて高精度に行うことが可能となる。ここで、対象モデルの３次元形状および規制画像の２次元輪郭形状に鋭敏に反映するとは以下のような意味である。３Ｄ形状の基本である球体および２Ｄ輪郭形状の基本である円形では、当該球体および円形の半径に対応する最大距離の１箇所にピークが現れる簡素な分布になる。このため、３Ｄ形状が球体からずれるか、２Ｄ輪郭形状が円形からずれるに伴い、種々の箇所にピークが加わり、形状差異に明確に反応する複雑な分布になり、対象モデルの３次元形状および規制画像の２次元輪郭形状に鋭敏に反映する。
【００１２】
また、本発明第２の態様では、
ポリゴンの集合として表現されたポリゴンモデルを立体物造形装置に立体物造形用データとして出力する際に、規制すべきか否かを判定する装置であって、
出力を規制すべき画像である規制画像に対して、対象物（オブジェクト）のエッジ（端）を構成する画素をエッジ点として抽出し、抽出されたエッジ点のうち選択された３つのエッジ点により形成される三角形であるエッジ点間三角形の外接円の半径を算出し、当該外接円の半径の度数分布である外接円分布を算出する画像度数分布算出手段と、
出力対象のポリゴンモデルである対象モデルに対して、当該対象モデル内から選択された３つのポリゴン上の所定の点により形成される三角形であるポリゴン間三角形の外接円の半径を算出し、当該外接円の半径の度数分布である外接円分布を算出するモデル度数分布算出手段と、
前記画像度数分布算出手段により算出された規制画像の外接円分布と、前記モデル度数分布算出手段により算出された対象モデルの外接円分布と、を照合し、出力を規制すべきか否かを判定する度数分布照合手段と、を有することを特徴とする立体物造形用データ出力規制装置を提供する。
【００１３】
本発明第２の態様によれば、規制画像に対して、対象物のエッジを構成する画素をエッジ点として抽出し、抽出されたエッジ点のうち選択された３つのエッジ点により形成される三角形であるエッジ点間三角形の外接円の半径を算出し、外接円の半径の度数分布である外接円分布を算出し、対象モデル内から選択された３つのポリゴン上の所定の点により形成される三角形であるポリゴン間三角形の外接円の半径を算出し、外接円の半径の度数分布である外接円分布を算出し、算出された規制画像の外接円分布と、算出された対象モデルの外接円分布と、を照合し、出力を規制すべきか否かを判定するようにしたので、ポリゴンモデルを基に立体物の出力を行う際に、次元の異なる２次元の規制画像と照合を行うことにより、出力を規制すべきか否かの判定を的確に行うことが可能となる。特に、３次元の対象モデルが、２次元の画像中の対象物に基づいて作成されたポリゴンモデルであった場合、対象モデルの出力を規制することができる。
【００１４】
また、本発明第３の態様では、前記画像度数分布算出手段は、前記規制画像に対して、当該規制画像内のエッジ点を第１エッジ点グループ、第２エッジ点グループ、第３エッジ点グループの３つのグループに分類し、各グループから１つずつエッジ点を選択することにより、前記３つのエッジ点を選択することを特徴とする。
【００１５】
本発明第３の態様によれば、規制画像内のエッジ点を第１エッジ点グループ、第２エッジ点グループ、第３エッジ点グループの３つのグループに分類し、各グループから１つずつエッジ点を選択するようにしたので、エッジ点間三角形を形成するための３つのエッジ点の組み合わせを互いに重複することなく作成することができ、効率的な処理を行うことが可能となる。グループに分類せずにランダムに選択されれば、ある確率で重複が発生する方が自然である。第３の態様では、重複が発生しないように、各グループからエッジ点を１つずつ選択している。
【００１６】
また、本発明第４の態様では、前記画像度数分布算出手段は、前記各グループのエッジ点の数をＮｅ／３個とした際、Ｎｅ／３個の連続する整数をランダムに入れ替えた（シャッフル）乱数配列を作成するとともに、前記乱数配列の先頭から末尾への順序を逆にした反転乱数配列を作成し、前記３つのグループのうち、１つのグループに前記乱数配列、他の１つのグループに前記反転乱数配列をそれぞれ適用してグループ内のエッジ点の順序を入れ替えた後、各グループの先頭から順に、前記エッジ点の選択を行うことを特徴とする。
【００１７】
本発明第４の態様によれば、各グループのエッジ点の数Ｎｅ／３の連続する整数をランダムに入れ替えた乱数配列を作成するとともに、乱数配列の先頭から末尾への順序を逆にした反転乱数配列を作成し、３つのグループのうち、１つのグループに乱数配列、他の１つのグループに反転乱数配列をそれぞれ適用してグループ内のエッジ点の順序を入れ替えた後、各グループの先頭から順に、エッジ点の選択を行うようにしたので、３つのグループのエッジ点の配列順序を、二次元平面における位置からランダムに設定することができ、ランダムかつ互いに重複しないエッジ点の組み合わせで算出されたエッジ点間三角形の外接円の半径に基づいて、外接円分布を求めることが可能となる。
【００１８】
また、本発明第５の態様では、前記画像度数分布算出手段は、
前記第１エッジ点グループのエッジ点に前記乱数配列、前記第２エッジ点グループのエッジ点に前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第３エッジ点グループのエッジ点の順序を入れ替えずに前記エッジ点の選択を行ってＮｅ／３個の第１エッジ点間三角形を形成し、
前記第２エッジ点グループのエッジ点に前記乱数配列、前記第３エッジ点グループのエッジ点に前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第１エッジ点グループのエッジ点の順序を入れ替えずに前記エッジ点の選択を行ってＮｅ／３個の第２エッジ点間三角形を形成し、
前記第３エッジ点グループのエッジ点に前記乱数配列、前記第１エッジ点グループのエッジ点に前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第２エッジ点グループのエッジ点の順序を入れ替えずに前記エッジ点の選択を行ってＮｅ／３個の第３エッジ点間三角形を形成することを特徴とする。
【００１９】
本発明第５の態様によれば、第１エッジ点グループのエッジ点に乱数配列、第２エッジ点グループのエッジ点に反転乱数配列をそれぞれ適用して順序を入れ替え、第３エッジ点グループのエッジ点の順序を入れ替えずにエッジ点の選択を行ってＮｅ／３個の第１エッジ点間三角形を形成し、第２エッジ点グループのエッジ点に乱数配列、第３エッジ点グループのエッジ点に反転乱数配列をそれぞれ適用して順序を入れ替え、第１エッジ点グループのエッジ点の順序を入れ替えずにエッジ点の選択を行ってＮｅ／３個の第２エッジ点間三角形を形成し、第３エッジ点グループのエッジ点に乱数配列、第１エッジ点グループのエッジ点に反転乱数配列をそれぞれ適用して順序を入れ替え、第２エッジ点グループのエッジ点の順序を入れ替えずにエッジ点の選択を行ってＮｅ／３個の第３エッジ点間三角形を形成するようにしたので、規制画像のエッジ点の数Ｎｅと同数のトータルＮｅ個のエッジ点間三角形をランダムかつ互いに重複することなく形成することが可能となる。
【００２０】
また、本発明第６の態様では、前記画像度数分布算出手段は、前記規制画像の各画素の値に対して、事前に定義された複数のフィルタマトリクスを適用し、各画素について前記各フィルタマトリクスで算出されたフィルタ演算値の最大値をエッジ強度とし、当該エッジ強度が所定の値を超える画素を前記エッジ点として抽出することを特徴とする。
【００２１】
本発明第６の態様によれば、規制画像の各画素の値に対して、事前に定義された複数のフィルタマトリクスを適用し、各画素について各フィルタマトリクスで算出されたフィルタ演算値の最大値をエッジ強度とし、当該エッジ強度が所定の値を超える画素を前記エッジ点として抽出するようにしたので、モデル度数分布算出手段により得られる対象モデルの外接円分布と整合性をもたせた外接円分布を規制画像からも算出することができ、２次元の規制画像と３次元の対象モデルという相互に次元の異なるデータどうしの類似性を各々の外接円分布を的確に照合することが可能となる。
【００２２】
また、本発明第７の態様では、前記フィルタマトリクスとして、事前に定義された１６方向の３×３画素のフィルタマトリクスを適用し、各方向について事前に設定された値を用いて、前記フィルタ演算値を求める演算を行うことを特徴とする。
【００２３】
本発明第７の態様によれば、フィルタマトリクスとして、事前に定義された１６方向の３×３画素のフィルタマトリクスを適用し、各方向について事前に設定された値を用いて、フィルタ演算値を求める演算を行うようにしたので、規制画像において、対象物のエッジを構成する画素であるエッジ点を多くの方向から漏れなく抽出することが可能となる。
【００２４】
また、本発明第８の態様では、前記画像度数分布算出手段は、前記１６方向の各方向について事前に設定された強度補正量を用いて、前記求められたエッジ強度を補正することを特徴とする。
【００２５】
本発明第８の態様によれば、フィルタマトリクスに対応した１６方向の各方向について事前に設定された強度補正量を用いて、求められたエッジ強度を補正するようにしたので、フィルタマトリクスの特性に応じた方向によるエッジ強度の偏りを適正なものに補正することが可能となる。
【００２６】
また、本発明第９の態様では、前記画像度数分布算出手段は、各画素について算出されたエッジ強度に対して、所定の設定最小値を減算し、減算した値に、エッジ強度の階調数を乗算し、当該階調数と前記設定最小値との差を除算することにより前記エッジ強度を補正し、補正されたエッジ強度が正の値になる画素を前記エッジ点として抽出することを特徴とする。
【００２７】
本発明第９の態様によれば、各画素について算出されたエッジ強度に対して、所定の設定最小値を減算し、減算した値に、エッジ強度の階調数を乗算し、階調数と設定最小値との差を除算することによりエッジ強度を補正し、補正されたエッジ強度が正の値になる画素をエッジ点として抽出するようにしたので、補正後のエッジ強度が正の値であるか否かを判定するだけで済み、効率的なエッジ点の抽出が可能となる。
【００２８】
また、本発明第１０の態様では、
前記画像度数分布算出手段は、
前記外接円分布を１回算出するごとに、前記３つのグループのうち２つのグループ内のエッジ点の順序を変化させて、前記外接円分布を改めて算出する処理を所定の回数、繰り返し行い、算出された前記外接円分布の平均値を、照合対象の外接円分布とするものであることを特徴とする。
【００２９】
本発明第１０の態様によれば、外接円分布を１回算出するごとに、３つのグループのうち２つのグループ内のエッジ点の順序を変化させて、外接円分布を改めて算出する処理を所定の回数繰り返し行い、算出された外接円分布の平均値を、照合対象の外接円分布とするようにしたので、既に算出されたＮｅ個のエッジ点間三角形とは重複しない新規なＮｅ個のエッジ点間三角形を基に外接円分布が算出され、外接円分布が更新されるようになるため、３つのエッジ点の組み合わせであるエッジ点間三角形のサンプルが少な過ぎることにより外接円分布が特異な形態に偏らないように的確な外接円分布を得ることが可能となる。
【００３０】
また、本発明第１１の態様では、
前記画像度数分布算出手段は、
前記外接円分布を１回算出するごとに、前記３つのグループのうち２つのグループ内のエッジ点の順序を変化させて、前記外接円分布を改めて算出する処理を繰り返し行い、
算出直後の外接円分布と、直前に得られた外接円分布を比較し、比較の結果で類似性が認められる場合に、算出直後に得られた外接円分布を、照合対象の外接円分布とするものであることを特徴とする。
【００３１】
本発明第１１の態様によれば、外接円分布を１回算出するごとに、３つのグループのうち２つのグループ内のエッジ点の順序を変化させて、外接円分布を改めて算出する処理を繰り返し行い、算出直後の外接円分布と、直前に得られた外接円分布を比較し、比較の結果で類似性が認められる場合に、算出直後に得られた外接円分布を、照合対象の外接円分布とするようにしたので、３つのエッジ点の組み合わせであるエッジ点間三角形のサンプルが少な過ぎることにより外接円分布が特異な形態に偏りそうか否かを自動的に判断しながら最適な外接円分布を得ることが可能となる。
【００３２】
また、本発明第１２の態様では、前記画像度数分布算出手段は、前記外接円分布を算出するにあたり、所定数の要素で構成される１次元の配列を準備し、前記算出された外接円の半径の最大値の範囲を前記所定数に均等に分割した上で、前記各外接円の半径を当該外接円の半径の値に基づいて前記所定数のいずれかの要素に割り当て、当該要素に該当する数を計数することにより、前記外接円分布を算出するようにしていることを特徴とする。
【００３３】
本発明第１２の態様によれば、エッジ点間三角形の外接円分布を算出するにあたり、所定数の要素で構成される１次元配列を準備し、外接円に基づく値の最大値の範囲を所定数に均等分割した上で、各外接円に基づく値を当該外接円の半径の値に基づいて所定数のいずれかの要素に割り当て、その要素に該当する数を計数することにより、外接円分布を算出するようにしたので、規制画像の画素数に依存しない外接円分布を算出することが可能となる。
【００３４】
また、本発明第１３の態様では、
前記画像度数分布算出手段は、前記規制画像に対して、前記外接円分布に加えて、前記エッジ点間三角形の内接円の半径を算出し、算出結果である内接円の半径の度数分布である内接円分布を算出するものであり、
前記モデル度数分布算出手段は、前記対象モデルに対して、前記外接円分布に加えて、前記ポリゴン間三角形の内接円の半径を算出し、算出結果である内接円の半径の度数分布である内接円分布を算出するものであり、
前記度数分布照合手段は、前記外接円分布の照合に加えて、前記算出された前記対象モデルの内接円分布を、前記規制画像の内接円分布と照合し、出力を規制すべきか否かを判定するものであることを特徴とする。
【００３５】
本発明第１３の態様によれば、規制画像に対して、外接円分布に加えて、エッジ点間三角形の内接円の半径を算出し、算出結果である内接円の半径の度数分布である内接円分布を算出し、対象モデルに対して、外接円分布に加えて、ポリゴン間三角形の内接円の半径を算出し、算出結果である内接円の半径の度数分布である内接円分布を算出し、外接円分布の照合に加えて、算出された対象モデルの内接円分布を、規制画像の内接円分布と照合し、出力を規制すべきか否かを判定するようにしたので、複数の観点から対象モデルと規制画像の類似性を判定することになり、出力を規制すべきか否かの判定をより的確に行うことが可能となる。
【００３６】
また、本発明第１４の態様では、前記画像度数分布算出手段は、前記内接円分布を算出するにあたり、所定数の要素で構成される１次元の配列を準備し、前記算出された内接円の半径の最大値の範囲を前記所定数に均等に分割した上で、前記各内接円の半径を当該内接円の半径の値に基づいて前記所定数のいずれかの要素に割り当て、当該要素に該当する数を計数することにより、前記内接円分布を算出することを特徴とする。
【００３７】
本発明第１４の態様によれば、内接円分布を算出するにあたり、所定数の要素で構成される１次元配列を準備し、算出された内接円の半径の最大値の範囲を前記所定数に均等に分割した上で、各内接円の半径を当該内接円の半径の値に基づいて所定数のいずれかの要素に割り当て、その要素に該当する数を計数することにより、内接円分布を算出するようにしたので、３つのエッジ点で形成されるエッジ点間三角形の内接円の半径に基づいて容易に内接円分布を算出することが可能となる。
【００３８】
また、本発明第１５の態様では、前記度数分布算出手段は、前記要素に該当する数を計数する際、前記選択された３つのエッジ点のエッジ強度の平均値で重み付けするようにしていることを特徴とする。
【００３９】
本発明第１５の態様によれば、外接円分布または内接円分布を算出するにあたり、割り当てられた要素に該当する数を計数する際、選択された３つのエッジ点のエッジ強度の平均値で重み付けするようにしたので、規制画像の解像度の差異が、外接円分布または内接円分布にあまり反映せず、規制画像中で表現されている対象物自体が類似するポリゴンモデルに対して、出力を規制すべきであると判定させることが可能となる。
【００４０】
また、本発明第１６の態様では、前記画像度数分布算出手段は、前記割り当てられた要素に該当する数を計数する際、ｉ組目に選択された３つのエッジ点のエッジ強度の平均値を算出し、ｉ組目の前記エッジ点間三角形の外接円の半径をＤｅ（ｉ）、前記全てのエッジ点間三角形の外接円の半径の最大値をＤｅｍａｘとしたとき、Ｄｅ（ｉ）・｛Ｄｅｍａｘ2−Ｄｅ（ｉ）2｝1/2なる値を、前記ｉ組目の３つのエッジ点のエッジ強度の平均値に乗じた値で重み付けすることを特徴とする。
【００４１】
本発明第１６の態様によれば、割り当てられた要素に該当する数を計数する際、ｉ組目に選択された３つのエッジ点のエッジ強度の平均値を算出し、ｉ組目のエッジ点間三角形の外接円の半径をＤｅ（ｉ）、全てのエッジ点間三角形の外接円の半径の最大値をＤｅｍａｘとしたとき、Ｄｅ（ｉ）・｛Ｄｅｍａｘ2−Ｄｅ（ｉ）2｝1/2なる値を、ｉ組目の３つのエッジ点のエッジ強度の平均値に乗じた値で重み付けするようにしたので、２次元の平面的な規制画像から３次元の球面的な特徴を有する外接円分布が得られ、３次元の対象モデルと照合を行う際に次元の相違を吸収し、より的確な判定を行うことが可能となる。
【００４２】
また、本発明第１７の態様では、前記画像度数分布算出手段は、前記割り当てられた要素に該当する数を計数する際、ｉ組目に選択された３つのエッジ点のエッジ強度の平均値を算出し、ｉ組目の前記エッジ点間三角形の内接円の半径をＡｅ（ｉ）、前記全てのエッジ点間三角形の内接円の半径の最大値をＡｅｍａｘとしたとき、Ａｅ（ｉ）・｛Ａｅｍａｘ2−Ａｅ（ｉ）2｝1/2なる値を、前記ｉ組目の３つのエッジ点のエッジ強度の平均値に乗じた値で重み付けすることを特徴とする。
【００４３】
本発明第１７の態様によれば、割り当てられた要素に該当する数を計数する際、ｉ組目に選択された３つのエッジ点のエッジ強度の平均値を算出し、ｉ組目のエッジ点間三角形の内接円の半径をＡｅ（ｉ）、全てのエッジ点間三角形の内接円の半径の最大値をＡｅｍａｘとしたとき、Ａｅ（ｉ）・｛Ａｅｍａｘ2−Ａｅ（ｉ）2｝1/2なる値を、ｉ組目の３つのエッジ点のエッジ強度の平均値に乗じた値で重み付けするようにしたので、２次元の平面的な規制画像から３次元の球面的な特徴を有する内接円分布が得られ、３次元の対象モデルと照合を行う際に次元の相違を吸収し、より的確な判定を行うことが可能となる。
【００４４】
また、本発明第１８の態様では、前記モデル度数分布算出手段は、前記対象モデルに対して、当該対象モデル内のポリゴンを第１ポリゴングループ、第２ポリゴングループ、第３ポリゴングループの３つのグループに分類し、各グループから１つずつポリゴンを選択することにより、前記３つのポリゴンを選択することを特徴とする。
【００４５】
本発明第１８の態様によれば、対象モデル内のポリゴンを第１ポリゴングループ、第２ポリゴングループ、第３ポリゴングループの３つのグループに分類し、各グループから１つずつポリゴンを選択するようにしたので、ポリゴン間三角形を形成するための３つのポリゴンの組み合わせを互いに重複することなく作成することができ、効率的な処理を行うことが可能となる。グループに分類せずにランダムに選択されれば、ある確率で重複が発生する方が自然である。第１８の態様では、重複が発生しないように、各グループからポリゴンを１つずつ選択している。
【００４６】
また、本発明第１９の態様では、前記モデル度数分布算出手段は、前記各グループのポリゴン数をＮ／３個とした際、Ｎ／３個の連続する整数をランダムに入れ替えた（シャッフル）乱数配列を作成するとともに、前記乱数配列の先頭から末尾への順序を逆にした反転乱数配列を作成し、前記３つのグループのうち、１つのグループに前記乱数配列、他の１つのグループに前記反転乱数配列をそれぞれ適用してグループ内のポリゴンの順序を入れ替えた後、各グループの先頭から順に、前記ポリゴンの選択を行うことを特徴とする。
【００４７】
本発明第１９の態様によれば、各グループのポリゴン数Ｎ／３の連続する整数をランダムに入れ替えた乱数配列を作成するとともに、乱数配列の先頭から末尾への順序を逆にした反転乱数配列を作成し、３つのグループのうち、１つのグループに乱数配列、他の１つのグループに反転乱数配列をそれぞれ適用してグループ内のポリゴンの順序を入れ替えた後、各グループの先頭から順に、ポリゴンの選択を行うようにしたので、３つのグループのポリゴンの配列順序を、三次元空間における位置からランダムに設定することができ、ランダムかつ互いに重複しないポリゴンの組み合わせで算出されたポリゴン間三角形の外接円の半径に基づいて、外接円分布を求めることが可能となる。
【００４８】
また、本発明第２０の態様では、前記モデル度数分布算出手段は、
前記第１ポリゴングループのポリゴンに前記乱数配列、前記第２ポリゴングループのポリゴンに前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第３ポリゴングループのポリゴンの順序を入れ替えずに前記ポリゴンの選択を行ってＮ／３個のポリゴン間三角形を形成し、
前記第２ポリゴングループのポリゴンに前記乱数配列、前記第３ポリゴングループのポリゴンに前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第１ポリゴングループのポリゴンの順序を入れ替えずに前記ポリゴンの選択を行ってＮ／３個のポリゴン間三角形を形成し、
前記第３ポリゴングループのポリゴンに前記乱数配列、前記第１ポリゴングループのポリゴンに前記反転乱数配列をそれぞれ適用して順序を入れ替え、前記第２ポリゴングループのポリゴンの順序を入れ替えずに前記ポリゴンの選択を行ってＮ／３個のポリゴン間三角形を形成することを特徴とする。
【００４９】
本発明第２０の態様によれば、第１ポリゴングループのポリゴンに乱数配列、第２ポリゴングループのポリゴンに反転乱数配列をそれぞれ適用して順序を入れ替え、第３ポリゴングループのポリゴンの順序を入れ替えずにポリゴンの選択を行ってＮ／３個のポリゴン間三角形を形成し、第２ポリゴングループのポリゴンに乱数配列、第３ポリゴングループのポリゴンに反転乱数配列をそれぞれ適用して順序を入れ替え、第１ポリゴングループのポリゴンの順序を入れ替えずにポリゴンの選択を行ってＮ／３個のポリゴン間三角形を形成し、第３ポリゴングループのポリゴンに乱数配列、第１ポリゴングループのポリゴンに反転乱数配列をそれぞれ適用して順序を入れ替え、第２ポリゴングループのポリゴンの順序を入れ替えずにポリゴンの選択を行ってＮ／３個のポリゴン間三角形を形成するようにしたので、ポリゴンモデルのポリゴン数Ｎと同数のトータルＮ個のポリゴン間三角形をランダムかつ互いに重複することなく形成することが可能となる。
【００５０】
また、本発明第２１の態様では、
前記モデル度数分布算出手段は、
前記外接円分布を１回算出するごとに、前記３つのグループのうち２つのグループ内のポリゴンの順序を変化させて、前記外接円分布を改めて算出する処理を所定の回数繰り返し行い、算出された外接円分布の平均値を、照合対象の外接円分布とするものであることを特徴とする。
【００５１】
本発明第２１の態様によれば、外接円分布を１回算出するごとに、３つのグループのうち２つのグループ内のポリゴンの順序を変化させて、外接円分布を改めて算出する処理を所定の回数繰り返し行い、算出された外接円分布の平均値を、照合対象の外接円分布とするようにしたので、既に算出されたＮ個のポリゴン間三角形とは重複しない新規なＮ個のポリゴン間三角形を基に外接円分布が算出され、外接円分布が更新されるようになる。そのため、３つのポリゴン上の点の組み合わせであるポリゴン間三角形が少な過ぎることにより外接円分布が特異な形態に偏らないように的確な外接円分布を得ることが可能となる。
【００５２】
また、本発明第２２の態様では、
前記モデル度数分布算出手段は、
前記外接円分布を１回算出するごとに、前記３つのグループのうち２つのグループ内のポリゴンの順序を変化させて、前記外接円分布を改めて算出する処理を繰り返し行い、
算出直後の外接円分布と、その直前に得られた外接円分布を比較し、比較の結果で類似性が認められる場合に、前記算出直後の外接円分布を、照合対象の外接円分布とするものであることを特徴とする。
【００５３】
本発明第２２の態様によれば、直前の外接円分布と平均をとったもの同士の比較結果で類似性が認められるまで、外接円分布を更新する処理を繰り返し実行するようにしたので、３つのポリゴン上の点の組み合わせであるポリゴン間三角形のサンプルが少な過ぎることにより外接円分布が特異な形態に偏りそうか否かを自動的に判断しながら最適な外接円分布を得ることが可能となる。
【００５４】
また、本発明第２３の態様では、前記モデル度数分布算出手段は、前記外接円分布を算出するにあたり、所定数の要素で構成される１次元の配列を準備し、前記算出された外接円の半径の最大値の範囲を前記所定数に均等に分割した上で、前記外接円の半径を当該外接円の半径の値に基づいて前記所定数のいずれかの要素に割り当て、当該要素に該当する数を計数することにより、前記外接円分布を算出することを特徴とする。
【００５５】
本発明第２３の態様によれば、外接円分布を算出するにあたり、所定数の要素で構成される１次元配列を準備し、算出された外接円の半径の最大値の範囲を所定数に均等分割した上で、各外接円の半径をその外接円の半径の値に基づいて所定数のいずれかの要素に割り当て、その要素に該当する数を計数することにより、外接円分布を算出するようにしたので、ポリゴンモデルのスケールに依存しない外接円分布を算出することが可能となる。
【００５６】
また、本発明第２４の態様では、前記モデル度数分布算出手段は、前記内接円分布を算出するにあたり、所定数の要素で構成される１次元の配列を準備し、前記算出された内接円の半径の最大値の範囲を前記所定数に均等に分割した上で、前記各内接円の半径を当該内接円の半径の値に基づいて前記所定数のいずれかの要素に割り当て、当該要素に該当する数を計数することにより、前記内接円分布を算出することを特徴とする。
【００５７】
本発明第２４の態様によれば、内接円分布を算出するにあたり、所定数の要素で構成される１次元配列を準備し、算出された内接円の半径の最大値の範囲を前記所定数に均等分割した上で、各内接円の半径をその内接円の半径の値に基づいて所定数のいずれかの要素に割り当て、その要素に該当する数を計数することにより、内接円分布を算出するようにしたので、ポリゴン間三角形に基づいて容易に内接円分布を算出することが可能となる。
【００５８】
また、本発明第２５の態様では、前記モデル度数分布算出手段は、前記要素に該当する数を計数する際、前記選択された３つのポリゴンの面積の平均値で重み付けするようにしていることを特徴とする。
【００５９】
本発明第２５の態様によれば、外接円分布または内接円分布を算出するにあたり、割り当てられた要素に該当する数を計数する際、選択された３つのポリゴンの面積の平均値で重み付けするようにしたので、ポリゴン分割の精細度の差異が、外接円分布または内接円分布にあまり反映せず、ポリゴン分割の精細度が異なる複数のポリゴンモデルに対して同一（出力を規制すべき）であると判定させることが可能となる。
【００６０】
また、本発明第２６の態様では、前記モデル度数分布算出手段は、前記各対象モデルを構成するポリゴンの面積の総和値により、前記各要素の値を除算するようにしていることを特徴とする。
【００６１】
本発明第２６の態様によれば、外接円分布、内接円分布を算出するにあたり、各対象モデルを構成するポリゴンの面積の総和値により、各要素の値を除算するようにしたので、対象モデルの表面積や容積の影響を排除した外接円分布、内接円分布を得ることが可能となる。
【００６２】
また、本発明第２７の態様では、出力対象のポリゴンモデルである対象モデルを複数の部分対象モデルに分離する対象モデル分離手段を更に備え、前記部分対象モデルに対して、前記モデル度数分布算出手段が処理を行うことを特徴とする。
【００６３】
本発明第２７の態様によれば、まず、対象モデルを複数の部分対象モデルに分離し、各部分対象モデルに対して、外接円分布を算出するようにしたので、複数の部品で構成される物品を表現した対象モデルの照合の際、規制モデルと対象モデルとで互いに部品構成が異なる場合でも、適切に出力が適正か否かの判断を行うことが可能となる。
【００６４】
また、本発明第２８の態様では、前記ポリゴンは三角形状であり、前記対象モデル分離手段は、あるポリゴンと、当該ポリゴンと辺を共有する３つの隣接ポリゴンが、同一の部分対象モデルに属するように、分離することを特徴とする。
【００６５】
本発明第２８の態様によれば、ポリゴンは三角形状であり、対象モデル分離手段は、あるポリゴンと、そのポリゴンと辺を共有する３つの隣接ポリゴンが、同一の部分対象モデルに属するように分離するようにしたので、複数の部品で構成される物品を表現した対象モデルを、迅速かつ的確に複数の部分対象モデルに分離することが可能となる。
【００６６】
また、本発明第２９の態様では、
前記度数分布照合手段は、前記モデル度数分布算出手段により前記対象モデルから算出された外接円分布を前記規制画像の外接円分布と照合するにあたり、
前記外接円分布どうしの相関係数を算出し、算出された相関係数が所定の正のしきい値より大きい場合に、出力を規制すべきであると判定するようにしていることを特徴とする。
【００６７】
本発明第２９の態様によれば、対象モデルから算出された外接円分布を、規制画像の外接円分布と照合するにあたり、外接円分布同士の相関係数を算出し、算出された相関係数が所定の正のしきい値より大きい場合に、出力を規制すべきであると判定するようにしたので、対象モデルと規制画像の特徴の照合を、迅速かつ的確に行うことが可能となる。
【００６８】
また、本発明第３０の態様では、前記画像度数分布算出装置により算出された外接円分布を受信し、受信した外接円分布を前記データベースに登録する登録手段を更に有することを特徴とする。
【００６９】
本発明第３０の態様によれば、画像度数分布算出装置から規制画像の外接円分布を受信し、データベースに登録するようにしたので、データベースの更新を遠隔地から迅速に行うことが可能となる。
【００７０】
また、本発明第３１の態様では、
前記対象モデルを、接続された立体物造形装置に出力する手段と、
前記立体物造形装置による立体物の造形処理と並行して実行される前記度数分布照合手段により、出力を規制すべきである（出力不適）と判定された場合に、前記立体物造形装置に、前記対象モデルの出力中止命令を出力する手段と、
を更に有することを特徴とする。
【００７１】
本発明第３１の態様によれば、対象モデルを、接続された立体物造形装置に出力し、並行して実行される度数分布照合手段による照合の結果、出力を規制すべきであると判定された場合に、立体物造形装置に、対象モデルの出力中止命令を出力するようにしたので、時間のかかる立体物の造形を遅延させることなく、出力不適の場合にのみ、出力を中止することが可能となる。
【００７２】
また、本発明第３２の態様では、
出力制御用端末と、処理サーバがネットワークを介して接続された構成であって、
前記出力制御用端末は、前記モデル度数分布算出手段を有し、
前記処理サーバは、
前記データベースと、
ネットワークを介して前記出力制御用端末から前記対象モデルの外接円分布を受信する受信手段と、
前記度数分布照合手段と、
前記度数分布照合手段により判定された、出力を規制すべきか否かに基づくデータを前記出力制御用端末に送信する出力適否データ送信手段と、
を有することを特徴とする。
【００７３】
本発明第３２の態様によれば、ネットワークを介して対象モデルの外接円分布を受信し、出力を規制すべきか否かの判定により得られた出力を規制すべきか否かに基づくデータを対象モデルの外接円分布の送信元に送信するようにしたので、出力を規制すべきか否かの判定をクラウド型で提供することができ、出力側における処理を軽減することができる。更に、データベースをクラウド側で一元管理でき、３Ｄプリンタ等の立体物造形装置ごとに接続されている出力制御用端末内でデータベースを管理する必要がないため、常に最新のデータベースに基づいて出力を規制すべきか否かの判定を行うことが可能になる。
【００７４】
また、本発明第３３の態様では、
前記立体物造形用データ出力規制装置と、
前記立体物造形用データ出力規制装置で出力を規制すべきでないと判定されたポリゴンモデルを用いて立体物を造形する立体物造形装置と、
を有することを特徴とする立体物造形システムを提供する。
【００７５】
本発明第３３の態様によれば、立体物造形用データ出力規制装置と、立体物造形用データ出力規制装置で出力を規制すべきでないと判定されたポリゴンモデルを用いて立体物を造形する立体物造形装置により立体物造形システムを実現するようにしたので、ボードコンピュータを組み込んだ３Ｄプリンタ等の形態で、立体物造形システムを提供することが可能となる。
【発明の効果】
【００７６】
本発明によれば、ポリゴンモデルを基に立体物の出力を行う際に、２次元の画像を基準として、出力を規制すべきか否かの判定を的確に行うことが可能となる。
【図面の簡単な説明】
【００７７】
【図１】本発明の基本概念を説明するための図である。
【図２】画像度数分布算出装置３００のハードウェア構成図である。
【図３】画像度数分布算出装置３００の構成を示す機能ブロック図である。
【図４】画像度数分布算出装置３００の第１の手法による処理動作を示すフローチャートである。
【図５】１６方向エッジ抽出フィルタを示す図である。
【図６】エッジ強度補正テーブルを示す図である。
【図７】画像度数分布算出装置３００の第２の手法による処理動作を示すフローチャートである。
【図８】画像度数分布算出装置３００の第２の手法による処理動作を示すフローチャートである。
【図９】規制画像（２Ｄ画像）から得られた外接円分布と内接円分布における外接円と内接円を示す図である。
【図１０】本発明の一実施形態に係る立体物造形用データ出力規制装置１００を含む立体物造形システムのハードウェア構成図である。
【図１１】本発明第１の実施形態に係る立体物造形用データ出力規制装置の構成を示す機能ブロック図である。
【図１２】本発明第１の実施形態に係る立体物造形用データ出力規制装置の処理概要を示すフローチャートである。
【図１３】ステップＳ１００のモデル度数分布の算出処理の第１の手法の詳細を示すフローチャートである。
【図１４】ステップＳ１００のモデル度数分布の算出処理の第２の手法の詳細を示すフローチャートである。
【図１５】対象モデル（３Ｄポリゴンモデル）から得られた外接円分布と内接円分布における外接円と内接円を示す図である。
【図１６】ステップＳ２００の度数分布の照合処理の詳細を示すフローチャートである。
【図１７】本発明第２の実施形態に係る立体物造形用データ出力規制装置の構成を示す機能ブロック図である。
【図１８】本発明第２の実施形態に係る立体物造形用データ出力規制装置の処理概要を示すフローチャートである。
【図１９】対象モデル分離手段による対象モデル分離処理の詳細を示すフローチャートである。
【図２０】処理対象とするポリゴン群の一例を示す図である。
【図２１】図２０に示したポリゴン群を実現するための頂点座標配列データを示す図である。
【図２２】ポリゴンモデルの構造化の詳細を示すフローチャートである。
【図２３】ポリゴン群とハッシュ値の関係を示す図である。
【図２４】初期化時の各テーブルの状態を示す図である。
【図２５】各テーブルの変化の様子を示す図である。
【図２６】各テーブルの変化の様子を示す図である。
【図２７】各テーブルの変化の様子を示す図である。
【図２８】各テーブルの変化の様子を示す図である。
【図２９】各テーブルの変化の様子を示す図である。
【図３０】ポリゴンモデルの構造化の結果を示す図である。
【図３１】ステップＳ２０のポリゴン稜線の構造化の詳細を示すフローチャートである。
【図３２】ポリゴンＰ１の稜線構成が記録された時点の各テーブルの状態を示す図である。
【図３３】ポリゴンＰ２の稜線構成が記録された時点の各テーブルの状態を示す図である。
【図３４】ポリゴンＰ３の稜線構成が記録された時点の各テーブルの状態を示す図である。
【図３５】ポリゴンＰ１８の稜線構成が記録された時点の各テーブルの状態を示す図である。
【図３６】完成した稜線構成テーブル、稜線テーブルを示す図である。
【図３７】ステップＳ３０の隣接ポリゴンテーブルの作成の詳細を示すフローチャートである。
【図３８】ポリゴンＰ２のポリゴン別稜線ＩＤが記録された時点の各テーブルの状態を示す図である。
【図３９】ポリゴンＰ４のポリゴン別稜線ＩＤが記録された時点の各テーブルの状態を示す図である。
【図４０】ポリゴンＰ１８のポリゴン別稜線ＩＤが記録された時点の各テーブルの状態を示す図である。
【図４１】ステップＳ１０で完成した頂点構成テーブル、ステップＳ２０で完成した稜線構成テーブル、ステップＳ３０で完成した隣接ポリゴンテーブルを示す図である。
【図４２】ステップＳ４０のポリゴンモデルの分離の詳細を示すフローチャートである。
【図４３】応用例における立体物造形用データ出力規制装置を含む立体物造形システムのハードウェア構成図である。
【図４４】クラウド型の立体物造形システムのハードウェア構成図である。
【図４５】クラウド型の立体物造形システムの機能ブロック図である。
【図４６】球体ａと円ｂに対する度数分布算出事例を示す図である。
【図４７】球体ｃに対する度数分布算出事例を示す図である。
【図４８】達磨ｄと達磨ｅに対する度数分布算出事例を示す図である。
【図４９】達磨ｆと達磨ｇに対する度数分布算出事例を示す図である。
【図５０】達磨ｈに対する度数分布算出事例を示す図である。
【図５１】頭蓋骨ｉと頭蓋骨ｊに対する度数分布算出事例を示す図である。
【発明を実施するための形態】
【００７８】
以下、本発明の好適な実施形態について図面を参照して詳細に説明する。
＜１．本発明の基本概念＞
最初に、本発明の基本概念について説明しておく。３Ｄプリンタでキャラクターのモチーフ画像を基に、フィギュアを造形するためには、３次元のポリゴンモデルを制作する必要があるが、近年、画面上に表示されているイラストや写真の上をトレースするだけで、自動的に円柱形状などにより奥行きを付加し、３次元のポリゴンモデルを半自動的に制作できるツールの開発が活発になっている。これに伴い、キャラクターやイラストなど著作物性の高い２次元の画像を基に、３Ｄプリンタにより違法なフィギュアが容易に制作され、金型等で成形されるフィギュア正規品の市場が圧迫されようとしている。
【００７９】
本発明では、キャラクターやイラストなど著作物性の高い２次元の画像を基に、３次元のポリゴンモデルを作成し、このポリゴンモデルをキャラクターやイラストの権利者の許可なく出力しようとした際に、出力を規制することを一つの目的としている。しかし、事前に違法なフィギュアの３次元のポリゴンモデルをデータベース化することは困難である。たとえデータベースに登録できても、キャラクターのモチーフ画像を基に制作される３次元のポリゴンモデルの形状には無尽蔵の多様性があり、出力対象のポリゴンモデルをデータベースに登録されているポリゴンモデルと照合する方法ではタイムリーな出力規制を行うことができない。そこで、データベースには多様性が少ない典型的なキャラクターの２次元モチーフ画像を登録し、３次元のポリゴンモデルを３Ｄプリンタで出力しようとした際に、登録されている２次元の画像を用いて照合を行えるようにする機能を実現する必要がある。
【００８０】
図１は、本発明の基本概念を説明するための図である。図１（ａ）は、出力しようとする３次元のポリゴンモデルであり、図１（ｂ）は、データベースに登録された規制すべき２次元の画像である。本発明では、図１（ａ）に示したポリゴンモデルから図１（ｃ）に示した所定の三角形の外接円の半径、内接円の半径についての２種の度数分布（ヒストグラム）を作成し、図１（ｂ）に示した画像から図１（ｃ）に示したような所定の三角形の外接円の半径、内接円の半径についての２種の度数分布（ヒストグラム）を図１（ｄ）に示すように作成する。そして、図１（ｃ）および図１（ｄ）に示す外接円の半径、内接円の半径についての２種の度数分布に対して、互いに整合性をもたせるようにする。２種の度数分布を照合し、その相関をとることにより、図１（ａ）に示すポリゴンモデルと図１（ｂ）に示す画像の類似性を判定することができる。照合する度数分布については、必ずしも２種ではなく、１種のみとすることもできる。ポリゴンモデルが登録された画像に類似する特徴をもつ場合には、当該ポリゴンモデルの出力が規制されることになる。
【００８１】
＜２．第１の実施形態＞
＜２．１．画像度数分布算出装置の装置構成＞
第１の実施形態では、３次元のポリゴンモデルの出力適否の判定を行う際に、ポリゴンモデルから作成した度数分布と、規制対象とする２次元の画像から作成し、データベースに登録された度数分布との照合を行う。このため、事前に画像から度数分布を作成してデータベースに登録しておく必要がある。まず、このような画像から度数分布を作成する画像度数分布算出装置について説明する。
【００８２】
図２は、画像度数分布算出装置のハードウェア構成図である。画像度数分布算出装置３００は、汎用のコンピュータで実現することができ、図２に示すように、ＣＰＵ（Central Processing Unit）８１と、コンピュータのメインメモリであるＲＡＭ（Random Access Memory）８２と、ＣＰＵ８１が実行するプログラムやデータを記憶するためのハードディスク、フラッシュメモリ等の大容量の記憶装置８３と、キーボード、マウス等のキー入力Ｉ／Ｆ（インターフェース）８４と、３Ｄプリンタやデータ記憶媒体等の外部装置とデータ通信するためのデータ入出力Ｉ／Ｆ（インターフェース）８５と、液晶ディスプレイ等の表示デバイスである表示部８６と、を備え、互いにバスを介して接続されている。
【００８３】
図３は、画像度数分布算出装置の構成を示す機能ブロック図である。図３において、９１は規制画像記憶手段、９２は画像度数分布算出手段、９３は画像度数分布記憶手段である。
【００８４】
画像度数分布算出手段９２は、規制対象の画像である規制画像に対して、規制画像内のエッジ点を第１エッジ点グループ、第２エッジ点グループ、第３エッジ点グループの３つのグループに同数ずつ分類し、分類された各グループ内のエッジ点の順序の入れ替え（シャッフル）を行い、第１エッジ点グループ内の各エッジ点と第２エッジ点グループ内の各エッジ点と第３エッジ点グループ内の各エッジ点の対応付けを行い、３つのエッジ点を頂点とする三角形であるエッジ点間三角形を形成し、形成されたエッジ点間三角形の外接円の半径を算出するとともに、形成されたエッジ点間三角形の内接円の半径を算出し、算出結果である外接円の半径の度数分布である外接円分布と、内接円の半径の度数分布である内接円分布を算出する処理を行う。
【００８５】
画像度数分布算出手段９２は、ＣＰＵ８１が、記憶装置８３に記憶されているプログラムを実行することにより実現される。規制画像記憶手段９１は、出力を規制すべき画像である規制画像を記憶した記憶手段であり、記憶装置８３により実現される。
【００８６】
画像度数分布記憶手段９３は、出力を規制すべき画像である規制画像に対して、２種の度数分布として算出された外接円分布および内接円分布を記憶して、データベース化したものであり、記憶装置８３により実現される。２種の度数分布である外接円分布および内接円分布は、規制画像の特徴を表現した特徴ベクトルとしての役割を果たすものとなる。即ち、２種の度数分布により、元の規制画像の相違を識別可能であるが、元の規制画像を復元できるわけではない。これは、指紋（フィンガープリント）により個人の相違を識別可能であるが、人物の姿そのものを復元できるわけではないのと同様である。したがって、２種の度数分布は、著作物としての役割は果たさないが、２つの著作物の同一性を証明する、いわゆるフィンガープリントとしての役割を果たすことになる。画像度数分布記憶手段９３には、外接円分布および内接円分布だけでなく、外接円分布および内接円分布の算出の基になった規制画像自体を登録しておけば類似性が判定された規制画像に対してヒトが目視で確認できるため、通常は、著作権者から許諾を受け、商用品質に値しない解像度で規制画像自体も登録される。
【００８７】
図３の機能ブロックに示した各構成手段は、現実には図２に示したように、コンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。すなわち、コンピュータが、専用のプログラムに従って各手段の内容を実行することになる。
【００８８】
図２に示した記憶装置８３には、ＣＰＵ８１を動作させ、コンピュータを、画像度数分布算出装置として機能させるための専用のプログラムが実装されている。この専用のプログラムを実行することにより、ＣＰＵ８１は、画像度数分布算出手段９２としての機能を実現することになる。また、記憶装置８３は、規制画像記憶手段９１、画像度数分布記憶手段９３として機能するだけでなく、画像度数分布算出装置としての処理に必要な様々なデータを記憶する。
【００８９】
＜２．２．画像度数分布算出装置の処理動作＞
＜２．２．１．第１の手法＞
次に、図２、図３に示した画像度数分布算出装置の処理動作について説明する。画像度数分布算出装置の画像度数分布算出手段９２は、出力を規制すべき画像である規制画像について、２種の度数分布である外接円分布および内接円分布を算出する。このような画像度数分布の算出処理としては、第１の手法と第２の手法の２通りが存在する。まず、第１の手法について説明する。図４は、第１の手法による画像度数分布の算出処理の詳細を示すフローチャートである。ここでは、後述するフィルタ演算を簡便に行うため、規制画像を２５６階調のモノクロ画像として扱う。したがって、カラー画像の場合は、事前に２５６階調のモノクロ画像に変換する処理を行っておき、二値画像の場合は、０または２５５のいずれかの値をもつ２５６階調のモノクロ画像として処理する。したがって、ｘ方向の画素数Ｘｓ、ｙ方向の画素数Ｙｓの規制画像は、Ｉｍｇ（ｘ，ｙ）＝０〜２５５（ｘ＝０，・・・，Ｘｓ−１；ｙ＝０，・・・，Ｙｓ−１）と定義される。規制画像には、対象物部分と背景部分が存在し、対象物部分はグレーまたは白く表示されるＩｍｇ（ｘ，ｙ）＞０に設定し、背景は黒く表示されるＩｍｇ（ｘ，ｙ）＝０に設定する。規制画像の四隅は、背景となるため、Ｉｍｇ（０，０）＝Ｉｍｇ（０，Ｙｓ−１）＝Ｉｍｇ（Ｘｓ−１，０）＝Ｉｍｇ（Ｘｓ−１，Ｙｓ−１）＝０となっている。
【００９０】
画像度数分布算出手段９２は、まず、規制画像の各画素についてフィルタ演算を行い、各画素のエッジ強度を算出する（ステップＳ５０１）。まず、フィルタ演算に用いるフィルタマトリクスであるエッジ抽出フィルタについて説明する。フィルタマトリクスとは、マトリクスフィルタ、空間フィルタなどとも呼ばれ、一般には、注目画素とその周辺画素の画素値を使用して注目画素の画素値を変換するために用いられるものである。基本的には、規制画像内の全ての画素を対象として行う。
【００９１】
図５は、本実施形態で用いる１６方向エッジ抽出フィルタを示す図である。図５に示す１６方向エッジ抽出フィルタは、中心画素である自身を含めた８近傍の９画素の値を、１６方向の各方向に応じて重みを変化させたものとなっている。図５の例では、方向０から方向１５までの１６方向について示している。方向０の場合を例にとって説明すると、（０．０，−１．０）は、方向０を特定する単位ベクトルである方向ベクトルを示している。また、縦３×横３の９個の数字は、Ｍ（ｄ，ｕ，ｖ）＝[−２，−１，１，２]で定義される重みを示している。重みは、−２，−１，１，２の４つの値をとる。そして、９個の数字は、中心を（ｕ，ｖ）＝（０，０）として、ｕ，ｖがそれぞれ−１，０，１の３通りの値をとる範囲に含まれるものである。中心の場合、方向ｄの値のいかんに関わらず必ずＭ（ｄ，０，０）＝１であり、中心以外の場合、方向ｄに応じてＭ（ｄ，ｕ，ｖ）の値の−２、−１，１および２の位置が異なっている。図５に示した１６方向エッジ抽出フィルタは２２．５度刻みで方向を変化させたものである。
【００９２】
画像度数分布算出手段９２は、図５に示したエッジ抽出フィルタＭ（ｄ，ｕ，ｖ）を用いて以下の〔数式１〕に従った処理を実行し、各画素のエッジ強度を決定する。
【００９３】
〔数式１〕
Ｆ（ｄ，ｘ，ｙ）＝［Σv=-1,1Σu=-1,1Ｍ（ｄ，ｕ，ｖ）[Ｉｍｇ（ｘ，ｙ）−１２８] ］／６
ＥＫ（ｘ，ｙ）＝Ｆ（ｄｍａｘ，ｘ，ｙ）＝ＭＡＸd=0,D-1Ｆ（ｄ，ｘ，ｙ）
【００９４】
上記〔数式１〕の第１式において、Σの添え字の“ｖ＝−１，１”、“ｕ＝−１，１”は、ｖが−１から１、ｕが−１から１の全ての整数をとる場合について、総和を求めることを示している。上記〔数式１〕の第１式により、各画素について、強度を表すフィルタ演算値Ｆ（ｄ，ｘ，ｙ）が得られる。上記〔数式１〕の第２式において、“ＭＡＸd=0,D-1”は、方向ｄ＝０から方向ｄ＝Ｄ−１までの全ての方向の中での最大値を示している。１６方向エッジ抽出フィルタを用いる場合は、Ｄ＝１６である。上記〔数式１〕の第２式により、最大のフィルタ演算値が、各画素のエッジ強度ＥＫ（ｘ，ｙ）として得られる。また、最大のフィルタ演算値をとり、エッジ強度を与える方向ｄをｄｍａｘとする。
【００９５】
次に、画像度数分布算出手段９２は、各画素のエッジ強度の補正および階調補正を行う（ステップＳ５０２）。まず、方向別のエッジ強度補正量を用いてエッジ強度の補正を行う。方向別のエッジ強度補正量Ｔｃ（ｄ）を記録したエッジ強度補正テーブルを図６に示す。図６に示すように、エッジ強度補正テーブルには、方向ｄ＝０〜１５それぞれについて、エッジ強度補正量が記録されている。図６に示すエッジ強度補正テーブルでは、エッジ強度補正量を％単位で示している。上述のように、１６方向エッジ抽出フィルタは２２．５度刻みとなっており、これに対応してエッジ強度補正テーブルも２２．５度刻みとなっている。図６の例では、方向ｄが４つ異なるごと、すなわち９０度異なるごとにエッジ強度補正量が同一値となるように繰り返されている。これは、１６方向エッジ抽出フィルタにより算出されるエッジ強度が、９０度単位で所定の特性をもつため、それに応じて補正をする必要が生じることを意味している。
【００９６】
画像度数分布算出手段９２は、図６に示したエッジ強度補正量Ｔｃ（ｄ）を用いて以下の〔数式２〕に従った処理を実行し、各画素のエッジ強度を補正する。
【００９７】
〔数式２〕
ＥＫ´（ｘ，ｙ）＝ＥＫ（ｘ，ｙ）・Ｔｃ（ｄ）／１００
【００９８】
上記〔数式２〕において、“・”は、乗算を示している。Ｔｃ（ｄ）は、図６に示したような％単位の数値であるため、補正前のエッジ強度に乗じた後、１００で除算している。エッジ強度補正量Ｔｃ（ｄ）の方向ｄについては、その画素についてエッジ強度が最大となる方向ｄｍａｘを用いる。この結果、補正されたエッジ強度ＥＫ´（ｘ，ｙ）が得られる。
【００９９】
次に、画像度数分布算出手段９２は、エッジ強度の階調補正（コントラスト補正）を行う。具体的には、以下の〔数式３〕に従った処理を実行し、各画素のエッジ強度の階調補正を行う。
【０１００】
〔数式３〕
ＥＫ´´（ｘ，ｙ）＝｛ＥＫ´（ｘ，ｙ）−ＳＬ｝・２５６／（２５６−ＳＬ）
【０１０１】
上記〔数式３〕において、２５６は階調数であり、規制画像の画素が取り得る０〜２５５の数を示している。ＳＬは、階調補正後に最小とする値である設定最小値を示している。設定最小値ＳＬについては、適宜設定することができるが、元の画像が０〜２５５の値を取り得る場合に、７２程度とすることが好ましい。この設定最小値は、実質的には、エッジ強度と比較することによりエッジ点とするか否かを判定するためのしきい値として機能する。上記〔数式３〕においては、各画素について算出されたエッジ強度に対して、所定の設定最小値ＳＬを減算し、減算した値に、エッジ強度の階調数２５６を乗算し、階調数２５６と設定最小値ＳＬとの差を除算することによりエッジ強度を補正している。
【０１０２】
〔数式２〕によるエッジ強度補正、〔数式３〕による階調補正を行った結果、補正されたエッジ強度ＥＫ´´（ｘ，ｙ）が得られるが、説明が繁雑になるのを避けるため、以下では、補正されたエッジ強度をＥＫ（ｘ，ｙ）として説明する。
【０１０３】
次に、規制画像におけるエッジ点を抽出する（ステップＳ５０３）。具体的には、ステップＳ５０２において補正されたエッジ強度と、事前に設定されたしきい値とを比較し、エッジ強度がしきい値以上の画素をエッジ点として抽出する。ステップＳ５０２において階調補正を行っている場合は、しきい値として “０”を設定し、階調補正後のエッジ強度が０以上の画素が抽出されるようにすることが好ましい。
【０１０４】
エッジ点の抽出順をｉとすると、Ｎｅ個のエッジ点が抽出された場合、エッジ点の配列は［Ｘｅ（ｉ），Ｙｅ（ｉ）］（ｉ＝０，・・・，Ｎｅ−１）と定義することができる。そして、ｉ番目のエッジ点のエッジ強度ＥＫ（ｉ）＝ＥＫ（Ｘｅ（ｉ），Ｙｅ（ｉ））とする。
【０１０５】
次に、規制画像におけるエッジ点の集合を３つのグループに分け、各グループのエッジ点の順序を入れ替える（ステップＳ５０４）。３つのグループへの分け方としては、同数に分けることができれば、どのような手法を用いてもよい。本実施形態では、エッジ点のデータ配列における順序に基づき、３で除して余りが０となる順番のエッジ点の第１エッジ点グループと、３で除して余りが１となる順番のエッジ点の第２エッジ点グループと、３で除して余りが２となる順番のエッジ点の第３エッジ点グループに分けている。これにより、規制画像から抽出されたＮｅ個のエッジ点は、Ｎｅ／３個ずつのグループに分けられることになる。各グループのエッジ点の数が同数になるように、元のエッジ点の数Ｎｅの３の剰余が２の場合、先頭のエッジ点［Ｘｅ（０），Ｙｅ（０）］と同一の点を最後尾のエッジ点［Ｘｅ（Ｎｅ），Ｙｅ（Ｎｅ）］として追加し、全エッジ点の数がＮｅ＋１個になるように修正する。また、元のエッジ点の数Ｎｅの３の剰余が１の場合、先頭のエッジ点［Ｘｅ（０），Ｙｅ（０）］および先頭から２番目のエッジ点［Ｘｅ（１），Ｙｅ（１）］を、最後尾から２番目のエッジ点［Ｘｅ（Ｎｅ），Ｙｅ（Ｎｅ）］＝エッジ点［Ｘｅ（０），Ｙｅ（０）］、最後尾のエッジ点［Ｘｅ（Ｎｅ＋１），Ｙｅ（Ｎｅ＋１）］＝エッジ点［Ｘｅ（１），Ｙｅ（１）］として重複してもたせ、全エッジ点の数がＮｅ＋２個になるように修正する。各グループのエッジ点の数が同数になるように、エッジ点を重複して追加し、全エッジ点の数がＮｅ＋１個またはＮｅ＋２個となった場合、これをＮｅとして置き換え、以下では、全エッジ点の数を３の倍数であるＮｅ個として説明していく。
【０１０６】
３で除した余りによりグループ分けすることにより、各グループについて、配列Ｇ１（ｆ）＝３ｆ、Ｇ２（ｆ）＝３ｆ＋１、Ｇ３（ｆ）＝３ｆ＋２（ｆ＝０，・・・，Ｎｅ／３−１）が得られる。次に、各グループのエッジ点の配列の順序を入れ替える。順序の入れ替えは無作為に行われる。すなわち、シャッフルされる。エッジ点の配列の順序を入れ替えることができれば、どのような手法を用いてもよいが、本実施形態では、以下のような手法によりエッジ点の配列の順序を入れ替えている。
【０１０７】
まず、３種類の乱数配列Ｒ１（ｋ）、Ｒ２（ｋ）、Ｒ３（ｋ）を作成する。具体的には、ｋ＝０，・・・，Ｎｅ／３−１について、Ｒ１（ｋ）＝ｋに初期化する。続いて、０≦Ｒｎｄ（ｋ）＜１の範囲で実数値の一様乱数をＮｅ／３回発生させ、１回発生させるごとに、ｐｐ＝Ｒｎｄ（ｋ）・Ｎｅ／３なる演算で０≦ｐｐ≦Ｎｅ／３の整数値を算出し、Ｒ１（ｋ）の値とＲ１（ｐｐ）の値を交換する処理をＮｅ／３回繰り返す。繰り返しの結果、Ｎｅ／３個の連続する整数をランダムに入れ替えた乱数配列Ｒ１（ｋ）が得られる。これにより、例えば、第１エッジ点グループのエッジ点の配列Ｇ１（ｆ）に対して、ｆ＝Ｒ１（ｋ）で与え、Ｇ１（Ｒ１（ｋ））＝３Ｒ１（ｋ）（ｋ＝０，・・・，Ｎｅ／３−１）のように、順序が入れ替えられた配列を得ることができる。第２の乱数配列Ｒ２（ｋ）に対しては、Ｒ２（ｋ）＝Ｒ１（Ｎｅ／３−１−ｋ）で与える。すなわち、第１の乱数配列Ｒ１（ｋ）の先頭から末尾への順序を逆にしたものが乱数配列Ｒ２（ｋ）である。乱数配列Ｒ１（ｋ）、乱数配列Ｒ２（ｋ）は、互いに他方の反転乱数配列となる。また、乱数配列Ｒ３（ｋ）＝ｋとし乱数にせず、ｋ＝０，・・・，Ｎｅ／３−１なるシーケンシャルな値に設定する。このように、エッジ点の配列の順序を入れ替えることにより、各グループのエッジ点の配列順序を、２次元平面である規制画像内のエッジ点からランダムに設定することができ、ランダムなエッジ点の組み合わせで作成されたエッジ点間三角形の外接円の半径およびエッジ点間三角形の内接円の半径に基づいて、外接円分布および内接円分布を求めることが可能となる。
【０１０８】
このように３つのグループにエッジ点を分類するのは、３つのエッジ点をランダムに選択してエッジ点間三角形を作成する際、互いに重複しないようにするためである。規制画像から抽出された全てのエッジ点の組み合わせで３つのエッジ点間三角形を順次構成することも可能であるが、エッジ点の数が多いと組み合わせが膨大な数になり実用的ではない。また、グループ分けをせず、規制画像から抽出された全てのエッジ点よりランダムに３つのエッジ点を選択してエッジ点間三角形を構成する方法も考えられるが、ある確率で同一のエッジ点間三角形が発生する。ランダムに抽出されるエッジ点間三角形のサンプル数が十分に多くないと、偏った度数分布が算出される可能性がある。本実施形態のように、３つのグループに分類し、各グループから１つずつエッジ点を選択して計３つ選択するようにすることにより、エッジ点間三角形を形成するための３つのエッジ点を互いに重複することなくランダム性をもたせながら効率的に選択することが可能になる。
【０１０９】
次に、初期設定を行う（ステップＳ５０５）。具体的には、算出する外接円分布、内接円分布の初期化、ループカウンタの初期化を行う。本実施形態で算出される外接円分布は、エッジ強度加重した外接円の半径の分布であり、要素数をＭＤとし、各要素ｍｄ（ｍｄ＝０，・・・，ＭＤ−１）の度数をＨｄｏ（ｍｄ）と表す。Ｈｄｏ（ｍｄ）は、所定数ＭＤの要素で構成される１次元配列である。画像度数分布算出手段９２は、初期値をＨｄｏ（ｍｄ）＝０と設定する。本実施形態で算出される内接円分布は、エッジ強度加重した内接円の半径の分布であり、要素数をＭＡとし、各要素ｍａ（ｍａ＝０，・・・，ＭＡ−１）の度数をＨａｏ（ｍａ）と表す。要素数ＭＡは、上記要素数ＭＤと同一であってもよい。Ｈａｏ（ｍａ）は、所定数ＭＡの要素で構成される１次元配列である。画像度数分布算出手段９２は、初期値をＨａｏ（ｍａ）＝０と設定する。ループカウンタＬＣについては、初期値ＬＣ＝０と設定する。
【０１１０】
次に、画像度数分布算出手段９２は、３つのグループ間における各エッジ点を頂点とするエッジ点間三角形の作成を行う（ステップＳ５０６）。エッジ点間三角形の数がエッジ点総数Ｎｅと同一になるように、グループ間の組み合わせを変えて３通り作成する。具体的には、第１エッジ点グループのｆ（ｆ＝０，・・・，Ｎｅ／３−１）番目のエッジ点Ｇ１（ｆ）に対して乱数配列Ｒ１（ｋ）によりランダムに順番を入れ替えたＧ１（Ｒ１（ｋ））のエッジ点（Ｘｅ（Ｇ１（Ｒ１（ｋ））），Ｙｅ（Ｇ１（Ｒ１（ｋ））））、第２エッジ点グループの対応する順序ｆのエッジ点Ｇ２（ｆ）に対して乱数配列Ｒ２（ｋ）によりランダムに順番を入れ替えたＧ２（Ｒ２(ｋ)）のエッジ点（Ｘｅ（Ｇ２（Ｒ２（ｋ））），Ｙｅ（Ｇ２（Ｒ２（ｋ））））、第３エッジ点グループの対応する順序ｆのエッジ点Ｇ３（ｆ）に対して乱数配列Ｒ３（ｋ）によりランダムに順番を入れ替えたＧ３（Ｒ３（ｋ））のエッジ点（Ｘｅ（Ｇ３（Ｒ３（ｋ））），Ｙｅ（Ｇ３（Ｒ３（ｋ））））の３点を頂点とする第１エッジ点間三角形をＮｅ／３個作成する。
【０１１１】
同様に、第２エッジ点グループのｆ番目のエッジ点Ｇ２（ｆ）に対して乱数配列Ｒ１（ｋ）によりランダムに順番を入れ替えたＧ２（Ｒ１（ｋ））のエッジ点（Ｘｅ（Ｇ２（Ｒ１（ｋ））），Ｙｅ（Ｇ２（Ｒ１（ｋ））））、第３エッジ点グループの対応する順序ｆのエッジ点Ｇ３（ｆ）に対して乱数配列Ｒ２（ｋ）によりランダムに順番を入れ替えたＧ３（Ｒ２（ｋ））のエッジ点（Ｘｅ（Ｇ３（Ｒ２（ｋ））），Ｙｅ（Ｇ３（Ｒ２（ｋ））））、第１エッジ点グループの対応する順序ｆのエッジ点Ｇ１（ｆ）に対して乱数配列Ｒ３（ｋ）によりランダムに順番を入れ替えたＧ１（Ｒ３（ｋ））のエッジ点（Ｘｅ（Ｇ１（Ｒ３（ｋ））），Ｙｅ（Ｇ１（Ｒ３（ｋ））））の３点を頂点とする第２エッジ点間三角形をＮｅ／３個作成する。
【０１１２】
さらに、第３エッジ点グループのｆ番目のエッジ点Ｇ３（ｆ）に対して乱数配列Ｒ１（ｋ）によりランダムに順番を入れ替えたＧ３（Ｒ１（ｋ））のエッジ点（Ｘｅ（Ｇ３（Ｒ１（ｋ））），Ｙｅ（Ｇ３（Ｒ１（ｋ））））、第１エッジ点グループの対応する順序ｆのエッジ点Ｇ１（ｆ）に対して乱数配列Ｒ２（ｋ）によりランダムに順番を入れ替えたＧ１（Ｒ２（ｋ））のエッジ点（Ｘｅ（Ｇ１（Ｒ２（ｋ））），Ｙｅ（Ｇ１（Ｒ２（ｋ））））、第２エッジ点グループの対応する順序ｆのエッジ点Ｇ２（ｆ）に対して乱数配列Ｒ３（ｋ）によりランダムに順番を入れ替えたＧ２（Ｒ３（ｋ））のエッジ点（Ｘｅ（Ｇ２（Ｒ３（ｋ））），Ｙｅ（Ｇ２（Ｒ３（ｋ））））の３点を頂点とする第３エッジ点間三角形をＮｅ／３個作成する。
【０１１３】
次に、画像度数分布算出手段９２は、各エッジ点を頂点とする三角形であるエッジ点間三角形の外接円の半径の算出を行う（ステップＳ５０７）。具体的には、まず、以下の〔数式４〕に従った処理を実行することにより、ｋ＝０，・・・，Ｎｅ／３−１の範囲で、第１エッジ点間三角形の面積Ｓｅ（ｋ）を算出する。
【０１１４】
〔数式４〕
Ｄｅ１２＝［[Ｘｃ（Ｇ２（Ｒ２（ｋ）））−Ｘｃ（Ｇ１（Ｒ１（ｋ）））]2＋[Ｙｃ（Ｇ２（Ｒ２（ｋ）））−Ｙｃ（Ｇ１（Ｒ１（ｋ）））]2］1/2
Ｄｅ２３＝［[Ｘｃ（Ｇ３（Ｒ３（ｋ）））−Ｘｃ（Ｇ２（Ｒ２（ｋ）））]2＋[Ｙｃ（Ｇ３（Ｒ３（ｋ）））−Ｙｃ（Ｇ２（Ｒ２（ｋ）））]2］1/2
Ｄｅ３１＝［[Ｘｃ（Ｇ１（Ｒ１（ｋ）））−Ｘｃ（Ｇ３（Ｒ３（ｋ）））]2＋[Ｙｃ（Ｇ１（Ｒ１（ｋ）））−Ｙｃ（Ｇ３（Ｒ３（ｋ）））]2］1/2
Ｄｅ＝（Ｄｅ１２＋Ｄｅ２３＋Ｄｅ３１）／２
Ｓｅ（ｋ）＝[Ｄｅ・（Ｄｅ−Ｄｅ１２）・（Ｄｅ−Ｄｅ２３）・（Ｄｅ−Ｄｅ３１）]1/2 
【０１１５】
そして、以下の〔数式５〕に従った処理を実行することにより、ｋ＝０，・・・，Ｎｅ／３−１の範囲で、第１エッジ点間三角形の外接円の半径Ｄｅ（ｋ）を算出する。
【０１１６】
〔数式５〕
Ｄｅ（ｋ）＝Ｄｅ１２・Ｄｅ２３・Ｄｅ３１／（４・Ｓｅ（ｋ））
【０１１７】
画像度数分布算出手段９２は、同様に、以下の〔数式６〕に従った処理を実行することにより、ｋ＝０，・・・，Ｎｅ／３−１の範囲で、第２エッジ点間三角形の面積Ｓｅ（ｋ）を算出する。
【０１１８】
〔数式６〕
Ｄｅ１２＝［[Ｘｅ（Ｇ３（Ｒ２（ｋ）））−Ｘｅ（Ｇ２（Ｒ１（ｋ）））]2＋[Ｙｅ（Ｇ３（Ｒ２（ｋ）））−Ｙｅ（Ｇ２（Ｒ１（ｋ）））]2］1/2
Ｄｅ２３＝［[Ｘｅ（Ｇ１（Ｒ３（ｋ）））−Ｘｅ（Ｇ３（Ｒ２（ｋ）））]2＋[Ｙｅ（Ｇ１（Ｒ３（ｋ）））−Ｙｅ（Ｇ３（Ｒ２（ｋ）））]2］1/2
Ｄｅ３１＝［[Ｘｅ（Ｇ２（Ｒ１（ｋ）））−Ｘｅ（Ｇ１（Ｒ３（ｋ）））]2＋[Ｙｅ（Ｇ２（Ｒ１（ｋ）））−Ｙｅ（Ｇ１（Ｒ３（ｋ）））]2］1/2
Ｄｅ＝（Ｄｅ１２＋Ｄｅ２３＋Ｄｅ３１）／２
Ｓｅ（ｋ）＝[Ｄｅ・（Ｄｅ−Ｄｅ１２）・（Ｄｅ−Ｄｅ２３）・（Ｄｅ−Ｄｅ３１）]1/2 
【０１１９】
そして、上記〔数式５〕に従った処理を実行することにより、ｋ＝０，・・・，Ｎｅ／３−１の範囲で、第２エッジ点間三角形の外接円の半径Ｄｅ（ｋ）を算出する。
【０１２０】
画像度数分布算出手段９２は、同様に、以下の〔数式７〕に従った処理を実行することにより、ｋ＝０，・・・，Ｎｅ／３−１の範囲で、第３エッジ点間三角形の面積Ｓｅ（ｋ）を算出する。
【０１２１】
〔数式７〕
Ｄｅ１２＝［[Ｘｅ（Ｇ１（Ｒ２（ｋ）））−Ｘｅ（Ｇ３（Ｒ１（ｋ）））]2＋[Ｙｅ（Ｇ１（Ｒ２（ｋ）））−Ｙｅ（Ｇ３（Ｒ１（ｋ）））]2］1/2
Ｄｅ２３＝［[Ｘｅ（Ｇ２（Ｒ３（ｋ）））−Ｘｅ（Ｇ１（Ｒ２（ｋ）））]2＋[Ｙｅ（Ｇ２（Ｒ３（ｋ）））−Ｙｅ（Ｇ１（Ｒ２（ｋ）））]2］1/2
Ｄｅ３１＝［[Ｘｅ（Ｇ３（Ｒ１（ｋ）））−Ｘｅ（Ｇ２（Ｒ３（ｋ）））]2＋[Ｙｅ（Ｇ３（Ｒ１（ｋ）））−Ｙｅ（Ｇ２（Ｒ３（ｋ）））]2］1/2
Ｄｅ＝（Ｄｅ１２＋Ｄｅ２３＋Ｄｅ３１）／２
Ｓｅ（ｋ）＝[Ｄｅ・（Ｄｅ−Ｄｅ１２）・（Ｄｅ−Ｄｅ２３）・（Ｄｅ−Ｄｅ３１）]1/2 
【０１２２】
そして、上記〔数式５〕に従った処理を実行することにより、ｋ＝０，・・・，Ｎｅ／３−１の範囲で、第３エッジ点間三角形の外接円の半径Ｄｅ（ｋ）を算出する。
【０１２３】
上記〔数式４〕〔数式６〕〔数式７〕においては、エッジ点間三角形の各辺の長さＤ１２、Ｄ２３、Ｄ３１が、以下の〔数式８〕に示した６条件全てを満たしたエッジ点間三角形のみ、外接円半径の度数分布の対象とする。したがって、〔数式８〕に示した６条件のうち１つでも満たさなかったエッジ点間三角形については、外接円半径の度数分布の対象としない。下記〔数式８〕に示した６条件を満たさない場合は、外接円の半径Ｄｅ（ｋ）が極端に大きくなり、精度のよい度数分布を求めることができないためである。
【０１２４】
〔数式８〕
Ｄｅ１２＞０
Ｄｅ２３＞０
Ｄｅ３１＞０
｜Ｄｅ１２−Ｄｅ２３−Ｄｅ３１｜／Ｄｅ１２＞０．１
｜Ｄｅ２３−Ｄｅ３１−Ｄｅ１２｜／Ｄｅ２３＞０．１
｜Ｄｅ３１−Ｄｅ１２−Ｄｅ２３｜／Ｄｅ３１＞０．１
【０１２５】
上記〔数式８〕に示すように、６条件のうち前半３条件は、全ての辺が０でない正の値をとること、すなわち三角形を形成することを意味する。６条件のうち後半３条件は、作成される三角形が極端に偏平な形状にならないことを意味する。三角形が極端に偏平な形状になると、外接円の半径が無限大に近付き、精度のよい度数分布が得られないことになる。上記〔数式８〕に示した６条件を満たさない場合は、三角形を形成しないか（いずれかの辺が０の場合）、外接円の半径Ｄｅ（ｋ）が極端に大きくなり、精度のよい度数分布を求めることができないためである。特に、２Ｄ規制画像から外接円半径を算出する場合、エッジ点座標値［Ｘｅ（ｉ），Ｙｅ（ｉ）］は画素単位の整数値になるため、後述する３Ｄ対象モデルから外接円半径を算出する場合に比べ、いずれかの辺が０になる頻度が高く、３辺が０でなくても、面積が０に近い値になり、２辺の長さの和が残りの１辺の長さに近い値になる頻度も高い。このような場合でも、〔数式４〕〔数式６〕〔数式７〕に従って、外接円半径は算出可能であるが、物理的な意味を成さない異常値になる。（ただし、後述する内接円半径は、このような場合には面積に比例した０に近い値が算出され、異常値にならない。）
【０１２６】
上記〔数式５〕により算出されたＮｅ／３個の第１エッジ点間三角形の外接円の半径と、Ｎｅ／３個の第２エッジ点間三角形の外接円の半径と、Ｎｅ／３個の第３エッジ点間三角形の外接円の半径の３種のＮｅ／３個の配列Ｄｅ（ｋ）に対し、第２エッジ点間三角形のＮｅ／３個の配列にはＮｅ／３だけオフセットを加え、第３エッジ点間三角形のＮｅ／３個の配列には２Ｎｅ／３だけオフセットを加えた上で、通し番号ｉでまとめて、その範囲をｉ＝０，・・・，Ｎｅ−１に設定し直してＮｅ個のエッジ点間三角形の外接円の半径Ｄｅ（ｉ）（ｉ＝０，・・・，Ｎｅ−１）を得る。そして、ｉ＝０，・・・，Ｎｅ−１のＮｅ個の外接円の半径Ｄｅ（ｉ）のうち最大のものを最大外接円半径Ｄｅｍａｘとする。
【０１２７】
次に、画像度数分布算出手段９２は、エッジ点間三角形の内接円の半径の算出を行う（ステップＳ５０８）。具体的には、以下の〔数式９〕に従った処理を実行することにより、ｋ＝０，・・・，Ｎｅ／３−１の範囲で第１エッジ点間三角形、第２エッジ点間三角形、第３エッジ点間三角形の内接円の半径Ａｅ（ｋ）を算出する。
【０１２８】
〔数式９〕
Ａｅ（ｋ）＝２・Ｓｅ（ｋ）／（Ｄｅ１２＋Ｄｅ２３＋Ｄｅ３１）
【０１２９】
上記〔数式９〕において、Ｓｅ（ｋ）は、上記〔数式４〕〔数式６〕〔数式７〕に従った処理により算出された第１エッジ点間三角形、第２エッジ点間三角形、第３エッジ点間三角形の面積である。なお、〔数式８〕に示した６条件のうち１つでも満たさなかったエッジ点間三角形については、内接円半径の度数分布の対象としない。
【０１３０】
上記〔数式９〕により算出されたＮｅ／３個の第１エッジ点間三角形の内接円の半径Ａｅ（ｋ）と、Ｎｅ／３個の第２エッジ点間三角形の内接円の半径Ａｅ（ｋ）と、Ｎｅ／３個の第３エッジ点間三角形の内接円の半径Ａｅ（ｋ）の３種のＮｅ／３個の配列Ａｅ（ｋ）に対し、第２エッジ点間三角形のＮｅ／３個の配列にはＮｅ／３だけオフセットを加え、第３エッジ点間三角形のＮｅ／３個の配列には２Ｎｅ／３だけオフセットを加えた上で、通し番号ｉの範囲をｉ＝０，・・・，Ｎｅ−１に設定し直してＮｅ個のエッジ点間三角形の内接円の半径Ａｅ（ｉ）（ｉ＝０，・・・，Ｎｅ−１）を得る。そして、ｉ＝０，・・・，Ｎｅ−１のＮｅ個の内接円の半径Ａｅ（ｉ）のうち最大のものを最大内接円半径Ａｅｍａｘとする。
【０１３１】
次に、画像度数分布算出手段９２は、エッジ点間三角形の外接円の半径の度数分布である外接円分布を算出する（ステップＳ５０９）。具体的には、以下の〔数式１０〕に従った処理を実行することにより、要素ｍｄの度数Ｈｄｏ（ｍｄ）を、ｉ＝０，・・・，Ｎｅ−１について、算出する。
【０１３２】
〔数式１０〕
Ｄｅｍａｘ・ｍｄ／ＭＤ≦Ｄｅ（ｉ）＜Ｄｅｍａｘ・（ｍｄ＋１）／ＭＤならば、
Ｈｄｏ（ｍｄ）←Ｈｄｏ（ｍｄ）＋ＥＫ
０≦ｉ≦Ｎｅ／３−１の場合
ＥＫ＝[ＥＫ（Ｇ１（Ｒ１（ｉ）））＋ＥＫ（Ｇ２（Ｒ２（ｉ）））＋ＥＫ（Ｇ３（Ｒ３（ｉ）））]／３
Ｎｅ／３≦ｉ≦２Ｎｅ／３−１の場合
ＥＫ＝[ＥＫ（Ｇ２（Ｒ１（ｉ）））＋ＥＫ（Ｇ３（Ｒ２（ｉ）））＋ＥＫ（Ｇ１（Ｒ３（ｉ）））] ／３
２Ｎｅ／３≦ｉ≦Ｎｅ−１の場合
ＥＫ＝[ＥＫ（Ｇ３（Ｒ１（ｉ）））＋ＥＫ（Ｇ１（Ｒ２（ｉ）））＋ＥＫ（Ｇ２（Ｒ３（ｉ）））]／３
【０１３３】
上記〔数式１０〕は、エッジ点間三角形の外接円半径Ｄｅ（ｉ）が、最大外接円半径Ｄｅｍａｘにｍｄ／ＭＤを乗じた値以上で、（ｍｄ＋１）／ＭＤを乗じた値より小さい場合に、エッジ点間三角形の頂点となる３つのエッジ点の平均エッジ強度ＥＫをＨｄｏ（ｍｄ）に加算することを意味している。
【０１３４】
上記〔数式１０〕に従った処理を、Ｎｅ個のエッジ点間三角形について実行することにより、外接円分布Ｈｄｏ（ｍｄ）（ｍｄ＝０，・・・，ＭＤ−１）が算出される。各要素には、単なる頻度ではなく、エッジ強度が加算されているため、外接円分布Ｈｄｏ（ｍｄ）は、エッジ強度加重の外接円分布を示すことになる。エッジ強度でなく単に１を加算するようにすることも可能であるが、その場合、エッジ点のエッジ強度が加味されない外接円分布となり、同一内容の規制画像に対して画素が粗い場合と細かい場合とで、外接円分布に顕著な差が生じてしまう。そこで、本実施形態では、外接円分布の算出時にエッジ点のエッジ強度を加算するようにしている。エッジ強度でなく単に１を加算するようにした場合は、ある要素ｍｄに該当する数Ｈｄｏ（ｍｄ）を計数することにより、外接円分布を算出することになる。
【０１３５】
上記〔数式１０〕に従った処理により算出される外接円分布は、２次元の規制画像から得られるものであるので、このままでは、後に３次元のポリゴンモデルから得られる外接円分布との照合に最適な状態とはなっていない。このため、２次元の規制画像から外接円分布を算出する際、球面補正を行うことが好ましい。具体的には、以下の〔数式１１〕に従った処理を実行することにより、ｉ＝０，・・・，Ｎｅ−１について、球面補正エッジ強度ＥＫａを算出する。
【０１３６】
〔数式１１〕
ＥＫａ＝ＥＫ・Ｄｅ（ｉ）・｛Ｄｅｍａｘ2−Ｄｅ（ｉ）2｝1/2
【０１３７】
上記〔数式１１〕では、ｉ組目に選択された３つのエッジ点の平均エッジ強度を球面補正している。上記〔数式１１〕に従った処理を実行することにより算出された球面補正エッジ強度ＥＫａを、上記〔数式１０〕における平均エッジ強度ＥＫと置き換えて上記〔数式１０〕に従った処理を実行する。球面補正エッジ強度ＥＫａを用いることにより、球面補正が行われ、平面的な規制画像から球面的な特徴を有する外接円分布が得られる。
【０１３８】
次に、画像度数分布算出手段９２は、各エッジ点間三角形の内接円分布を算出する（ステップＳ５１０）。具体的には、以下の〔数式１２〕に従った処理を実行することにより、要素ｍａの度数Ｈａｏ（ｍａ）を、ｉ＝０，・・・，Ｎｅ−１について、算出する。
【０１３９】
〔数式１２〕
Ａｅｍａｘ・ｍａ／ＭＡ≦Ａｅ（ｉ）＜Ａｅｍａｘ・（ｍａ＋１）／ＭＡならば、
Ｈａｏ（ｍａ）←Ｈａｏ（ｍａ）＋ＥＫ
【０１４０】
上記〔数式１２〕は、エッジ点間三角形の内接円の半径Ａｅ（ｉ）が、Ａｅｍａｘにｍａ／ＭＡを乗じた値以上で、（ｍａ＋１）／ＭＡを乗じた値より小さい場合に、エッジ点間三角形の頂点となる３つのエッジ点の平均エッジ強度ＥＫをＨａｏ（ｍａ）に加算することを意味している。３つのエッジ点の平均エッジ強度ＥＫについては、上記〔数式１０〕に従った処理により算出したものを用いる。
【０１４１】
上記〔数式１２〕に従った処理を、Ｎｅ個のエッジ点間三角形について実行することにより、内接円分布Ｈａｏ（ｍａ）（ｍａ＝０，・・・，ＭＡ−１）が算出される。各要素には、単なる頻度ではなく、平均エッジ強度が加算されているため、内接円分布Ｈａｏ（ｍａ）は、平均エッジ強度が加重された内接円分布を示すことになる。平均エッジ強度でなく単に１を加算するようにすることも可能であるが、その場合、エッジ点の平均エッジ強度が加味されない内接円分布となり、同一内容の規制画像に対して画素が粗い場合と細かい場合とで、内接円分布に顕著な差が生じてしまう。そこで、本実施形態では、内接円分布算出時にエッジ点の平均エッジ強度を加算するようにしている。エッジ強度でなく単に１を加算するようにした場合は、ある要素ｍａに該当する数Ｈａｏ（ｍａ）を計数することにより、内接円分布を算出することになる。
【０１４２】
上記〔数式１２〕に従った処理により算出される内接円分布は、２次元の規制画像から得られるものであるので、このままでは、後に３次元のポリゴンモデルから得られる内接円分布との照合に最適な状態とはなっていない。このため、２次元の規制画像から内接円分布を算出する際、球面補正を行うことが好ましい。具体的には、以下の〔数式１３〕に従った処理を実行することにより、ｉ＝０，・・・，Ｎｅ−１について、球面補正エッジ強度ＥＫｂを算出する。
【０１４３】
〔数式１３〕
ＥＫｂ＝ＥＫ・Ａｅ（ｉ）・｛Ａｅｍａｘ2−Ａｅ（ｉ）2｝1/2
【０１４４】
上記〔数式１３〕では、ｉ組目に選択された３つのエッジ点の平均エッジ強度を球面補正している。上記〔数式１３〕に従った処理を実行することにより算出された球面補正エッジ強度ＥＫｂを、上記〔数式１２〕におけるＥＫと置き換えて上記〔数式１２〕に従った処理を実行する。球面補正エッジ強度ＥＫｂを用いることにより、球面補正が行われ、平面的な規制画像から球面的な特徴を有する内接円分布が得られる。
【０１４５】
外接円分布および内接円分布が算出されたら、次に、ループカウンタＬＣが規定値以上であるかどうかを判定する（ステップＳ５１１）。判定の結果、ループカウンタＬＣが規定値未満である場合は、２つのグループの配列を１だけずらす処理を行う（ステップＳ５１２）。例えば、第１エッジ点グループの順序を固定する場合、本実施形態では、以下の〔数式１４〕に従った処理を実行することにより、第２エッジ点グループ、第３エッジ点グループの２つのグループに用いる乱数配列Ｒ２（ｋ）、乱数配列Ｒ３（ｋ）の順序をずらしている。
【０１４６】
〔数式１４〕
Ｒｏ＝Ｒ２（０）、Ｒｏ３＝Ｒ３（０）とし、
ｋ＝０，・・・，Ｎｅ／３−２に対して、
Ｒ２（ｋ）←Ｒ２（ｋ＋１）、Ｒ３（ｋ）←Ｒ３（ｋ＋１）を繰り返し、
Ｒ２（Ｎｅ／３−１）＝Ｒｏ、Ｒ３（Ｎｅ／３−１）＝Ｒｏ３とする。
【０１４７】
第２エッジ点グループの順序を固定する場合、第３エッジ点グループの順序を固定する場合については、グループの関係を変えて、〔数式１４〕に従った処理を実行することにより行われる。併せて、ループカウンタＬＣをインクリメント（ＬＣ←ＬＣ＋１）する処理も行う。既に算出された度数分布が存在する場合は、その度数分布の各要素について、各要素に該当する度数の値を加算する。ステップＳ５１２において、２つのグループの配列をずらした後、２つのグループともう１つのグループのエッジ点の組み合わせを１回目とは変えて、ステップＳ５０６〜ステップＳ５１０の処理を実行し、外接円分布および内接円分布を算出する。ステップＳ５０６〜ステップＳ５１０の外接円分布および内接円分布の算出処理は、規定値として設定された所定の回数だけ繰り返される。規定値としては、適宜設定することが可能であるが、エッジ点の総数Ｎｅ＝１００００の場合、１０程度である。
【０１４８】
ループカウンタＬＣが規定値に達した場合、ステップＳ５１１において、ループカウンタＬＣが規定値以上であると判定されるため、２種の度数分布の正規化を行う（ステップＳ５１３）。具体的には、上記〔数式１０〕で算出されたＨｄｏ（ｍｄ）に、更に１００／｛ＥＫｓｕｍ・ＬＣ｝を乗じてＨｄｏ（ｍｄ）と置き換えることにより、単位をエッジ強度率［％］に正規化している。ＥＫｓｕｍとは、抽出されたＮｅ個のエッジ点のエッジ強度ＥＫ（ｉ）の総和値である。すなわち、エッジ点のエッジ強度の総和値ＥＫｓｕｍとループ回数ＬＣの乗算値により、各要素の値Ｈｄｏ（ｍｄ）を除算している。これにより、エッジ点のエッジ強度の総和値が異なる、即ち画素数が異なる規制画像であっても同一の外接円分布に変換され、同一内容の規制画像として判定が可能になる。また、ループ回数ＬＣで除算していることになるため、ループ回数分の平均値が得られることになる。
【０１４９】
また、上記〔数式１２〕で算出されたＨａｏ（ｍａ）に、更に１００／｛ＥＫｓｕｍ・ＬＣ｝を乗じてＨａｏ（ｍａ）と置き換えることにより、単位をエッジ強度率［％］に正規化している。すなわち、エッジ点のエッジ強度の総和値ＥＫｓｕｍとループ回数ＬＣの乗算値により、各要素の値Ｈａｏ（ｍａ）を除算している。これにより、エッジ点のエッジ強度の総和値が異なる。即ち画素数が異なる規制画像であっても同一の内接円分布に変換され、同一内容の規制画像として判定が可能になる。また、ループ回数ＬＣで除算していることになるため、ループ回数分の平均値が得られることになる。図４に示した処理により得られた外接円分布と内接円分布の２種の度数分布は、規制画像を特定する識別情報と対応付けて、画像度数分布記憶手段９３に格納される。
【０１５０】
＜２．２．２．第２の手法＞
次に、第２の手法について説明する。図７および図８は、第２の手法による画像度数分布の算出処理の詳細を示すフローチャートである。第１の手法と同様の処理については、同一符号を付して説明を省略する。第２の手法においても、ステップＳ５０１〜ステップＳ５１０までは、第１の手法と同様に行われる。そして、第１の手法のステップＳ５１３と同様に、２種の度数分布の正規化を行う（ステップＳ５１３）。第２の手法では、２種の度数分布の算出後、強制的に正規化を行う。具体的には、上記〔数式１０〕で算出されたＨｄｏ（ｍｄ）に、更に１００／ＥＫｓｕｍを乗じてＨｄｏ（ｍｄ）と置き換えることにより、単位をエッジ強度率［％］に正規化している。また、上記〔数式１２〕で算出されたＨａｏ（ｍａ）に、更に１００／ＥＫｓｕｍを乗じてＨａｏ（ｍａ）と置き換えることにより、単位をエッジ強度率［％］に正規化している。第１の手法とは異なり、ループカウンタＬＣによる除算は行わない。
【０１５１】
外接円分布および内接円分布の正規化が行われたら、次に、ループカウンタＬＣが１以上であるかどうかを判定する（ステップＳ５２１）。これは、度数分布の算出が初回であるか否かの判定を行っている。ループカウンタＬＣが１未満である場合は、度数分布の算出が初回であることを意味するので、２つのグループの配列を１だけずらす処理を行う（ステップＳ５１２）。具体的には、第１の手法のステップＳ５１２と同様に、上記〔数式１４〕に従った処理を実行することにより、配列Ｒ２（ｋ）、Ｒ３（ｋ）の順序をずらしている。
【０１５２】
ステップＳ５２１において、２つのグループの配列をずらした後、２つのグループともう１つのグループのエッジ点の組み合わせを１回目とは変えて、ステップＳ５０６〜ステップＳ５１３の処理を実行し、外接円分布および内接円分布の正規化を行う。すなわち、外接円分布および内接円分布を１回算出するごとに、３つのグループのうち２つのグループ内のエッジ点の順序を変化させて、外接円分布および内接円分布を改めて算出する処理を繰り返し行う。２回目以降では、ステップＳ５２１において、ループカウンタＬＣが１以上と判定されるため、直前の外接円分布および内接円分布との比較を行う（ステップＳ５２２）。まず、以下の〔数式１５〕に従った処理を実行することにより、算出された外接円分布と直前の外接円分布のユークリッド距離ＤＤを算出する。ユークリッド距離とは、各要素の度数同士の差分の絶対値を２乗した値で与えられるユークリッド空間上の距離である。ユークリッド距離ＤＤは、ＭＤ次元ユークリッド空間内の２点の距離として求められる。
【０１５３】
〔数式１５〕
ＤＤ＝Σmd=0,MD-1［｛Ｈｄｏ（ｍｄ）−Ｈｄｐ（ｍｄ）｝2／ＭＤ］1/2
【０１５４】
上記〔数式１５〕において、Σの添え字の“ｍｄ＝０，ＭＤ−１”は、ｍｄが０からＭＤ−１の全ての整数をとる場合について、後続の［・・・］1/2の総和を求めることを示している。また、Ｈｄｐ（ｍｄ）は、直前の外接円分布を示している。
【０１５５】
続いて、以下の〔数式１６〕に従った処理を実行することにより、算出された内接円分布と直前の内接円分布のユークリッド距離ＤＡを算出する。ユークリッド距離ＤＡは、ＭＡ次元ユークリッド空間内の２点の距離として求められる。
【０１５６】
〔数式１６〕
ＤＡ＝Σma=0,MA-1［｛Ｈａｏ（ｍａ）−Ｈａｐ（ｍａ）｝2／ＭＡ］1/2
【０１５７】
上記〔数式１６〕において、Σの添え字の“ｍａ＝０，ＭＡ−１”は、ｍａが０からＭＡ−１の全ての整数をとる場合について、後続の［・・・］1/2の総和を求めることを示している。また、Ｈａｐ（ｍａ）は、直前の内接円分布を示している。
【０１５８】
次に、画像度数分布算出手段９２は、ステップＳ５２２において算出された照合結果である外接円分布、内接円分布のユークリッド距離と、判定しきい値との比較を行う（ステップＳ５２３）。具体的には、ユークリッド距離ＤＤ、ＤＡが判定しきい値よりともに小さい場合は、飽和状態と判定し、ユークリッド距離ＤＤ、ＤＡのいずれか一方が判定しきい値以上である場合は、生成途上と判定する。判定しきい値としては、任意に設定可能であるが、ここでは、０．０５としてある。
【０１５９】
ステップＳ５２３において飽和状態と判定された場合、すなわち両者に類似性が認められる場合には、画像度数分布算出手段９２は、最後に算出された外接円分布および内接円分布を、正式に２種の度数分布とすることを決定する（ステップＳ５２４）。すなわち、算出直後の外接円分布および内接円分布と、その直前に得られた外接円分布および内接円分布を比較し、比較の結果で類似性が認められる場合に、算出直後の外接円分布および内接円分布を、照合対象の外接円分布および内接円分布とする。ステップＳ５２３において生成途上と判定された場合には、２つのグループの配列を１だけずらす処理を行った後（ステップＳ５１２）、ステップＳ５０６〜ステップＳ５１３の処理を繰り返し実行する。
【０１６０】
規制画像（２Ｄ画像）から得られた外接円分布と内接円分布における外接円と内接円を図９に示す。規制画像から選択された３つのエッジ点を結ぶことによりエッジ点間三角形が作成される。そして、エッジ点間三角形の外接円と内接円を求める。図９において、網掛けされた多角形は、規制画像の対象物部分（背景部分以外）を示している。また、黒丸は選択された３つのエッジ点を示している。図９（ａ）は、エッジ点間三角形とその外接円と半径の関係を示し、図９（ｂ）は、エッジ点間三角形とその内接円と半径の関係を示している。図９（ａ）（ｂ）において、下向きの矢印は、それぞれ外接円の半径、内接円の半径を示している。
【０１６１】
＜２．３．立体物造形用データ出力規制装置の構成＞
次に、本発明第１の実施形態に係る立体物造形用データ出力規制装置について説明する。図１０は、本発明の一実施形態に係る立体物造形用データ出力規制装置１００を含む立体物造形システムのハードウェア構成図である。本実施形態に係る立体物造形用データ出力規制装置１００は、汎用のコンピュータで実現することができ、図１０に示すように、ＣＰＵ（Central Processing Unit）１と、コンピュータのメインメモリであるＲＡＭ（Random Access Memory）２と、ＣＰＵ１が実行するプログラムやデータを記憶するためのハードディスク、フラッシュメモリ等の大容量の記憶装置３と、キーボード、マウス等のキー入力Ｉ／Ｆ（インターフェース）４と、３Ｄプリンタやデータ記憶媒体等の外部装置とデータ通信するためのデータ入出力Ｉ／Ｆ（インターフェース）５と、液晶ディスプレイ等の表示デバイスである表示部６と、を備え、互いにバスを介して接続されている。
【０１６２】
３Ｄプリンタ７は、汎用の３Ｄプリンタであり、立体物の３次元形状をポリゴンの集合で表現したポリゴンモデルである立体物造形用データを基に樹脂、石膏等の素材を加工して立体物を造形する立体物造形装置である。３Ｄプリンタ７は、データ処理部７ａと出力部７ｂを有している。３Ｄプリンタ７のデータ処理部７ａは、データ入出力Ｉ／Ｆ５に接続されており、データ入出力Ｉ／Ｆ５から受け取った立体物造形用データを基に、出力部７ｂが立体物を造形するようになっている。
【０１６３】
図１０では、立体物造形用データ出力規制装置１００と３Ｄプリンタ７は分離した形態で示されているが、現在市販されている殆どの３Ｄプリンタ製品には立体物造形用データ出力規制装置１００の構成要素である、ＣＰＵ１、ＲＡＭ２、記憶装置３、キー入力Ｉ／Ｆ４（汎用コンピュータ向けキーボード・マウスではなく、テンキーレベルの数種のボタン）、データ入出力Ｉ／Ｆ５、表示部６（数行の文字を表示可能な小型液晶パネルやタッチパネルを重畳させてキー入力Ｉ／Ｆ４を兼ねることも多い）も小規模ながら重複して備えている。従って、３Ｄプリンタ７自体が外部記憶媒体経由で立体物造形用データを直接受け取り、単独で立体物を造形する運用も可能になっている（特に民生用の３Ｄプリンタではこちらの形態の方が多い）。すなわち、図１０に示した立体物造形システムを１つの筐体に収めて、“３Ｄプリンタ”という製品として流通することも多い。
【０１６４】
図１１は、本実施形態に係る立体物造形用データ出力規制装置の構成を示す機能ブロック図である。図１１において、１０はモデル度数分布算出手段、２０は度数分布照合手段、３０は対象モデル記憶手段、４０は度数分布データベースである。
【０１６５】
モデル度数分布算出手段１０は、出力対象のポリゴンモデルである対象モデルに対して、対象モデル内のポリゴンにより形成された三角形であるポリゴン間三角形の外接円の半径とポリゴン間三角形の内接円の半径を算出し、算出結果である外接円の半径の度数分布である外接円分布と、内接円の半径の度数分布である内接円分布を算出する処理を行う。度数分布照合手段２０は、対象モデルについて算出された外接円分布、内接円分布をそれぞれ、度数分布データベース４０に登録されている規制画像の外接円分布、内接円分布と照合し、出力を規制すべきか否か、すなわち出力不適であるか出力適正であるかを判定する。
【０１６６】
モデル度数分布算出手段１０、度数分布照合手段２０は、ＣＰＵ１が、記憶装置３に記憶されているプログラムを実行することにより実現される。対象モデル記憶手段３０は、出力を規制すべきか否かの判定対象となるポリゴンモデルである対象モデルを記憶した記憶手段であり、記憶装置３により実現される。ポリゴンモデルとは、ポリゴンの集合により３次元空間における所定の立体形状を表現したデータであり、３Ｄプリンタ等の立体物造形装置に立体物造形用データとして出力されるものである。本実施形態では、ポリゴンモデルのデータ形式としてＳＴＬ（Standard Triangulated Language）を採用している。
【０１６７】
度数分布データベース４０は、出力を規制すべき画像である規制画像に対して２種の度数分布として算出された外接円分布および内接円分布を記憶して、データベース化したものであり、記憶装置３により実現される。２種の度数分布である外接円分布および内接円分布は、規制画像の特徴を表現した特徴ベクトルとしての役割を果たすものとなる。すなわち、２種の度数分布により、元の規制画像の相違を識別可能であるが、元の規制画像を復元できるわけではない。これは、指紋（フィンガープリント）により個人の相違を識別可能であるが、人物の姿そのものを復元できるわけではないのと同様である。したがって、２種の度数分布は、著作物としての役割は果たさないが、２つの著作物の同一性を証明する、いわゆるフィンガープリントとしての役割も果たすことになる。度数分布データベース４０には、外接円分布および内接円分布だけでなく、外接円分布および内接円分布の算出の基になった規制画像自体を登録しておくことも可能であるが、通常は、著作権の問題から規制画像自体は登録されていない。
【０１６８】
図１１に示した各構成手段は、現実には図１０に示したように、コンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。すなわち、コンピュータが、専用のプログラムに従って各手段の内容を実行することになる。なお、本明細書において、コンピュータとは、ＣＰＵ等の演算処理部を有し、データ処理が可能な装置を意味し、パーソナルコンピュータなどの汎用コンピュータだけでなく、製品としての“３Ｄプリンタ”に組み込まれたボードコンピュータも含む。
【０１６９】
図１０に示した記憶装置３には、ＣＰＵ１を動作させ、コンピュータを、立体物造形用データ出力規制装置として機能させるための専用のプログラムが実装されている。この専用のプログラムを実行することにより、ＣＰＵ１は、モデル度数分布算出手段１０、度数分布照合手段２０としての機能を実現することになる。また、記憶装置３は、対象モデル記憶手段３０、度数分布データベース４０として機能するだけでなく、立体物造形用データ出力規制装置としての処理に必要な様々なデータを記憶する。
【０１７０】
図１０に示したハードウェア構成において、コンピュータをモデル度数分布算出手段１０として機能させるための専用のプログラムのみを、記憶装置３に実装しておくことにより、度数分布を算出するためのモデル度数分布算出装置を実現することもできる。モデル度数分布算出装置は、対象モデル記憶手段３０から読み込んだ対象モデルを基に、２種の度数分布を算出して出力する。出力された度数分布は、別途、度数分布照合手段２０、度数分布データベース４０を備えた装置に入力され、照合および出力規制の判定を行うことができる。
【０１７１】
＜２．４．立体物造形用データ出力規制装置の処理動作＞
＜２．４．２．前処理＞
次に、図１０、図１１に示した立体物造形用データ出力規制装置の処理動作について説明する。まず、上述のような、画像度数分布算出装置により、出力を規制すべき画像である規制画像から２種の度数分布を作成し、作成した度数分布を、度数分布データベース４０に登録しておく。画像度数分布算出装置は、立体物造形用データ出力規制装置と別のコンピュータで実現する必要はなく、立体物造形用データ出力規制装置を実現するコンピュータに、画像度数分布算出装置を実現するためのプログラムを組み込んでおくこともできる。
【０１７２】
さらに、規制画像から作成した度数分布だけでなく、規制対象とするポリゴンモデルである規制モデルを表現した度数分布を作成し、度数分布データベース４０に登録しておくこともできる。この場合、規制モデルについて、２種の度数分布である外接円分布および内接円分布を作成する。ポリゴンモデルからの外接円分布および内接円分布の作成については、後述する立体物造形用データ出力規制装置における処理と同様にして行うことができる。規制モデルからの外接円分布および内接円分布の作成は、立体物造形用データ出力規制装置で行ってもよいし、別のコンピュータで同様のプログラムを実行することにより行ってもよい。作成された外接円分布および内接円分布は、度数分布データベース４０に登録される。２次元データである規制画像から作成される度数分布と、３次元データである規制モデルから作成される度数分布は、同一の形式になるように作成される。これにより、後述する照合時において、規制画像と規制モデルのどちらについても、同様に照合を行うことが可能となる。
【０１７３】
出力規制の対象は、銃砲・刀剣などの危険物だけでなく、キャラクターなどの著作物となることもある。いずれの場合においても、制作された画像やポリゴンモデルには著作権者が存在する著作物になる。したがって、著作物である画像やポリゴンモデルをデータベースに登録するためには、その行為自体に著作者の許諾が必要となる。画像については著作権者が明示されている法人である場合が多く、許諾を得ることが可能であるが、ポリゴンモデルについては個人など著作権者が不明なものも多く、許諾を得ることが困難である。外接円分布および内接円分布の形式により、元の画像やポリゴンモデルの相違を識別可能であるが、元の画像やポリゴンモデルを復元できるわけではない。これは、指紋（フィンガープリント）により個人の相違を識別可能であるが、人物の姿そのものを復元できるわけではないのと同様で、外接円分布および内接円分布の形式はフィンガープリントに相当し、著作物には該当しない。そこで、本発明のように、外接円分布および内接円分布の形式で登録することにより、著作者の許諾を必要とせずに、規制画像や規制モデルの特徴を記録したデータベースを構築することができる。ただし、規制画像については、著作者の許諾を得て商用利用できないレベルに解像度を落とした状態で規制画像自体も併せて登録し、外接円分布および内接円分布の形式で照合し適合した規制画像をヒトが目視で確認できるようにする運用をとることが望ましい。
【０１７４】
＜２．４．３．処理概要＞
次に、図１０、図１１に示した立体物造形用データ出力規制装置の処理動作について説明する。図１２は、本発明の一実施形態に係る立体物造形用データ出力規制装置の処理概要を示すフローチャートである。まず、モデル度数分布算出手段１０が、ポリゴンモデルである対象モデルについて、２種の度数分布である外接円分布および内接円分布を算出する（ステップＳ１００）。そして、算出された対象モデルの度数分布と、度数分布データベース４０に登録された規制画像の度数分布との照合を行う（ステップＳ２００）。
【０１７５】
＜２．５．モデル度数分布の算出処理＞
＜２．５．１．第１の手法＞
まず、ステップＳ１００のモデル度数分布の算出処理について説明する。モデル度数分布の算出処理としては、第１の手法と第２の手法の２通りが存在する。まず、第１の手法について説明する。図１３は、第１の手法によるモデル度数分布の算出処理の詳細を示すフローチャートである。ここでは、対象モデルのポリゴン数Ｎ、ポリゴンを特定する変数ｉ（ｉ＝０，・・・，Ｎ−１）とし、各ポリゴンｉの頂点を（Ｘｕ（ｉ），Ｙｕ（ｉ），Ｚｕ（ｉ））と定義されたものとする。ｕは頂点番号を示しており、本実施形態では、ポリゴンが三角形状であるため、ｕ＝０，１，２の３つの値をとる。したがって、例えばＸｕ（ｉ）は、Ｘ０（ｉ）、Ｘ１（ｉ）、Ｘ２（ｉ）とも表記される。頂点を特定したポリゴンおよび法線ベクトルは、立体物造形装置である３Ｄプリンタによる出力に必要なものであり、法線ベクトルの方向が造形面の外側（材料から空中方向）を示す。法線ベクトルは、３Ｄプリンタに出力用のポリゴンモデルにおいては、各ポリゴンについて記録されているのが普通である。
【０１７６】
モデル度数分布算出手段１０は、まず、対象モデルを構成する各ポリゴンｉの面積Ｓ（ｉ）、Ｎ個のポリゴンの面積Ｓ（ｉ）の総和である総面積Ｓｓｕｍを以下の〔数式１７〕に従った処理を実行することにより算出する（ステップＳ６０１）。
【０１７７】
〔数式１７〕
Ｖｘ＝[Ｙ１（ｉ）−Ｙ０（ｉ）][Ｚ２（ｉ）−Ｚ０（ｉ）]−[Ｚ１（ｉ）−Ｚ０（ｉ）][ Ｙ２（ｉ）−Ｙ０（ｉ）]
Ｖｙ＝[Ｚ１（ｉ）−Ｚ０（ｉ）][Ｘ２（ｉ）−Ｘ０（ｉ）]−[Ｘ１（ｉ）−Ｘ０（ｉ）][ Ｚ２（ｉ）−Ｚ０（ｉ）]
Ｖｚ＝[Ｘ１（ｉ）−Ｘ０（ｉ）][Ｙ２（ｉ）−Ｙ０（ｉ）]−[Ｙ１（ｉ）−Ｙ０（ｉ）][Ｘ２（ｉ）−Ｘ０（ｉ）] 
Ｓ（ｉ）＝[Ｖｘ（ｉ）2+Ｖｙ（ｉ）2+Ｖｚ（ｉ）2]1/2
Ｓｓｕｍ＝Σi=0,N-1Ｓ（ｉ）
【０１７８】
上記〔数式１７〕において、Σの添え字の“ｉ＝０，Ｎ−１”は、ｉが０からＮ−１の全ての整数をとる場合について、総和を求めることを示している。次に、対象モデルを構成する各ポリゴンについて、頂点の平均となる平均点を算出する（ステップＳ６０２）。具体的には、以下の〔数式１８〕に従った処理を実行することにより、各ポリゴンｉの平均点であるポリゴン平均点（Ｘｃ（ｉ），Ｙｃ（ｉ），Ｚｃ（ｉ））を算出する。
【０１７９】
〔数式１８〕
Ｘｃ（ｉ）＝｛Ｘ０（ｉ）＋Ｘ１（ｉ）＋Ｘ２（ｉ）｝／３
Ｙｃ（ｉ）＝｛Ｙ０（ｉ）＋Ｙ１（ｉ）＋Ｙ２（ｉ）｝／３
Ｚｃ（ｉ）＝｛Ｚ０（ｉ）＋Ｚ１（ｉ）＋Ｚ２（ｉ）｝／３
【０１８０】
上記〔数式１８〕において、Ｘ０（ｉ）、Ｘ１（ｉ）、Ｘ２（ｉ）はそれぞれＸｕ（ｉ）において、頂点番号ｕ＝０，１，２の場合を示し、Ｙ０（ｉ）、Ｙ１（ｉ）、Ｙ２（ｉ）はそれぞれＹｕ（ｉ）において、頂点番号ｕ＝０，１，２の場合を示し、Ｚ０（ｉ）、Ｚ１（ｉ）、Ｚ２（ｉ）はそれぞれＺｕ（ｉ）において、頂点番号ｕ＝０，１，２の場合を示している。上記〔数式１８〕に示すように、各ポリゴンの平均点は、ポリゴンの各頂点の平均座標として算出される。
【０１８１】
次に、ポリゴンモデルを構成するポリゴンの集合を３つのグループに分け、各グループのポリゴンの順序を入れ替える（ステップＳ６０３）。３つのグループへの分け方としては、同数に分けることができれば、どのような手法を用いてもよい。本実施形態では、ポリゴンモデルのデータ配列における順序に基づき、３で除して余りが０となる順番のポリゴンの第１ポリゴングループと、３で除して余りが１となる順番のポリゴンの第２ポリゴングループと、３で除して余りが２となる順番のポリゴンの第３ポリゴングループに分けている。これにより、ポリゴンモデルを構成するＮ個のポリゴンは、Ｎ／３個ずつのグループに分けられることになる。
【０１８２】
各グループのポリゴン数が同数になるように、元のポリゴン数Ｎの３の剰余が２の場合、先頭のポリゴン０を、最後尾のポリゴンＮ＝ポリゴン０として重複してもたせ、全ポリゴン数がＮ＋１個になるように修正する。また、元のポリゴン数Ｎの３の剰余が１の場合、先頭のポリゴン０および２番目のポリゴン１を、最後尾から２番目のポリゴンＮ＝ポリゴン０、最後尾のポリゴンＮ＋１＝ポリゴン１として重複してもたせ、全ポリゴン数がＮ＋２個になるように修正する。各グループのポリゴン数が同数になるように、ポリゴンを重複して追加し、全ポリゴン数がＮ＋１個またはＮ＋２個となった場合であっても、これをＮとして置き換え、以下では、全ポリゴン数を３の倍数であるＮ個として説明していく。
【０１８３】
３で除した余りによりグループ分けすることにより、３つの配列Ｇ１（ｆ）＝３ｆ、Ｇ２（ｆ）＝３ｆ＋１、Ｇ３（ｆ）＝３ｆ＋２（ｆ＝０，・・・，Ｎ／３−１）が得られる。次に、各グループのポリゴンの配列の順序を入れ替える。順序の入れ替えは無作為に行われる。すなわち、シャッフルされる。ポリゴンの配列の順序を入れ替えることができれば、どのような手法を用いてもよいが、本実施形態では、以下のような手法によりポリゴンの配列の順序を入れ替えている。
【０１８４】
まず、３種類の乱数配列Ｒ１（ｋ）、Ｒ２（ｋ）、Ｒ３（ｋ）を作成する。具体的には、ｋ＝０，・・・，Ｎ／３−１について、Ｒ１（ｋ）＝ｋに初期化する。続いて、０≦Ｒｎｄ（ｋ）＜１の範囲で実数値の一様乱数をＮ／３回発生させ、１回発生させるごとに、ｐｐ＝Ｒｎｄ（ｋ）・Ｎ／３なる演算で０≦ｐｐ≦Ｎ／３の整数値を算出し、Ｒ１（ｋ）の値とＲ１（ｐｐ）の値を交換する処理をＮ／３回繰り返す。繰り返しの結果、Ｎ／３個の連続する整数をランダムに入れ替えた乱数配列Ｒ１（ｋ）が得られる。これにより、例えば、第１ポリゴングループのポリゴンの配列Ｇ１（ｆ）に対して、ｆ＝Ｒ１（ｋ）で与え、Ｇ１（Ｒ１（ｋ））＝３Ｒ１（ｋ）（ｋ＝０，・・・，Ｎ／３−１）のように、順序が入れ替えられた配列を得ることができる。第２の乱数配列Ｒ２（ｋ）に対しては、Ｒ２（ｋ）＝Ｒ１（Ｎ／３−１−ｋ）で与える。すなわち、第１の乱数配列Ｒ１（ｋ）の先頭から末尾への順序を逆にしたものが乱数配列Ｒ２（ｋ）である。乱数配列Ｒ１（ｋ）、乱数配列Ｒ２（ｋ）は、互いに他方の反転乱数配列となる。また、乱数配列Ｒ３（ｋ）＝ｋとし乱数にせず、ｋ＝０，・・・，Ｎ／３−１なるシーケンシャルな値に設定する。このように、ポリゴンの配列の順序を入れ替えることにより、各グループのポリゴンの配列順序を、３次元空間である対象モデル内のポリゴンからランダムに設定することができ、ランダムなポリゴン上の点の組み合わせで算出されたポリゴン間三角形の外接円の半径および内接円の半径に基づいて、外接円分布および内接円分布を求めることが可能となる。
【０１８５】
このように３つのグループにポリゴンを分類するのは、３つのポリゴンをランダムに選択してポリゴン間三角形を作成する際、互いに重複しないようにするためである。ポリゴンモデルを構成する全てのポリゴンの組み合わせでポリゴン間三角形を順次構成することも可能であるが、ポリゴン数が多いと組み合わせが膨大な数になり実用的ではない。また、グループ分けをせず、ポリゴンモデルを構成する全てのポリゴンよりランダムに３つのポリゴンを選択してポリゴン間三角形を構成する方法も考えられるが、ある確率で同一のポリゴン間三角形が発生してしまう。ランダムに抽出されるポリゴン間三角形のサンプル数が十分に多くないと、偏った度数分布が算出される可能性がある。本実施形態のように、３つのグループに分類し、各グループから１つずつポリゴンを選択して計３つ選択するようにすることにより、ポリゴン間三角形を形成するための３つのポリゴンを互いに重複することなくランダム性をもたせながら効率的に選択することが可能になる。
【０１８６】
次に、初期設定を行う（ステップＳ６０４）。具体的には、算出する外接円分布、内接円分布の初期化、ループカウンタの初期化を行う。本実施形態で算出される外接円分布は、ポリゴンの面積を加重したポリゴン間三角形の外接円の半径の分布であり、要素数をＭＤとし、各要素ｍｄ（ｍｄ＝０，・・・，ＭＤ−１）の度数をＨｄ（ｍｄ）と表す。Ｈｄ（ｍｄ）は、所定数ＭＤの要素で構成される１次元配列である。このような１次元の配列を準備した後、モデル度数分布算出手段１０は、初期値をＨｄ（ｍｄ）＝０と設定する。本実施形態で算出される内接円分布は、ポリゴンの面積を加重したポリゴン間三角形の内接円の半径の分布であり、要素数をＭＡとし、各要素ｍａ（ｍａ＝０，・・・，ＭＡ−１）の度数をＨａ（ｍａ）と表す。要素数ＭＡは、上記要素数ＭＤと同一であってもよい。Ｈａ（ｍａ）は、所定数ＭＡの要素で構成される１次元配列である。このような１次元の配列を準備した後、モデル度数分布算出手段１０は、初期値をＨａ（ｍａ）＝０と設定する。ループカウンタＬＣについては、初期値ＬＣ＝０と設定する。
【０１８７】
次に、モデル度数分布算出手段１０は、３つのグループ間における各ポリゴン平均点を頂点とするポリゴン間三角形の作成を行う（ステップＳ６０５）。３つのポリゴンを用いてポリゴン間三角形を作成する際、ポリゴン平均点に限らず、ポリゴン上の点としては、様々な点を用いることができる。しかし、ポリゴン平均点が、１つのポリゴンを代表する点として好ましいため、本実施形態では、ポリゴン平均点を頂点としてポリゴン間三角形を作成する。ポリゴン上の点とは、ポリゴンを構成する頂点を全て通る面上であって、これらの頂点に囲まれる範囲に位置する点を意味する。
【０１８８】
ステップＳ６０５においては、ポリゴン間三角形の数がポリゴン総数Ｎと同一になるように、グループ間の組み合わせを変えて３通り作成する。具体的には、第１ポリゴングループのｆ（ｆ＝０，・・・，Ｎ／３−１）番目のポリゴンＧ１（ｆ）に対して乱数配列Ｒ１（ｋ）によりランダムに順番を入れ替えたＧ１（Ｒ１（ｋ））の平均点（Ｘｃ（Ｇ１（Ｒ１（ｋ））），Ｙｃ（Ｇ１（Ｒ１（ｋ））），Ｚｃ（Ｇ１（Ｒ１（ｋ））））から第２ポリゴングループの対応する順序ｆのポリゴンＧ２（ｆ）に対して乱数配列Ｒ２（ｋ）によりランダムに順番を入れ替えたＧ２（Ｒ２(ｋ)）の平均点（Ｘｃ（Ｇ２（Ｒ２（ｋ））），Ｙｃ（Ｇ２（Ｒ２（ｋ））），Ｚｃ（Ｇ２（Ｒ２（ｋ））））、第３ポリゴングループの対応する順序ｆのポリゴンＧ３（ｆ）に対して乱数配列Ｒ３（ｋ）によりランダムに順番を入れ替えたＧ３（Ｒ３（ｋ））の平均点（Ｘｃ（Ｇ３（Ｒ３（ｋ））），Ｙｃ（Ｇ３（Ｒ３（ｋ））），Ｚｃ（Ｇ３（Ｒ３（ｋ））））の３点を頂点とする第１ポリゴン間三角形をＮ／３個作成する。
【０１８９】
同様に、第２ポリゴングループのｆ番目のポリゴンＧ２（ｆ）に対して乱数配列Ｒ１（ｋ）によりランダムに順番を入れ替えたＧ２（Ｒ１（ｋ））の平均点（Ｘｃ（Ｇ２（Ｒ１（ｋ））），Ｙｃ（Ｇ２（Ｒ１（ｋ））），Ｚｃ（Ｇ２（Ｒ１（ｋ））））、第３ポリゴングループの対応する順序ｆのポリゴンＧ３（ｆ）に対して乱数配列Ｒ２（ｋ）によりランダムに順番を入れ替えたＧ３（Ｒ２（ｋ））の平均点（Ｘｃ（Ｇ３（Ｒ２（ｋ））），Ｙｃ（Ｇ３（Ｒ２（ｋ））），Ｚｃ（Ｇ３（Ｒ２（ｋ））））、第１ポリゴングループの対応する順序ｆのポリゴンＧ１（ｆ）に対して乱数配列Ｒ３（ｋ）によりランダムに順番を入れ替えたＧ１（Ｒ３（ｋ））の平均点（Ｘｃ（Ｇ１（Ｒ３（ｋ））），Ｙｃ（Ｇ１（Ｒ３（ｋ））），Ｚｃ（Ｇ１（Ｒ３（ｋ））））の３点を頂点とする第２ポリゴン間三角形をＮ／３個作成する。
【０１９０】
さらに、第３ポリゴングループのｆ番目のポリゴンＧ３（ｆ）に対して乱数配列Ｒ１（ｋ）によりランダムに順番を入れ替えたＧ３（Ｒ１（ｋ））の平均点（Ｘｃ（Ｇ３（Ｒ１（ｋ））），Ｙｃ（Ｇ３（Ｒ１（ｋ））），Ｚｃ（Ｇ３（Ｒ１（ｋ））））、第１ポリゴングループの対応する順序ｆのポリゴンＧ１（ｆ）に対して乱数配列Ｒ２（ｋ）によりランダムに順番を入れ替えたＧ１（Ｒ２（ｋ））の平均点（Ｘｃ（Ｇ１（Ｒ２（ｋ））），Ｙｃ（Ｇ１（Ｒ２（ｋ））），Ｚｃ（Ｇ１（Ｒ２（ｋ））））、第２ポリゴングループの対応する順序ｆのポリゴンＧ２（ｆ）に対して乱数配列Ｒ３（ｋ）によりランダムに順番を入れ替えたＧ２（Ｒ３（ｋ））の平均点（Ｘｃ（Ｇ２（Ｒ３（ｋ））），Ｙｃ（Ｇ２（Ｒ３（ｋ））），Ｚｃ（Ｇ２（Ｒ３（ｋ））））の３点を頂点とする第３ポリゴン間三角形をＮ／３個作成する。
【０１９１】
次に、モデル度数分布算出手段１０は、各ポリゴン平均点を頂点とするポリゴン間三角形の外接円の半径の算出を行う（ステップＳ６０６）。具体的には、まず、以下の〔数式１９〕に従った処理を実行することにより、ｋ＝０，・・・，Ｎ／３−１の範囲で、第１ポリゴン間三角形の面積Ｓ（ｋ）を算出する。
【０１９２】
〔数式１９〕
Ｄ１２＝［[Ｘｃ（Ｇ２（Ｒ２（ｋ）））−Ｘｃ（Ｇ１（Ｒ１（ｋ）））]2＋[Ｙｃ（Ｇ２（Ｒ２（ｋ）））−Ｙｃ（Ｇ１（Ｒ１（ｋ）））]2］1/2
Ｄ２３＝［[Ｘｃ（Ｇ３（Ｒ３（ｋ）））−Ｘｃ（Ｇ２（Ｒ２（ｋ）））]2＋[Ｙｃ（Ｇ３（Ｒ３（ｋ）））−Ｙｃ（Ｇ２（Ｒ２（ｋ）））]2］1/2
Ｄ３１＝［[Ｘｃ（Ｇ１（Ｒ１（ｋ）））−Ｘｃ（Ｇ３（Ｒ３（ｋ）））]2＋[Ｙｃ（Ｇ１（Ｒ１（ｋ）））−Ｙｃ（Ｇ３（Ｒ３（ｋ）））]2］1/2
Ｄ＝（Ｄ１２＋Ｄ２３＋Ｄ３１）／２
Ｓ（ｋ）＝[Ｄ・（Ｄ−Ｄ１２）・（Ｄ−Ｄ２３）・（Ｄ−Ｄ３１）]1/2 
【０１９３】
そして、以下の〔数式２０〕に従った処理を実行することにより、ｋ＝０，・・・，Ｎ／３−１の範囲で、第１ポリゴン間三角形の外接円の半径Ｄ（ｋ）を算出する。
【０１９４】
〔数式２０〕
Ｄ（ｋ）＝Ｄ１２・Ｄ２３・Ｄ３１／（４・Ｓ（ｋ））
【０１９５】
モデル度数分布算出手段１０は、同様に、以下の〔数式２１〕に従った処理を実行することにより、ｋ＝０，・・・，Ｎ／３−１の範囲で、第２ポリゴン間三角形の面積Ｓ（ｋ）を算出する。
【０１９６】
〔数式２１〕
Ｄ１２＝［[Ｘｃ（Ｇ３（Ｒ２（ｋ）））−Ｘｃ（Ｇ２（Ｒ１（ｋ）））]2＋[Ｙｃ（Ｇ３（Ｒ２（ｋ）））−Ｙｃ（Ｇ２（Ｒ１（ｋ）））]2］1/2
Ｄ２３＝［[Ｘｅ（Ｇ１（Ｒ３（ｋ）））−Ｘｃ（Ｇ３（Ｒ２（ｋ）））]2＋[Ｙｃ（Ｇ１（Ｒ３（ｋ）））−Ｙｃ（Ｇ３（Ｒ２（ｋ）））]2］1/2
Ｄ３１＝［[Ｘｃ（Ｇ２（Ｒ１（ｋ）））−Ｘｃ（Ｇ１（Ｒ３（ｋ）））]2＋[Ｙｃ（Ｇ２（Ｒ１（ｋ）））−Ｙｃ（Ｇ１（Ｒ３（ｋ）））]2］1/2
Ｄ＝（Ｄ１２＋Ｄ２３＋Ｄ３１）／２
Ｓ（ｋ）＝[Ｄ・（Ｄ−Ｄ１２）・（Ｄ−Ｄ２３）・（Ｄ−Ｄ３１）]1/2 
【０１９７】
そして、上記〔数式２０〕に従った処理を実行することにより、ｋ＝０，・・・，Ｎ／３−１の範囲で、第２ポリゴン間三角形の外接円の半径Ｄ（ｋ）を算出する。
【０１９８】
モデル度数分布算出手段１０は、同様に、以下の〔数式２２〕に従った処理を実行することにより、ｋ＝０，・・・，Ｎ／３−１の範囲で、第３ポリゴン間三角形の面積Ｓ（ｋ）を算出する。
【０１９９】
〔数式２２〕
Ｄ１２＝［[Ｘｃ（Ｇ１（Ｒ２（ｋ）））−Ｘｃ（Ｇ３（Ｒ１（ｋ）））]2＋[Ｙｃ（Ｇ１（Ｒ２（ｋ）））−Ｙｃ（Ｇ３（Ｒ１（ｋ）））]2］1/2
Ｄ２３＝［[Ｘｃ（Ｇ２（Ｒ３（ｋ）））−Ｘｃ（Ｇ１（Ｒ２（ｋ）））]2＋[Ｙｃ（Ｇ２（Ｒ３（ｋ）））−Ｙｃ（Ｇ１（Ｒ２（ｋ）））]2］1/2
Ｄ３１＝［[Ｘｃ（Ｇ３（Ｒ１（ｋ）））−Ｘｃ（Ｇ２（Ｒ３（ｋ）））]2＋[Ｙｃ（Ｇ３（Ｒ１（ｋ）））−Ｙｃ（Ｇ２（Ｒ３（ｋ）））]2］1/2
Ｄ＝（Ｄ１２＋Ｄ２３＋Ｄ３１）／２
Ｓ（ｋ）＝[Ｄ・（Ｄ−Ｄ１２）・（Ｄ−Ｄ２３）・（Ｄ−Ｄ３１）]1/2 
【０２００】
そして、上記〔数式２０〕に従った処理を実行することにより、ｋ＝０，・・・，Ｎ／３−１の範囲で、第３ポリゴン間三角形の外接円の半径Ｄ（ｋ）を算出する。
【０２０１】
上記〔数式１９〕〔数式２１〕〔数式２２〕においては、三角形の各辺の長さＤ１２、Ｄ２３、Ｄ３１が、以下の〔数式２３〕に示した６条件全てを満たした三角形のみ、外接円半径の度数分布の対象とする。したがって、〔数式２３〕に示した６条件のうち１つでも満たさなかった三角形については、外接円半径の度数分布の対象としない。下記〔数式２３〕に示した６条件を満たさない場合は、外接円の半径Ｄ（ｋ）が極端に大きくなり、精度のよい度数分布を求めることができないためである。
【０２０２】
〔数式２３〕
Ｄ１２＞０
Ｄ２３＞０
Ｄ３１＞０
｜Ｄ１２−Ｄ２３−Ｄ３１｜／Ｄ１２＞０．１
｜Ｄ２３−Ｄ３１−Ｄ１２｜／Ｄ２３＞０．１
｜Ｄ３１−Ｄ１２−Ｄ２３｜／Ｄ３１＞０．１
【０２０３】
上記〔数式２３〕に示すように、６条件のうち前半３条件は、全ての辺が０でない正の値をとること、すなわち三角形を形成することを意味する。６条件のうち後半３条件は、作成される三角形が極端に偏平な形状にならないことを意味する。三角形が極端に偏平な形状になると、外接円の半径が無限大に近付き、精度のよい度数分布が得られないことになる。上記〔数式２３〕に示した６条件を満たさない場合は、三角形を形成しないか（いずれかの辺が０の場合）、外接円の半径Ｄ（ｋ）が極端に大きくなり、精度のよい度数分布を求めることができないためである。
【０２０４】
上記〔数式２０〕により算出されたＮ／３個の第１ポリゴン間三角形の外接円の半径と、Ｎ／３個の第２ポリゴン間三角形の外接円の半径と、Ｎ／３個の第３ポリゴン間三角形の外接円の半径の３種のＮ／３個の配列Ｄ（ｋ）に対し、第２ポリゴン間三角形のＮ／３個の配列にはＮ／３だけオフセットを加え、第３ポリゴン間三角形のＮ／３個の配列には２Ｎ／３だけオフセットを加えた上で、通し番号ｉでまとめて、その範囲をｉ＝０，・・・，Ｎ−１に設定し直してＮ個のポリゴン間三角形の外接円の半径Ｄ（ｉ）（ｉ＝０，・・・，Ｎ−１）を得る。そして、ｉ＝０，・・・，Ｎ−１のＮ個の外接円の半径Ｄ（ｉ）のうち最大のものを最大外接円半径Ｄｍａｘとする。
【０２０５】
次に、モデル度数分布算出手段１０は、ポリゴン間三角形の内接円の半径の算出を行う（ステップＳ６０７）。具体的には、以下の〔数式２４〕に従った処理を実行することにより、ｋ＝０，・・・，Ｎ／３−１の範囲で第１ポリゴン間三角形の内接円の半径Ａ（ｋ）を算出する。
【０２０６】
〔数式２４〕
Ａ（ｋ）＝２・Ｓ（ｋ）／（Ｄ１２＋Ｄ２３＋Ｄ３１）
【０２０７】
上記〔数式２４〕において、Ｄ１２、Ｄ２３、Ｄ３１およびＳ（ｋ）は、上記〔数式１９〕〔数式２１〕〔数式２２〕に従った処理により算出された第１ポリゴン間三角形、第２ポリゴン間三角形、第３ポリゴン間三角形それぞれの三辺の長さと面積である。なお、〔数式２３〕に示した６条件のうち１つでも満たさなかった三角形については、内接円半径の度数分布の対象としない。
【０２０８】
上記〔数式２４〕により算出されたＮ／３個の第１ポリゴン間三角形の内接円の半径Ａ（ｋ）と、Ｎ／３個の第２ポリゴン間三角形の内接円の半径Ａ（ｋ）と、Ｎ／３個の第３ポリゴン間三角形の内接円の半径Ａ（ｋ）の３種のＮ／３個の配列Ａ（ｋ）に対し、第２ポリゴン間三角形についてのＮ／３個の配列にはＮ／３だけオフセットを加え、第３ポリゴン間三角形についてのＮ／３個の配列には２Ｎ／３だけオフセットを加えた上で、通し番号ｉの範囲をｉ＝０，・・・，Ｎ−１に設定し直してＮ個のポリゴン間三角形の内接円の半径Ａ（ｉ）（ｉ＝０，・・・，Ｎ−１）を得る。そして、ｉ＝０，・・・，Ｎ−１のＮ個の内接円半径Ａ（ｉ）のうち最大のものを最大内接円半径Ａｍａｘとする。
【０２０９】
次に、モデル度数分布算出手段１０は、ポリゴン間三角形の外接円の半径の度数分布である外接円分布を算出する（ステップＳ６０８）。具体的には、以下の〔数式２５〕に従った処理を実行することにより、要素ｍｄの度数Ｈｄ（ｍｄ）を、ｉ＝０，・・・，Ｎ−１について、算出する。
【０２１０】
〔数式２５〕
Ｄｍａｘ・ｍｄ／ＭＤ≦Ｄ（ｉ）＜Ｄｍａｘ・（ｍｄ＋１）／ＭＤならば、
Ｈｄ（ｍｄ）←Ｈｄ（ｍｄ）＋Ｓ
０≦ｉ≦Ｎ／３−１の場合
Ｓ＝[σ（Ｇ１（Ｒ１（ｉ）））＋σ（Ｇ２（Ｒ２（ｉ）））＋σ（Ｇ３（Ｒ３（ｉ）））]／３
Ｎ／３≦ｉ≦２Ｎ／３−１の場合
Ｓ＝[σ（Ｇ２（Ｒ１（ｉ）））＋σ（Ｇ３（Ｒ２（ｉ）））＋σ（Ｇ１（Ｒ３（ｉ）））] ／３
２Ｎ／３≦ｉ≦Ｎ−１の場合
Ｓ＝[σ（Ｇ３（Ｒ１（ｉ）））＋σ（Ｇ１（Ｒ２（ｉ）））＋σ（Ｇ２（Ｒ３（ｉ）））]／３
【０２１１】
上記〔数式２５〕において、σ（ｐ）は、３つのグループに分類されたポリゴンｐの面積である。上記〔数式２５〕は、ポリゴン間三角形の外接円半径Ｄ（ｉ）が、最大外接円半径Ｄｍａｘにｍｄ／ＭＤを乗じた値以上で、（ｍｄ＋１）／ＭＤを乗じた値より小さい場合に、ポリゴン間三角形の頂点をポリゴン平均点として有する３つのポリゴンの平均面積ＳをＨｄ（ｍｄ）に加算することを意味している。すなわち、外接円の半径の最大値Ｄｍａｘの範囲を所定数ｍｄに均等に分割した上で、各外接円の半径Ｄ（ｉ）を外接円の半径Ｄ（ｉ）の値に基づいて所定数ｍｄのいずれかの要素に割り当てている。
【０２１２】
上記〔数式２５〕に従った処理を、Ｎ個のポリゴン間三角形について実行することにより、外接円分布Ｈｄ（ｍｄ）（ｍｄ＝０，・・・，ＭＤ−１）が算出される。各要素には、単なる頻度ではなく、３つのポリゴンの平均面積が加算されているため、外接円分布Ｈｄ（ｍｄ）は、ポリゴンの平均面積が加重された外接円分布を示すことになる。ポリゴンの平均面積でなく単に１を加算するようにすることも可能であるが、その場合、ポリゴンの平均面積が加味されない外接円分布となり、同一のポリゴンモデルに対してポリゴン構成が粗い場合と細かい場合とで、外接円分布に顕著な差が生じてしまう。そこで、本実施形態では、外接円分布算出時にポリゴンの平均面積を加算するようにしている。面積でなく単に１を加算するようにした場合は、ある要素ｍｄに該当する数Ｈｄ（ｍｄ）を計数することにより、外接円分布を算出することになる。
【０２１３】
次に、モデル度数分布算出手段１０は、各ポリゴン間三角形の内接円の半径の度数分布である内接円分布を算出する（ステップＳ６０９）。具体的には、以下の〔数式２６〕に従った処理を実行することにより、要素ｍａの度数Ｈａ（ｍａ）を、ｉ＝０，・・・，Ｎ−１について、算出する。
【０２１４】
〔数式２６〕
Ａｍａｘ・ｍａ／ＭＡ≦Ａ（ｉ）＜Ａｍａｘ・（ｍａ＋１）／ＭＡならば、
Ｈａ（ｍａ）←Ｈａ（ｍａ）＋Ｓ
【０２１５】
上記〔数式２６〕は、ポリゴン間三角形の内接円の半径Ａ（ｉ）が、Ａｍａｘにｍａ／ＭＡを乗じた値以上で、（ｍａ＋１）／ＭＡを乗じた値より小さい場合に、ポリゴン間三角形の頂点を平均点として有する３つのポリゴンの平均面積ＳをＨａ（ｍａ）に加算することを意味している。すなわち、内接円の半径の最大値Ａｍａｘの範囲を所定数ｍａに均等に分割した上で、各内接円の半径Ａ（ｉ）を内接円の半径Ａ（ｉ）の値に基づいて所定数ｍａのいずれかの要素に割り当てている。３つのポリゴンの平均面積Ｓについては、上記〔数式２５〕に従った処理により算出したものを用いる。
【０２１６】
上記〔数式２６〕に従った処理を、Ｎ個のポリゴン間三角形について実行することにより、内接円分布Ｈａ（ｍａ）（ｍａ＝０，・・・，ＭＡ−１）が算出される。各要素には、単なる頻度ではなく、ポリゴンの平均面積が加算されているため、内接円分布Ｈａ（ｍａ）は、ポリゴンの平均面積が加重された内接円分布を示すことになる。ポリゴンの平均面積でなく単に１を加算するようにすることも可能であるが、その場合、ポリゴンの平均面積が加味されない内接円分布となり、同一のポリゴンモデルに対してポリゴン構成が粗い場合と細かい場合とで、内接円分布に顕著な差が生じてしまう。そこで、本実施形態では、内接円分布算出時にポリゴンの平均面積を加算するようにしている。面積でなく単に１を加算するようにした場合は、ある要素ｍａに該当する数Ｈａ（ｍａ）を計数することにより、内接円分布を算出することになる。
【０２１７】
外接円分布および内接円分布が算出されたら、次に、ループカウンタＬＣが規定値以上であるかどうかを判定する（ステップＳ６１０）。判定の結果、ループカウンタＬＣが規定値未満である場合は、２つのグループの配列を１だけずらす処理を行う（ステップＳ６１１）。例えば、第１グループの順序を固定する場合、本実施形態では、以下の〔数式２７〕に従った処理を実行することにより、第２ポリゴングループ、第３ポリゴングループの２つのグループに用いる乱数配列Ｒ２（ｋ）、乱数配列Ｒ３（ｋ）の順序をずらしている。
【０２１８】
〔数式２７〕
Ｒｏ＝Ｒ２（０）、Ｒｏ３＝Ｒ３（０）とし、
ｋ＝０，・・・，Ｎ／３−２に対して、
Ｒ２（ｋ）←Ｒ２（ｋ＋１）、Ｒ３（ｋ）←Ｒ３（ｋ＋１）を繰り返し、
Ｒ２（Ｎ／３−１）＝Ｒｏ、Ｒ３（Ｎ／３−１）＝Ｒｏ３とする。
【０２１９】
第２ポリゴングループの順序を固定する場合、第３ポリゴングループの順序を固定する場合については、グループの関係を変えて、〔数式２７〕に従った処理を実行することにより行われる。併せて、ループカウンタＬＣをインクリメント（ＬＣ←ＬＣ＋１）する処理も行う。既に算出された度数分布が存在する場合は、その度数分布の各要素について、各要素に該当する度数の値を加算する。ステップＳ６１１において、２つのグループの配列をずらした後、２つのグループともう１つのグループのポリゴンの組み合わせを１回目とは変えて、ステップＳ６０５〜ステップＳ６０９の処理を実行し、外接円分布および内接円分布を算出する。ステップＳ６０５〜ステップＳ６０９の外接円分布および内接円分布の算出処理は、規定値として設定された所定の回数だけ繰り返される。規定値としては、適宜設定することが可能であるが、ポリゴン総数Ｎ＝１００００の場合、１０程度である。
【０２２０】
すなわち、外接円分布および内接円分布を１回算出するごとに、３つのグループのうち２つのグループ内のポリゴンの順序を変化させて、外接円分布および内接円分布を改めて算出する処理を繰り返し行うことになる。ループカウンタＬＣが規定値に達した場合、ステップＳ６１０において、ループカウンタＬＣが規定値以上であると判定されるため、２種の度数分布の正規化を行う（ステップＳ６１２）。
【０２２１】
具体的には、上記〔数式２５〕で算出されたＨｄ（ｍｄ）に、更に１００／｛Ｓｓｕｍ・ＬＣ｝を乗じてＨｄ（ｍｄ）と置き換えることにより、単位を面積率［％］に正規化している。すなわち、ポリゴンの面積の総和値Ｓｓｕｍとループ回数ＬＣの乗算値により、各要素の値Ｈｄ（ｍｄ）を除算している。これにより、ポリゴンの面積の総和値が異なる、即ちスケールが異なるポリゴンモデルであっても同一スケールの外接円分布に変換され、同一スケール基準のポリゴンモデルとして判定が可能になる。また、ループ回数ＬＣで除算していることになるため、ループ回数分の平均値が得られることになる。
【０２２２】
また、上記〔数式２６〕で算出されたＨａ（ｍａ）に、更に１００／｛Ｓｓｕｍ・ＬＣ｝を乗じてＨａ（ｍａ）と置き換えることにより、単位を面積率［％］に正規化している。すなわち、ポリゴンの面積の総和値Ｓｓｕｍとループ回数ＬＣの乗算値により、各要素の値Ｈａ（ｍａ）を除算している。これにより、ポリゴンの面積の総和値が異なる、即ちスケールが異なるポリゴンモデルであっても同一スケールの内接円分布に変換され、同一スケール基準のポリゴンモデルとして判定が可能になる。また、ループ回数ＬＣで除算していることになるため、ループ回数分の平均値が得られることになる。
【０２２３】
本実施形態では、ポリゴン間三角形の外接円の半径と、ポリゴン間三角形の内接円の半径の算出に際し、各ポリゴンの平均点を３つの頂点とするポリゴン間三角形を作成するようにした。ポリゴン間三角形の頂点は、ポリゴンの各頂点の平均点とすることが好ましいが、平均点以外のポリゴン上の所定の点同士を結んだポリゴン間三角形とすることも可能である。ポリゴン上の所定の点としては、例えば、ポリゴンを構成するいずれかの頂点、ポリゴンの重心点、ポリゴンの頂点のｘｙｚ座標別の最大値と最小値の丁度中間となる値をもつ点、等を用いることができる。
【０２２４】
＜２．５．２．第２の手法＞
次に、第２の手法について説明する。図１４は、第２の手法による度数分布の算出処理の詳細を示すフローチャートである。第１の手法と同様の処理については、同一符号を付して説明を省略する。第２の手法においても、ステップＳ６０１〜ステップＳ６０９までは、第１の手法と同様に行われる。そして、第１の手法のステップＳ６１２と同様に、２種の度数分布の正規化を行う（ステップＳ６１２）。第２の手法では、２種の度数分布の算出後、強制的に正規化を行う。具体的には、上記〔数式２５〕で算出されたＨｄ（ｍｄ）に、更に１００／Ｓｓｕｍを乗じてＨｄ（ｍｄ）と置き換えることにより、単位を面積率［％］に正規化している。また、上記〔数式２６〕で算出されたＨａ（ｍａ）に、更に１００／Ｓｓｕｍを乗じてＨａ（ｍａ）と置き換えることにより、単位を面積率［％］に正規化している。第１の手法とは異なり、ループカウンタＬＣによる除算は行わない。
【０２２５】
外接円分布および内接円分布の正規化が行われたら、次に、ループカウンタＬＣが１以上であるかどうかを判定する（ステップＳ６２１）。これは、度数分布の算出が初回であるか否かの判定を行っている。ループカウンタＬＣが１未満である場合は、度数分布の算出が初回であることを意味するので、２つのグループの配列を１だけずらす処理を行う（ステップＳ６１１）。具体的には、第１の手法のステップＳ６１１と同様に、上記〔数式２７〕に従った処理を実行することにより、配列Ｒ１（ｋ）、配列Ｒ２（ｋ）、Ｒ３（ｋ）のうち２つの配列の順序をずらしている。
【０２２６】
ステップＳ６１１において、２つのグループの配列をずらした後、２つのグループともう１つのグループのポリゴンの組み合わせを１回目とは変えて、ステップＳ６０５〜ステップＳ６０９、Ｓ６１２、Ｓ６２１の処理を実行し、外接円分布および内接円分布の正規化を行う。すなわち、外接円分布および内接円分布を１回算出するごとに、３つのグループのうち２つのグループ内のポリゴンの順序を変化させて、外接円分布および内接円分布を改めて算出する処理を繰り返し行う。２回目以降では、ステップＳ６２１において、ループカウンタＬＣが１以上と判定されるため、直前の外接円分布および内接円分布との比較を行う（ステップＳ６２２）。まず、以下の〔数式２８〕に従った処理を実行することにより、算出された外接円分布と直前の外接円分布のユークリッド距離ＤＤ２を算出する。ユークリッド距離とは、各要素の度数同士の差分の絶対値を２乗した値で与えられるユークリッド空間上の距離である。ユークリッド距離ＤＤ２は、ＭＤ次元ユークリッド空間内の２点の距離として求められる。
【０２２７】
〔数式２８〕
ＤＤ２＝Σmd=0,MD-1［｛Ｈｄ（ｍｄ）−Ｈｄｐ（ｍｄ）｝2／ＭＤ］1/2
【０２２８】
上記〔数式２８〕において、Σの添え字の“ｍｄ＝０，ＭＤ−１”は、ｍｄが０からＭＤ−１の全ての整数をとる場合について、後続の［・・・］1/2の総和を求めることを示している。また、Ｈｄｐ（ｍｄ）は、直前の外接円分布を示している。
【０２２９】
続いて、以下の〔数式２９〕に従った処理を実行することにより、算出された内接円分布と直前の内接円分布のユークリッド距離ＤＡ２を算出する。ユークリッド距離ＤＡ２は、ＭＡ次元ユークリッド空間内の２点の距離として求められる。
【０２３０】
〔数式２９〕
ＤＡ２＝Σma=0,MA-1［｛Ｈａ（ｍａ）−Ｈａｐ（ｍａ）｝2／ＭＡ］1/2
【０２３１】
上記〔数式２９〕において、Σの添え字の“ｍａ＝０，ＭＡ−１”は、ｍａが０からＭＡ−１の全ての整数をとる場合について、後続の［・・・］1/2の総和を求めることを示している。また、Ｈａｐ（ｍａ）は、直前の外接円分布を示している。
【０２３２】
次に、モデル度数分布算出手段１０は、ステップＳ６２２において算出された外接円分布、内接円分布のユークリッド距離と、それぞれの判定しきい値との比較を行う（ステップＳ６２３）。具体的には、ユークリッド距離ＤＤ２、ＤＡ２が判定しきい値よりともに小さい場合は、飽和状態と判定し、ユークリッド距離ＤＤ２、ＤＡ２のいずれか一方が判定しきい値以上である場合は、生成途上と判定する。判定しきい値としては、任意に設定可能であるが、ここでは、０．０５としてある。
【０２３３】
ステップＳ６２３において飽和状態と判定された場合、すなわち両者に類似性が認められる場合には、モデル度数分布算出手段１０は、最後に算出された外接円分布および内接円分布を、正式に２種の度数分布とすることを決定する（ステップＳ６２４）。すなわち、算出直後の外接円分布および内接円分布と、その直前に得られた外接円分布および内接円分布を比較し、比較の結果で類似性が認められる場合に、算出直後の外接円分布および内接円分布を、照合対象の外接円分布および内接円分布とする。
【０２３４】
ステップＳ６２３において生成途上と判定された場合には、２つのグループの配列を１だけずらす処理を行った後（ステップＳ６１１）、ステップＳ６０５〜ステップＳ６０９、Ｓ６１２、Ｓ６２１、Ｓ６２２の処理を繰り返し実行する。
【０２３５】
対象モデル（３Ｄポリゴンモデル）から得られた外接円分布と内接円分布における外接円と内接円を図１５に示す。図１５は、ポリゴンが三角形状の場合のポリゴンモデルを示している。ポリゴンモデル上から選択された３つのポリゴンについて、それぞれのポリゴンの頂点の平均座標をもつ平均点を結ぶことによりポリゴン間三角形が作成される。そして、ポリゴン間三角形の外接円と内接円を求める。図１５（ａ）は、ポリゴン間三角形とその外接円と半径の関係を示し、図１５（ｂ）は、ポリゴン間三角形とその内接円と半径の関係を示している。図１５（ａ）（ｂ）において、下向きの矢印は、それぞれ外接円の半径、内接円の半径を示している。
【０２３６】
＜２．６．度数分布の照合処理＞
次に、ステップＳ２００の度数分布の照合処理について説明する。図１６は、度数分布の照合処理を示すフローチャートである。まず、度数分布照合手段２０は、度数分布データベース４０に記憶されているＲＥ個のレコードの中からレコードｒｅ（ｒｅ＝０，・・・，ＲＥ−１）に登録されている度数分布を抽出する（ステップＳ７１０）。度数分布として、外接円分布Ｈｄｏ（ｒｅ，ｍｄ）（ｍｄ＝０，・・・，ＭＤ−１）、内接円分布Ｈａｏ（ｒｅ，ｍａ）（ｍａ＝０，・・・，ＭＡ−１）を抽出する。
【０２３７】
次に、度数分布照合手段２０は、対象モデルから算出された外接円分布と、度数分布データベース４０から抽出された規制画像の外接円分布同士で各要素間の相関係数を算出する（ステップＳ７２０）。相関係数とは、二つの配列要素の関連性の強弱を示す指標である。ここでは、対象モデルと規制画像（または規制モデル）の類似性の強弱を判定するために用いる。まず、以下の〔数式３０〕に従った処理を実行することにより、対象モデルから算出された外接円分布Ｈｄ（ｍｄ）の平均値Ａｄ、度数分布データベース４０から抽出された規制画像の外接円分布Ｈｄｏ（ｒｅ，ｍｄ）の平均値Ａｄｏ（ｒｅ）を算出する。
【０２３８】
〔数式３０〕
Ａｄ＝Σmd=0,MD-1Ｈｄ（ｍｄ）／ＭＤ
Ａｄｏ（ｒｅ）＝Σmd=0,MD-1Ｈｄｏ（ｒｅ，ｍｄ）／ＭＤ
【０２３９】
続いて、以下の〔数式３１〕に従った処理を実行することにより、対象モデルから算出された外接円分布Ｈｄ（ｍｄ）の標準偏差Ｓｄ、度数分布データベース４０から抽出された規制画像の外接円分布Ｈｄｏ（ｒｅ，ｍｄ）の標準偏差Ｓｄｏ（ｒｅ）を算出する。
【０２４０】
〔数式３１〕
Ｓｄ＝[Σmd=0,MD-1（Ｈｄ（ｍｄ）−Ａｄ）2]1/2
Ｓｄｏ（ｒｅ）＝[Σmd=0,MD-1（Ｈｄｏ（ｒｅ，ｍｄ）−Ａｄｏ（ｒｅ））2]1/2
【０２４１】
厳密には、標準偏差は、上記〔数式３１〕の｛｝内において、さらに定数ＭＤで除算しておく必要がある。しかし、ここでは、相関係数を算出することが目的であるため、後述の〔数式３２〕における分子の共分散を算出する項においても定数ＭＤで除算する必要があり、分子と分母で重複して定数ＭＤで除算する演算がキャンセルされる（分母は定数ＭＤの平方根で２回除算）。
【０２４２】
次に、算出された平均値および標準偏差を用いて、以下の〔数式３２〕に従った処理を実行することにより、対象モデルの外接円分布とレコードｒｅに対応する規制画像の外接円分布の相関係数Ｄｄ（ｒｅ）を算出する。
【０２４３】
〔数式３２〕
Ｄｄ（ｒｅ）＝[Σmd=0,MD-1（Ｈｄ（ｍｄ）−Ａｄ）・（Ｈｄｏ（ｒｅ，ｍｄ）−Ａｄｏ（ｒｅ））]／（Ｓｄｏ（ｒｅ）・Ｓｄ）
【０２４４】
上記〔数式３２〕において、Σの添え字の“ｍｄ＝０，ＭＤ−１”は、ｍｄが０からＭＤ−１の全ての整数をとる場合について、総和を求めることを示している。相関係数Ｄｄ（ｒｅ）は、度数分布Ｈｄ（ｍｄ）、Ｈｄｏ（ｒｅ，ｍｄ）の共分散を、それぞれの標準偏差で除したものとなっている。上記〔数式３２〕の演算のように、分母の平方根の割算を２回行うのは一般に処理負荷が高い。このため、画像処理の分野においては、分子の積和演算だけで済ますものを「相関係数」と呼び、上記〔数式３２〕に示したＤｄ（ｒｅ）を「正規化相関係数」と呼ぶ習慣もある。
【０２４５】
次に、度数分布照合手段２０は、ステップＳ７２０において算出された外接円分布の相関係数Ｄｄ（ｒｅ）と、判定しきい値との比較を行う（ステップＳ７３０）。相関係数Ｄｄ（ｒｅ）が判定しきい値以上である場合は、適合と判定し、相関係数Ｄｄ（ｒｅ）が判定しきい値より小さい場合は、不適合と判定する。判定しきい値としては、正の値であれば任意に設定可能であるが、ここでは、＋５．０（−１から＋１の範囲をとる相関係数値を１００倍して％次元で表現した場合）としてある。
【０２４６】
ステップＳ７３０において適合と判定された場合には、度数分布照合手段２０は、対象モデルから算出された内接円分布と、度数分布データベース４０から抽出された規制画像の内接円分布同士で、各要素間の相関係数を算出する（ステップＳ７４０）。まず、以下の〔数式３３〕に従った処理を実行することにより、対象モデルから算出された内接円分布Ｈａ（ｍａ）の平均値Ａａ、度数分布データベース４０から抽出された規制画像の内接円分布Ｈａｏ（ｒｅ，ｍａ）の平均値Ａａｏ（ｒｅ）を算出する。
【０２４７】
〔数式３３〕
Ａａ＝Σma=0,MA-1Ｈａ（ｍａ）／ＭＡ
Ａａｏ（ｒｅ）＝Σma=0,MA-1Ｈａｏ（ｒｅ，ｍａ）／ＭＡ
【０２４８】
続いて、以下の〔数式３４〕に従った処理を実行することにより、対象モデルから算出された内接円分布Ｈａ（ｍａ）の標準偏差Ｓａ、度数分布データベース４０から抽出された規制画像の内接円分布Ｈａｏ（ｒｅ，ｍａ）の標準偏差Ｓａｏ（ｒｅ）を算出する。
【０２４９】
〔数式３４〕
Ｓａ＝[Σma=0,MA-1（Ｈａ（ｍａ）−Ａａ）2]1/2
Ｓａｏ（ｒｅ）＝[Σma=0,MA-1（Ｈａｏ（ｒｅ，ｍａ）−Ａａｏ（ｒｅ））2]1/2
【０２５０】
厳密には、標準偏差は、上記〔数式３４〕の｛｝内において、さらに定数ＭＡで除算しておく必要がある。しかし、ここでは、相関係数を算出することが目的であるため、後述の〔数式３５〕における分子の共分散を算出する項においても定数ＭＡで除算する必要があり、分子と分母で重複して定数ＭＡで除算する演算がキャンセルされる（分母は定数ＭＡの平方根で２回除算）。
【０２５１】
次に、算出された平均値および標準偏差を用いて、以下の〔数式３５〕に従った処理を実行することにより、対象モデルの内接円分布とレコードｒｅに対応する規制画像の内接円分布の相関係数Ｄａ（ｒｅ）を算出する。
【０２５２】
〔数式３５〕
Ｄａ（ｒｅ）＝[Σma=0,MA-1（Ｈａ（ｍａ）−Ａａ）・（Ｈａｏ（ｒｅ，ｍａ）−Ａａｏ（ｒｅ））]／（Ｓａｏ（ｒｅ）・Ｓａ）
【０２５３】
上記〔数式３５〕において、Σの添え字の“ｍａ＝０，ＭＡ−１”は、ｍａが０からＭＡ−１の全ての整数をとる場合について、総和を求めることを示している。相関係数Ｄａ（ｒｅ）は、度数分布Ｈａ（ｍａ）、Ｈａｏ（ｒｅ，ｍａ）の共分散を、それぞれの標準偏差で除したものとなっている。上記〔数式３５〕の演算のように、分母の平方根の割算を２回行うのは一般に処理負荷が高い。このため、画像処理の分野においては、分子の積和演算だけで済ますものを「相関係数」と呼び、上記〔数式３５〕に示したＤａ（ｒｅ）を「正規化相関係数」と呼ぶ習慣もある。
【０２５４】
次に、度数分布照合手段２０は、ステップＳ７４０において算出された内接円分布の相関係数Ｄａ（ｒｅ）と、判定しきい値との比較を行う（ステップＳ７５０）。相関係数Ｄａ（ｒｅ）が判定しきい値以上である場合は、適合と判定し、相関係数Ｄａ（ｒｅ）が判定しきい値より小さい場合は、不適合と判定する。判定しきい値としては、正の値であれば任意に設定可能であるが、ここでは、＋５．０（−１から＋１の範囲をとる相関係数値を１００倍して％次元で表現した場合）としてある。ステップＳ７５０において適合と判定された場合には、度数分布照合手段２０は、対象モデルとレコードｒｅの規制画像が適合することになるため、出力を規制すべきである（出力不適）との判定を行う。
【０２５５】
ステップＳ７３０、Ｓ７５０のいずれかにおいて不適合と判定された場合には、度数分布照合手段２０は、対象モデルとレコードｒｅの規制画像の照合を終え、次のレコードｒｅ＋１の規制画像との照合に移行する。図１６のフローチャートに従った処理を、度数分布データベース４０内の全レコードに対して実行し、適合となる規制画像が１つでも存在したら、対象モデルを“出力を規制すべきである（出力不適）”としてステップＳ２００の照合処理を終了することになる。
【０２５６】
＜３．第２の実施形態＞
次に、第２の実施形態について説明する。上記第１の実施形態では、画像度数分布算出装置により事前に規制画像の度数分布を作成しておき、立体物造形用データ出力規制装置の度数分布データベースに登録しておくようにした。第２の実施形態では、規制画像そのものを規制画像データベースに登録しておき、規制画像からリアルタイムにその場で上記２種の度数分布を作成し、照合まで行う。
【０２５７】
＜３．１．装置構成＞
図１７は、本発明第２の実施形態に係る立体物造形用データ出力規制装置の構成を示す機能ブロック図である。図１７において、１０はモデル度数分布算出手段、２０は度数分布照合手段、３０は対象モデル記憶手段、４１は規制画像データベース、９２は画像度数分布算出手段である。図１７において、図３、図１１と同等の機能を有するものについては、同一符号を付して詳細な説明を省略する。
【０２５８】
モデル度数分布算出手段１０は、図１１に示したものと同様、対象モデル内のポリゴンにより形成されたポリゴン間三角形の外接円の半径と内接円の半径を算出し、算出結果である外接円の半径の度数分布である外接円分布と、内接円の半径の度数分布である内接円分布を算出する処理を行う。画像度数分布算出手段９２は、図３に示したものと同様、規制画像内のエッジ点により形成されたエッジ点間三角形の外接円の半径と内接円の半径を算出し、算出結果である外接円の半径の度数分布である外接円分布と、内接円の半径の度数分布である内接円分布を算出する処理を行う。度数分布照合手段２０は、図１１に示したものと同様、対象モデルについて算出された外接円分布、内接円分布と、規制画像について算出された外接円分布、内接円分布をそれぞれ照合し、出力を規制すべきか否か、すなわち出力不適であるか出力適正であるかを判定する。
【０２５９】
モデル度数分布算出手段１０、画像度数分布算出手段９２、度数分布照合手段２０は、図１０に示したＣＰＵ１が、記憶装置３に記憶されているプログラムを実行することにより実現される。対象モデル記憶手段３０は、図１１に示したものと同様、対象モデルを記憶した記憶手段であり、記憶装置３により実現される。規制画像データベース４１は、規制画像を記憶した記憶手段であり、記憶装置３により実現される。
【０２６０】
図１７に示した各構成手段は、現実には図１０に示したように、コンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。すなわち、コンピュータが、専用のプログラムに従って各手段の内容を実行することになる。図１０に示した記憶装置３には、ＣＰＵ１を動作させ、コンピュータを、立体物造形用データ出力規制装置として機能させるための専用のプログラムが実装されている。この専用のプログラムを実行することにより、ＣＰＵ１は、モデル度数分布算出手段１０、画像度数分布算出手段９２、度数分布照合手段２０としての機能を実現することになる。また、記憶装置３は、対象モデル記憶手段３０、規制画像データベース４１として機能するだけでなく、立体物造形用データ出力規制装置としての処理に必要な様々なデータを記憶する。
【０２６１】
＜３．２．処理動作＞
次に、図１７に示した立体物造形用データ出力規制装置の処理動作について説明する。図１８は、図１７に示した立体物造形用データ出力規制装置の処理概要を示すフローチャートである。まず、モデル度数分布算出手段１０が、対象モデルについて、２種の度数分布である外接円分布および内接円分布を算出する（ステップＳ１００）。次に、画像度数分布算出手段９２が、規制画像について、２種の度数分布である外接円分布および内接円分布を算出する（ステップＳ３００）。そして、算出された対象モデルの度数分布と、規制画像の度数分布との照合を行う（ステップＳ２００）。ステップＳ３００の画像度数分布の算出処理、ステップＳ２００の度数分布の照合処理は、照合処理において、出力すべきでない（出力不適）と判定された場合か、全ての規制画像との照合において不適合となって、出力適正と判定された場合に終了する。ステップＳ１００、ステップＳ２００における処理は、図１２に示したものと同様であるので詳細な説明は省略する。また、ステップＳ３００における処理は、図４、図７、図８に示した画像度数分布の算出処理と同様であるので詳細な説明は省略する。
【０２６２】
＜４．３Ｄプリンタへのデータ出力＞
上記ステップＳ２００において、度数分布照合手段２０により“出力を規制すべきでない（出力適正）”と判定された場合には、立体物造形装置である３Ｄプリンタ７へ対象モデルを出力する。すなわち、立体物造形用データ出力規制装置で出力が許可されたポリゴンモデルである対象モデルを、立体物を造形する立体物造形装置に出力する。一方、度数分布照合手段２０により“出力を規制すべきである（出力不適）”と判定された場合には、立体物造形装置である３Ｄプリンタ７へ対象モデルを出力しない。また、出力適正か出力不適かの判定に時間がかかる場合には、３Ｄプリンタ７に対象モデルを出力し、３Ｄプリンタ７の出力処理(立体物造形処理)と並行して出力適正か出力不適かの判定を行い、出力不適である場合に出力中止命令を３Ｄプリンタ７に出力するようにしてもよい。この際、利用者から見れば、対象モデルの出力という一つの命令を行うことにより、３Ｄプリンタにおける立体物造形処理が開始されることが確認できるだけで、並行して出力適正か出力不適かの判定のための処理の実行が開始されることは気付かない。
【０２６３】
＜５．対象モデル分離処理＞
図１３、図１４に示したモデル度数分布の算出処理に先立ち、対象モデルの分離を行う対象モデル分離処理を行うようにしてもよい。事前に対象モデルの分離を行っておくことにより、規制画像または規制モデルと、対象モデルがそれぞれ複数の部品で構成され、互いに部品構成が異なる場合であっても、適切に出力が適正か否かの判断を行うことが可能となる。以下に、モデル度数分布の算出処理に先立つ対象モデル分離処理について説明する。対象モデル分離処理は、図２に示したＣＰＵ１が記憶装置３に記憶されたプログラムを実行することにより実現される対象モデル分離手段により行われる。
【０２６４】
＜５．１．分離処理の概要＞
対象モデル分離手段は、対象モデルを複数の部分対象モデルに分離する対象モデル分離処理を行う。より詳細には、対象モデル分離手段は、あるポリゴンと、そのポリゴンと辺を共有する３つの隣接ポリゴンが、同一の部分対象モデルに属するように分離する。図１９は、対象モデル分離手段による対象モデル分離処理の詳細を示すフローチャートである。まず、対象モデル分離手段は、対象モデル記憶手段３０から、分離前のポリゴンモデルを読み込み、ポリゴンモデルの構造化を行う（ステップＳ１０）。次に、対象モデル分離手段は、ポリゴン稜線の構造化を行う（ステップＳ２０）。次に、対象モデル分離手段は、隣接ポリゴンテーブルの作成を行う（ステップＳ３０）。そして、対象モデル分離手段は、隣接ポリゴンテーブルが作成されたポリゴンモデルを、複数のグループに分離する（ステップＳ４０）。なお、＜５．対象モデル分離処理＞においても「グループ」やポリゴンを特定する「ポリゴンＩＤ」の用語が出現する。しかし、これらは、＜５．対象モデル分離処理＞内でのみ用いられるものであり、＜５．対象モデル分離処理＞以外で出現する３つのグループや、ポリゴンを特定する「変数ｉ」とは無関係である。
【０２６５】
まず、処理対象とするポリゴンモデルである対象モデルは、空間における三次元の値をもち、数万個単位のポリゴンからなることもあるが、本実施形態では、説明の便宜上、二次元空間に投影したポリゴン群を用いる。図２０は、処理対象とするポリゴン群の一例を示す図である。図２０の例では、１８個の三角形のポリゴンからなるポリゴン群を示している。図２０において、大文字のアルファベットＡ〜Ｎは特定のポリゴンに属する形式でなく、複数のポリゴンで共有される共有頂点を識別するために示している。大文字のアルファベットＡ〜Ｎは、ポリゴン群全体において共有頂点を識別するために、便宜上付されたものであり、後述する頂点座標配列データや、頂点構成テーブル、先頭頂点テーブル、頂点座標テーブル、稜線構成テーブル、先頭稜線テーブル、稜線テーブル、稜線ＩＤ別ポリゴンテーブル、隣接ポリゴンテーブルには記録されていない（一部記載されているものは、理解を容易にするために便宜上用いられている。）。
【０２６６】
図２１は、図２０に示したポリゴン群を実現するための頂点座標配列データを示す図である。頂点座標配列データは、ポリゴンモデルを規定するデータであり、ポリゴンの集合体であるポリゴンモデルを配列構造で定義している。すなわち、図２１は、ＳＴＬデータより法線ベクトルの情報を削除した構造を示している。図２１に示すように、頂点座標配列データは、ポリゴンを識別するポリゴン識別情報であるポリゴンＩＤＰ１〜Ｐ１８に対応付けて、ポリゴンを構成する第１頂点、第２頂点、第３頂点の３つの頂点順に各座標値が記録されている。
【０２６７】
また、図２０、図２１には、各ポリゴンおよび各ポリゴンを構成する３つの頂点を各ポリゴンＩＤＰ１〜Ｐ１８と頂点順に対応付けて表現されたポリゴン別頂点ＩＤ“Ｖ１ａ”〜“Ｖ１８ｃ”が記載されている。ポリゴン別頂点ＩＤ“Ｖ１ａ”〜“Ｖ１８ｃ”は、説明の便宜上設けたものであり、頂点座標配列データ、先頭頂点テーブル、頂点構成テーブル、頂点座標テーブル、稜線構成テーブル、先頭稜線テーブル、稜線テーブル、稜線ＩＤ別ポリゴンテーブル、隣接ポリゴンテーブルには記録されていない。
【０２６８】
ポリゴン別頂点ＩＤは、その頂点が属するポリゴンのポリゴンＩＤと当該ポリゴンにおける頂点順が特定される形式で頂点を表現したものである。具体的には、図２０に示すように、頂点を示すＶの後に、対応するポリゴンＩＤに含まれる数字、そして第１頂点、第２頂点、第３頂点の頂点順を示すａ、ｂ、ｃのいずれかの小文字のアルファベットで表現する。例えば、図２１の１行目に示すように、ポリゴンＩＤ“Ｐ１”のポリゴン（ポリゴンＰ１）の第１頂点は、“Ｖ１ａ”と表現される。頂点順“Ｖ１ａ”に数字“１”が入っているため、ポリゴンＰ１の頂点であることが明確になっている。このポリゴン別頂点ＩＤは、実際にはシリアル番号で表現され、そのシリアル番号に従って各頂点の座標値が頂点座標配列データに記録されているが、図２０との対応関係、頂点がどのポリゴンに所属するかを明らかにするため、便宜上ポリゴン別頂点ＩＤに記号を付加して図面に掲載したものである。また、図２１の頂点座標配列データにおいて、各頂点の座標は、図２０で示した共有頂点Ａ〜Ｎのいずれかに対応するため、各頂点の座標値が対応する共有頂点Ａ〜Ｎを識別するアルファベットの小文字を添えて表現している。例えば、図２１の１行目に示すように、ポリゴンＰ１の第１頂点Ｖ１ａの座標値は、図２０において“Ｄ”と表示されているので、“（Ｘｄ，Ｙｄ，Ｚｄ）”と表現される。各ポリゴンごとに、構成される３つの頂点に対応付けて３つの頂点の座標値が記録されている。
【０２６９】
上記のような規則に従って作成されるため、頂点座標配列データにおいては、同一座標の頂点が複数箇所に重複して記録されることになる。例えば、図２０に示した頂点Ｄは、６つのポリゴンＰ１，Ｐ２，Ｐ４，Ｐ５，Ｐ６，Ｐ７に共有されるため、座標値“（Ｘｄ，Ｙｄ，Ｚｄ）”は、頂点Ｖ１ａ，Ｖ２ａ，Ｖ４ｂ，Ｖ５ｃ，Ｖ６ｃ，Ｖ７ｃとして６箇所に記録される。
【０２７０】
＜５．２．ポリゴンモデルの構造化＞
ステップＳ１０のポリゴンモデルの構造化について説明する。ポリゴンモデルの構造化とは、ポリゴンモデルを実現するデータである頂点座標配列データを、頂点構成テーブルおよび頂点座標テーブルで構成される構造に変換することにより、ポリゴンモデルにおける頂点関係（トポロジー・位相情報）が座標値（数値データ）から分離され、あるポリゴンの頂点の修正により影響を受ける周辺のポリゴンの頂点の探索が容易になり、編集し易い構造に組み替えることを意味する。
【０２７１】
図２２は、ステップＳ１０のポリゴンモデルの構造化の詳細を示すフローチャートである。ステップＳ１０のポリゴンモデルの構造化は、対象モデル分離手段により行われる。まず、頂点構成テーブル、頂点座標テーブル、頂点ＩＤの初期化を行う（Ｓ１０１）。頂点構成テーブルは、各ポリゴンに含まれる各頂点を、同一座標の共有頂点を同一値とする頂点ＩＤで表現し、ポリゴンを構成する各頂点を共有頂点の頂点ＩＤで表現して当該ポリゴンのポリゴンＩＤと頂点順とで対応付けて記録したテーブルである。頂点ＩＤは、共有頂点を識別するための頂点識別情報であり、共有頂点を一意に特定することができれば、どのようなものを用いてもよいが、演算処理の効率化のため、本実施形態では、０から始まるシリアルな整数値を用いている。頂点座標テーブルは、頂点構成テーブルに記録された頂点ＩＤと座標値を対応付けて記録したテーブルである。頂点構成テーブル、頂点座標テーブルの初期化は、各項目が記録されていない状態にすることを意味する。また、頂点ＩＤの初期化として現在の頂点ＩＤ＝０に設定する。さらに、ハッシュ値とリンク先頂点ＩＤを対応付けた先頭頂点テーブルも初期化する。先頭頂点テーブルの初期化は、リンク先頂点ＩＤを全て“−１”に設定することにより行われる。頂点座標テーブルと先頭頂点テーブルの２つのテーブルによりハッシュ値別頂点座標テーブルを実現する。
【０２７２】
次に、頂点座標配列データより頂点座標値を抽出するにあたり、ポリゴンＩＤを“Ｐ１”に、頂点順を“０”に初期化する（Ｓ１０１）。そして、頂点座標配列データより現在のポリゴンＩＤと頂点順に対応する１つの頂点座標値を抽出する（Ｓ１０２）。例えば、図２１に示した頂点座標配列データからは、ポリゴンＩＤ“Ｐ１”と第１頂点の頂点座標値（Ｘｄ，Ｙｄ，Ｚｄ）が抽出される。
【０２７３】
続いて、抽出された頂点座標値（Ｘｄ，Ｙｄ，Ｚｄ）よりハッシュ値を算出する（Ｓ１０３）。具体的には、まず、ポリゴンモデル内の全てのポリゴンの３次元座標値ｘ，ｙ，ｚの最大値Ｘｍａｘ，Ｙｍａｘ，Ｚｍａｘ、最小値Ｘｍｉｎ，Ｙｍｉｎ，Ｚｍｉｎを求める。これは、図２１に示したような頂点座標配列データの座標ごとの最大値、最小値を求めることになる。そして、座標値ｘ，ｙ，ｚの値を均等なＴ段階に分類し、整数値ｈｘ，ｈｙ，ｈｚ（０≦ｈｘ，ｈｙ，ｈｚ≦Ｔ−１）に変換する。整数Ｔとしては、例えばＴ＝３２を設定することができる。具体的には、以下の〔数式３６〕に従った処理を実行することにより、ｈｘ，ｈｙ，ｈｚを算出する。ただし、〔数式３６〕に従った処理の後、小数点以下を切り捨てた値を、整数値ｈｘ，ｈｙ，ｈｚとして得るものとする。
【０２７４】
〔数式３６〕
ｈｘ＝（ｘ−Ｘｍｉｎ）・Ｔ／（Ｘｍａｘ−Ｘｍｉｎ）
ｈｙ＝（ｙ−Ｙｍｉｎ）・Ｔ／（Ｙｍａｘ−Ｙｍｉｎ）
ｈｚ＝（ｚ−Ｚｍｉｎ）・Ｔ／（Ｚｍａｘ−Ｚｍｉｎ）
【０２７５】
そして、以下の〔数式３７〕に従った処理を実行することにより、ハッシュ値ｈを算出する。
【０２７６】
〔数式３７〕
ｈ＝ｈｘ＋ｈｙ・Ｔ＋ｈｚ・Ｔ2（０≦ｈ≦Ｔ3−１）
【０２７７】
次に、算出されたハッシュ値を用いて先頭頂点テーブルを参照する（Ｓ１０４）。そして、そのハッシュ値に対応するリンク先頂点ＩＤが先頭頂点テーブルに登録されているか否かを判定する（Ｓ１０５）。ハッシュ値に対応するリンク先頂点ＩＤ（図中“リンク頂点ＩＤ”と表示）が“−１”、すなわち初期状態である場合は、そのハッシュ値に対応するリンク先頂点ＩＤが未登録、すなわち既登録でないことを意味する。
【０２７８】
この場合、先頭頂点テーブルに頂点ＩＤの記録を行う（Ｓ１０６）。具体的には、先頭頂点テーブルのハッシュ値に対応するリンク先頂点ＩＤに、現在の頂点ＩＤ（初期状態では“０”）を書き込む。続いて、頂点座標テーブルの現在の頂点ＩＤの位置にステップＳ１０２で抽出した座標値を書き込む（Ｓ１０７）。この時、頂点座標テーブルにもリンク先頂点ＩＤを書き込む欄があるが、初期状態の“−１”のままにする。また、頂点構成テーブルにステップＳ１０２で抽出したポリゴンＩＤと頂点順の位置に対応付けて、現在の頂点ＩＤを書き込む。ここでは、新規な頂点ＩＤとして記録されることになる。そして、現在の頂点ＩＤをインクリメントする。
【０２７９】
一方、ステップＳ１０５において、ハッシュ値に対応するリンク先頂点ＩＤが“−１”でない場合は、そのハッシュ値に対応するリンク先頂点ＩＤが既登録であることを意味する。この場合、ステップＳ１０２で抽出した座標値と、頂点座標テーブルにおける既登録のリンク先頂点ＩＤに対応する座標値が一致するか否かを判定する（Ｓ１０８）。判定の結果、両座標値が一致する場合は、頂点構成テーブルのポリゴンＩＤ、頂点順の位置に、既登録のリンク先頂点ＩＤを記録する（Ｓ１０９）。ステップＳ１０８における判定の結果、両座標値が異なる場合は、頂点座標テーブルのリンク先頂点ＩＤを参照し、リンク先頂点ＩＤが０以上であるか否かを確認する（Ｓ１１０）。
【０２８０】
確認の結果、リンク先頂点ＩＤが０以上である場合は、その値を頂点ＩＤとし、ステップＳ１０８に戻って、その頂点ＩＤに対応する頂点座標テーブルにおける既登録の座標値とステップＳ１０２で抽出した座標値を照合する。ステップＳ１１０における確認の結果、リンク先頂点ＩＤが負値（例えば“−１”）である場合は、頂点座標テーブルのその頂点ＩＤに対応するリンク先頂点ＩＤに現在の頂点ＩＤを記録し、ステップＳ１０７に戻って、頂点座標テーブルの現在の頂点ＩＤの位置にステップＳ１０２で抽出した座標値を記録する。この時、頂点座標テーブルの現在の頂点ＩＤにおけるリンク先頂点ＩＤについては、初期状態の“−１”のままにする。また、頂点構成テーブルにステップＳ１０２で抽出したポリゴンＩＤと頂点順の位置に現在の頂点ＩＤを記録する。そして、頂点ＩＤをインクリメントする。
【０２８１】
ステップＳ１０７またはＳ１０９の処理を終えたら、全ポリゴンに対して処理を終えたか否かを判定する（Ｓ１１１）。具体的には、まず、頂点順をインクリメントし、頂点順が“２”を超えたら、ポリゴンＩＤをインクリメントして頂点順を“０”にする。例えば、現在のポリゴンＩＤが“Ｐ１”の場合、ポリゴンＩＤをインクリメントすると、ポリゴンＩＤは“Ｐ２”になる。ポリゴンＩＤがポリゴン総数を超えていなければ、ステップＳ１０２に戻って処理を繰り返す。ポリゴンＩＤがポリゴン総数を超えていれば、全ポリゴンに対して処理を終えたと判定して処理を終了する。
【０２８２】
対象モデル分離手段は、ハッシュ値算出手段、座標値照合手段、頂点構成テーブル処理手段、頂点座標テーブル処理手段を備えており、図２２に示したポリゴンモデルの構造化処理は、これらの手段が連携することにより実現される。
【０２８３】
図２２に示したステップＳ１０のポリゴンモデルの構造化処理の具体例について説明する。図２０に示したポリゴン群が、その頂点の座標値により図２３に示すようなハッシュ値をとる場合を例にとって説明する。図２３の例では、説明の都合上２次元で表現し、上記〔数式３７〕においてＴ＝２とすると、ｈ＝ｈｘ＋ｈｙ・２となり、頂点Ａ，Ｂ，Ｄ，Ｅのハッシュ値がｈ＝０、頂点Ｃ，Ｆのハッシュ値がｈ＝１、頂点Ｇ，Ｈ，Ｊ，Ｌ，Ｍのハッシュ値がｈ＝２、頂点Ｉ，Ｋ，Ｎのハッシュ値がｈ＝３であることを示している。実際には上記〔数式３７〕において、Ｔ＝３２に設定し、ｈ＝ｈｘ＋ｈｙ・３２＋ｈｚ・１０２４となり、ハッシュ値ｈは、０〜３２７６７の値をとるが、以下では、説明を簡略化するため、ハッシュ値は前述の０〜３の値をとるものとして説明していく。
【０２８４】
図２４は、Ｓ１０１における初期化時の各テーブルの状態を示す図である。図２４（ａ）は頂点構成テーブル、図２４（ｂ）は先頭頂点テーブル、図２４（ｃ）は頂点座標テーブルを示している。先頭頂点テーブルには、ハッシュ値に頂点ＩＤが対応付けられてリンク先頂点ＩＤとして記録されている。ここでは、図２３に示したようにハッシュ値が０〜３の値をとるため、先頭頂点テーブルには、全てのハッシュ値０〜３に対応付けてリンク先頂点ＩＤとして“−１”が記録されている。頂点座標テーブルには、頂点ＩＤに対応付けられて頂点座標が記録されるとともに、リンク先頂点ＩＤが記録されている。
【０２８５】
図２４（ａ）に示すように、頂点構成テーブルは、ポリゴンＩＤと頂点順に対応付けて３つの頂点ＩＤが記録されるようになっているが、頂点順は、左から０，１，２となっており、図２１に示した第１頂点、第２頂点、第３頂点に対応している。ステップＳ１０１における初期化の際、頂点順＝０に初期化される。ステップＳ１０２において、頂点座標配列データより、ポリゴンＰ１の第１頂点の座標値（Ｘｄ，Ｙｄ，Ｚｄ）を抽出して、ステップＳ１０３において、ハッシュ値“０”が算出されたものとする。ステップＳ１０４において、ハッシュ値“０”で先頭頂点テーブルを参照すると、ステップＳ１０５において、リンク先の頂点ＩＤが登録されていないため、先頭頂点テーブルのハッシュ値“０”に対応付けて、ステップＳ１０６において、現在の頂点ＩＤ“０”をリンク先として記録する。
【０２８６】
そして、ステップＳ１０７において、頂点座標テーブルにおける現在の頂点ＩＤ“０”の位置に、ステップＳ１０２において抽出した座標値（Ｘｄ，Ｙｄ，Ｚｄ）を記録し、リンク先頂点ＩＤとして“−１”を記録する。さらに、ステップＳ１０７において、現在のポリゴンＩＤ“Ｐ１”の現在の頂点順“０”の位置に、現在の頂点ＩＤ“０”を記録する。この結果、各テーブルは、図２５に示すような状態となる。そして、頂点ＩＤをインクリメントして現在の頂点ＩＤを“０”→“１”とする。また、頂点順をインクリメントして現在の頂点順を“０”→“１” とする。現在のポリゴンＩＤは“Ｐ１”であり、“Ｐ１８”を超えていないため、ステップＳ１１１において、全ポリゴンに対して処理終了していないと判断され、ステップＳ１０２に戻る。
【０２８７】
ステップＳ１０２において、頂点座標配列データより、現在のポリゴンＩＤ“Ｐ１”、現在の頂点順“１”に基づき、ポリゴンＰ１の第２頂点の座標値（Ｘｂ，Ｙｂ，Ｚｂ）を抽出する。そして、ステップＳ１０３において、座標値（Ｘｂ，Ｙｂ，Ｚｂ）に対してハッシュ値“０”が算出されたものとする。ステップＳ１０４において、ハッシュ値“０”で先頭頂点テーブルを参照すると、ステップＳ１０５において、リンク先の頂点ＩＤとして“０”が既登録であるため、ステップＳ１０８において、既登録の頂点ＩＤ“０”に対応する頂点座標テーブルの座標値（Ｘｄ，Ｙｄ，Ｚｄ）と、ステップＳ１０２で抽出した座標値（Ｘｂ，Ｙｂ，Ｚｂ）を照合する。照合の結果、不一致であるので、ステップＳ１１０において、頂点座標テーブルのリンク先の頂点ＩＤが０以上であるか負の値であるかを確認する。
【０２８８】
図２５に示すように、リンク先の頂点ＩＤが“−１”であるので、ステップＳ１０７において、頂点座標テーブルの現在の頂点ＩＤ“１”の位置に、ステップＳ１０２において抽出した座標値（Ｘｂ，Ｙｂ，Ｚｂ）を記録し、リンク先頂点ＩＤとして“−１”を記録する。さらに、ステップＳ１０７において、頂点構成テーブルの、現在のポリゴンＩＤ“Ｐ１”の現在の頂点順“１”の位置に、現在の頂点ＩＤ“１”を記録する。この結果、各テーブルは、図２６に示すような状態となる。そして、頂点ＩＤをインクリメントして現在の頂点ＩＤを“１”→“２”とする。また、頂点順をインクリメントして現在の頂点順を“１”→“２” とする。現在のポリゴンＩＤは“Ｐ１”であり、“Ｐ１８”を超えていないため、ステップＳ１１１において、全ポリゴンに対して処理終了していないと判断され、ステップＳ１０２に戻る。
【０２８９】
ポリゴンＩＤ“Ｐ１”、頂点ＩＤ“２”、頂点順“２”の場合は、ポリゴンＩＤ“Ｐ１”、頂点ＩＤ“１”、頂点順“１”の場合と同様に処理され、各テーブルは、図２７に示すような状態となる。そして、頂点ＩＤをインクリメントして現在の頂点ＩＤを“２”→“３”とする。また、頂点順は、１つのポリゴンについて“０”“１”“２”の３つの値のみをとるため、ポリゴンＩＤをインクリメントして“Ｐ１”→“Ｐ２”とし、頂点順をリセットして現在の頂点順を“２”→“０” とする。現在のポリゴンＩＤは“Ｐ２”となり、“Ｐ１８”を超えていないため、ステップＳ１１１において、全ポリゴンに対して処理終了していないと判断され、ステップＳ１０２に戻る。
【０２９０】
ステップＳ１０２において、頂点座標配列データより、現在のポリゴンＩＤ“Ｐ２”、現在の頂点順“０”に基づき、ポリゴンＰ２の第１頂点の座標値（Ｘｄ，Ｙｄ，Ｚｄ）を抽出する。そして、ステップＳ１０３において、座標値（Ｘｄ，Ｙｄ，Ｚｄ）に対してハッシュ値“０”が算出されたものとする。ステップＳ１０４において、ハッシュ値“０”で先頭頂点テーブルを参照すると、ステップＳ１０５において、リンク先の頂点ＩＤとして“０”が既登録であるため、ステップＳ１０８において、既登録の頂点ＩＤ“０”に対応する頂点座標テーブルの座標値（Ｘｄ，Ｙｄ，Ｚｄ）と、ステップＳ１０２で抽出した座標値（Ｘｄ，Ｙｄ，Ｚｄ）を照合する。照合の結果、一致するので、ステップＳ１０９において、頂点座標テーブルの座標値が一致した頂点ＩＤ“０”を、頂点構成テーブルの、現在のポリゴンＩＤ“Ｐ２”の現在の頂点順“０”の位置に記録する。この結果、各テーブルは、図２８に示すような状態となる。
【０２９１】
上記のようにして、ポリゴンＰ１８まで処理を行ってステップＳ１１１の判定により処理を終了する。このとき、各テーブルは、図２９に示すような状態となる。すなわち、ハッシュ値が同一の他の座標値を頂点ＩＤより最近傍に記録した単一の頂点ＩＤがリンク先として対応付けられているものとなる。上記説明のように、ポリゴンモデルの構造化処理においては、ステップＳ１０８において座標値の照合を行い、不一致であれば頂点座標テーブルに登録するが、一致している場合は、次々に照合を繰り返していく。この処理は、頂点座標テーブルが大きくなり、既登録の座標値が多くなる程、負荷が高くなることになる。本実施形態では、ハッシュ値を用いてハッシュ値別頂点座標テーブルを参照することにより、頂点座標テーブルの全ての座標値の照合を行うことなく、ハッシュ値が異なる座標値とは一致しないことが自明なため照合対象から除外することができ、同一ハッシュ値の頂点座標テーブルのみを参照すればよいことになる。頂点座標テーブルの中で同一ハッシュ値をもつ座標値は、本実施形態では高々１／４程度であるが、前述の通り実際には上記〔数式３７〕において、Ｔ＝３２に設定することが多く、そうすると頂点座標テーブルの中で同一ハッシュ値をもつ座標値は１／３２７６７程度に削減され、全件と照合する場合に比べ照合時間も１／３２７６７程度に短縮されることになる。このため、ポリゴンモデルの構造化処理を桁違いに高速に行うことが可能となる。
【０２９２】
図２９の例で、ハッシュ値が“０”の場合、図２９（ｃ）の頂点座標テーブルでは、リンク先頂点ＩＤに従って、頂点ＩＤ“０”“１”“２”“６”のものだけ照合すれば、頂点座標の登録が可能となる。図２９（ｂ）に示した先頭頂点テーブルを削除し、図２９（ｃ）に示した頂点座標テーブルよりリンク先頂点ＩＤの欄を削除することにより、図３０に示したような頂点構成テーブルと頂点座標テーブルを得ることができ、ポリゴンモデルの構造化は完了する。
【０２９３】
＜５．３．ポリゴン稜線の構造化＞
ステップＳ２０のポリゴン稜線の構造化について説明する。ポリゴン稜線の構造化とは、与えられたポリゴン内の頂点順において隣接する２つの頂点の頂点ＩＤペアに対して稜線ＩＤを付与し、ポリゴンを構成する各稜線を稜線ＩＤで表現してポリゴンＩＤと稜線順とで対応付けて記録した稜線構成テーブルと、稜線構成テーブルに付与された稜線ＩＤに対する頂点ＩＤペアを対応付けて記録した稜線テーブルに分離する処理である。ここで、稜線順は頂点順に対応し、例えば、頂点順で“０”と“１”の隣接する２つの頂点は稜線順“０”に対応し、頂点順で“１”と“２”の隣接する２つの頂点は稜線順“１”に対応し、頂点順で“２”と“０”の隣接する２つの頂点は稜線順“２”に対応させる。この時、稜線テーブルの複数の稜線ＩＤに同一の頂点ＩＤペアが重複して記録されないようにすることがポイントになる。同一の頂点ＩＤペアを共有する隣接するポリゴンの稜線は、頂点ＩＤペアの順番が逆になることが原則になるため、頂点ＩＤペアは番号が小さい（若い）順に設定するようにする。そして、各頂点ＩＤペアに稜線ＩＤを付与する際、稜線テーブルに既に登録されているか否かを探索し、既登録であれば該当する稜線ＩＤを付与し、未登録であれば新規の稜線ＩＤを付与し、稜線テーブルに追加登録するという処理を繰り返す。
【０２９４】
図３１は、ステップＳ２０のポリゴン稜線の構造化の詳細を示すフローチャートである。ステップＳ２０のポリゴン稜線の構造化は、対象モデル分離手段により行われる。まず、稜線構成テーブル、頂点ＩＤ別稜線テーブル、稜線ＩＤの初期化を行う（Ｓ２０１）。稜線構成テーブルは、各ポリゴンに含まれる各稜線を稜線ＩＤで表現してポリゴンと稜線順とで対応付けて記録したテーブルである。稜線ＩＤは、稜線を識別するための稜線識別情報であり、稜線を一意に特定することができれば、どのようなものを用いてもよいが、演算処理の効率化のため、本実施形態では、０から始まるシリアルな整数値を用いている。稜線テーブルは、稜線構成テーブルに付与された稜線ＩＤと頂点ＩＤペアを対応付けて記録したテーブルである。稜線構成テーブル、稜線テーブルの初期化は、各項目が記録されていない状態にすることを意味する。また、稜線ＩＤの初期化として現在の稜線ＩＤ＝０に設定する。さらに、頂点ＩＤペアの小さい方の頂点ＩＤとリンク先稜線ＩＤを対応付けた先頭稜線テーブルも初期化する。先頭稜線テーブルの初期化は、リンク先稜線ＩＤを全て“−１”に設定することにより行われる。稜線テーブルと先頭稜線テーブルの２つのテーブルにより頂点ＩＤ別稜線テーブルを実現する。
【０２９５】
次に、頂点構成テーブルより頂点ＩＤペアを抽出するにあたり、ポリゴンＩＤを“Ｐ１”に、頂点順を“０”に初期化する（Ｓ２０１）。そして、頂点構成テーブルより現在のポリゴンＩＤと頂点順に対応する頂点ＩＤと、次の頂点順に対応する隣接する頂点ＩＤからなる２つの頂点ＩＤペアを抽出する（Ｓ２０２）。次の頂点順は現在の頂点順に１を加えたものであるが、頂点順が“２”の場合、次の頂点順は“０”とする。例えば、図３０に示した頂点構成テーブルからは、ポリゴンＩＤ“Ｐ１”と頂点ＩＤ“０”と“１”のペアが抽出される。
【０２９６】
次に、抽出された頂点ＩＤペアのうち小さい方の頂点ＩＤを用いて先頭稜線テーブルを参照する（Ｓ２０４）。そして、その頂点ＩＤに対応するリンク先稜線ＩＤが先頭稜線テーブルに登録されているか否かを確認する（Ｓ２０５）。頂点ＩＤに対応するリンク先稜線ＩＤ（図中“リンク稜線ＩＤ”と表示）が“−１”、すなわち初期状態である場合は、その頂点ＩＤに対応するリンク先稜線ＩＤが未登録、すなわち既登録でないことを意味する。
【０２９７】
この場合、先頭稜線テーブルに稜線ＩＤの記録を行う（Ｓ２０６）。具体的には、先頭稜線テーブルの頂点ＩＤに対応するリンク先稜線ＩＤに、現在の稜線ＩＤ（初期状態では“０”）を書き込む。続いて、稜線テーブルの現在の稜線ＩＤの位置にステップＳ２０２で抽出した頂点ＩＤペアを書き込む（Ｓ２０７）。この時、稜線テーブルにもリンク先稜線ＩＤを書き込む欄があるが、初期状態の“−１”のままにする。また、稜線構成テーブルにおける、ステップＳ２０２で抽出したポリゴンＩＤと頂点順と同値の稜線順の位置に、現在の稜線ＩＤを書き込む。ここでは、新規な稜線ＩＤとして記録されることになる。そして、現在の稜線ＩＤをインクリメントする。
【０２９８】
一方、ステップＳ２０５において、頂点ＩＤに対応するリンク先稜線ＩＤが“−１”でない場合は、その頂点ＩＤに対応するリンク先稜線ＩＤが既登録であることを意味する。この場合、ステップＳ２０２で抽出した頂点ＩＤペアと、頂点座標テーブルにおける既登録のリンク先稜線ＩＤに対応する頂点ＩＤペアが一致するか否かを判定する（Ｓ２０８）。判定の結果、両頂点ＩＤペアが一致する場合は、稜線構成テーブルのポリゴンＩＤ、頂点順と同値の稜線順の位置に、現在の稜線ＩＤを記録する（Ｓ２０９）。ステップＳ２０８における判定の結果、両座標値が異なる場合は、稜線テーブルのリンク先稜線ＩＤを参照し、リンク先稜線ＩＤが０以上であるか否かを確認する（Ｓ２１０）。確認の結果、リンク先稜線ＩＤが０以上である場合は、その値を稜線ＩＤとし、ステップＳ２０８に戻って、その稜線ＩＤに対応する頂点ＩＤペアとステップＳ２０２で抽出した頂点ＩＤペアを照合する。ステップＳ２１０における確認の結果、リンク先稜線ＩＤが負値（例えば“−１”）である場合は、稜線テーブルのその稜線ＩＤに対応するリンク先稜線ＩＤに現在の稜線ＩＤを記録し、ステップＳ２０７に戻って、稜線テーブルの現在の稜線ＩＤの位置にステップＳ２０２で抽出した頂点ＩＤペアを記録する。この時、稜線テーブルの現在の稜線ＩＤにおけるリンク先稜線ＩＤについては、初期状態の“−１”のままにする。また、稜線構成テーブルにおける、ステップＳ２０２で抽出したポリゴンＩＤと頂点順と同値の稜線順の位置に現在の稜線ＩＤを記録する。そして、稜線ＩＤをインクリメントする。
【０２９９】
ステップＳ２０７またはＳ２０９の処理を終えたら、全ポリゴンに対して処理を終えたか否かを判定する（Ｓ２１１）。具体的には、まず、頂点順をインクリメントし、頂点順が“２”を超えたら、ポリゴンＩＤをインクリメントして頂点順を“０”にする。ポリゴンＩＤがポリゴン総数を超えていなければ、ステップＳ２０２に戻って処理を繰り返す。ポリゴンＩＤがポリゴン総数を超えていれば、全ポリゴンに対して処理を終えたと判定して処理を終了する。
【０３００】
対象モデル分離手段は、頂点ＩＤ照合手段、稜線構成テーブル更新手段、稜線テーブル更新手段を備えており、図３１に示したポリゴン稜線の構造化処理は、これらの手段が連携することにより実現される。
【０３０１】
図３２は、ポリゴンＰ１の稜線構成が記録された時点の各テーブルの状態を示す図である。図３２（ａ）は頂点構成テーブル、図３２（ｂ）は稜線構成テーブル、図３２（ｃ）は先頭稜線テーブル、図３２（ｄ）は稜線テーブルを示している。先頭稜線テーブルには、頂点ＩＤペアの小さい方の頂点ＩＤに稜線ＩＤが対応付けられてリンク先稜線ＩＤとして記録されている。ここでは、頂点ＩＤが０〜１３の値をとるが、最終の頂点ＩＤ１３を小さい方の頂点ＩＤとする頂点ＩＤペアは存在しないため、先頭稜線テーブルには、最終の頂点ＩＤ１３を除く全ての頂点ＩＤ０〜１２に対応付けてリンク先稜線ＩＤが記録される。初期状態では、全て“−１”が記録される。稜線テーブルには、稜線ＩＤに対応付けられて頂点ＩＤペア（図中“頂点ペア”と表示）が記録されるとともに、リンク先稜線ＩＤが記録されている。
【０３０２】
図３２（ｂ）に示すように、稜線構成テーブルは、ポリゴンＩＤと稜線順に対応付けて３つの稜線ＩＤが記録されるようになっているが、稜線順は頂点順と同値で、左から０，１，２となっている。ステップＳ２０１における初期化の際、頂点順＝稜線順＝０に初期化される。
【０３０３】
図３３は、ポリゴンＰ２の稜線構成が記録された時点の各テーブルの状態を示す図である。図３４は、ポリゴンＰ３の稜線構成が記録された時点の各テーブルの状態を示す図である。図３５は、ポリゴンＰ１８の稜線構成が記録された時点の各テーブルの状態を示す図である。図３１に示したフローチャートに従って処理を実行していくことにより、図３５に示したような状態まで処理が行われることになる。
【０３０４】
図３５の例で、頂点ＩＤペアの小さい方の頂点ＩＤが“０”の場合、図３５（ｄ）の稜線テーブルでは、リンク先稜線ＩＤに従って、稜線ＩＤ“０”“２”“３”“８”“１０”“１２”のものだけ照合すれば、頂点ＩＤペアの登録が可能となる。図３５（ｃ）に示した先頭稜線テーブルを削除し、図３５（ｄ）に示した稜線テーブルよりリンク先稜線ＩＤの欄を削除することにより、図３６に示したような稜線構成テーブルと稜線テーブルを得ることができ、ポリゴン稜線の構造化は完了する。
【０３０５】
＜５．４．隣接ポリゴンテーブルの作成＞
ステップＳ３０の隣接ポリゴンテーブルの作成について説明する。隣接ポリゴンテーブルの作成は、ポリゴンの各稜線（隣接する頂点ペア）と共有する稜線をもつ隣接するポリゴンを探索し、頂点座標配列データをポリゴンＩＤと稜線順に対応付けて隣接ポリゴンのポリゴンＩＤで記述した隣接ポリゴンテーブルを作成する処理である。この探索処理はポリゴン数の２乗に比例して処理時間がかかるという問題があった。ステップＳ２０において、稜線構成テーブルを作成しておくことにより、高速に隣接ポリゴンテーブルを作成することができる。
【０３０６】
図３７は、ステップＳ３０の隣接ポリゴンテーブルの作成の詳細を示すフローチャートである。ステップＳ３０の隣接ポリゴンテーブルの作成は、対象モデル分離手段により行われる。まず、隣接ポリゴンテーブル、稜線ＩＤ別ポリゴンテーブル、ポリゴンＩＤ、稜線順の初期化を行う（Ｓ３０１）。隣接ポリゴンテーブルは、各ポリゴンと隣接するポリゴンのポリゴンＩＤを対応付けて記録したテーブルである。稜線ＩＤ別ポリゴンテーブルは、稜線ＩＤと稜線を含むポリゴンと当該ポリゴンにおける当該稜線の稜線順を識別するポリゴン別稜線ＩＤを対応付けて記録したテーブルである。隣接ポリゴンテーブルの初期化は、各項目が記録されていない状態にすることを意味する。また、ポリゴンＩＤと稜線順の初期化として現在のポリゴンＩＤを“Ｐ１”、稜線順を“０”に設定する。稜線ＩＤ別ポリゴンテーブルの初期化は、ポリゴン別稜線ＩＤを全て“−１”に設定することにより行われる。
【０３０７】
次に、稜線構成テーブルよりポリゴンＩＤと、そのポリゴンＩＤに対応する現在の稜線順の稜線ＩＤを抽出する（Ｓ３０２）。例えば、図３８に示した稜線構成テーブルからは、ポリゴンＩＤ“Ｐ１”と稜線ＩＤ“０”が抽出される。
【０３０８】
次に、抽出された稜線ＩＤを用いて稜線ＩＤ別ポリゴンテーブルを参照する（Ｓ３０４）。そして、その稜線ＩＤに対応するポリゴン別稜線ＩＤが稜線ＩＤ別ポリゴンテーブルに登録されているか否かを確認する（Ｓ３０５）。稜線ＩＤに対応するポリゴン別稜線ＩＤが“−１”、すなわち初期状態である場合は、その稜線ＩＤに対応するポリゴン別稜線ＩＤが未登録、すなわち既登録でないことを意味する。
【０３０９】
この場合、稜線ＩＤ別ポリゴンテーブルに現在のポリゴン別稜線ＩＤの記録を行う（Ｓ３０６）。具体的には、稜線ＩＤ別ポリゴンテーブルの稜線ＩＤに対応して、現在のポリゴンＩＤ（初期状態では“Ｐ１”）と稜線順（初期状態では“０”）により特定されるポリゴン別稜線ＩＤを書き込む。
【０３１０】
一方、ステップＳ３０５において、稜線ＩＤに対応するポリゴン別稜線ＩＤが“−１”でない場合は、その稜線ＩＤに対応するポリゴン別稜線ＩＤが既登録であることを意味し、既登録のポリゴン別稜線ＩＤに対応する稜線と、現在のポリゴンＩＤと稜線順に対応する稜線とが、その稜線ＩＤで共有することを意味する。この場合、その稜線ＩＤに対応するポリゴン別稜線ＩＤを取得し、隣接ポリゴンテーブルにおける、そのポリゴン別稜線ＩＤにより特定されるポリゴンＩＤと稜線順の位置に、現在のポリゴンＩＤを記録する（Ｓ３０７）。ステップＳ３０７においては、さらに、隣接ポリゴンテーブルにおける、現在のポリゴンＩＤと現在の稜線順の位置に、ポリゴン別稜線ＩＤにより特定されるポリゴンＩＤを記録する。
【０３１１】
ステップＳ３０６またはＳ３０７の処理を終えたら、全ポリゴンに対して処理を終えたか否かを判定する（Ｓ３０８）。具体的には、まず、稜線順をインクリメントし、稜線順が“２”を超えたら、ポリゴンＩＤをインクリメントして稜線順を“０”にする。ポリゴンＩＤがポリゴン総数を超えていなければ、ステップＳ３０２に戻って処理を繰り返す。ポリゴンＩＤがポリゴン総数を超えていれば、全ポリゴンに対して処理を終えたと判定して処理を終了する。
【０３１２】
対象モデル分離手段は、ポリゴンテーブル登録手段と、隣接ポリゴンテーブル登録手段を備えており、図３７に示した隣接ポリゴンテーブルの作成処理は、これらの手段が連携することにより実現される。
【０３１３】
図３８は、ポリゴンＰ２のポリゴン別稜線ＩＤが記録された時点の各テーブルの状態を示す図である。図３８（ａ）は稜線構成テーブル、図３８（ｂ）は稜線ＩＤ別ポリゴンテーブル、図３８（ｃ）は隣接ポリゴンテーブルを示している。図３８（ａ）の稜線構成テーブルは、図３６（ａ）の稜線構成テーブルと同一である。稜線ＩＤ別ポリゴンテーブルには、稜線ＩＤに対応付けて、ポリゴン別稜線ＩＤが記録されている。ここでは、稜線ＩＤが０〜３０の値をとるため、稜線ＩＤ別ポリゴンテーブルには、全ての稜線ＩＤ０〜３０に対応付けてポリゴン別稜線ＩＤが記録される。稜線ＩＤ別ポリゴンテーブルにおいては、初期状態では、ポリゴン別稜線ＩＤとして全て“−１”が記録される。図３８（ｂ）の空欄においては、実際には、初期値であるポリゴン別稜線ＩＤとして全て“−１”が記録されている。隣接ポリゴンテーブルには、ポリゴンＩＤに対応付けられて隣接ポリゴンＩＤが記録される。
【０３１４】
図３８（ｃ）に示すように、隣接ポリゴンテーブルは、ポリゴンＩＤに対応付けて３つの隣接ポリゴンのポリゴンＩＤが記録されるようになっているが、稜線順は、左から０，１，２となっている。ステップＳ３０１における初期化の際、稜線順＝０に初期化される。隣接ポリゴンテーブルにおいては、必ず、対になるようにポリゴンＩＤの記録が行われる。すなわち、図３８（ｃ）に示すように、ポリゴンＰ１に対応付けて隣接ポリゴンとしてポリゴンＰ２が記録された場合、ポリゴンＰ２に対応付けて隣接ポリゴンとしてポリゴンＰ１も記録されることになる。
【０３１５】
図３９は、ポリゴンＰ４のポリゴン別稜線ＩＤが記録された時点の各テーブルの状態を示す図である。図４０は、ポリゴンＰ１８のポリゴン別稜線ＩＤが記録された時点の各テーブルの状態を示す図である。図３７に示したフローチャートに従って処理を実行していくことにより、図４０に示したような状態まで処理が行われることになる。これにより、図４０（ｃ）に示したような隣接ポリゴンテーブルが完成する。
【０３１６】
図４１は、ステップＳ１０で完成した頂点構成テーブル、ステップＳ２０で完成した稜線構成テーブル、ステップＳ３０で完成した隣接ポリゴンテーブルを示す図である。
【０３１７】
＜５．５．ポリゴンモデルの分離＞
ステップＳ４０のポリゴンモデルの分離について説明する。ポリゴンモデルの分離においては、ステップＳ３０で作成された隣接ポリゴンテーブルを用いる。隣接ポリゴンテーブルを用いることにより、高速にポリゴンモデルの分離を行うことができる。
【０３１８】
図４２は、ステップＳ４０のポリゴンモデルの分離の詳細を示すフローチャートである。ステップＳ４０のポリゴンモデルの分離は、対象モデル分離手段により行われる。まず、グループＩＤの仮設定を行う（Ｓ４０１）。具体的には、グループを識別するグループ識別情報であるグループＩＤを新規に定義し、グループＩＤが未設定のポリゴンを１つ抽出し、そのポリゴンのポリゴンＩＤに新規なグループＩＤを仮設定する。ここで、「グループＩＤが未設定」とは、本設定も仮設定も行われていない状態を意味する。
【０３１９】
次に、グループＩＤの本設定を行う（Ｓ４０２）。具体的には、まず、グループＩＤが仮設定されているポリゴンを全て抽出し、抽出された各ポリゴンのポリゴンＩＤに対して、仮設定されているグループＩＤを本設定する。そして、隣接ポリゴンテーブルを参照し、本設定がなされた各ポリゴンに隣接するグループＩＤが未設定のポリゴンを全て抽出し、本設定されたグループＩＤと同一のグループＩＤを、抽出された全てのポリゴンのポリゴンＩＤに仮設定する。
【０３２０】
次に、グループＩＤが仮設定されているポリゴンが存在するか否かを判定する（Ｓ４０３）。判定の結果、グループＩＤが仮設定されているポリゴンが存在する場合は、ステップＳ４０２に戻って、グループＩＤが仮設定されているポリゴンのポリゴンＩＤに対して、仮設定されているグループＩＤを本設定し、隣接ポリゴンテーブルを参照し、隣接するグループＩＤが未設定のポリゴンのポリゴンＩＤに同一のグループＩＤを仮設定する処理を繰り返す。
【０３２１】
ステップＳ４０３における判定の結果、グループＩＤが仮設定されているポリゴンが存在しない場合は、全ポリゴンについてグループＩＤの本設定を終了したか否かを判定する（Ｓ４０４）。判定の結果、全てのポリゴンにグループＩＤが本設定されていない、即ちグループＩＤが未設定のポリゴンが存在する場合は、ステップＳ４０１に戻って、グループＩＤを新規に定義し、グループＩＤが未設定のポリゴンＩＤを１つ抽出し、そのポリゴンＩＤに新規なグループＩＤを仮設定する。
【０３２２】
ステップＳ４０４における判定の結果、全てのポリゴンにグループＩＤが本設定されている場合は、ポリゴンＩＤとグループＩＤの関係を用いて、ポリゴンモデルを分離する（Ｓ４０５）。具体的には、図２１に示した頂点座標配列データのポリゴンＩＤと座標値を、同一グループＩＤごとに、異なるファイルに分離する。また、バイナリＳＴＬ形式のファイルを使用する場合、ポリゴンごとに色情報を指示できる識別フラグを設定できるため、ファイル分離せず同一ファイルのまま、ポリゴンごとの識別フラグにグループＩＤを設定する方法もとれる。
【０３２３】
分離された複数のＳＴＬ形式ファイルまたはポリゴンごとにグループＩＤが設定された単一のＳＴＬ形式ファイルを３Ｄプリンタに出力すると、グループＩＤごとに異なる材料（サポート材を含む）あるいは異なる色の材料（透明材を含む）を指定でき、多色または中身が透けて見える造形物を作成することができる。このように、ポリゴンモデルの分離とは、頂点座標配列データのポリゴンＩＤと座標値を、同一グループＩＤごとに、異なるファイルに分離するだけでなく、１つのファイル内で、明確に区別することも含む概念である。以上のようにして、対象モデル分離手段は、対象モデルを複数の部分対象モデルに分離する。対象モデル分離手段は、出力を規制すべきポリゴンモデルである規制モデルについても、同様にして部分規制モデルに分離することができる。
【０３２４】
＜６．規制画像および規制モデルの度数分布算出および登録について＞
応用例として、度数分布照合手段２０を備えた立体物造形用データ出力規制装置とは別の場所で、規制画像および規制モデルに対して算出された外接円分布および内接円分布を、立体物造形用データ出力規制装置にネットワークを介して送信して登録するようにしてもよい。
【０３２５】
図４３は、応用例における立体物造形用データ出力規制装置を含む立体物造形システムのハードウェア構成図である。図４３に示した立体物造形システムにおいて、立体物造形用データ出力規制装置１０１は、図１０に示した立体物造形用データ出力規制装置１００の構成に、インターネット等の公衆ネットワークと通信するためのネットワーク通信部８を備えた構成となっている。画像度数分布算出装置３０１は、汎用のコンピュータで実現することができ、図４３に示すように、ＣＰＵ（Central Processing Unit）１ａと、コンピュータのメインメモリであるＲＡＭ（Random Access Memory）２ａと、ＣＰＵ１ａが実行するプログラムやデータを記憶するためのハードディスク、フラッシュメモリ等の大容量の記憶装置３ａと、キーボード、マウス等のキー入力Ｉ／Ｆ（インターフェース）４ａと、データ記憶媒体等の外部装置とデータ通信するためのデータ入出力Ｉ／Ｆ（インターフェース）５ａと、液晶ディスプレイ等の表示デバイスである表示部６ａと、インターネット等の公衆ネットワークと通信するためのネットワーク通信部８ａを備え、互いにバスを介して接続されている。立体物造形用データ出力規制装置１０１のネットワーク通信部８と画像度数分布算出装置３０１のネットワーク通信部８ａは互いに通信を行い、画像度数分布算出装置３０１から立体物造形用データ出力規制装置１０１へ規制画像に対して算出された２種の度数分布の送信を行うことが可能になっている。
【０３２６】
図４３では、立体物造形用データ出力規制装置１０１と３Ｄプリンタ７は分離した形態で示されているが、現在市販されている殆どの３Ｄプリンタ製品には立体物造形用データ出力規制装置１０１の構成要素である、ＣＰＵ１、ＲＡＭ２、記憶装置３、キー入力Ｉ／Ｆ４（汎用コンピュータ向けキーボード・マウスではなく、テンキーレベルの数種のボタン）、データ入出力Ｉ／Ｆ５、表示部６（数行の文字を表示可能な小型液晶パネル、タッチパネルを重畳させキー入力Ｉ／Ｆ４を兼ねることも多い）、ネットワーク通信部８（無線ＬＡＮ機能）も小規模ながら重複して備えている。従って、３Ｄプリンタ７自体が外部記憶媒体やインターネット経由で立体物造形用データを直接受け取り、単独で立体物を造形する運用も可能になっている（特に民生用の３Ｄプリンタではこちらの形態の方が多い）。すなわち、図４３に示した立体物造形用データ出力規制装置１０１および３Ｄプリンタ７を１つの筐体に収めて、“３Ｄプリンタ”という製品として流通することも多い。
【０３２７】
画像度数分布算出装置３０１においては、ＣＰＵ１ａが、記憶装置３ａに記憶されているプログラムを実行することにより、画像度数分布算出手段、度数分布送信手段が実現される。画像度数分布算出装置３０１で実現される画像度数分布算出手段は、画像度数分布算出装置３００、立体物造形用データ出力規制装置１００における画像度数分布算出手段９２と同様の機能を有し、規制画像に対して２種の度数分布として外接円分布、内接円分布を算出する。度数分布送信手段は、規制画像について算出された２種の度数分布である外接円分布、内接円分布を立体物造形用データ出力規制装置１０１に送信する。立体物造形用データ出力規制装置１０１では、ネットワーク通信部８が、画像度数分布算出装置３０１から２種の度数分布を受信すると、ＣＰＵ１が所定のプログラムを実行して度数分布登録手段として機能し、受信した２種の度数分布を記憶装置３で実現される度数分布データベース４０に登録する。
【０３２８】
＜７．クラウド型の立体物造形システム＞
本発明は、クラウド型の立体物造形システムに適用することも可能である。図４４は、クラウド型の立体物造形システムのハードウェア構成図である。図４４に示した立体物造形システムでは、出力制御用端末２０１と処理サーバ２０２により立体物造形用データ出力規制装置が実現される。図４４に示した立体物造形システムにおいて、出力制御用端末２０１は、図４３において立体物造形用データ出力規制装置１０１として示したコンピュータと同等のハードウェア構成を有する。すなわち、出力制御用端末２０１は、ＣＰＵ１１、ＲＡＭ１２、記憶装置１３、キー入力Ｉ／Ｆ１４、データ入出力Ｉ／Ｆ１５、表示部１６、ネットワーク通信部１８を備え、互いにバスを介して接続されている。
【０３２９】
処理サーバ２０２は、汎用のコンピュータに専用のプログラムを組み込むことにより実現することができる。図４４に示すように、ＣＰＵ１１ａ、ＲＡＭ１２ａ、記憶装置１３ａ、キー入力Ｉ／Ｆ１４ａと、データ入出力Ｉ／Ｆ１５ａと、表示部１６ａと、ネットワーク通信部１８ａを備え、互いにバスを介して接続されている。出力制御用端末２０１のネットワーク通信部１８と処理サーバ２０２のネットワーク通信部１８ａは互いに通信を行い、処理サーバ２０２から出力制御用端末２０１へ出力適否の判定に基づく出力適否データの送信を行うことが可能になっている。図４４では、出力制御用端末２０１と３Ｄプリンタ７は分離した形態で示されているが、図４３の例と同様、３Ｄプリンタ製品に出力制御用端末２０１の構成要素である、ＣＰＵ１１、ＲＡＭ１２、記憶装置１３、キー入力Ｉ／Ｆ１４、データ入出力Ｉ／Ｆ１５、表示部１６、ネットワーク通信部１８を重複して備えていてもよい。
【０３３０】
図４５は、クラウド型の立体物造形システムの機能ブロック図である。クラウド型の立体物造形システムを構成する処理サーバ２０２は、図１１に示した立体物造形用データ出力規制装置の各手段に加えて、対象モデル受信手段５０、出力適否データ送信手段６０を備えた構成となっている。対象モデル記憶手段３１は、対象モデル自体ではなく、対象モデルについて算出された２種の度数分布を記憶する。また、モデル度数分布算出手段１０は、処理サーバ２０２ではなく、出力制御用端末２０１が備えた構成となっている。
【０３３１】
図１１に示した立体物造形用データ出力規制装置と同等の機能を有するものについては、同一符号を付して説明を省略する。対象モデル受信手段５０は、出力制御用端末２０１から送信された対象モデルの２種の度数分布を受信して対象モデル記憶手段３１に登録する手段であり、ＣＰＵ１１ａが所定のプログラムを実行するとともに、ネットワーク通信部１８ａを制御することにより実現される。出力適否データ送信手段６０は、度数分布照合手段２０により判定された“出力を規制すべきであるか否か”に基づき、出力適否データを出力制御用端末２０１に送信する手段であり、ＣＰＵ１１ａが所定のプログラムを実行するとともに、ネットワーク通信部１８ａを制御することにより実現される。
【０３３２】
処理サーバ２０２は、インターネット等のネットワークに接続され、多数の出力制御用端末からアクセス可能になっている。クラウド型の立体物造形システムの「クラウド型」とは、３Ｄプリンタにより立体物を出力する出力側でなく、出力側からネットワークを介した遠隔地のコンピュータにおいて、規制すべきか否かを判定することを意味する。従来のサーバ型コンピュータでは多数の利用者のアクセスが集中すると応答性が遅くなり利用者に迷惑をかけることが多かったが、クラウド型では仮想化技術によりコンピュータの物理的構成を動的に変更することが可能になるため、常に安定した応答性を維持できるという特徴がある。処理サーバ２０２は物理的には複数台のコンピュータにより実現されるのが一般的である。
【０３３３】
図４４、図４５に示したクラウド型の立体物造形システムの処理動作について説明する。出力制御用端末２０１において、利用者がキー入力Ｉ／Ｆ１４を介して出力したい対象モデルを指定すると、ＣＰＵ１１は、記憶装置１３に記憶されている指定された対象モデルを抽出し、対象モデルを特定する識別情報であるモデルＩＤを付与する。そして、ＣＰＵ１１は、モデルＩＤが付与された対象モデルに対して、図１３、図１４に示したフローチャートに従って、モデル度数分布算出手段１０が処理を行い、外接円分布および内接円分布で構成される２種の度数分布を生成する。さらにＣＰＵ１１は、生成された２種の度数分布を、記憶装置１３に事前に設定されているＵＲＬ等のアドレス宛に、ネットワーク通信部１８を介して送信する。ポリゴンデータ（ポリゴンモデル）に比べ情報量が顕著に少ない２種の度数分布を送信する方法をとることにより、伝送時間が大幅に短縮されるだけでなく、処理サーバ２０２側には著作物であるポリゴンデータが送信されず、処理サーバ２０２側に複製物が残らないため、著作権侵害を回避することができる。
【０３３４】
並行してＣＰＵ１１は、モデルＩＤが付与された対象モデルを、データ入出力Ｉ／Ｆ１５を介して３Ｄプリンタ７のデータ処理部７ａに送信する。データ処理部７ａ内のプリンタキューには、出力制御用端末２０１から受信した対象モデルが保持され、出力ジョブとして待機状態となる。この時、３Ｄプリンタ出力における前処理であるポリゴン形式のデータを積層形式のデータに変換する処理のみ実行させるようにし、積層形式のデータに変換された段階で待機状態にする手法もとることができる。このデータ処理負荷もそれなりに高いため、この間に出力適否判定が完了すれば、利用者側に余分な待ち時間を感じさせないようにすることができる。
【０３３５】
処理サーバ２０２では、対象モデル受信手段５０が、出力制御用端末２０１から送信された対象モデルの２種の度数分布を受信すると、その２種の度数分布を対象モデル記憶手段３１に記憶する。ここで、図１６に示したフローチャートに従って、度数分布照合手段２０が処理を行い、受信した２種の度数分布に対応する対象モデルの出力適否を判定する。出力適否の結果である出力適否データは、度数分布照合手段２０から出力適否データ送信手段６０に渡される。そして、出力適否データ送信手段６０は、２種の度数分布の送信元（アクセス元）である出力制御用端末２０１に、モデルＩＤを付加した出力適否データを送信する。
【０３３６】
出力制御用端末２０１では、ネットワーク通信部１８が、処理サーバ２０２から出力適否データを受信すると、ＣＰＵ１１が、受信した出力適否データを、データ入出力Ｉ／Ｆ１５を介して３Ｄプリンタ７のデータ処理部７ａに送信する。データ処理部７ａは、受信した出力適否データに付与されたモデルＩＤでプリンタキュー内の出力ジョブを参照する。そして、出力適否データが“適（出力適正）”である場合、データ処理部７ａは、その出力ジョブを待機状態から出力状態に変更し、出力部７ｂに対象モデルを出力する。これは、出力を規制すべきでないと判定された場合を示している。一方、出力適否データが“否（出力不適）”である場合、データ処理部７ａは、その出力ジョブを破棄する。すなわち、プリンタキューから削除する。
【０３３７】
＜８．度数分布算出事例＞
図４６、図４７に、球体（実際には、球体に近似した多面体）および円について、上記実施形態に係る立体物造形用データ出力規制装置による度数分布算出事例を示す。図４６、図４７のいずれにおいても、左端にポリゴンモデルまたは画像、中央に他方式による度数分布、右端に本発明による度数分布を示している。度数分布は、他方式については、上段がポリゴン間三角形（またはエッジ点間三角形）の面積分布（面積の平方根の分布：Ｄｉｓｔａｎｃｅ）を示し、下段がポリゴン間三角形（またはエッジ点間三角形）の一頂点の角度分布（Ａｎｇｌｅ）を示している。本発明については、上段が外接円分布（ＯｕｔＲａｄｉｕｓ）を示し、下段が内接円分布（ＩｎＲａｄｉｕｓ）を示している。
【０３３８】
図４６（ａ）の球体ａ（実際には、球体に近似した多面体）は、ポリゴンモデル（５０４０ポリゴン）である。図４６（ｄ）の円ｂは２次元二値画像である。図４７（ａ）は、球体ａの２次元シェーディング画像である円ｃを示す図である。図４６、図４７において、他方式の面積分布は、３つのポリゴンで形成したポリゴン間三角形の面積に基づく面積分布と３つのエッジ点で形成したエッジ点間三角形の面積に基づく面積分布であり、他方式の角度分布は、３つのポリゴンで形成したポリゴン間三角形の一頂点の角度分布と３つのエッジ点で形成したエッジ点間三角形の一頂点の角度分布である。球体ａのポリゴンモデルと円ｂの２次元二値画像、球体ａのポリゴンモデルと円ｃの２次元シェーディング画像の２組の度数分布を他方式および本発明の２方式で比較した場合、他方式のいずれの度数分布および本発明の内接円分布では、顕著な差が見られず大きな正の相関が見られた。しかし、本発明の外接円分布では、相関値は正の値の範囲で低い値になり、両者に若干の相違があることが検出されている。このため、本発明における、３つのポリゴンまたはエッジ点で形成した三角形の外接円の半径に基づく外接円分布と３つのポリゴンまたはエッジ点で形成した三角形の内接円の半径に基づく内接円分布の方が、他方式に比べて類似性を発見し易く相違点も検出でき、出力規制を高精度に行えることがわかる。図１６に示したステップＳ７３０、Ｓ７５０においては、外接円分布、内接円分布の相関係数の判定しきい値を２段階に設定しておくこともできる。外接円分布、内接円分布の相関係数の判定しきい値を＋５．０と＋８０．０の２段階に設定した場合、ステップＳ７３０における照合により、相関係数Ｄｄ（ｒｅ）、Ｄａ（ｒｅ）が＋５．０以上＋８０．０未満の場合に仮適合と判定し（相違点検出）、相関係数Ｄｄ（ｒｅ）、Ｄａ（ｒｅ）が＋８０．０以上の場合に完全適合と判定する。これにより、類似性を発見し易く相違点も検出でき、出力規制を高精度に行うことができる。２段階それぞれの判定しきい値については適宜変更が可能である。
【０３３９】
図４８、図４９に、達磨について、上記実施形態に係る立体物造形用データ出力規制装置による度数分布算出事例を示す。図４８の（ａ）は３次元ポリゴンモデル、図４８の（ｄ）および図４９の（ａ）（ｄ）は２次元画像で、図４８、図４９のいずれにおいても、中央に他方式による度数分布、右端に本発明による度数分布を示している。度数分布は、他方式については、上段がポリゴン間三角形（またはエッジ点間三角形）の面積分布（面積の平方根の分布：Ｄｉｓｔａｎｃｅ）を示し、下段がポリゴン間三角形（またはエッジ点間三角形）の一頂点の角度分布（Ａｎｇｌｅ）を示している。本発明については、上段が外接円分布（ＯｕｔＲａｄｉｕｓ）を示し、下段が内接円分布（ＩｎＲａｄｉｕｓ）を示している。
【０３４０】
図４８（ａ）の達磨ｄは、ポリゴンモデル（１５９４４ポリゴン）であり、図５０（ａ）の達磨の２次元写真画像である達磨ｈを手本に抽象化し３Ｄモデルを制作したものである。図４８（ｄ）は、達磨ｄの２次元シェーディング画像である達磨ｅを示す図である。このシェーディング画像は、２５６階調のグレースケール画像である。図４９（ａ）（ｄ）は、達磨ｈを基に制作した２次元イラスト画像を示す図である。これらのイラスト画像は、二値または三値等の少ない階調の画像である。図４９（ａ）は二値画像で、図４９（ｄ）は、三値画像である。図５０（ａ）は、これらの手本にした達磨の２次元写真画像である達磨ｈを示す図である。図４８、図４９、図５０において、他方式の面積分布は、３つのポリゴンで形成したポリゴン間三角形の面積に基づく面積分布と３つのエッジ点で形成したエッジ点間三角形の面積に基づく面積分布であり、他方式の角度分布は、３つのポリゴンで形成したポリゴン間三角形の一頂点の角度分布と３つのエッジ点で形成したエッジ点間三角形の一頂点の角度分布である。達磨ｄと達磨ｅ、達磨ｄと達磨ｆ、達磨ｄと達磨ｇおよび達磨ｄと達磨ｈの４組の度数分布を他方式および本発明の２方式で比較した場合、達磨ｄと達磨ｇの面積分布を除き、他方式のいずれの度数分布で、顕著な差が見られず大きな正の相関が見られた。一方、本発明では、達磨ｄと達磨ｅおよび達磨ｄと達磨ｆに対しては、いずれの度数分布で顕著な差が見られず大きな正の相関が見られたが、達磨ｄと達磨ｇおよび達磨ｄと達磨ｈに対しては、外接円分布の相関値は正の値の範囲で低い値になり、更に達磨ｄと達磨ｇに対しては、外接円分布の相関値も正の値の範囲で低い値になり、各々に若干の相違があることが検出されている。このため、本発明における、３つのポリゴンまたはエッジ点で形成した三角形の外接円の半径に基づく外接円分布と３つのポリゴンまたはエッジ点で形成した三角形の内接円の半径に基づく内接円分布の方が、他方式に比べて類似性を発見し易く相違点も検出でき、出力規制を高精度に行えることがわかる。
【０３４１】
図５１に、頭蓋骨について、上記実施形態に係る立体物造形用データ出力規制装置による度数分布算出事例を示す。図５１においても、図４６〜図５０と同様、左端にポリゴンモデルおよび画像、中央に他方式による度数分布、右端に本発明による度数分布を示している。度数分布は、他方式については、上段がポリゴン間三角形（またはエッジ点間三角形）の面積分布（面積の平方根の分布：Ｄｉｓｔａｎｃｅ）を示し、下段がポリゴン間三角形（またはエッジ点間三角形）の一頂点の角度分布（Ａｎｇｌｅ）を示している。本発明については、上段が外接円分布（ＯｕｔＲａｄｉｕｓ）を示し、下段が内接円分布（ＩｎＲａｄｉｕｓ）を示している。
【０３４２】
図５１（ａ）の頭蓋骨ｉは、ポリゴンモデル（２４９８５４ポリゴン）である。図５１（ｄ）の頭蓋骨ｊは、頭蓋骨ｉの２次元シェーディング画像である。図５１において、他方式の面積分布は、３つのポリゴンで形成したポリゴン間三角形の面積に基づく面積分布と３つのエッジ点で形成したエッジ点間三角形の面積に基づく面積分布であり、他方式の角度分布は、３つのポリゴンで形成したポリゴン間三角形の一頂点の角度分布と３つのエッジ点で形成したエッジ点間三角形の一頂点の角度分布である。頭蓋骨ｉと頭蓋骨ｊの度数分布を他方式および本発明の２方式で比較した場合、他方式および本発明のいずれの度数分布でも顕著な差が見られず大きな正の相関が見られ、他方式に比べ相関値が高かった。このため、このようなサンプル形状においても、他方式と同等以上に適合するポリゴンモデルを発見し易く、出力規制を行い易いことがわかる。
【０３４３】
＜９．変形例等＞
以上、本発明の好適な実施形態について説明したが、本発明は上記実施形態に限定されず、種々の変形が可能である。例えば、上記実施形態では、処理対象の規制画像をモノクロ２５６階調の画素で表現されたラスター形式としたが、ベクトル形式のイラスト画像であってもよく、その場合はエッジ線が与えられるため、フィルタ演算によるエッジ点抽出の処理を簡素化できる。また、処理対象のポリゴンを三角形状としたが、四角形以上の多角形状であってもよい。
【０３４４】
また、上記実施形態では、度数分布データベースに、規制画像の度数分布、規制モデルの度数分布を登録しておき、対象モデルから作成した度数分布と照合するようにしたが、規制モデルの度数分布については、必ずしも登録、照合を行う必要はない。また、度数分布データベースに規制画像自体も登録することを推奨しているが、許諾が得られなければ登録しなくてもよい。また、規制モデル自体については登録しないことを推奨しているが、許諾が得られれば登録してもよい。
【０３４５】
また、上記実施形態では、ポリゴン間三角形を構成するためのポリゴン上の一点として、ポリゴンの各頂点の平均座標をもつポリゴン平均点を用いたが、ポリゴン上の点であれば、ポリゴン平均点以外の点であってもよい。例えば、ポリゴン上の点としては、ポリゴンの重心点、ポリゴンの頂点のｘｙｚ座標別の最大値と最小値の丁度中間となる値をもつ点、等を用いることができる。
【０３４６】
また、上記実施形態では、対象モデルと規制画像（または規制モデル）の照合対象の度数分布として外接円分布と内接円分布を用いたが、内接円分布を用いず、外接円分布のみを用いるようにしてもよい。
【符号の説明】
【０３４７】
１、１ａ、１１、１１ａ、８１・・・ＣＰＵ（Central Processing Unit）
２、２ａ、１２、１２ａ、８２・・・ＲＡＭ（Random Access Memory）
３、３ａ、１３、１３ａ、８３・・・記憶装置
４、４ａ、１４、１４ａ、８４・・・キー入力Ｉ／Ｆ
５、５ａ、１５、１５ａ、８５・・・データ入出力Ｉ／Ｆ
６、６ａ、１６、１６ａ、８６・・・表示部
７・・・３Ｄプリンタ（立体物造形装置）
７ａ・・・データ処理部
７ｂ・・・出力部
８、８ａ、１８、１８ａ・・・ネットワーク通信部
１０・・・モデル度数分布算出手段
２０・・・度数分布照合手段
３０、３１・・・対象モデル記憶手段
４０・・・度数分布データベース
４１・・・規制画像データベース
５０・・・対象モデル受信手段
６０・・・出力適否データ送信手段
９１・・・規制画像記憶手段
９２・・・画像度数分布算出手段
９３・・・画像度数分布記憶手段
１００、１０１・・・立体物造形用データ出力規制装置
２０１・・・出力制御用端末
２０２・・・処理サーバ
３００、３０１・・・画像度数分布算出装置
【図１】
0006638341.tif 000002
【図２】
0006638341.tif 000003
【図３】
0006638341.tif 000004
【図４】
0006638341.tif 000005
【図５】
0006638341.tif 000006
【図６】
0006638341.tif 000007
【図７】
0006638341.tif 000008
【図８】
0006638341.tif 000009
【図９】
0006638341.tif 000010
【図１０】
0006638341.tif 000011
【図１１】
0006638341.tif 000012
【図１２】
0006638341.tif 000013
【図１３】
0006638341.tif 000014
【図１４】
0006638341.tif 000015
【図１５】
0006638341.tif 000016
【図１６】
0006638341.tif 000017
【図１７】
0006638341.tif 000018
【図１８】
0006638341.tif 000019
【図１９】
0006638341.tif 000020
【図２０】
0006638341.tif 000021
【図２１】
0006638341.tif 000022
【図２２】
0006638341.tif 000023
【図２３】
0006638341.tif 000024
【図２４】
0006638341.tif 000025
【図２５】
0006638341.tif 000026
【図２６】
0006638341.tif 000027
【図２７】
0006638341.tif 000028
【図２８】
0006638341.tif 000029
【図２９】
0006638341.tif 000030
【図３０】
0006638341.tif 000031
【図３１】
0006638341.tif 000032
【図３２】
0006638341.tif 000033
【図３３】
0006638341.tif 000034
【図３４】
0006638341.tif 000035
【図３５】
0006638341.tif 000036
【図３６】
0006638341.tif 000037
【図３７】
0006638341.tif 000038
【図３８】
0006638341.tif 000039
【図３９】
0006638341.tif 000040
【図４０】
0006638341.tif 000041
【図４１】
0006638341.tif 000042
【図４２】
0006638341.tif 000043
【図４３】
0006638341.tif 000044
【図４４】
0006638341.tif 000045
【図４５】
0006638341.tif 000046
【図４６】
0006638341.tif 000047
【図４７】
0006638341.tif 000048
【図４８】
0006638341.tif 000049
【図４９】
0006638341.tif 000050
【図５０】
0006638341.tif 000051
【図５１】
0006638341.tif 000052