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