以下、本発明の好適な実施形態について図面を参照して詳細に説明する。
<1.本発明の基本概念>
最初に、本発明の基本概念について説明しておく。3Dプリンタでキャラクターのモチーフ画像を基に、フィギュアを造形するためには、3次元のポリゴンモデルを制作する必要があるが、近年、画面上に表示されているイラストや写真の上をトレースするだけで、自動的に円柱形状などにより奥行きを付加し、3次元のポリゴンモデルを半自動的に制作できるツールの開発が活発になっている。これに伴い、キャラクターやイラストなど著作物性の高い二次元の画像を基に、3Dプリンタにより違法なフィギュアが容易に制作され、金型等で成形されるフィギュア正規品の市場が圧迫されようとしている。
本発明では、キャラクターやイラストなど著作物性の高い二次元の画像を基に、3次元のポリゴンモデルを作成し、このポリゴンモデルをキャラクターやイラストの権利者の許可なく出力しようとした際に、出力を規制することを一つの目的としている。しかし、事前に違法なフィギュアの3次元のポリゴンモデルをデータベース化することは困難で、たとえデータベースに登録できても、キャラクターのモチーフ画像を基に制作される3次元のポリゴンモデルの形状には無尽蔵の多様性があり、出力対象のポリゴンモデルをデータベースに登録されているポリゴンモデルと照合する方法ではタイムリーな出力規制を行うことができない。そこで、データベースには多様性が少ない典型的なキャラクターの2次元モチーフ画像を登録し、3次元のポリゴンモデルを3Dプリンタで出力しようとした際に、登録されている2次元の画像を用いて照合を行えるようにする機能を実現する必要がある。
図1は、本発明の基本概念を説明するための図である。図1(a)は、出力しようとする3次元のポリゴンモデルであり、図1(b)は、データベースに登録された規制すべき2次元の画像である。本発明では、図1(a)に示したポリゴンモデルから図1(c)に示した距離、角度についての2種の度数分布を作成し、図1(b)に示した画像から図1(c)に示したような距離、角度についての2種の度数分布を図1(d)に示すように作成する。そして、図1(c)および図1(d)に示す距離、角度についての2種の度数分布に対して、互いに整合性をもたせるようにすれば、これらを照合し、その相関をとることにより、図1(a)に示すポリゴンモデルと図1(b)に示す画像の類似性を判定することができる。ポリゴンモデルが登録された画像に類似する特徴をもつ場合には、当該ポリゴンモデルの出力が規制されることになる。
<2.第1の実施形態>
<2.1.画像度数分布算出装置の装置構成>
第1の実施形態では、3次元のポリゴンモデルの出力適否の判定を行う際に、ポリゴンモデルから作成した度数分布と、規制対象とする2次元の画像から作成した度数分布との照合を行う。このため、事前に画像から度数分布を作成しておく必要がある。まず、このような画像から度数分布を作成する画像度数分布算出装置について説明する。
図2は、画像度数分布算出装置のハードウェア構成図である。画像度数分布算出装置300は、汎用のコンピュータで実現することができ、図2に示すように、CPU(Central Processing Unit)81と、コンピュータのメインメモリであるRAM(Random Access Memory)82と、CPU81が実行するプログラムやデータを記憶するためのハードディスク、フラッシュメモリ等の大容量の記憶装置83と、キーボード、マウス等のキー入力I/F(インターフェース)84と、3Dプリンタやデータ記憶媒体等の外部装置とデータ通信するためのデータ入出力I/F(インターフェース)85と、液晶ディスプレイ等の表示デバイスである表示部86と、を備え、互いにバスを介して接続されている。
図3は、画像度数分布算出装置の構成を示す機能ブロック図である。図3において、91は規制画像記憶手段、92は画像度数分布算出手段、93は画像度数分布記憶手段である。
画像度数分布算出手段92は、規制対象の画像である規制画像に対して、規制画像内の各エッジ点間の距離と各エッジ点間固有の角度を算出し、算出結果に基づいて各エッジ点間の距離の度数分布である距離分布と、各エッジ点間固有の角度の度数分布である角度分布を算出する処理を行う。
画像度数分布算出手段92は、CPU81が、記憶装置83に記憶されているプログラムを実行することにより実現される。規制画像記憶手段91は、出力を規制すべき画像である規制画像を記憶した記憶手段であり、記憶装置83により実現される。
画像度数分布記憶手段93は、出力を規制すべき画像である規制画像に対して、2種の度数分布として算出された距離分布および角度分布を記憶して、データベース化したものであり、記憶装置83により実現される。2種の度数分布である距離分布および角度分布は、規制画像の特徴を表現した特徴ベクトルとしての役割を果たすものとなる。即ち、2種の度数分布により、元の規制画像の相違を識別可能であるが、元の規制画像を復元できるわけではない。これは、指紋(フィンガープリント)により個人の相違を識別可能であるが、人物の姿そのものを復元できるわけではないのと同様である。したがって、2種の度数分布は、著作物としての役割は果たさないが、2つの著作物の同一性を証明する、いわゆるフィンガープリントとしての役割を果たすことになる。画像度数分布記憶手段93には、距離分布および角度分布だけでなく、距離分布および角度分布の算出の基になった規制画像自体を登録しておけば類似性が判定された規制画像に対してヒトが目視で確認できるため、通常は、著作権者から許諾を受け、商用品質に値しない解像度で規制画像自体も登録される。
図3に示した各構成手段は、現実には図2に示したように、コンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。すなわち、コンピュータが、専用のプログラムに従って各手段の内容を実行することになる。
図2に示した記憶装置83には、CPU81を動作させ、コンピュータを、画像度数分布算出装置として機能させるための専用のプログラムが実装されている。この専用のプログラムを実行することにより、CPU81は、画像度数分布算出手段92としての機能を実現することになる。また、記憶装置83は、規制画像記憶手段91、画像度数分布記憶手段93として機能するだけでなく、画像度数分布算出装置としての処理に必要な様々なデータを記憶する。
<2.2.画像度数分布算出装置の処理動作>
次に、図2、図3に示した画像度数分布算出装置の処理動作について説明する。画像度数分布算出装置の画像度数分布算出手段92は、出力を規制すべき画像である規制画像について、2種の度数分布である距離分布および角度分布を算出する。図4は、度数分布の算出処理の詳細を示すフローチャートである。ここでは、後述するフィルタ演算を簡便に行うため、規制画像を256階調のモノクロ画像として扱う。したがって、カラー画像の場合は、事前に256階調のモノクロ画像に変換する処理を行っておき、二値画像の場合は、0または255のいずれかの値をもつ256階調のモノクロ画像として処理する。したがって、x方向の画素数Xs、y方向の画素数Ysの規制画像は、Img(x,y)=0〜255(x=0,・・・,Xs−1;y=0,・・・,Ys−1)と定義される。規制画像には、対象物部分と背景部分が存在し、対象物部分はグレーまたは白く表示されるImg(x,y)>0に設定し、背景部分は黒く表示されるImg(x,y)=0に設定する。規制画像の四隅は、背景となるため、Img(0,0)=Img(0,Ys−1)=Img(Xs−1,0)=Img(Xs−1,Ys−1)=0となっている。
画像度数分布算出手段92は、まず、規制画像の各画素についてフィルタ演算を行い、各画素のエッジ強度とエッジ方向ベクトルを算出する(ステップS510)。まず、フィルタ演算に用いるフィルタマトリクスであるエッジ抽出フィルタについて説明する。フィルタマトリクスとは、マトリクスフィルタ、空間フィルタなどとも呼ばれ、一般には、中心画素(注目画素)とその周囲の画素の画素値を使用して中心画素の画素値を変換するために用いられるものである。基本的には、規制画像内の全ての画素を対象として行う。
図5は、本実施形態で用いる16方向エッジ抽出フィルタを示す図である。図5に示す16方向エッジ抽出フィルタは、自身を含めた8近傍の9画素の値を16方向の各方向に応じて重みを変化させたものとなっている。図5の例では、方向0から方向15までの16方向について示している。方向0の場合を例にとって説明すると、右側の(0.0,−1.0)は、方向0を特定する単位ベクトルである方向ベクトルを示している。また、縦3×横3の9個の数字は、M(d,u,v)=[−2,−1,1,2]で定義される重みを示している。重みは、−2,−1,1,2の4つの値をとる。そして、9個の数字は、中心を(u,v)=(0,0)として、u,vがそれぞれ−1,0,1の3通りの値をとる。中心の場合、dの値のいかんに関わらず必ずM(d,0,0)=1であり、中心以外の場合、方向dに応じてM(d,u,v)の値の−2、−1,1および2の位置が異なっている。方向0(d=0)の場合、図5の右側の例に示すように、重みM(d,u,v)は、M(0,−1,−1)=−2〜M(0,1,1)=1の9個が定義される。この際、方向0の場合のフィルタの方向ベクトルEx(d),Ey(d)はEx(0)=0.0,Ey(0)=−1.0となる。図5に示した16方向エッジ抽出フィルタは22.5度刻みで方向を変化させたものである。
画像度数分布算出手段92は、図5に示したエッジ抽出フィルタM(d,u,v)を用いて以下の〔数式1〕に従った処理を実行し、各画素のエッジ強度とエッジ方向ベクトルを決定する。
〔数式1〕
F(d,x,y)=[Σv=-1,1Σu=-1,1M(d,u,v)[Img(x,y)−128] ]/6
EK(x,y)=F(dmax,x,y)=MAXd=0,D-1F(d,x,y)
Vx(x,y)=Ex(dmax)
Vy(x,y)=Ey(dmax)
上記〔数式1〕の第1式において、Σの添え字の“v=−1,1”、“u=−1,1”は、vが−1から1、uが−1から1の全ての整数をとる場合について、総和を求めることを示している。上記〔数式1〕の第1式により、各画素について、強度を表すフィルタ演算値F(d,x,y)が得られる。上記〔数式1〕の第2式において、“MAXd=0,D”は、方向d=0から方向d=D−1までの全ての方向の中での最大値を示している。16方向エッジ抽出フィルタを用いる場合は、D=16である。上記〔数式1〕の第2式により、最大のフィルタ演算値が、各画素のエッジ強度EK(x,y)として得られる。また、最大のフィルタ演算値をとり、エッジ強度を与える方向dをdmaxとする。上記〔数式1〕の第3式、第4式により、画素(x,y)のエッジ方向ベクトルVx(x,y),Vy(x,y)は、方向dmaxの方向として得られる。エッジ方向ベクトルとは、エッジ点(対象物のエッジを構成する画素)のエッジを特定する方向を示すベクトルであり、規制画像における対象物と背景との境界部においては境界線と直交し対象物から背景方向に横切る方向を示す。規制画像の対象物内部においては、濃淡差が顕著な境界部においては、境界線と直交し濃度が薄い(白いに近い)方から濃度が濃い(黒に近い)方向に横切る方向を示す。
次に、画像度数分布算出手段92は、各画素のエッジ強度の補正および階調補正を行う(ステップS520)。まず、方向別のエッジ強度補正量を用いてエッジ強度の補正を行う。方向別のエッジ強度補正量Tc(d)を記録したエッジ強度補正テーブルを図6に示す。図6に示すように、エッジ強度補正テーブルには、方向d=0〜15それぞれについて、エッジ強度補正量が記録されている。図6に示すエッジ強度補正テーブルでは、エッジ強度補正量を%単位で示している。上述のように、16方向エッジ抽出フィルタは22.5度刻みとなっており、これに対応してエッジ強度補正テーブルも22.5度刻みとなっている。図6の例では、方向dが4つ異なるごと、すなわち90度異なるごとにエッジ強度補正量が同一値となるように繰り返されている。これは、16方向エッジ抽出フィルタにより算出されるエッジ強度が、90度単位で所定の特性をもつため、それに応じて補正をする必要が生じることを意味している。
画像度数分布算出手段92は、図6に示したエッジ強度補正量Tc(d)を用いて以下の〔数式2〕に従った処理を実行し、各画素のエッジ強度を補正する。
〔数式2〕
EK´(x,y)=EK(x,y)・Tc(d)/100
上記〔数式2〕において、“・”は、乗算を示している。Tc(d)は、図6に示したような%単位の数値であるため、補正前のエッジ強度に乗じた後、100で除算している。この結果、補正されたエッジ強度EK´(x,y)が得られる。
次に、画像度数分布算出手段92は、エッジ強度の階調補正(コントラスト補正)を行う。具体的には、以下の〔数式3〕に従った処理を実行し、各画素のエッジ強度の階調補正を行う。
〔数式3〕
EK´´(x,y)={EK´(x,y)−SL}・256/{256−SL}
上記〔数式3〕において、256は階調数であり、規制画像の画素が取り得る0〜255の数を示している。SLは、階調補正後に最小とする値である設定最小値を示している。設定最小値SLについては、適宜設定することができるが、元の画像が0〜255の値を取り得る場合に、72程度とすることが好ましい。この、設定最小値は、実質的には、エッジ強度と比較することによりエッジ点とするか否かを判定するためのしきい値として機能する。
〔数式2〕によるエッジ強度補正、〔数式3〕による階調補正を行った結果、補正されたエッジ強度EK´´(x,y)が得られるが、説明が繁雑になるのを避けるため、以下では、補正されたエッジ強度をEK(x,y)として説明する。
次に、エッジ点の抽出を行う(ステップS530)。具体的には、ステップS520において補正されたエッジ強度と、事前に設定されたしきい値とを比較し、エッジ強度がしきい値以上の画素をエッジ点として抽出する。ステップS520において階調補正を行っている場合は、しきい値として“0”を設定し、階調補正後のエッジ強度が0以上の画素が抽出されるようにすることが好ましい。
次に、画像度数分布算出手段92は、エッジ方向ベクトルの補正を行う(ステップS540)。上述のように、エッジ方向ベクトルは、エッジ抽出フィルタを用いて、方向dの数Dのいずれかの方向を示すベクトルとして算出される。したがって、例えば、D=16の場合、16通りの方向しかなく、これを用いて算出されるあるエッジ点から他のエッジ点へのベクトル(エッジ点間ベクトル)とのなす角度は、不連続なものになる(エッジ点間ベクトルの方が連続量のため、これとのなす角は16段階に限定されるわけではないが、かなり粗いものになる)。一方、比較対象とする3次元のポリゴンモデルにおいて特定される角度は、エッジ方向ベクトルに相当するポリゴンの法線ベクトルを用いて算出され、法線ベクトルは3次元空間内の連続量であるため、これを用いて算出されるあるポリゴンから他のポリゴンへのベクトル(ポリゴン間ベクトル)とのなす角度は0〜180度の範囲で連続量となる。そのため、規制画像から作成される角度分布は、対象モデルから作成される角度分布に比べて、角度の分解能が粗いものとなり、両者の相関を精度良く計算できなくなる。そのため、ここでは、エッジ点として特定された画素の周囲の画素を用いて、エッジ方向ベクトルの補正を行っている。具体的には、以下の〔数式4〕に従った処理を実行し、各エッジ点のエッジ方向ベクトルを補正する。
〔数式4〕
Vx´(x,y)=[Σv=-1,1Σu=-1,1;EK(x+u,y+v)≧EK(x,y)Vx(x+u,y+v)・EK(x+u,y+v)]/[Σv=-1,1Σu=-1,1;EK(x+u,y+v)≧EK(x,y)EK(x+u,y+v)]
Vy´(x,y)=[Σv=-1,1Σu=-1,1;EK(x+u,y+v)≧EK(x,y)Vy(x+u,y+v)・EK(x+u,y+v)]/[Σv=-1,1Σu=-1,1;EK(x+u,y+v)≧EK(x,y)EK(x+u,y+v)]
上記〔数式4〕においては、EK(x+u,y+v)≧EK(x,y)となる画素についてのみ演算を行っている(中心となる画素(x,y)も加算対象)。EK(x+u,y+v)≧EK(x,y)とは、中心となる画素(エッジ点)のエッジ強度EK(x,y)以上のエッジ強度を有する周囲のエッジ点の画素(x+u,y+v)についてのみ、総和演算を行うことを示している。上記〔数式4〕の分子においては、補正前のエッジ方向ベクトルに補正前のエッジ強度を乗じており、上記〔数式4〕の分母においては、中心の画素(エッジ点)とその8近傍画素を合わせた最大9画素の平均エッジ強度を算出している。結局、上記〔数式4〕においては、対象とするエッジ点(x,y)の周囲のエッジ点(x+u,y+v)におけるエッジを特定する方向Vx(x+u,y+v)と周囲のエッジ点のエッジ強度EK(x+u,y+v)を加重しながら平均化していることになる。
次に、画像度数分布算出手段92は、各エッジ点間のベクトルの算出を行う(ステップS550)。ステップS530において抽出したエッジ点の抽出順をiとすると、Ne個のエッジ点が抽出された場合、エッジ点の配列は[Xe(i),Ye(i)](i=0,・・・,Ne―1)と定義することができる。そして、i番目のエッジ点のエッジ強度EK(i)=EK(Xe(i),Ye(i))とする。さらに、画像度数分布算出手段92は、以下の〔数式5〕に従った処理を実行することにより、規制画像内のあるエッジ点i(Xe(i),Ye(i))から同じ規制画像内の他のエッジ点j(j=0,・・・,Ne−1)(Xe(j),Ye(j))へのベクトルであるエッジ点間ベクトル(Dxe(i,j),Dye(i,j))を算出する。なお、エッジ点間ベクトルは、自分以外の他のエッジ点へのベクトルであるため、i=jの場合を除外している。
〔数式5〕
Dxe(i,j)=Xe(j)−Xe(i)
Dye(i,j)=Ye(j)−Ye(i)
次に、画像度数分布算出手段92は、各エッジ点間の最大距離の算出を行う(ステップS560)。具体的には、以下の〔数式6〕に従った処理を実行することにより、規制画像内のあるエッジ点i(Xe(i),Ye(i))から他のエッジ点j(Xe(j),Ye(j))までの距離De(i,j)を求め、Ne×(Ne−1)/2個の距離De(i,j)のうち最大のものを最大距離Demaxとする。
〔数式6〕
De(i,j)=[Dxe(i,j)2+Dye(i,j)2]1/2
Demax=MAXj=0,Ne-1;i=0,Ne-1De(i,j)
上記〔数式6〕において、MAXは、添え字の“i,j”の取り得る範囲であるi=0,・・・,Ne−1、j=0,・・・,Ne−1(i=jの場合を除く)におけるDe(i,j)の中から最大値を選択することを示している。
次に、画像度数分布算出手段92は、エッジ点間ベクトルと、対応するエッジ点のエッジ方向ベクトルのなす角度の算出を行う(ステップS570)。具体的には、以下の〔数式7〕に従った処理を実行することにより、エッジ点iとエッジ点jの間のエッジ点間ベクトル(Dxe(i,j),Dye(i,j))と、エッジ点jのエッジ方向ベクトル(Vx(j),Vy(j))(=(Vx(x,y),Vy(x,y)))のなす角度Ae(i,j)を算出する。
〔数式7〕
Ae(i,j)=[cos-1[Dxe(i,j)・Vx(j)+Dye(i,j)・Vy(j)]/De(i,j)]・180/π
上記〔数式7〕においては、単位をラジアンから度に変更するため[]で括られた部分に180/πを乗じている。したがって、Ae(i,j)は、0〜180の値をとることになる。各エッジ点間ベクトルと各エッジ方向ベクトルのなす角度は、各エッジ点間固有の角度となる。
次に、画像度数分布算出手段92は、各エッジ点間の距離分布を算出する(ステップS580)。本実施形態で算出される距離分布は、エッジ強度を加重した距離の分布であり、要素数をMDとし、各要素md(md=0,・・・,MD−1)の度数をHdo(md)と表す。
画像度数分布算出手段92は、初期値をHdo(md)=0、EKsum=0と設定し、i=0,・・・,Ne−1、j=0,・・・,Ne−1(i=jの場合を除く)において、以下の〔数式8〕に従った処理を実行することにより、要素mdの度数Hdo(md)を算出する。ここで、EKsumは距離分布Hdo(md)(md=0,・・・,MD−1)において加重されるエッジ強度の総和である。
〔数式8〕
Demax・md/MD≦De(i,j)<Demax・(md+1)/MDならば、
Hdo(md)←Hdo(md)+EK(j)
EKsum←EKsum+EK(j)
上記〔数式8〕は、エッジ点iからエッジ点jまでの距離De(i,j)が、最大距離Demaxにmd/MDを乗じた値以上で、(md+1)/MDを乗じた値より小さい場合に、Hdo(md)にエッジ点jのエッジ強度EK(j)を加算することを意味している。
上記〔数式8〕に従った処理を、Ne(Ne−1)/2個のエッジ点間について実行することにより、距離分布Hdo(md)(md=0,・・・,MD−1)が算出される。各要素には、単なる頻度ではなく、エッジ強度EK(j)が加算されているため、距離分布Hdo(md)は、エッジ強度加重の距離分布を示すことになる。エッジ強度EK(j)でなく単に1を加算するようにすることも可能であるが、その場合、エッジ強度が加味されない距離分布となり、同一の規制画像に対して画素が粗い場合と細かい場合とで、距離分布に顕著な差が生じてしまう。そこで、本実施形態では、距離分布の算出時にエッジ点のエッジ強度を加算するようにしている。上記〔数式8〕に従った処理の実行後、さらにHdo(md)に100/EKsumを乗じてHdo(md)と置き換える処理を実行することにより、単位をエッジ強度率[%]に正規化してもよい。
上記〔数式8〕に従った処理により算出される距離分布は、2次元の規制画像から得られるものであるので、このままでは、後に3次元のポリゴンモデルから得られる距離分布との照合に最適な状態とはなっていない。このため、2次元の規制画像から距離分布を算出する際、球面補正を行うことが好ましい。具体的には、以下の〔数式9〕に従った処理を実行することにより、球面補正エッジ強度EKa(j)を算出する。
〔数式9〕
EKa(j)=EK(j)・De(i,j)・{Demax2−De(i,j)2}1/2
上記〔数式9〕に従った処理を実行することにより算出された球面補正エッジ強度EKa(j)を、上記〔数式8〕におけるEK(j)と置き換えて上記〔数式8〕に従った処理を実行する。球面補正エッジ強度EKa(j)を用いることにより、球面補正が行われ、平面的な規制画像から球面的な特徴を有する距離分布が得られる。
次に、画像度数分布算出手段92は、エッジ点間ベクトルと、対応するエッジ点のエッジ方向ベクトルの角度分布を算出する(ステップS590)。本実施形態で算出される角度分布は、エッジ強度を加重した角度の分布であり、要素数をMAとし、各要素ma(ma=0,・・・,MA−1)の度数をHao(ma)と表す。要素数MAは、上記要素数MDと同一であってもよい。
画像度数分布算出手段92は、初期値をHao(ma)=0と設定し、以下の〔数式10〕に従った処理を実行することにより、要素maの度数Hao(ma)を算出する。
〔数式10〕
180・ma/MA≦Ae(i,j)<180・(ma+1)/MAならば、
Hao(ma)←Hao(ma)+EK(j)
上記〔数式10〕は、エッジ点iとエッジ点jのエッジ点間ベクトルと、エッジ点jのエッジ方向ベクトルのなす角の角度Ae(i,j)が、180にma/MAを乗じた値以上で、(ma+1)/MAを乗じた値より小さい場合に、Hao(ma)にエッジ点jのエッジ強度EK(j)を加算することを意味している。
上記〔数式10〕に従った処理を、Ne(Ne−1)/2個のエッジ点間について実行することにより、角度分布Hao(ma)(ma=0,・・・,MA−1)が算出される。各要素には、単なる頻度ではなく、エッジ強度EK(j)が加算されているため、角度分布Hao(ma)は、エッジ強度加重の角度分布を示すことになる。エッジ強度EK(j)でなく単に1を加算するようにすることも可能であるが、その場合、エッジ強度が加味されない角度分布となり、同一の規制画像に対して画素が粗い場合と細かい場合とで、距離分布に顕著な差が生じてしまう。そこで、本実施形態では、角度分布の算出時にエッジ点のエッジ強度を加算するようにしている。上記〔数式10〕に従った処理の実行後、さらにHao(ma)に100/EKsumを乗じてHao(ma)と置き換える処理を実行することにより、単位をエッジ強度率[%]に正規化してもよい。ここで、EKsumは〔数式8〕に基づいて距離分布を算出する際に求めたEKsumを流用できる。
上記〔数式10〕に従った処理により算出される角度分布は、2次元の規制画像から得られるものであるので、このままでは、後に3次元のポリゴンモデルから得られる角度分布との照合に最適な状態とはなっていない。このため、2次元の規制画像から距離分布を算出する際、球面補正を行うことが好ましい。具体的には、〔数式7〕に基づいてAe(i,j)を算出する際に使用したDe(i,j)を用いて、距離分布の場合と同様、上記〔数式9〕に従った処理を実行することにより、球面補正エッジ強度EKa(j)を算出する。
上記〔数式9〕に従った処理を実行することにより算出された球面補正エッジ強度EKa(j)を、上記〔数式10〕におけるEK(j)と置き換えて上記〔数式10〕に従った処理を実行する。球面補正エッジ強度EKa(j)を用いることにより、球面補正が行われ、平面的な規制画像から球面的な特徴を有する角度分布が得られる。
図4に示した処理により得られた距離分布と角度分布の2種の度数分布は、規制画像を特定する識別情報と対応付けて、画像度数分布記憶手段93に格納される。
規制画像(2D画像)から得られた距離分布と角度分布における距離と角度の関係を図7(a)に示す。図7(a)において、斜線の網掛け部分が規制画像の対象物である。規制画像の対象物とは、背景部分を除いたキャラクターの絵柄等を意味する。この部分は背景とは画素値が大きく異なっている。エッジ点は対象物と背景との境界部または図7(a)の例には存在しないが対象物内での濃淡差が顕著な境界部に位置する。そして、規制画像内のあるエッジ点から同じ規制画像内の他のエッジ点までの距離が各エッジ点間について算出される。各エッジ点間固有の角度は、あるエッジ点から他のエッジ点へのベクトルであるエッジ点間ベクトルと、エッジ点のエッジ方向ベクトルとのなす角度である。
<2.3.立体物造形用データ出力規制装置の構成>
次に、本発明第1の実施形態に係る立体物造形用データ出力規制装置について説明する。図8は、本発明第1の実施形態に係る立体物造形用データ出力規制装置100を含む立体物造形システムのハードウェア構成図である。本実施形態に係る立体物造形用データ出力規制装置100は、汎用のコンピュータで実現することができ、図8に示すように、CPU(Central Processing Unit)1と、コンピュータのメインメモリであるRAM(Random Access Memory)2と、CPU1が実行するプログラムやデータを記憶するためのハードディスク、フラッシュメモリ等の大容量の記憶装置3と、キーボード、マウス等のキー入力I/F(インターフェース)4と、3Dプリンタやデータ記憶媒体等の外部装置とデータ通信するためのデータ入出力I/F(インターフェース)5と、液晶ディスプレイ等の表示デバイスである表示部6と、を備え、互いにバスを介して接続されている。
3Dプリンタ7は、汎用の3Dプリンタであり、立体物の3次元形状をポリゴンの集合で表現したポリゴンモデルである立体物造形用データを基に樹脂、石膏等の素材を加工して立体物を造形する立体物造形装置である。3Dプリンタ7は、データ処理部7aと出力部7bを有している。3Dプリンタ7のデータ処理部7aは、データ入出力I/F5に接続されており、データ入出力I/F5から受け取った立体物造形用データを基に、出力部7bが立体物を造形するようになっている。
図8では、立体物造形用データ出力規制装置100と3Dプリンタ7は分離した形態で示されているが、現在市販されている殆どの3Dプリンタ製品には立体物造形用データ出力規制装置100の構成要素である、CPU1、RAM2、記憶装置3、キー入力I/F4(汎用コンピュータ向けキーボード・マウスではなく、テンキーレベルの数種のボタン)、データ入出力I/F5、表示部6(数行の文字を表示可能な小型液晶パネル、タッチパネルを重畳させキー入力I/F4を兼ねることも多い)も小規模ながら重複して備えている。従って、3Dプリンタ7自体が外部記憶媒体経由で立体物造形用データを直接受け取り、単独で立体物を造形する運用も可能になっている(特に民生用の3Dプリンタではこちらの形態の方が多い)。すなわち、図8に示した立体物造形システムを1つの筐体に収めて、“3Dプリンタ”という製品として流通することも多い。
図9は、本実施形態に係る立体物造形用データ出力規制装置の構成を示す機能ブロック図である。図9において、10はモデル度数分布算出手段、20は度数分布照合手段、30は対象モデル記憶手段、40は度数分布データベースである。
モデル度数分布算出手段10は、出力対象のポリゴンモデルである対象モデルに対して、対象モデル内の各ポリゴン間の距離と各ポリゴン間固有の角度を算出し、算出された距離の度数分布である距離分布を算出し、算出結果に基づいて各ポリゴン間の距離の度数分布である距離分布と、各ポリゴン間固有の角度の度数分布である角度分布とを算出する処理を行う。度数分布照合手段20は、対象モデルについて算出された距離分布、角度分布をそれぞれ、度数分布データベース40に登録されている規制画像の距離分布、角度分布と照合し、出力を規制すべきか否か、すなわち出力不適であるか出力適正であるかを判定する。
モデル度数分布算出手段10、度数分布照合手段20は、CPU1が、記憶装置3に記憶されているプログラムを実行することにより実現される。対象モデル記憶手段30は、出力を規制すべきか否かの判定対象となるポリゴンモデルである対象モデルを記憶した記憶手段であり、記憶装置3により実現される。ポリゴンモデルとは、ポリゴンの集合により3次元空間における所定の立体形状を表現したデータであり、3Dプリンタ等の立体物造形装置に立体物造形用データとして出力されるものである。本実施形態では、ポリゴンモデルのデータ形式としてSTL(Standard Triangulated Language)を採用している。
度数分布データベース40は、出力を規制すべきポリゴンモデルである規制モデル、および出力を規制すべき画像である規制画像に対して2種の度数分布として算出された距離分布および角度分布を記憶して、データベース化したものであり、記憶装置3により実現される。2種の度数分布である距離分布および角度分布は、規制画像や規制モデルの特徴を表現した特徴ベクトルとしての役割を果たすものとなる。即ち、2種の度数分布により、元の規制モデルや規制画像の相違を識別可能であるが、元の規制モデルや規制画像を復元できるわけではない。これは、指紋(フィンガープリント)により個人の相違を識別可能であるが、人物の姿そのものを復元できるわけではないのと同様である。したがって、2種の度数分布は、著作物としての役割は果たさないが、2つの著作物の同一性を証明する、いわゆるフィンガープリントとしての役割を果たすことになる。度数分布データベース40には、距離分布および角度分布だけでなく、距離分布および角度分布の算出の基になった規制モデルや規制画像自体を登録しておくことも可能である。規制モデルについては、通常は、著作権の問題から規制モデル自体は登録されないが、規制画像については、著作権者から許諾を得てデータベース登録される運用が通常であり、照合結果に対してヒトによる目視確認を可能にするため、規制画像自体も併せて登録されることが多い。
図9に示した各構成手段は、現実には図8に示したように、コンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。すなわち、コンピュータが、専用のプログラムに従って各手段の内容を実行することになる。なお、本明細書において、コンピュータとは、CPU等の演算処理部を有し、データ処理が可能な装置を意味し、パーソナルコンピュータなどの汎用コンピュータだけでなく、製品としての“3Dプリンタ”に組み込まれたボードコンピュータも含む。
図8に示した記憶装置3には、CPU1を動作させ、コンピュータを、立体物造形用データ出力規制装置として機能させるための専用のプログラムが実装されている。この専用のプログラムを実行することにより、CPU1は、モデル度数分布算出手段10、度数分布照合手段20としての機能を実現することになる。また、記憶装置3は、対象モデル記憶手段30、度数分布データベース40として機能するだけでなく、立体物造形用データ出力規制装置としての処理に必要な様々なデータを記憶する。
<2.4.立体物造形用データ出力規制装置の処理動作>
<2.4.1.前処理>
次に、図8、図9に示した立体物造形用データ出力規制装置の処理動作について説明する。まず、上述のような、画像度数分布算出装置により、出力を規制すべき画像である規制画像から2種の度数分布を作成し、作成した度数分布を、度数分布データベース40に登録しておく。画像度数分布算出装置は、立体物造形用データ出力規制装置と別のコンピュータで実現する必要はなく、立体物造形用データ出力規制装置を実現するコンピュータに、画像度数分布算出装置を実現するためのプログラムを組み込んでおくこともできる。
さらに、規制画像から作成した度数分布だけでなく、規制対象とするポリゴンモデルである規制モデルを表現した度数分布を作成し、度数分布データベース40に登録しておくこともできる。この場合、規制モデルについて、2種の度数分布である距離分布および角度分布を作成する。ポリゴンモデルからの距離分布および角度分布の作成については、後述する立体物造形用データ出力規制装置における処理と同様にして行うことができる。規制モデルからの距離分布および角度分布の作成は、立体物造形用データ出力規制装置で行ってもよいし、別のコンピュータで同様のプログラムを実行することにより行ってもよい。作成された距離分布および角度分布は、度数分布データベース40に登録される。2次元データである規制画像から作成される度数分布と、3次元データである規制モデルから作成される度数分布は、同一の形式になるように作成される。これにより、後述する照合時において、規制画像と規制モデルのどちらについても、同様に照合を行うことが可能となる。
出力規制の対象は、銃砲・刀剣などの危険物だけでなく、キャラクターなどの著作物となることもある。いずれの場合においても、制作された画像やポリゴンモデルには著作権者が存在する著作物になる。したがって、著作物である画像やポリゴンモデルをデータベースに登録するためには、その行為自体に著作者の許諾が必要となる。画像については著作権者が明示されている法人である場合が多く、許諾を得ることが可能であるが、ポリゴンモデルについては個人など著作権者が不明なものも多く、許諾を得ることが困難である。距離分布および角度分布の形式により、元の画像やポリゴンモデルの相違を識別可能であるが、元の画像やポリゴンモデルを復元できるわけではない。これは、指紋(フィンガープリント)により個人の相違を識別可能であるが、人物の姿そのものを復元できるわけではないのと同様で、距離分布および角度分布の形式はフィンガープリントに相当し、著作物には該当しない。
そこで、本発明のように、距離分布および角度分布の形式で登録することにより、著作者の許諾を必要とせずに、規制画像や規制モデルの特徴を記録したデータベースを構築することができる。ただし、規制画像については、著作者の許諾を得て商用利用できないレベルに解像度を落とした状態で規制画像自体も併せて登録し、距離分布および角度分布の形式で照合し適合した規制画像をヒトが目視で確認できるようにする運用をとることが望ましい。
<2.4.2.処理概要>
次に、図8、図9に示した立体物造形用データ出力規制装置の処理動作について説明する。図10は、本発明第1の実施形態に係る立体物造形用データ出力規制装置の処理概要を示すフローチャートである。まず、モデル度数分布算出手段10が、ポリゴンモデルである対象モデルについて、2種の度数分布である距離分布および角度分布を算出する(ステップS100)。そして、算出された対象モデルの度数分布と、度数分布データベース40に登録された規制画像や規制モデルの度数分布との照合を行う(ステップS200)。
<2.4.3.度数分布の算出処理>
まず、ステップS100のモデル度数分布の算出処理について説明する。図11は、モデル度数分布の算出処理の詳細を示すフローチャートである。ここでは、対象モデルのポリゴン数N、ポリゴンを特定する変数i(i=0,・・・,N−1)とし、各ポリゴンiの頂点を(Xu(i),Yu(i),Zu(i))と定義されたものとする。uは頂点番号を示しており、本実施形態では、ポリゴンが三角形であるため、u=0,1,2の3つの値をとる。したがって、例えばXu(i)は、X0(i)、X1(i)、X2(i)とも表記される。また、各ポリゴンiの法線ベクトルを(Xn(i),Yn(i),Zn(i))と定義する。頂点を特定したポリゴンおよび法線ベクトルは、立体物造形装置である3Dプリンタによる出力に必要なものであり、法線ベクトルの方向が造形面の外側(材料から空中方向)を示す。
モデル度数分布算出手段10は、まず、対象モデルを構成する各ポリゴンiの面積S(i)、N個のポリゴンの面積S(i)の総和である総面積Ssumを以下の〔数式11〕に従った処理を実行することにより算出する(ステップS110)。
〔数式11〕
Vx=[Y1(i)−Y0(i)][Z2(i)−Z0(i)]−[Z1(i)−Z0(i)][ Y2(i)−Y0(i)]
Vy=[Z1(i)−Z0(i)][X2(i)−X0(i)]−[X1(i)−X0(i)][ Z2(i)−Z0(i)]
Vz=[X1(i)−X0(i)][Y2(i)−Y0(i)]−[Y1(i)−Y0(i)][X2(i)−X0(i)]
S(i)=[Vx(i)2+Vy(i)2+Vz(i)2]1/2
Ssum=Σi=0,N-1S(i)
上記〔数式11〕において、Σの添え字の“i=0,N−1”は、iが0からN−1の全ての整数をとる場合について、総和を求めることを示している。次に、対象モデルを構成する各ポリゴンについて、頂点の平均となる平均点を算出する(ステップS120)。具体的には、以下の〔数式12〕に従った処理を実行することにより、各ポリゴンの平均点(Xc(i),Yc(i),Zc(i))を算出する。
〔数式12〕
Xc(i)={X0(i)+X1(i)+X2(i)}/3
Yc(i)={Y0(i)+Y1(i)+Y2(i)}/3
Zc(i)={Z0(i)+Z1(i)+Z2(i)}/3
上記〔数式12〕において、X0(i)、X1(i)、X2(i)はそれぞれXu(i)において、頂点番号u=0,1,2の場合を示し、Y0(i)、Y1(i)、Y2(i)はそれぞれYu(i)において、頂点番号u=0,1,2の場合を示し、Z0(i)、Z1(i)、Z2(i)はそれぞれZu(i)において、頂点番号u=0,1,2の場合を示している。上記〔数式12〕に示すように、各ポリゴンの平均点は、ポリゴンの各頂点の平均座標をもつ点として算出される。
次に、モデル度数分布算出手段10は、各ポリゴン平均点間のベクトルの算出を行う(ステップS130)。具体的には、以下の〔数式13〕に従った処理を実行することにより、対象モデル内のあるポリゴンiの平均点(Xc(i),Yc(i),Zc(i))から同じ対象モデル内の他のポリゴンj(j=0,・・・,N−1)の平均点(Xc(j),Yc(j),Zc(j))へのベクトルであるポリゴン間ベクトル(Dx(i,j),Dy(i,j),Dz(i,j))を算出する。なお、ポリゴン間ベクトルは、自分以外の他のポリゴンへのベクトルであるため、i=jの場合を除外している。
〔数式13〕
Dx(i,j)=Xc(j)−Xc(i)
Dy(i,j)=Yc(j)−Yc(i)
Dz(i,j)=Zc(j)−Zc(i)
次に、モデル度数分布算出手段10は、各ポリゴン平均点間の最大距離の算出を行う(ステップS140)。具体的には、以下の〔数式14〕に従った処理を実行することにより、対象モデル内のあるポリゴンiの平均点(Xc(i),Yc(i),Zc(i))から他のポリゴンjの平均点(Xc(j),Yc(j),Zc(j))までの距離D(i,j)を求め、N(N−1)/2個の距離D(i,j)のうち最大のものを最大距離Dmaxとする。
〔数式14〕
D(i,j)=[Dx(i,j)2+Dy(i,j)2+Dz(i,j)2]1/2
Dmax=MAXi,jD(i,j)
上記〔数式14〕において、MAXは、添え字の“i,j” の取り得る範囲であるi=0,・・・,N−1、j=0,・・・,N−1(i=jの場合を除く)におけるD(i,j)の中から最大値を選択することを示している。
次に、モデル度数分布算出手段10は、あるポリゴンから他のポリゴンへのベクトルであるポリゴン間ベクトルと、対応するポリゴンの法線ベクトルのなす角度の算出を行う(ステップS150)。ポリゴン間ベクトルと対応するポリゴンとは、ポリゴン間ベクトルを算出する基になったポリゴンiとポリゴンjを意味するが、ここでは、一方のポリゴンであるポリゴンjを用いる。具体的には、以下の〔数式15〕に従った処理を実行することにより、ポリゴンiとポリゴンjの間のポリゴン間ベクトル(Dx(i,j),Dy(i,j),Dz(i,j))と、ポリゴンjの法線ベクトル(Xn(j),Yn(j),Zn(j))のなす角度A(i,j)を算出する。
〔数式15〕
A(i,j)=[cos-1[Dx(i,j)Xn(j)+Dy(i,j)Yn(j)+Dz(i,j)Zn(j)]/D(i,j)]・180/π
上記〔数式15〕においては、単位をラジアンから度に変更するため[]で括られた部分に180/πを乗じている。したがって、A(i,j)は、0〜180の値をとることになる。各ポリゴン間ベクトルと、法線ベクトルのなす角度は、各ポリゴン間固有の角度となる。
次に、モデル度数分布算出手段10は、各ポリゴン平均点間の距離分布を算出する(ステップS160)。本実施形態で算出される距離分布は、面積加重した距離の分布であり、要素数をMDとし、各要素md(md=0,・・・,MD−1)の度数をHd(md)と表す。
モデル度数分布算出手段10は、初期値をHd(md)=0と設定し、以下の〔数式16〕に従った処理を実行することにより、要素mdの度数Hd(md)を、i=0,・・・,N−1、j=0,・・・,N−1(i=jの場合を除く)について、算出する。
〔数式16〕
Dmax・md/MD≦D(i,j)<Dmax・(md+1)/MDならば、
Hd(md)←Hd(md)+S(j)
Ssum←Ssum+S(j)
上記〔数式16〕は、ポリゴンiの平均点からポリゴンjの平均点までの距離D(i,j)が、最大距離Dmaxにmd/MDを乗じた値以上で、(md+1)/MDを乗じた値より小さい場合に、Hd(md)にポリゴンjの面積S(j)を加算することを意味している。
上記〔数式16〕に従った処理を、N(N−1)/2個のポリゴン間距離について実行することにより、距離分布Hd(md)(md=0,・・・,MD−1)が算出される。各要素には、単なる頻度ではなく、面積S(j)が加算されているため、距離分布Hd(md)は、面積加重の距離分布を示すことになる。面積S(j)でなく単に1を加算するようにすることも可能であるが、その場合、ポリゴンの面積が加味されない距離分布となり、同一のポリゴンモデルに対してポリゴン構成が粗い場合と細かい場合とで、距離分布に顕著な差が生じてしまう。そこで、本実施形態では、距離分布算出時にポリゴンの面積を加算するようにしている。また、上記〔数式16〕で算出されたHd(md)に、更に100/Ssumを乗じてHd(md)と置き換えることにより、単位を面積率[%]に正規化している。これにより、ポリゴンの面積の総和値が異なる、即ちスケールが異なるポリゴンモデルであっても同一の距離分布に変換され、スケールに関わらず形状の判定が可能になる。
次に、モデル度数分布算出手段10は、各ポリゴン平均点間のベクトルであるポリゴン間ベクトルと、対応する一方のポリゴンの法線ベクトルの角度分布を算出する(ステップS170)。本実施形態で算出される角度分布は、面積加重した角度の分布であり、要素数をMAとし、各要素ma(ma=0,・・・,MA−1)の度数をHa(ma)と表す。要素数MAは、上記要素数MDと同一であってもよい。
モデル度数分布算出手段10は、初期値をHa(ma)=0と設定し、以下の〔数式17〕に従った処理を実行することにより、要素maの度数Ha(ma)を、i=0,・・・,N−1、j=0,・・・,N−1(i=jの場合を除く)について、算出する。
〔数式17〕
180・ma/MA≦A(i,j)<180・(ma+1)/MAならば、
Ha(ma)←Ha(ma)+S(j)
上記〔数式17〕は、ポリゴンiとポリゴンjのポリゴン間ベクトルと、ポリゴンjの法線ベクトルのなす角の角度A(i,j)が、180にma/MAを乗じた値以上で、(ma+1)/MAを乗じた値より小さい場合に、Ha(ma)にポリゴンjの面積S(j)を加算することを意味している。
上記〔数式17〕に従った処理を、N(N−1)/2個のポリゴン間について実行することにより、角度分布Ha(ma)(ma=0,・・・,MA−1)が算出される。各要素には、単なる頻度ではなく、面積S(j)が加算されているため、角度分布Ha(ma)は、面積加重の角度分布を示すことになる。面積S(j)でなく単に1を加算するようにすることも可能であるが、その場合、ポリゴンの面積が加味されない角度分布となり、同一のポリゴンモデルに対してポリゴン構成が粗い場合と細かい場合とで、距離分布に顕著な差が生じてしまう。そこで、本実施形態では、角度分布算出時にポリゴンの面積を加算するようにし、さらにHa(ma)に100/Ssumを乗じてHa(ma)と置き換えることにより、単位を面積率[%]に正規化している。これにより、ポリゴンの面積の総和値が異なる、即ちスケールが異なるポリゴンモデルであっても同一の距離分布に変換され、スケールに関わらず形状の判定が可能になる。
本実施形態では、各ポリゴン間の距離と各ポリゴン間固有の角度の算出に際し、各ポリゴンの平均点間のベクトルをポリゴン間ベクトルとして求めるようにした。ポリゴン間を結ぶベクトルは、ポリゴンの各頂点の平均点とすることが好ましいが、平均点以外のポリゴン上の所定の点(例えばポリゴンを構成するいずれかの頂点)同士を結んだベクトルをポリゴン間ベクトルとするようにすることも可能である。
対象モデルから得られた距離分布と角度分布における距離と角度の関係を図7(b)に示す。図7(b)は、ポリゴンモデル(3Dモデル)の一断面を示している。図7(b)において、周囲の線分がポリゴンを示している。1つのポリゴンの頂点の平均座標をもつ平均点と、他のポリゴンの平均点までの距離が各ポリゴン間について算出される。各ポリゴン間固有の角度は、あるポリゴンの平均点から他のポリゴンの平均点へのベクトルであるポリゴン間ベクトルと、ポリゴンの法線ベクトルとのなす角度である。
<2.4.4.度数分布の照合処理>
次に、ステップS200の度数分布の照合処理について説明する。図12は、度数分布の照合処理を示すフローチャートである。まず、度数分布照合手段20は、度数分布データベース40に記憶されているRE個のレコードの中からレコードre(re=0,・・・,RE−1)に登録されている度数分布を抽出する(ステップS210)。度数分布として、距離分布Hdo(re,md)(md=0,・・・,MD−1)、角度分布Hao(re,ma)(ma=0,・・・,MA−1)を抽出する。
次に、度数分布照合手段20は、対象モデルから算出された距離分布と、度数分布データベース40から抽出された規制モデルの距離分布同士で各要素間の相関係数を算出する(ステップS220)。相関係数とは、二つの配列要素の関連性の強弱を示す指標である。ここでは、対象モデルと規制画像(または規制モデル)の類似性の強弱を判定するために用いる。まず、以下の〔数式18〕に従った処理を実行することにより、対象モデルから算出された距離分布Hd(md)の平均値Ad、度数分布データベース40から抽出された規制画像の距離分布Hdo(re,md)の平均値Ado(re)を算出する。
〔数式18〕
Ad=Σmd=0,MD-1Hd(md)/MD
Ado(re)=Σmd=0,MD-1Hdo(re,md)/MD
続いて、以下の〔数式19〕に従った処理を実行することにより、対象モデルから算出された距離分布Hd(md)の標準偏差Sd、度数分布データベース40から抽出された規制画像の距離分布Hdo(re,md)の標準偏差Sdo(re)を算出する。
〔数式19〕
Sd=[Σmd=0,MD-1(Hd(md)−Ad)2]1/2
Sdo(re)=[Σmd=0,MD-1(Hdo(re,md)−Ado(re))2]1/2
厳密には、標準偏差は、上記〔数式19〕の{}内において、さらに定数MDで除算しておく必要がある。しかし、ここでは、相関係数を算出することが目的であるため、後述の〔数式20〕における分子の共分散を算出する項においても定数MDで除算する必要があり、分子と分母で重複して定数MDで除算する演算がキャンセルされる(分母は定数MDの平方根で2回除算)。
次に、算出された平均値および標準偏差を用いて、以下の〔数式20〕に従った処理を実行することにより、対象モデルの距離分布とレコードreに対応する規制モデルの距離分布の相関係数Dd(re)を算出する。
〔数式20〕
Dd(re)=[Σmd=0,MD-1(Hd(md)−Ad)・(Hdo(re,md)−Ado(re))]/(Sdo(re)・Sd)
上記〔数式20〕において、Σの添え字の“md=0,MD−1”は、mdが0からMD−1の全ての整数をとる場合について、総和を求めることを示している。相関係数Dd(re)は、度数分布Hd(md)、Hdo(re,md)の共分散を、それぞれの標準偏差で除したものとなっている。上記〔数式20〕の演算のように、分母の平方根の割算を2回行うのは一般に処理負荷が高い。このため、画像処理の分野においては、分子の積和演算だけで済ますものを「相関係数」と呼び、上記〔数式20〕に示したDd(re)を「正規化相関係数」と呼ぶ習慣もある。
次に、度数分布照合手段20は、ステップS220において算出された距離分布の相関係数Dd(re)と、判定しきい値との比較を行う(ステップS230)。相関係数Dd(re)が判定しきい値以上である場合は、適合と判定し、相関係数Dd(re)が判定しきい値より小さい場合は、不適合と判定する。判定しきい値としては、正の値であれば任意に設定可能であるが、ここでは、+5.0(−1から+1の範囲をとる相関係数値を100倍して%次元で表現した場合)としてある。
ステップS230において適合と判定された場合には、度数分布照合手段20は、対象モデルから算出された角度分布と、度数分布データベース40から抽出された規制画像の角度分布同士で、各要素間の相関係数を算出する(ステップS240)。まず、以下の〔数式21〕に従った処理を実行することにより、対象モデルから算出された角度分布Ha(ma)の平均値Aa、度数分布データベース40から抽出された規制画像の角度分布Hao(re,ma)の平均値Aao(re)を算出する。
〔数式21〕
Aa=Σma=0,MA-1Ha(ma)/MA
Aao(re)=Σma=0,MA-1Hao(re,ma)/MA
続いて、以下の〔数式22〕に従った処理を実行することにより、対象モデルから算出された角度分布Ha(ma)の標準偏差Sa、度数分布データベース40から抽出された規制画像の角度分布Hao(re,ma)の標準偏差Sao(re)を算出する。
〔数式22〕
Sa=[Σma=0,MA-1(Ha(ma)−Aa)2]1/2
Sao(re)=[Σma=0,MA-1(Hao(re,ma)−Aao(re))2]1/2
厳密には、標準偏差は、上記〔数式22〕の{}内において、さらに定数MAで除算しておく必要がある。しかし、ここでは、相関係数を算出することが目的であるため、後述の〔数式23〕における分子の共分散を算出する項においても定数MAで除算する必要があり、分子と分母で重複して定数MAで除算する演算がキャンセルされる(分母は定数MAの平方根で2回除算)。
次に、算出された平均値および標準偏差を用いて、以下の〔数式23〕に従った処理を実行することにより、対象モデルの角度分布とレコードreに対応する規制画像の角度分布の相関係数Da(re)を算出する。
〔数式23〕
Da(re)=[Σma=0,MA-1(Ha(ma)−Aa)・(Hao(re,ma)−Aao(re))]/(Sao(re)・Sa)
上記〔数式23〕において、Σの添え字の“ma=0,MA−1”は、maが0からMA−1の全ての整数をとる場合について、総和を求めることを示している。相関係数Da(re)は、度数分布Ha(ma)、Hao(re,ma)の共分散を、それぞれの標準偏差で除したものとなっている。上記〔数式23〕の演算のように、分母の平方根の割算を2回行うのは一般に処理負荷が高い。このため、画像処理の分野においては、分子の積和演算だけで済ますものを「相関係数」と呼び、上記〔数式23〕に示したDa(re)を「正規化相関係数」と呼ぶ習慣もある。
次に、度数分布照合手段20は、ステップS240において算出された角度分布の相関係数Da(re)と、判定しきい値との比較を行う(ステップS250)。相関係数Da(re)が判定しきい値以上である場合は、適合と判定し、相関係数Da(re)が判定しきい値より小さい場合は、不適合と判定する。判定しきい値としては、正の値であれば任意に設定可能であるが、ここでは、+5.0(−1から+1の範囲をとる相関係数値を100倍して%次元で表現した場合)としてある。ステップS250において適合と判定された場合には、度数分布照合手段20は、対象モデルとレコードreの規制画像が適合することになるため、出力を規制すべきである(出力不適)との判定を行う。
ステップS230、S250のいずれかにおいて不適合と判定された場合には、度数分布照合手段20は、対象モデルとレコードreの規制画像の照合を終え、次のレコードre+1の規制画像との照合に移行する。図12のフローチャートに従った処理を、度数分布データベース40内の全レコードに対して実行し、適合となる規制画像が1つでも存在したら、対象モデルを“出力を規制すべきである(出力不適)”としてステップS200の照合処理を終了することになる。
<2.4.4.1.ユークリッド距離による照合>
上述のように、照合には、相関係数を用いることが好ましいが、ユークリッド距離を用いることもできる。この場合、上記ステップS220〜S250の処理は、以下のようになる。度数分布照合手段20は、対象モデルから算出された距離分布と、度数分布データベース40から抽出された規制画像の距離分布同士で各要素間のユークリッド距離を算出する(ステップS220)。具体的には、以下の〔数式24〕に従った処理を実行することにより、対象モデルの距離分布とレコードreに対応する規制画像の距離分布のユークリッド距離Dd2(re)を算出する。ユークリッド距離とは、各要素の度数同士の差分の絶対値を2乗した値で与えられるユークリッド空間上の距離である。ユークリッド距離Dd2(re)は、MD/K次元ユークリッド空間内の2点の距離として求められる。
〔数式24〕
Dd2(re)=Σi=0,MD/K-1[{Σk=0,K-1Hdo(re,i・K+k)/K−Σk=0,K-1Hd(i・K+k)/K}2・K/MD]1/2
上記〔数式24〕において、Σの添え字の“i=0,MD/K−1”は、iが0からMD/K−1の全ての整数をとる場合について総和を求めることを示し、Σの添え字の“k=0,K−1”は、mdが0からMD−1の全ての整数をとる場合について総和を求めることを示している。上記〔数式24〕において、Kは距離の位置ずれ許容範囲である。Kとしては、任意に設定することが可能であるが、例えばMD=360のときK=10としている。kはk=0,・・・,K−1の値をとる整数である。許容範囲Kは、対象モデルの形状が若干変化することによりポリゴン間の距離が変動した場合の影響を排除するために用いられる(ポリゴン構成の精細度が変化したり、形状の装飾に軽微な変化があったりする場合に限定)。許容範囲Kを設けることにより、対象モデルの距離分布に若干の変動があった場合でも、的確に規制画像との照合を行うことが可能となる。
次に、度数分布照合手段20は、ステップS220において算出された距離分布のユークリッド距離Dd2(re)と、判定しきい値との比較を行う(ステップS230)。判定しきい値との比較による判定は、相関係数の場合とは逆になる。すなわち、ユークリッド距離Dd2(re)が判定しきい値より小さい場合は、適合と判定し、ユークリッド距離Dd2(re)が判定しきい値以上である場合は、不適合と判定する。判定しきい値としては、任意に設定可能であるが、例えば、0.5とすることができる。
ステップS230において適合と判定された場合には、度数分布照合手段20は、対象モデルから算出された角度分布と、度数分布データベース40から抽出された規制画像の角度分布の間で、互いのユークリッド距離を算出する(ステップS240)。具体的には、以下の〔数式25〕に従った処理を実行することにより、対象モデルの角度分布とレコードreに対応する規制画像の角度分布のユークリッド距離Da2(re)を算出する。ユークリッド距離Da2(re)は、MA次元ユークリッド空間内の2点の距離として求められる。
〔数式25〕
Da2(re)=Σma=0,MA-1[{Hao(re,ma)−Ha(ma)}2/MA]1/2
上記〔数式25〕において、Σの添え字の“ma=0,MA−1”は、maが0からMA−1の全ての整数をとる場合について、後続の[・・・]1/2の総和を求めることを示している。
次に、度数分布照合手段20は、ステップS240において算出された角度分布のユークリッド距離Da2(re)と、判定しきい値との比較を行う(ステップS250)。判定しきい値との比較による判定は、相関係数の場合とは逆になる。すなわち、ユークリッド距離Da2(re)が判定しきい値より小さい場合は、適合と判定し、ユークリッド距離Da2(re)が判定しきい値以上である場合は、不適合と判定する。判定しきい値としては、任意に設定可能であるが、例えば、0.5とすることができる。
<3.第2の実施形態>
次に、第2の実施形態について説明する。上記第1の実施形態では、画像度数分布算出装置により事前に規制画像の度数分布を作成しておき、立体物造形用データ出力規制装置の度数分布データベースに登録しておくようにした。第2の実施形態では、規制画像そのものを規制画像データベースに登録しておき、規制画像からリアルタイムにその場で上記2種の度数分布を作成し、照合まで行う。
<3.1.装置構成>
図13は、本発明第2の実施形態に係る立体物造形用データ出力規制装置の構成を示す機能ブロック図である。図13において、10はモデル度数分布算出手段、20は度数分布照合手段、30は対象モデル記憶手段、41は規制画像データベース、92は画像度数分布算出手段である。図13において、図3、図9と同等の機能を有するものについては、同一符号を付して詳細な説明を省略する。
モデル度数分布算出手段10は、図9に示したものと同様、対象モデルに対して、距離の度数分布である距離分布と、角度の度数分布である角度分布を算出する処理を行う。画像度数分布算出手段92は、図3に示したものと同様、規制画像に対して、距離の度数分布である距離分布と、角度の度数分布である角度分布を算出する処理を行う。度数分布照合手段20は、図9に示したものと同様、対象モデルについて算出された距離分布、角度分布と、規制画像について算出された距離分布、角度分布をそれぞれ照合し、出力を規制すべきか否か、すなわち出力不適であるか出力適正であるかを判定する。
モデル度数分布算出手段10、画像度数分布算出手段92、度数分布照合手段20は、図8に示したCPU1が、記憶装置3に記憶されているプログラムを実行することにより実現される。対象モデル記憶手段30は、図9に示したものと同様、対象モデルを記憶した記憶手段であり、記憶装置3により実現される。規制画像データベース41は、規制画像を記憶した記憶手段であり、記憶装置3により実現される。
図13に示した各構成手段は、現実には図8に示したように、コンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。すなわち、コンピュータが、専用のプログラムに従って各手段の内容を実行することになる。
図8に示した記憶装置3には、CPU1を動作させ、コンピュータを、立体物造形用データ出力規制装置として機能させるための専用のプログラムが実装されている。この専用のプログラムを実行することにより、CPU1は、モデル度数分布算出手段10、画像度数分布算出手段92、度数分布照合手段20としての機能を実現することになる。また、記憶装置3は、対象モデル記憶手段30、規制画像データベース41として機能するだけでなく、立体物造形用データ出力規制装置としての処理に必要な様々なデータを記憶する。
<3.2.処理動作>
次に、図13に示した立体物造形用データ出力規制装置の処理動作について説明する。図14は、図13に示した立体物造形用データ出力規制装置の処理概要を示すフローチャートである。まず、モデル度数分布算出手段10が、対象モデルについて、2種の度数分布である距離分布および角度分布を算出する(ステップS100)。次に、画像度数分布算出手段92が、規制画像について、2種の度数分布である距離分布および角度分布を算出する(ステップS300)。そして、算出された対象モデルの度数分布と、規制画像の度数分布との照合を行う(ステップS200)。ステップS300の画像度数分布の算出処理、ステップS200の度数分布の照合処理は、照合処理において、出力すべきでない(出力不適)と判定された場合か、全ての規制画像との照合において不適合となって、出力適正と判定された場合に終了する。ステップS100、ステップS200における処理は、図10に示したものと同様であるので詳細な説明は省略する。また、ステップS300における処理は、図4に示した度数分布の算出処理と同様であるので詳細な説明は省略する。
<4.距離分布と角度分布の有用性>
ここで、上記第1、第2の実施形態において、距離分布と角度分布の2種の度数分布を用いて照合を行うことの有用性について、3種の3次元ポリゴンモデルの例を用いて説明する。ここでは、説明の都合上、ポリゴンモデルどうしの例で説明するが、後述するように、各々2次元イラストで表現された2次元画像(図15・図16の球体モデルを円形モデルとみなす)に対しても同様な説明が成立する。図15は、2つの球体モデルA、Bそれぞれに対して得られる距離分布と角度分布を示す図である。図15(a)は、球体モデルAを示し、図15(b)(c)は、それぞれ球体モデルAの距離分布、角度分布をヒストグラム化して示している。図15(d)は、球体モデルBを示し、図15(e)(f)は、それぞれ球体モデルBの距離分布、角度分布をヒストグラム化して示している。
図15(a)に示す球体モデルAは、内部に空洞がなく、中身が詰まった状態の球体モデルである。内部に空洞がない場合、図15(a)に右向きの小さい矢印で示すように全てのポリゴンの法線ベクトルは全て外側を向いている。図15(d)に示す球体モデルBは、内部に空洞がある球体モデルである。内部に空洞がある場合、図15(d)に示すようにポリゴンの法線ベクトルは外側(図中右向き)を向くものと内側(図中左向き)を向くものの双方が存在する。図15(a)(d)において左から右に向かって延びる大きい矢印は、ポリゴン間の距離の一例を示している。
球体モデルAでは、球体の中心から等距離の位置に一様にポリゴンが分布しているため、図15(b)に示すように球体モデルAのポリゴン間の距離分布は、距離が大きいものほど高くなる。球体モデルBでは、外周部に厚みが存在するものの、球体の中心から等距離の位置に一様にポリゴンが分布している。そのため、図15(e)に示すように球体モデルBのポリゴン間の距離分布は、距離が大きいものほど高くなる。したがって、球体モデルBの距離分布は、全体として球体モデルAの距離分布と類似する分布となり、球体モデルBの外周部の厚みが図15(e)の横軸の最小分解能MDより小さければ、球体モデルAの距離分布と完全に一致した分布になる。
また、球体モデルAでは、空洞がなく中身が詰まった状態とするため、法線ベクトルは、球の中心から外側を向く方向になっている。そのため、ポリゴン間のベクトルと、ポリゴンの法線ベクトルのなす角の角度分布は、図15(c)に示すように0°から90°の間にだけ角度が分布する。球体モデルBでは、外側のポリゴンの法線ベクトルは、球の中心から外側を向いているが、空洞を形成するために内側のポリゴンの法線ベクトルは球体の中心の方を向いている。そのため、角度分布は、図15(f)に示すように0°から90°の間だけでなく90°から180°の間にも角度が分布する。なお、図15の例では、法線ベクトルを用いる一方のポリゴンとして、ポリゴン間のベクトルの終点側のポリゴンを用いている。法線ベクトルを用いる一方のポリゴンとして、ポリゴン間のベクトルの始点側のポリゴンを用いた場合は、図15(c)(f)とは異なった角度分布となるが、球体モデルAの角度分布と球体モデルBの角度分布が明確に異なることは同様である。
図15(b)(e)に示すように、距離分布は双方とも距離が大きいものほど高くなった分布であり、大きな相違がない。そのため、球体モデルAと球体モデルBの照合を、距離分布のみを用いて行った場合、適合する(類似する)と判定されてしまう可能性が高まる。しかし、図15(c)(f)に示すように、角度分布では、90°から180°の間の分布が大きく異なる。このため、球体モデルAと球体モデルBの照合を、角度分布を用いて行うことにより、両者が相違すると判定することができる。
距離分布と角度分布の2種の度数分布を用いて照合を行うことの有用性について、2つ目の例を用いて説明する。図16は、2つの球体モデルB、Cそれぞれに対して得られる距離分布と角度分布を示す図である。図16(a)は、球体モデルBを示し、図16(b)(c)は、それぞれ球体モデルBの距離分布、角度分布を示している。図16(a)〜(c)は、図15(d)〜(f)と同一である。図16(d)は、球体モデルCを示し、図16(e)(f)は、それぞれ球体モデルCの距離分布、角度分布を示している。
図16(d)に示す球体モデルCは、球体モデルBよりも外周部分が厚く、空洞の体積が小さい球体モデルである。内部に空洞があるため、球体モデルBと同様、図16(d)に示すようにポリゴンの法線ベクトルは外側と内側の双方を向いている。図16(a)(d)において左から右に向かって延びる矢印は、それぞれポリゴン間の距離の一例を示している。
球体モデルBでは、外側のポリゴンの法線ベクトルは、球体の中心から外側を向いているが、空洞を形成するために内側のポリゴンの法線ベクトルは球体の中心の方を向いている。そのため、角度分布は、図16(c)に示すように、法線ベクトルが外側を向くポリゴンについては、0°から90°の間に分布し、法線ベクトルが内側を向くポリゴンについては、90°から180°の間に分布する。球体モデルCでも、外側のポリゴンの法線ベクトルは、球体の中心から外側を向いているが、空洞を形成するために内側のポリゴンの法線ベクトルは球体の中心の方を向いている。外側のポリゴンは内側のポリゴンに比べ面積が大きいため、面積を加重した角度分布は、図16(f)に示すように外側のポリゴンに対応する0°から90°の間が90°から180°の間に比べ盛り上がり、45°近辺に顕著に高い部分が存在する。しかし、図16(c)と図16(f)は類似した分布になる。
一方、球体モデルCでは、球体モデルBよりも外周部分が厚く、球体の中心から2種類の等距離の位置に一様にポリゴンが分布しているため、図16(e)に示すように球体モデルCのポリゴン間の距離分布は内周部までは図16(b)と同様に距離が大きいものほど高くなる。しかし、内周部と外周部の間のポリゴン間の距離分布は一様になり、図16(b)とは顕著に異なる特性をもつ。
上述の通り、図16(c)(f)に示すように、角度分布は双方とも0°から90°の間だけでなく90°から180°の間にも角度が分布するものであり、大きな相違がない。そのため、球体モデルBと球体モデルCの照合を、角度分布のみを用いて行った場合、適合する(類似する)と判定されてしまう可能性が高まる。しかし、図16(b)(e)に示すように、距離分布では、ポリゴン間の距離分布が大きく異なる。このため、球体モデルBと球体モデルCの照合を、距離分布を用いて行うことにより、両者が相違すると判定することができる。
図15、図16に示した2つの例のように、角度分布と距離分布の2種の度数分布を用いることにより、2つのポリゴンモデルが相違するか否かの判定をより高精度に行うことが可能となる。上記は3次元ポリゴンモデルを例に用いて説明してきたが、規制画像のような2次元画像に対しても同様な説明が成り立つ。図15(a)(d)と図16(d)に2次元的に図示されているように、図15(a)は、内部が塗りつぶされた円形画像、図15(d)は、縁取りされた円形画像、図16(d)は、太く縁取りされた円形画像と仮定し、これらを規制画像とみなして、前述した第1、第2の実施形態の方法で距離分布と角度分布の2種の度数分布を算出しても、各々図15(b)(c)、図15(e)(f)および図16(e)(f)と類似した結果になる(ただし、後述するように球体モデルと円形モデルの距離分布と角度分布は、円形モデルから算出する際に球面補正を施せば、ある程度類似した形態に近付けることができるが完全には一致しない)。球体モデルA、球体モデルBおよび球体モデルCが不透明体の場合、3種の球体モデルの差は2次元投影画像では確認できず、いずれも内部が塗りつぶされた円形イラスト画像から変換された度数分布と類似した結果になる。しかし、内部が塗りつぶされた円形イラスト画像、縁取りされた円形イラスト画像および太く縁取りされた円形イラスト画像の各々から変換された度数分布は、球体モデルA、球体モデルBおよび球体モデルCから変換された度数分布と各々適合し、3種の円形イラスト画像と照合すれば、3種の球体モデルを識別することができる。
<5.3Dプリンタへのデータ出力>
上記ステップS200において、度数分布照合手段20により“出力を規制すべきでない(出力適正)”と判定された場合には、立体物造形装置である3Dプリンタ7へ対象モデルを出力する。一方、度数分布照合手段20により“出力を規制すべきである(出力不適)”と判定された場合には、立体物造形装置である3Dプリンタ7へ対象モデルを出力しない。また、出力適正か出力不適かの判定に時間がかかる場合には、3Dプリンタ7に対象モデルを出力し、3Dプリンタ7の出力処理(立体物造形処理)と並行して出力適正か出力不適かの判定を行い、出力不適である場合に出力中止命令を3Dプリンタ7に出力するようにしてもよい。この際、利用者から見れば、対象モデルの出力という一つの命令を行うことにより、3Dプリンタにおける立体物造形処理が開始されることが確認できるだけで、並行して出力適正か出力不適かの判定のための処理の実行が開始されることは気付かない。
<6.ポリゴン削減処理>
図10、図14に示したステップS100のモデル度数分布の算出処理に先立って、対象モデルのポリゴン数の削減を行うポリゴン削減処理を行うようにしてもよい。事前に重要度の低いポリゴンの削減を行っておくことにより、ポリゴンモデルの微細形状の相違を許容して高速に出力が適正か否かの判定を行うことが可能となる。以下に、モデル度数分布の算出処理に先立つポリゴン削減処理について説明する。ポリゴン削減処理は、図8に示したCPU1が記憶装置3に記憶されたプログラムを実行することにより実現されるポリゴン削減手段により行われる。
図17は、ポリゴン削減手段によるポリゴン削除の基本原理を示す図である。ポリゴン集合は、現実には、空間における3次元の値をもつポリゴン群であるが、図17の例では、説明の便宜上、2次元の値をもつポリゴン群を示している。図17(a)の例では、削除前、18個のポリゴンからなるポリゴン群を示している。
図18は、ポリゴン削減手段によるポリゴン削減処理の詳細を示すフローチャートである。まず、ポリゴン削減手段は、対象モデルを構成する全ポリゴンを対象として、各ポリゴンの面積および周長を算出する(ステップS11)。次に、ポリゴン削減手段は、算出された面積と周長を乗じた値が最小となるポリゴンを削除対象ポリゴンとして選定する(ステップS12)。図17の例では、図17(b)に示すように、3個の頂点E、J、Kで構成されるポリゴンEJKが削除対象ポリゴンとして選定される。
続いて、ポリゴン削減手段は、削除対象ポリゴンの3辺のうち最短の1辺を削除対象辺として選定し、選定した削除対象辺の中点を算出する(ステップS13)。図17の例では、図17(c)に示すように、削除対象ポリゴンEJKの辺JKが削除対象辺として選定される。さらに、辺JKの中点Oが算出される。
次に、ポリゴン削減手段は、削除対象ポリゴンを削除する(ステップS14)。これによりポリゴン数が1つ削減されることになる。次に、ポリゴン削減手段は、削除対象ポリゴンの削除対象辺と頂点を共有していた削除頂点共有ポリゴンを順次選定する(ステップS15)。削除対象ポリゴンの削除対象辺と2頂点を共有(すなわち辺を共有)している削除頂点共有ポリゴンが選定された場合には、ポリゴン削減手段は、その削除頂点共有ポリゴンを削除する(ステップS16)。図17の例では、3個の頂点J、K、Nで構成されるポリゴンJKNが削除される。これによりさらにポリゴン数が1つ削減されることになる。
削除対象ポリゴンの削除対象辺と1頂点を共有している削除頂点共有ポリゴンが選定された場合には、ポリゴン削減手段は、共有頂点をステップS13で算出された中点に補正し、面積および周長を再算出する(ステップS17)。図17の例では、図17(c)と図17(d)を比較するとわかるように、ポリゴンEHJ→ポリゴンEHO、ポリゴンEFK→ポリゴンEFO、ポリゴンHJM→ポリゴンHOM、ポリゴンJMN→ポリゴンOMN、ポリゴンFKN→ポリゴンFONに変更される。この結果、図17の例においては、図17(a)の時点で18個あったポリゴンが、図17(d)の時点では16個に削減される。
ステップS15〜ステップS17の処理を終えたら、ポリゴン削減手段は、削減後の全ポリゴン数が、設定された目標値以下となっているか否かを判定する(ステップS18)。目標値としては、事前に任意の値を設定することができる。判定の結果、全ポリゴン数が目標値以下となっていない場合は、ステップS12に戻って、ポリゴン削減手段は、残っているポリゴンの中から、面積と周長を乗じた値が最小となるポリゴンを削除対象ポリゴンとして選定する。ステップS18における判定の結果、全ポリゴン数が目標値以下である場合は、ポリゴン削減処理を終了する。図18のフローチャートに従った処理を実行することにより、設定された目標値以下になるように、ポリゴン数が削減されることになる。
<7.対象モデル分割処理>
図10、図14に示したモデル度数分布の算出処理に先立ち、対象モデルの分割を行う対象モデル分割処理を行うようにしてもよい。事前に対象モデルの分割を行っておくことにより、規制モデルと対象モデルとで互いに部品構成が異なる場合でも適切に出力が適正か否かの判断を行うことが可能となる。以下に、モデル度数分布の算出処理に先立つ対象モデル分割処理について説明する。対象モデル分割処理は、図1に示したCPU1が記憶装置3に記憶されたプログラムを実行することにより実現される対象モデル分割手段により行われる。
図19は、対象モデル分割手段による対象モデル分割処理の詳細を示すフローチャートである。対象モデル分割手段は、まず、初期設定を行う(ステップS21)。具体的には、読み込んだ対象モデルのポリゴン集合を構成するポリゴン数P、ポリゴンを特定する変数p(p=0,・・・,P−1)、探索ステータスS(p)、グループ属性G(p)、グループを特定する変数g、探索ステータス示す変数sを設定する。探索ステータスS(p)は、0以上の整数値をとる。S(p)=0はポリゴンpがグループに未分類の状態、S(p)>0はS(p)回目に実行されるステップS22においてポリゴンpがグループ属性G(p)に分類された状態を示す。さらに、ステップS21においては、p=0,・・・,P−1の全てのpについてS(p)=G(p)=0、g=1、s=1と初期設定する。
次に、全ポリゴンより、S(p)=G(p)=0となるポリゴンpを1つ抽出する(ステップS22)。初期状態では、全てS(p)=G(p)=0であるので、初回は必ずp=0のポリゴンの抽出が行われる。ステップS22において、S(p)=G(p)=0となるポリゴンpが存在しない場合、すなわち、全てのp=0,・・・,P−1について、S(p)>0である場合、g−1個のグループに分離でき、対象モデルをg−1個の部分対象モデルに分割できたものとして対象モデル分割処理を終了する。なお、ステップS22において、S(p)<0である状態は存在しないため、S(p)は“0”か正の値のいずれかの状態である。S(p)=G(p)=0となるポリゴンpが抽出できた場合は、抽出したポリゴンpに対応する探索ステータスS(p)=s、グループ属性G(p)=gに設定する。さらに、更新をカウントする変数である更新カウンタc=0に設定する。
ステップS22において、S(p)=G(p)=0となるポリゴンpを1つ抽出し、抽出したポリゴンpに対応する探索ステータスS(p)=s、グループ属性G(p)=gに設定した場合は、全ポリゴンより、S(q)=sとなるポリゴンqを1つ抽出する(ステップS23)。qはポリゴンを特定する変数であり、ポリゴンpと同様、q=0,・・・,P−1内のいずれかの整数値をとる。S(q)=sとなるポリゴンqが複数存在する場合は、例えばqの値が最も小さいものを抽出する。
ステップS23において、S(q)=sとなるポリゴンqを1つ抽出した場合、全ポリゴンより、抽出されたポリゴンqと辺を共有する隣接ポリゴンr1、r2、r3の3つを探索の上、探索された3つの隣接ポリゴンr1、r2、r3の中でS(r)=G(r)=0を満たすポリゴンrに対して、それぞれ探索ステータスS(r)=s+1、グループ属性G(r)=gに設定し、併せてcの値をc←c+1と更新する(ステップS24)。rはr1、r2、r3のいずれかのポリゴンを特定する変数であり、ポリゴンp、qと同様、r=0,・・・,P−1内のいずれかの整数値をとる。“ポリゴンqと隣接ポリゴンrの辺を共有する”とは、ポリゴンqの2頂点とポリゴンrの2頂点が同一であることを意味する。すなわち、隣接ポリゴンrのいずれか1つの辺はポリゴンqのいずれか1つの辺と同一になる。
本実施形態では、ポリゴンが三角形であるので、ポリゴンを構成する3つの辺に対して、各々1辺を共有する隣接ポリゴンは必ず3つ存在する。コンピュータグラフィックで画面表示する場合にはこの条件が満足されなくても支障ないが、3Dプリンタで出力する場合は、物理的に造形物を形成できなくなるため、この条件は必須要件になる(もし満足されない場合はエラー警告が出され、プリンタ出力が実行されないのが一般的である。)。抽出された3つの隣接ポリゴンの中で、S(r)=G(r)=0を満たすポリゴンrについては、それぞれ探索ステータスS(r)=s+1、グループ属性G(r)=g、c←c+1に設定する。
そして、ステップS23に戻って、全ポリゴンよりS(q)=sとなるポリゴンqが他にも存在する場合、更に1つ抽出し、同様にステップS24を実行する。即ち、ステップS23とステップS24の処理を繰り返すことにより、対象モデル中、S(q)=sとなるポリゴン全てについて、ステップS24の処理を実行する。ステップS23において、S(q)=sとなるポリゴンqが存在しない場合、すなわち、全てのS(q)=sとなるポリゴンqについて、3つの隣接ポリゴンを探索したら、探索ステータス示す変数sを1インクリメント(s←s+1)する(ステップS25)。
次に、更新カウンタc=0であるか否かを判定する(ステップS26)。判定の結果、c=0でない場合は、ステップS24においてポリゴンqと隣接する3つのポリゴンの中でS(r)=G(r)=0を満たすポリゴンrが少なくとも1つは存在していたことを意味するので、他にも同一のグループgに含めるべきグループ属性が未定義であるポリゴンpが存在しないか、ステップS22に戻って、全ポリゴンより、S(p)=G(p)=0となるポリゴンpを更に探索し、もし存在すれば1つ抽出し、抽出したポリゴンpに対応する探索ステータスS(p)=s、グループ属性G(p)=g、更新カウンタc=0に設定する。そして、上述のように、ステップS23およびステップS24の処理ループに進み全てのS(q)=sとなるポリゴンqについて3つの隣接ポリゴンを探索する処理を繰り返す。
このようにして、ステップS22〜ステップS25の処理を繰り返して実行し、ステップS26における判定の結果、更新カウンタc=0である場合、即ちステップS24においてポリゴンqと隣接する3つのポリゴンのいずれもが既に同一のグループgに設定され、グループgに含めるべきS(r)=G(r)=0を満たすグループ属性が未定義ポリゴンrが全く存在しない場合はグループgへの分類は終了したとみなし、次のグループg+1への分類に移行するため、グループを特定する変数gを1インクリメント(g←g+1)する(ステップS27)。そしてステップS22に戻り、新たなグループgへの分類を同様に行う。もし、ステップS22において、S(p)=G(p)=0となるグループ属性が未定義のポリゴンpが見つからなかった場合、全P個のポリゴンのグループ属性はいずれかの値に設定されていることから、分類処理が終了したとみなすことができる。その際、ステップS27で更新されたグループgはいずれのポリゴンのグループ属性として設定されていないことから、全P個のポリゴンはg−1個のグループに分類されたことになる。
図19のフローチャートに従った処理を実行することにより、全P個のポリゴンが、2頂点を共有して連結するポリゴン集合ごとにグループに分類される。この分類されたグループが、部分対象モデルとなる。図19の例では、対象モデルの各ポリゴンは、g−1個の部分対象モデルのいずれかに属することになる。この結果、対象モデルはg−1個の部分対象モデルに分割される。
ステップS100のモデル度数分布の算出処理に先立って行われる、ポリゴン削減手段によるポリゴン削減処理、対象モデル分割手段による対象モデル分割処理は、どちらの順序で行ってもよい。できれば、ポリゴン削減処理を行った後に、対象モデル分割処理を行う方が効率的である。また、ポリゴン削減処理、対象モデル分割処理の双方でなく、どちらか一方のみを行うようにしてもよい。
<8.規制画像および規制モデルの度数分布算出および登録について>
変形例として、度数分布照合手段20を備えた立体物造形用データ出力規制装置とは別の場所で、規制画像および規制モデルに対して算出された距離分布および角度分布を、立体物造形用データ出力規制装置にネットワークを介して送信して登録するようにしてもよい。
図20は、変形例における立体物造形用データ出力規制装置を含む立体物造形システムのハードウェア構成図である。図20に示した立体物造形システムにおいて、立体物造形用データ出力規制装置101は、図8に示した立体物造形用データ出力規制装置100の構成に、インターネット等の公衆ネットワークと通信するためのネットワーク通信部8を備えた構成となっている。画像度数分布算出装置301は、汎用のコンピュータで実現することができ、図20に示すように、CPU(Central Processing Unit)1aと、コンピュータのメインメモリであるRAM(Random Access Memory)2aと、CPU1aが実行するプログラムやデータを記憶するためのハードディスク、フラッシュメモリ等の大容量の記憶装置3aと、キーボード、マウス等のキー入力I/F(インターフェース)4aと、データ記憶媒体等の外部装置とデータ通信するためのデータ入出力I/F(インターフェース)5aと、液晶ディスプレイ等の表示デバイスである表示部6aと、インターネット等の公衆ネットワークと通信するためのネットワーク通信部8aを備え、互いにバスを介して接続されている。立体物造形用データ出力規制装置101のネットワーク通信部8と画像度数分布算出装置301のネットワーク通信部8aは互いに通信を行い、画像度数分布算出装置301から立体物造形用データ出力規制装置101へ規制画像に対して算出された2種の度数分布の送信を行うことが可能になっている。
図20では、立体物造形用データ出力規制装置101と3Dプリンタ7は分離した形態で示されているが、現在市販されている殆どの3Dプリンタ製品には立体物造形用データ出力規制装置101の構成要素である、CPU1、RAM2、記憶装置3、キー入力I/F4(汎用コンピュータ向けキーボード・マウスではなく、テンキーレベルの数種のボタン)、データ入出力I/F5、表示部6(数行の文字を表示可能な小型液晶パネル、タッチパネルを重畳させキー入力I/F4を兼ねることも多い)、ネットワーク通信部8(無線LAN機能)も小規模ながら重複して備えている。従って、3Dプリンタ7自体が外部記憶媒体やインターネット経由で立体物造形用データを直接受け取り、単独で立体物を造形する運用も可能になっている(特に民生用の3Dプリンタではこちらの形態の方が多い)。すなわち、図20に示した立体物造形用データ出力規制装置101および3Dプリンタ7を1つの筐体に収めて、“3Dプリンタ”という製品として流通することも多い。
画像度数分布算出装置301においては、CPU1aが、記憶装置3aに記憶されているプログラムを実行することにより、画像度数分布算出手段、度数分布送信手段が実現される。画像度数分布算出装置301で実現される画像度数分布算出手段は、画像度数分布算出装置300、立体物造形用データ出力規制装置100における画像度数分布算出手段92と同様の機能を有し、規制画像に対して2種の度数分布として距離分布、角度分布を算出する。度数分布送信手段は、規制画像について算出された2種の度数分布である距離分布、角度分布を立体物造形用データ出力規制装置101に送信する。立体物造形用データ出力規制装置101では、ネットワーク通信部8が、画像度数分布算出装置301から度数分布を受信すると、CPU1が所定のプログラムを実行して度数分布登録手段として機能し、受信した度数分布を記憶装置3で実現される度数分布データベース40に登録する。
<9.クラウド型の立体物造形システム>
本発明は、クラウド型の立体物造形システムに適用することも可能である。図21は、クラウド型の立体物造形システムのハードウェア構成図である。図21に示した立体物造形システムでは、出力制御用端末201と処理サーバ202により立体物造形用データ出力規制装置が実現される。図21に示した立体物造形システムにおいて、出力制御用端末201は、図20において立体物造形用データ出力規制装置101として示したコンピュータと同等のハードウェア構成を有する。すなわち、出力制御用端末201は、CPU11、RAM12、記憶装置13、キー入力I/F14、データ入出力I/F15、表示部16、ネットワーク通信部18を備え、互いにバスを介して接続されている。
処理サーバ202は、汎用のコンピュータに専用のプログラムを組み込むことにより実現することができる。図21に示すように、CPU11a、RAM12a、記憶装置13a、キー入力I/F14aと、データ入出力I/F15aと、表示部16aと、ネットワーク通信部18aを備え、互いにバスを介して接続されている。出力制御用端末201のネットワーク通信部18と処理サーバ202のネットワーク通信部18aは互いに通信を行い、処理サーバ202から出力制御用端末201へ出力適否の判定に基づく出力適否データの送信を行うことが可能になっている。図21では、出力制御用端末201と3Dプリンタ7は分離した形態で示されているが、図20の例と同様、3Dプリンタ製品に出力制御用端末201の構成要素である、CPU11、RAM12、記憶装置13、キー入力I/F14、データ入出力I/F15、表示部16、ネットワーク通信部18を重複して備えていてもよい。
図22は、クラウド型の立体物造形システムの機能ブロック図である。クラウド型の立体物造形システムを構成する処理サーバ202は、図9に示した立体物造形用データ出力規制装置の各手段に加えて、対象モデル受信手段50、出力適否データ送信手段60を備えた構成となっている。対象モデル記憶手段31は、対象モデル自体ではなく、対象モデルについて算出された2種の度数分布を記憶する。また、モデル度数分布算出手段10は、処理サーバ202ではなく、出力制御用端末201が備えた構成となっている。
図9に示した立体物造形用データ出力規制装置と同等の機能を有するものについては、同一符号を付して説明を省略する。対象モデル受信手段50は、出力制御用端末201から送信された対象モデルの度数分布を受信して対象モデル記憶手段31に登録する手段であり、CPU11aが所定のプログラムを実行するとともに、ネットワーク通信部18aを制御することにより実現される。出力適否データ送信手段60は、度数分布照合手段20により判定された“出力を規制すべきであるか否か”に基づき、出力適否データを出力制御用端末201に送信する手段であり、CPU11aが所定のプログラムを実行するとともに、ネットワーク通信部18aを制御することにより実現される。
処理サーバ202は、インターネット等のネットワークに接続され、多数の出力制御用端末からアクセス可能になっている。クラウド型の立体物造形システムの「クラウド型」とは、3Dプリンタにより立体物を出力する出力側でなく、出力側からネットワークを介した遠隔地のコンピュータにおいて、規制すべきか否かを判定することを意味する。従来のサーバ型コンピュータでは多数の利用者のアクセスが集中すると応答性が遅くなり利用者に迷惑をかけることが多かったが、クラウド型では仮想化技術によりコンピュータの物理的構成を動的に変更することが可能になるため、常に安定した応答性を維持できるという特徴がある。処理サーバ202は物理的には複数台のコンピュータにより実現されるのが一般的である。
図21、図22に示したクラウド型の立体物造形システムの処理動作について説明する。出力制御用端末201において、利用者がキー入力I/F14を介して出力したい対象モデルを指定すると、CPU11は、記憶装置13に記憶されている指定された対象モデルを抽出し、対象モデルを特定する識別情報であるモデルIDを付与する。そして、CPU11は、モデルIDが付与された対象モデルに対して、図11に示したフローチャートに従って、モデル度数分布算出手段10が処理を行い、距離分布および角度分布で構成される度数分布を生成する。さらにCPU11は、生成された度数分布を、記憶装置13に事前に設定されているURL等のアドレス宛に、ネットワーク通信部18を介して送信する。ポリゴンデータに比べ情報量が顕著に少ない度数分布を送信する方法をとることにより、伝送時間が大幅に短縮されるだけでなく、サーバ側には著作物であるポリゴンデータが送信されず、サーバ側に複製物が残らないため、著作権侵害を回避することができる。並行してCPU11は、モデルIDが付与された対象モデルを、データ入出力I/F15を介して3Dプリンタ7のデータ処理部7aに送信する。データ処理部7a内のプリンタキューには、出力制御用端末201から受信した対象モデルが保持され、出力ジョブとして待機状態となる。この時、3Dプリンタ出力における前処理であるポリゴン形式のデータを積層形式のデータに変換する処理のみ実行させるようにし、積層形式のデータに変換された段階で待機状態にする手法もとることができる。このデータ処理負荷もそれなりに高いため、この間に出力適否判定が完了すれば、利用者側に余分な待ち時間を感じさせないようにすることができる。
処理サーバ202では、対象モデル受信手段50が、出力制御用端末201から送信された対象モデルの度数分布を受信すると、その度数分布を対象モデル記憶手段31に記憶する。ここで、図10に示したフローチャートに従って、度数分布照合手段20が処理を行い、受信した度数分布に対応する対象モデルの出力適否を判定する。出力適否の結果である出力適否データは、度数分布照合手段20から出力適否データ送信手段60に渡される。そして、出力適否データ送信手段60は、度数分布の送信元(アクセス元)である出力制御用端末201に、モデルIDを付加した出力適否データを送信する。
出力制御用端末201では、ネットワーク通信部18が、処理サーバ202から出力適否データを受信すると、CPU11が、受信した出力適否データを、データ入出力I/F15を介して3Dプリンタ7のデータ処理部7aに送信する。データ処理部7aは、受信した出力適否データに付与されたモデルIDでプリンタキュー内の出力ジョブを参照する。そして、出力適否データが“適(出力適正)”である場合、データ処理部7aは、その出力ジョブを待機状態から出力状態に変更し、出力部7bに対象モデルを出力する。これは、出力許可がなされた場合を示している。出力適否データが“否(出力不適)”である場合、データ処理部7aは、その出力ジョブを破棄する。すなわち、プリンタキューから削除する。
<10.度数分布算出事例>
図23、図24に、球体および円について、上記実施形態に係る立体物造形用データ出力規制装置による度数分布算出事例を示す。図23、図24のいずれにおいても、左端にポリゴンモデルまたは画像、右側に度数分布を示している。度数分布は上段が距離分布(Distance)を示し、下段が角度分布(Angle)を示している。
図23(a)は、球体a(実際には多面体)のポリゴンモデル(5040ポリゴン)を示す図である。図23(a)のような球体のポリゴンモデルに対しては、図23(b)に示すように、ポリゴン間の距離が大きいものほど高くなる距離分布と、0°から90°の間にだけ存在する角度分布が得られる。得られた距離分布と角度分布を見ると、図23(a)のポリゴンモデルは中身が詰まった球体を出力するためのものであることがわかる。
図23(c)は、円bの2次元二値画像を示す図である。図23(c)のような2次元二値画像に対しては、図23(d)(e)に示すような距離分布と角度分布が得られる。図23(d)は、図4のステップS540におけるエッジ方向ベクトルの補正を行わない場合の結果であり、図23(e)は、エッジ方向ベクトルの補正を行った場合の結果である。なお、図23(e)は、併せてステップS520における階調補正も行っており、その場合の設定最小値SL=72である。図23(e)の下側のグラフの90度を超える分布が、図23(d)に比べ少なくなり、図23(b)により類似する形態になっていることがわかる。
図24(a)は、球体cの2次元シェーディング画像を示す図である。図24(a)のような2次元シェーディング画像に対しては、図24(b)(c)に示すような距離分布と角度分布が得られる。図24(b)は、図4のステップS540におけるエッジ方向ベクトルの補正を行わない場合の結果であり、図24(c)は、エッジ方向ベクトルの補正を行った場合の結果である。なお、図24(c)は、併せてステップS520における階調補正も行っており、その場合の設定最小値SL=72である。図24(c)の下側のグラフの角度分布のピークが、図24(b)に比べ明瞭になり、図23(b)により類似する形態になっていることがわかる。
図25、図26に、達磨について、上記実施形態に係る立体物造形用データ出力規制装置による度数分布算出事例を示す。図25、図26のいずれにおいても、左端にポリゴンモデルまたは画像、右側に度数分布を示している。度数分布は上段が距離分布(Distance)を示し、下段が角度分布(Angle)を示している。
図25(a)は、達磨dのポリゴンモデル(15944ポリゴン)を示す図である。図25(a)のような基本形が球体に近く顔部分に凹凸が加わったポリゴンモデルに対しては、図25(b)に示すように、図23(b)の球体と類似した傾向を示すが、球体に比べてバラツキの多い距離分布、角度分布が得られる。
図25(c)は、達磨eの2次元三値画像を示す図である。図示の都合上、二値画像に見えるが、達磨のシルエットの内部は、2つの値に分かれており、全体として三値画像となっている。図25(c)のような2次元三値画像に対しては、図25(d)(e)に示すような距離分布と角度分布が得られる。図25(d)は、図4のステップS540におけるエッジ方向ベクトルの補正を行わない場合の結果であり、図25(e)は、エッジ方向ベクトルの補正を行った場合の結果である。なお、図25(e)は、併せてステップS520における階調補正も行っており、その場合の設定最小値SL=72である。図25(e)の下側のグラフの角度分布のピークが、図25(d)に比べて明瞭になり、図25(b)により類似する形態になっていることがわかる。また、図25(e)の上側のグラフの距離分布のピークが、図25(d)に比べ右側にシフトし、図25(b)により類似する形態になっていることがわかる。これは、図25(e)で階調補正が加わったことによる効果である。
図26(a)は、達磨fの2次元シェーディング画像を示す図である。図26(a)のような2次元シェーディング画像に対しては、図26(b)(c)に示すような距離分布と角度分布が得られる。図26(b)は、図4のステップS540におけるエッジ方向ベクトルの補正を行わない場合の結果であり、図26(c)は、エッジ方向ベクトルの補正を行った場合の結果である。なお、図26(c)は、併せてステップS520における階調補正も行っており、その場合の設定最小値SL=72である。図26(c)の下側のグラフの角度分布のピークが、図26(b)に比べて明瞭になり、図25(b)により類似する形態になっていることがわかる。また、図26(c)の上側のグラフの距離分布のピークが、図26(b)に比べ右側にシフトし、図25(b)により類似する形態になっていることがわかる。これは、図26(c)で階調補正が加わったことによる効果である。
図25(d)の分布と図25(e)の分布を比較すると、エッジ方向ベクトルの補正を行った場合に、図25(b)の達磨dの角度分布のみならず距離分布との相関も高まることがわかる。また、図26(b)の分布と図26(c)の分布を比較すると、エッジ方向ベクトルの補正を行った場合に、図25(b)の達磨dの角度分布のみならず距離分布との相関も高まることがわかる。これらは、エッジ方向ベクトルの補正に加え、階調補正が加わったことによる効果である。
<11.変形例等>
以上、本発明の好適な実施形態について説明したが、本発明は上記実施形態に限定されず、種々の変形が可能である。例えば、上記実施形態では、処理対象の画像をモノクロ256階調の画素で表現されたラスター形式としたが、ベクトル形式のイラスト画像であってもよく、その場合はエッジ線が与えられるため、フィルタ演算によるエッジ点抽出の処理を簡素化できる。また、処理対象のポリゴンを三角形としたが、四角形以上の多角形であってもよい。
また、上記実施形態では、度数分布データベースに、規制画像の度数分布、規制モデルの度数分布を登録しておき、対象モデルから作成した度数分布と照合するようにしたが、規制モデルの度数分布については、必ずしも登録、照合を行う必要はない。また、度数分布データベースに規制画像自体も登録することを推奨しているが、許諾が得られなければ登録しなくてもよい。また、規制モデル自体については登録しないことを推奨しているが、許諾が得られれば登録してもよい。