説明

対話的実時間遠隔可視化システム

【課題】科学技術計算における対話的実時間遠隔可視化システムとして、一般公衆回線を利用して、高価な表示装置を用いることなく立体透過画像を表示でき、クライアントが膨大なデータに対して充分な解析を行うことができる対話的実時間遠隔システムおよび方法を提供する
【解決手段】遠隔の端末より入力された入力データに基づき、三次元データ保持部から該当する三次元データを可視化サーバに読み出し処理を行った後、複数の画像ファイルに変換して可視化データとする可視化手段と、ストリーミングサーバがメモリ上で可視化データを動画変換してストリーミング動画データとするストリーミング手段と、ストリーミング動画データを遠隔の端末の表示装置にストリーミング配信する配信手段とを備え、ストリーミング手段の動画変換プログラムと配信手段のストリーミング配信プログラムとの間でメモリが共有されている対話的実時間遠隔可視化システム。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は対話的実時間遠隔可視化システムに関し、特に膨大なデータ量に基づく科学技術計算における対話的実時間遠隔可視化システムに関する。
【背景技術】
【0002】
近年、医療現場や気象研究などにおいて、ホスト側のスーパーコンピュータやワークステーションを用いて三次元シミュレーションを行い、その結果を可視化データとしてクライアント(利用者)側に配信することが行われている。そして、クライアントは、配信されたデータを端末に立体透過画像として表示させ(三次元可視化)、表示された立体透過画像をインタラクティブに操作、即ち配信元と配信先との間で対話的に操作することにより、クライアント側において様々な解析を行うことがなされている。
【0003】
しかし、このような三次元可視化において扱われるデータ量および計算量は膨大であり、表示された立体透過画像から解析すべき部分を素早く見出し、効率的な解析を行うためには、前記の対話的な操作が実時間(リアルタイム)で行われる(対話的実時間遠隔可視化)必要がある。
【0004】
ここでの「実時間」とは、表示された立体透過画像を動画として眺める際にズレが起きない、即ち、1秒あたり30個の可視化データが配信されることを指し、このような対話的実時間遠隔可視化を行うためには、大規模なデータ、特にボリュームデータを対象とする可視化等の処理の迅速化、通信遅延の防止等が必要であり、種々の発明がなされている(特許文献1〜3)。
【0005】
この「対話的実時間遠隔可視化」は、従来、以下に示す2つの方法が使用されていたが、いずれの方法にも問題点があるため、対話的実時間遠隔可視化システムとしてクライアントが満足する状況にあるとは言えなかった。
【0006】
第1の方法は、高速回線を使用して、データのボリュームを損なわずに「対話的実時間遠隔可視化」を行う方法である。この第1の方法の代表的な例としては、「スーパーSINET」がある(非特許文献1)。この方法では、東北大学に設置されているスーパーコンピュータ(演算サーバ)と北海道大学に設置されている可視化サーバとを10Gbps以上の専用高速回線で結び、可視化サーバにおいて作成された画像データを直接クライアントの端末に高速回線を用いて送信することにより、クライアントの端末に立体透過画像を表示させ、直接対話的な操作を行っている。
【0007】
この際、クライアントの端末では、SGI社のOpenGL VizServerを用いて、送信されてきた画像データを立体透過画像として表示している。また、可視化サーバでは、OpenGLのユーティリティライブラリであるGLUTを用いて、演算サーバからのデータ受信に加えて可視化処理(画像データへの変換)、および端末とのインタラクティブ操作への対応を実現している。
【0008】
このシステムは、演算サーバによるシミュレーションの途中結果として得られた大容量データを、遠隔地の可視化サーバに順次転送し、リアルタイムに可視化処理することができ、クライアント側においても、膨大な立体透過画像データをリアルタイムに立体透過画像として表示させ、そのまま利用することができるという利点や、物理的に離れた場所にいる複数のクライアントが高価な可視化サーバを共有できるため、限られた計算機資源を有効に活用できるという利点を有している。
【0009】
しかし、この方法は、可視化サーバとクライアントの端末とが広帯域の専用回線で結ばれていることを必要とする。例えば、512×512ピクセルの24ビットカラー無圧縮画像ファイルは約6.3Mbitsのサイズがあり、これを無圧縮のまま毎秒30枚配信しようとすると、約189Mbpsもの広帯域が必要となる。また、この方法には、複数のデータの可視化を同時に行えないこと、インタラクティブ操作に対する結果の表示が遅いことなどの問題点もある。
【0010】
第1の方法の別な例としては、X線CT(通常の画素数は512×512×身長の5mmスライスであるが、近年、1024×1024と一層の高画素化が進んでいる。)などの立体透過画像データを、病院内に張りめぐらされた専用高速回線を用いて、撮影室と手術室や診断室との間で直接対話的な操作を行う例もある。しかし、この方法においても、可視化処理された画像データを立体透過画像として表示する専用ワークステーションや院内の高速回線の敷設が必要であるという問題点がある。
【0011】
第2の方法は、データのボリュームを減らし、擬似三次元画像を一般公衆回線を用いて見る方法である。前記したように、立体透過画像データを直接対話的に操作するには、広帯域の専用回線を必要とする。このため、例えば、専用回線がない病院や患者を送り込んだ小病院の医者が、診断した大病院のX線CT画像データにアクセスする場合には、一般公衆通信回線を使用せざるを得ず、膨大な画像データを実時間で対話的に送信することは困難である。
【0012】
そこで、このような場合には、通常は、表面からだけの画像データを送信して、擬似三次元画像として表示させる。この表示方法として、Web3Dという方法が広く用いられている。これは、Webブラウザ上でユーザが対話的に3次元CGを操作する技術であり、表示対象物をポリゴン化(3角形や4角形の組合せで物体を表現する方法)することにより3Dオブジェクトとしてデータの再構築を行った上で、クライアントに配信し、閲覧可能としている。しかし、内部のデータを所持していないため、画像データ量は大幅に削減され、一般公衆通信回線での送信が可能となるものの、クライアントは内部から外部を見ることはできず、充分な解析を行うことができない。また、角度を変えたりすると、部分的に画像が消える場合がある。
【0013】
このように、従来の「遠隔可視化方法」においては、膨大な立体透過画像データをそのまま利用して対話的実時間処理を行う場合には、画像データを有効に活用できるものの、高速(広帯域)の専用回線や高価な専用ワークステーションを必要とするため、クライアントのコスト的な負担が大きく、また、複数のデータの可視化を同時に行えないこと、インタラクティブ操作に対する結果の表示が遅いことなどの問題点がある。一方、低速の一般公衆回線を利用して対話的実時間処理を行う場合には、クライアントのコスト的な負担は小さいものの、配信されるデータはデータ量が削減された画像データであるため、画像データの活用が制限され、充分な解析を行うことができない問題点がある。
【先行技術文献】
【特許文献】
【0014】
【特許文献1】特開2004−272577号公報
【特許文献2】特開2007−41810号公報
【特許文献3】特開2007−41813号公報
【非特許文献】
【0015】
【非特許文献1】滝沢寛之、小林広明著「スーパーSINETを利用した大規模遠隔可視化処理の評価」、東北大学情報シナジーセンタースーパーコンピューティング研究、東北大学情報シナジーセンター年報、No3、106〜114頁、2004年6月
【発明の概要】
【発明が解決しようとする課題】
【0016】
そこで、膨大なデータ量に基づく科学技術計算における対話的実時間遠隔可視化システムとして、一般のクライアントでも利用可能な500kbps〜1Mbpsという低速の一般公衆回線を利用して、専用ワークステーションなど高価な表示装置を用いることなく立体透過画像を表示することができ、擬似三次元画像の場合と異なり、クライアントが膨大なデータに対して充分な解析を行うことができる対話的実時間遠隔システムの開発が望まれていた。
【課題を解決するための手段】
【0017】
本発明は、上記の課題を解決することを目的として成されたものであり、ホスト側の可視化サーバにより作成された画像データを、ストリーミングサーバによりストリーミング動画データへ高速に変換し、ストリーミング動画としてリアルタイムでクライアント側に配信するようにしたものである。
以下、各請求項の発明を説明する。
【0018】
請求項1に記載の発明は、
遠隔での三次元可視化計算をリアルタイムで対話的に操作する対話的実時間遠隔可視化システムであって、
通信回線を介して遠隔の端末より入力された入力データに基づき、三次元データ保持部から該当する三次元データを可視化サーバに読み出し、前記入力データに基づく処理を行った後、複数の画像ファイルに変換して可視化データを作成する可視化手段と、
ストリーミングサーバが、メモリ上で前記可視化データを動画変換して、ストリーミング動画データを作成するストリーミング手段と、
前記ストリーミング動画データを前記遠隔の端末の表示装置にストリーミング配信する配信手段とを備え、
前記ストリーミング手段における動画変換プログラムと、前記配信手段におけるストリーミング配信プログラムとの間で、メモリが共有されていることを特徴とする対話的実時間遠隔可視化システムである。
【0019】
本請求項の発明においては、従来のように、ホスト側に設けられた可視化サーバにおいて可視化手段により作成された可視化データ(画像ファイル)をそのままクライアント側に配信するのではなく、ストリーミング技術を活用し、ホスト側に同様に設けられたストリーミングサーバにおいてストリーミング手段により、予め、可視化データからストリーミング動画データへの変換を行っているため、配信データ量を従来に比べ大幅に低減することができ、一般公衆回線を用いた配信であっても、立体透過画像として充分に配信することができる。
【0020】
そして、可視化データからストリーミング動画データへの変換をメモリ上で行っているため、短時間でストリーミング動画データへの変換を行うことができる。
【0021】
また、動画変換プログラムとストリーミング配信プログラムとの間でメモリを共有しているため、ストリーミング配信されるストリーミング動画データファイルの内容を共有メモリ上に反映させることができ、これにより、ストリーミング動画データのストリーミング配信プログラムへの受け渡しをより高速化することができる。
【0022】
さらに、ストリーミング配信は、動画データをパケット単位に分解してクライアントに配信(ダウンロード)する手法であるため、クライアントは、ストリーミング動画データ全体の配信(ダウンロード)を待つことなく、パケット単位で直ちに再生して端末に表示することができる。その際、クライアントが受信したデータ(パケット)は、一旦メモリに記憶されるものの、再生(表示)が完了する毎にメモリが解放される。このため、クライアントの端末のハードディスクやキャッシュなどには、特別な処理を行わない限り、動画データが残ることがなく、専用ワークステーションなど高性能で高価な計算機を端末とする必要がない。
【0023】
以上の工夫がなされた本システムにおいては、クライアントは、表示された立体透過画像に対して、表示部分の拡大、縮小、回転などのインタラクティブな操作命令を、マウス操作やキーボード操作により入力する。入力された操作命令に従い、ホスト側では、該当する三次元データが読み出され、可視化サーバにおいて、操作命令に従った処理が行われて画像データが高速に作成される(可視化手段)。その後、ストリーミングサーバにおいて、ストリーミング動画データへと高速に変換される(ストリーミング手段)。このストリーミング動画データは、ストリーミング配信プログラムにより、クライアント端末にリアルタイムで配信される(配信手段)ため、クライアントは立体透過画像をリアルタイムで閲覧することができる。
【0024】
以上の繰り返しにより、クライアントは、ストレスのない遠隔でのインタラクティブな操作をリアルタイムで実現することができ、解析作業の効率向上を図ることができる。また、遠隔にいる複数のクライアントが、リアルタイムでの閲覧が可能となる。
【0025】
可視化データである画像ファイル(BMP形式)から変換されるストリーミング動画データの形式としては、FLV形式が好ましいが特に限定されず、WMV形式、ASF形式なども採用できる。
【0026】
クライアントが、ストリーミング配信されたストリーミング動画データを閲覧する再生ソフトとしては、上記した各ストリーミング動画データの形式にそれぞれに対応した再生ソフトが適宜用いられる。例えば、ストリーミング動画データがFLV形式の場合には「Flash Player」が用いられる。
【0027】
「Flash Player」は、多くのPCに導入されて広く使用されており、特殊なプラグインを必要とせず、容易に導入することができる。また、Windows(登録商標)(以下、Windowsという)、Macintosh(登録商標)(以下、Macintoshという)のいずれのPCでも使用することができ、実用性が高い。
【0028】
請求項2に記載の発明は、
前記ストリーミング手段は、BMP形式の可視化データをFLV形式のストリーミング動画データに変換する手段であることを特徴とする請求項1に記載の対話的実時間遠隔可視化システムである。
【0029】
FLV形式は、アドビシステムが開発している動画ファイルフォーマットであり、ユーザ(クライアント)がコーデック等を気にせず簡単に利用できるため、YouTube等の動画投稿サイト等で広く使用されており、実用的である。また、FLV形式は、プラットフォームに非依存であるため好ましい。
【0030】
請求項3に記載の発明は、
前記FLV形式のストリーミング動画データの作成は、各BMP形式の画像ファイルのヘッダ情報とメタデータを取得してメモリへ書込み、前記可視化手段により作成された複数の画像ファイルのRGB情報が存在する間、データの読込み、圧縮、およびPrevious Tag Size値の計算と前記メモリへの書込みを繰り返すことにより行われることを特徴とする請求項2に記載の対話的実時間遠隔可視化システムである。
【0031】
本請求項の発明においては、FLV形式のストリーミング動画データの作成に際して、メモリ上で処理を行うと共にデータの圧縮を行っているため、ストリーミング動画ファイルへの変換をより高速化することができる。
【0032】
既存のFLV変換方法としてはffmpegを用いる方法がある。この方法は、最初にconvertコマンドを用いて複数枚のBMP画像をMpeg動画に変換し、次いでffmpegでMpegをFLVに変換する方法である。しかし、この方法を用いた場合、例えば、Pentium Dual−Core (登録商標)1.6GHzのCPU、1GBのメモリを搭載した計算機を用いて1枚約351kBである400×300のBMP画像10枚を変換するには、約3.043秒を要し、リアルタイムでのインタラクティブ操作を実現することができない。そこで、より高速な変換を行うためにデータの圧縮を行う。
【0033】
圧縮方式としては、例えば、「zlib圧縮」が好ましいが特に限定されず、「compress」、「lhz」、「bzip2」なども採用できる。
【0034】
なお、「Previous Tag Size」とは、圧縮されたデータとタグのメモリサイズである。
【0035】
請求項4に記載の発明は、
前記圧縮が、「zlib圧縮」であることを特徴とする請求項3に記載の対話的実時間遠隔可視化システムである。
【0036】
「zlib」は、zipやgzip、PNG画像に使用されている可逆圧縮アルゴリズムをライブラリ化したものであり、GNUライセンスで配布されている自由に使用可能なアルゴリズムであり、圧縮方法として国際的にも信頼性が高いため、好ましい。また、「zlib」は、圧縮率に対する計算コストが良好、即ち、迅速に圧縮可能であるため好ましい。
【0037】
なお、変換に際しては、圧縮後のデータバッファサイズなどが必要であるため、圧縮部分には基本関数を使用せず、これらの値を取得することができる高次関数compress2()を使用する。高次関数compress2()は、9段階の圧縮率を指定することができる。
【0038】
請求項5に記載の発明は、
前記動画変換プログラムと前記ストリーミング配信プログラムとの間で行われるストリーミング動画データの受け渡しが、「External API」を使用することにより行われることを特徴とする請求項2ないし請求項4のいずれか1項に記載の対話的実時間遠隔可視化システムである。
【0039】
前記したように、動画変換プログラムとストリーミング配信プログラムとの間でメモリを共有して、ストリーミング配信されるストリーミング動画データファイルの内容を共有メモリ上に反映させることにより、仮想アドレスを与え、ストリーミング動画データのストリーミング配信プログラムへの受け渡しをより高速化することができる。
【0040】
しかし、「Flash Player」は、Web上のアプリケーションということもあり、メモリを操作できない仕様となっている。このため、「Flash Player」だけでは共有メモリの技術を使用することができない。そこで、「External API」を使用することにより、外部アプリケーションとの通信を確立でき、ストリーミング動画データの受け渡しを高速化することが可能となる。
【0041】
「External API」とは、「ActionScript」の一部であり、Flash Playerのコンテナとして機能するWebブラウザなどの外部アプリケーションで実行されるコードと、「ActionScript」間の通信用メカニズムを提供する。
【0042】
請求項6に記載の発明は、
前記ストリーミング配信を行うストリーミング配信サーバが、「red5」であることを特徴とする請求項5に記載の対話的実時間遠隔可視化システムである。
【0043】
ストリーミング配信サーバとして「red5」を用いることにより、「External API」を使用したクライアントへのストリーミング動画データの送信に際し、動画変換プログラムとストリーミング配信プログラムとの間の通信を共有メモリで行い、データ送受信の高速化ができる。
【0044】
「red5」は、オープンソースで提供されるストリーミング配信サーバであり、容易に導入することができる。また、Windows、MacintoshのいずれのPCでも使用することができ、実用性が高い。
【0045】
請求項7に記載の発明は、
遠隔での三次元可視化計算をリアルタイムで対話的に操作する対話的実時間遠隔可視化方法であって、
通信回線を介して遠隔の端末より入力された入力データに基づき、三次元データ保持部から該当する三次元データを可視化サーバに読み出し、前記入力データに基づく処理を行った後、複数の画像ファイルに変換して可視化データを作成する可視化ステップと、
ストリーミングサーバが、メモリ上で前記可視化データを動画変換して、ストリーミング動画データを作成するストリーミングステップと、
前記ストリーミング動画データを前記遠隔の端末の表示装置にストリーミング配信する配信ステップとを備え、
前記ストリーミングステップにおける動画変換プログラムと、前記配信ステップにおけるストリーミング配信プログラムとの間で、メモリが共有されていることを特徴とする対話的実時間遠隔可視化方法である。
【0046】
本請求項の発明は、物の発明である請求項1の発明を方法の発明として捉えたものである。
【0047】
請求項8に記載の発明は、
前記ストリーミングステップは、BMP形式の可視化データをFLV形式のストリーミング動画データに変換するステップであることを特徴とする請求項7に記載の対話的実時間遠隔可視化方法である。
【0048】
本請求項の発明は、物の発明である請求項2の発明を方法の発明として捉えたものである。
【0049】
請求項9に記載の発明は、
前記FLV形式のストリーミング動画データの作成は、各BMP形式の画像ファイルのヘッダ情報とメタデータを取得してメモリへ書込み、前記可視化ステップにおいて作成された複数の画像ファイルのRGB情報が存在する間、データの読込み、zlib圧縮、およびPrevious Tag Size値の計算と前記メモリへの書込みを繰り返すことにより行われることを特徴とする請求項8に記載の対話的実時間遠隔可視化方法である。
【0050】
本請求項の発明は、物の発明である請求項3の発明を方法の発明として捉えたものである。
【発明の効果】
【0051】
本発明によれば、膨大なデータ量に基づく科学技術計算における対話的実時間遠隔可視化システムとして、一般のクライアントでも利用可能な500kbps〜1Mbpsという低速の一般公衆回線を利用して、専用ワークステーションなど高価な表示装置を用いることなく立体透過画像を表示することができ、擬似三次元画像の場合と異なり、クライアントが膨大なデータに対して充分な解析を行うことができる対話的実時間遠隔システムおよび対話的実時間遠隔方法を提供することができる。
【図面の簡単な説明】
【0052】
【図1】本発明の実施の形態の対話的実時間遠隔可視化を行うシステムを概念的に示す図である。
【図2】対話型操作における可視化されたデータとクライアントの指示の流れの様子を概念的に示す図である。
【図3】クライアントの指示に基づくデータ処理の手順を示す図である。
【図4】BMP形式のデータをリアルタイムでFLV変換する際の手順を示す図である。
【図5】画像データの圧縮の様子を示す図である。
【図6】FLV変換プログラムと配信プログラム間の通信方法を概念的に示す図である。
【図7】C言語とJava(登録商標)(以下、Javaという)間での共有メモリを用いた通信を概念的に示す図である。
【図8】ストリーミングサーバとクライアント間のデータの流れを示す図である。
【発明を実施するための形態】
【0053】
以下、本発明を実施の形態に基づいて説明する。なお、本発明は、以下の実施の形態に限定されるものではない。本発明と同一および均等の範囲内において、以下の実施の形態に対して種々の変更を加えることが可能である。
【0054】
1.システムの概要とクライアントの指示を含むデータの流れ
はじめに、本発明の実施の形態の対話的実時間遠隔可視化を行うシステム全体の構成と、クライアントの指示を含むデータの流れの様子を、それぞれ図1と図2を参照しつつ説明する。
【0055】
(1)システムの概要
図1は、本発明の実施の形態の対話的実時間遠隔可視化を行うシステムを、概念的に示す図である。図1において、10はスーパーコンピュータであり、11は大規模なデータであり、20は送信側のサーバであり、21はその可視化サーバであり、22はそのストリーミングサーバであり、23はその送信部であり、24はその受信部であり、31はクライアントA側の端末あり、32はクライアントB側の端末である。
【0056】
スーパーコンピュータ10で計算されるなどしてそのメモリに蓄えられている大規模なデータ11は、送信側のサーバ20内の可視化サーバ21で可視化され、ストリーミングサーバ22の送信部23からクライアントA側の端末31等にストリーミング動画としてリアルタイムで配信され、クライアントA等はFlash Player等の所定のプログラムによって、配信されたストリーミング動画を端末に表示させて閲覧できる。また、閲覧したクライアントA等の指示は、送信側のサーバ20内のストリーミングサーバ22の受信部24に送られる。なお、端末は、特に高性能である必要はなく、例えばパーソナルコンピュータが用いられる。
【0057】
(2)クライアントの指示の流れ
図2は、対話型操作における可視化されたデータと、該データに関するクライアントの指示の流れの様子を概念的に示す図である。図2において、太い矢印で示す(1)と(2)は、送信するデータの流れを示し、(3)は、そのデータを閲覧したクライアントの指示の流れを示す。
【0058】
図2に示す様に、クライアントは、自身の端末(パーソナルコンピュータ)に表示されているストリーミング動画を閲覧しつつ、サーバに対して、次に映し出されるストリーミング動画や画像についての指示、具体的には拡大・縮小・回転などの指示を出し(3)、サーバ20は、クライアントからの指示を受けて大規模データ中から必要なデータを読み出し、3次元解析を行って可視化したデータとして出力(1)後、出力結果をストリーミング動画としてリアルタイムに配信(2)する。
【0059】
2.クライアントの指示に基づくデータ処理の手順
次に、クライアントの指示に基づくデータ処理の手順について説明する。図3は、クライアントの指示に基づくデータ処理の手順を示す図である。なお、最初に表示するデータやその処理についてのサーバ20側での認識、当該データの指示に従っての可視化を含む処理は、クライアントによる所定のキーボード操作等で行われる。
【0060】
(S1)サーバ20は、目下ストリーミングしているデータのアドレス、その他当該データに対する処理の内容を予め認識している。
(S2)クライアントから指示があったときには、すぐその内容を認識する。なお、クライアントの指示は、マウスのドラッグ、画面下のコンソールパネルでの拡大・縮小・回転等である。
【0061】
(S3)クライアントの指示に基づき、指示先のデータのアドレスを認識する。
(S4)認識したアドレスのデータを読み出す。
(S5)読み出したデータについて、リアルタイムで可視化を含むクライアントに指示された処理を行う。なお、処理後のデータは、BMP形式である。
【0062】
3.画像配信するための手法
本実施の形態の画像配信の手法は、対象画像のFLV(Flash Video)形式変換、共有メモリを用いたFLV変換プログラムと配信プログラム間の通信、ストリーミング配信によって構成される。以下に、各構成について具体的に説明する。
(1)FLV変換
はじめに、FLV変換について説明する。BMP形式の静止画像を1秒に30枚連続して、しかもクライアントの指示に応じて遅滞無く、即ちリアルタイムでストリーミング配信する為、ストリーミングサーバ22でFLV形式のデータに変換する。なお、FLVとはアドビシステムズが開発している動画ファイルフォーマットである。
【0063】
本実施の形態では、リアルタイムでFLV動画を作製するため、RGB情報を取得し、FLVファイルへ変換する全ての流れをストリーミングサーバのメモリ上で行うことにより、処理時間の短縮を図る。これを、図4を参照しつつ説明する。図4は、このRGB情報を取得して、BMP形式の画像をリアルタイムでFLV変換する際の手順を示す図である。
【0064】
イ.FLV変換の手順
[処理の開始]
(S1)1枚の画像データに対して、書込用ファイルを開く。
(S2)ヘッダ情報と属性や種類を記録した付属データであるメタデータを取得する。
(S3)ヘッダ情報とメタデータを、メモリに出力する。
(S4)変換用BMPファイルを指定する。なおこの際、BMPファイルヘッダは14バイト(byte)固定となっており、最初の2byteがファイルタイプBMであるか否かでBMPファイルを識別する。
(S5)変換する画像の有無を調べ、無ければ当該BMPデータの処理を終える。あれば、次の(S6)へ進む。
(S6)Previous Tag Sizeを取得する。
(S7)RGB情報の有無を調べ、無ければ当該BMPデータの処理を終える。あれば、次の(S8)へ進む。
(S8)RGB情報を読み込む。
(S9)画像データのzlib圧縮を行う。
(S10)zlib圧縮を行ったデータのPrevious Tag Sizeを計算する。
(S11)サーバのメモリに、zlib圧縮を行ったデータの書込みを行う。
[処理の終了]
【0065】
前記のFLV変換には、圧縮後のデータバッファサイズ等が必要であるため、(S9)の圧縮部分には基本関数は使用せず、それらの値が取得でき、さらに9段階の圧縮率を指定可能なzlibの高次関数compress2()を使用する。
【0066】
ロ.画像データ圧縮
次に、前記の(S9)における画像データ圧縮を、図5を参照しつつ説明する。図5は、画像データの圧縮の様子を示す図である。
【0067】
色ビット数、画像の幅等のBPMの画像データは、図5に示す様に左下から右上に向かって#1から#16の順に上下が反転した状態でHDDに格納されている。このデータを、ブロック幅block_w、高さblock_hとして、幾つかのブロックに分けて圧縮を行う。BMPファイルでは画像1行毎の情報量が4の倍数でなければならないため、ブロックの縦と横の値はそれぞれ4の倍数とする。#13の様な画像の最後の余りの部分は任意の値で良い。また、各ブロック内での圧縮も、画像データ全体と同様に左下から右上に行う。
【0068】
(2)FLV変換プログラムと配信プログラム間の通信方法
イ.通信方法についての基本的な考え方
FLV変換されたデータは、ストリーミングサーバに送られ、ストリーミング配信される。
【0069】
ここで、FLVプログラムと配信プログラム間の通信について、図6を参照しつつ説明する。図6は、FLV変換プログラムと配信プログラム間の通信方法を概念的に示す図である。
【0070】
FLV変換プログラムと配信プログラム間の通信方法は、基本的には、図6に示す様にFLV変換プログラム21とflash上での配信プログラム間22でメモリを共有し、ファイル内容をメモリ上に反映させることで仮想アドレスを与え、これによりストリーミングサーバが動画を読み込む際にHDDに毎回アクセスする必要をなくしてデータの受渡しを高速化するものである。
【0071】
図6に示す様に、クライアント側の装置31には動画を再生する為のプラグインソフトとしてFlash Playerが装備されているが、これはweb上でのアプリケーションであるため、送信側のメモリを操作できず、その結果フラッシュのみでは共有メモリの技術を使用できない。そこで、External APIを用いて外部アプリケーションとの通信を確立し、高速でのデータの受渡しを可能とする。
【0072】
前記の通り、このExternal APIは、Flash Playerのコンテナとして機能するWebブラウザ等の外部アプリケーションで実行されるコードとActionScript間の通信用メカニズムを提供するものである。また、External APIを用いてクライアントにFLVデータを通信するため、ストリーミングサーバにはred5を採用し、Javaを用いてプログラムを作成する。これにより、FLV変換プログラムと配信プログラム間の通信を共有メモリで実現する。なお、red5は、Open Source Flash(http://osflash.org/flv)にて開示されているプログラムである。
【0073】
ロ.C言語とJava間の通信
本実施の形態では、FLVプログラムにはC言語を用い、ストリーミングサーバ(red5)にはJavaを用いる。このため、C言語とJava間で共有メモリを用いた通信が必要となる。C言語とJava間の通信方法を、図7を参照しつつ説明する。図7は、C言語とJava間での共有メモリを用いた通信方法を概念的に示す図である。
【0074】
C言語側のプログラムでshmget()で共有メモリを作成する。その領域の確保に成功すると、shmget()からユニークなIDを返される。Java側は、そのIDに従って共有メモリにアクセスし、アドレスを取得し、データの読み出しを行うこととなる。なお、データは、C言語側がshmat()で共有メモリにマップしており、Java側の読み出し後、shmct()で共有メモリを削除する。
【0075】
C言語からJavaの機能を呼び出す為には、Javaのプログラムから他の言語で開発されたネイティブコードのプログラムを利用する為のAPIであるJNI(Java Native Interface)を用いている。JNIを用いる為に、共有メモリにアクセスするためのJavaプログラムのコンパイルにより作成されたクラスファイルからC言語で使用するヘッダファイルが作成され、そのヘッダファイルからVC++によってC言語のd11ファイルを作成する。最後に、Javaファイルが実行され、データが共有される。
【0076】
(3)ストリーミング配信
次に、C言語プログラミングとJavaプログラム間で共有しているデータをストリーミング配信するための手段について説明する。
【0077】
イ.適用プログラム
前記ストリーミング配信を実現するため、以下のプログラムを使用する。
a.ストリーミング配信サーバ
ストリーミング配信サーバは、オープンソースで提供されているストリーミングサーバであり、Javaで実装されているため、メモリ操作が可能なred5を使用する。
【0078】
b.クライアント
クライアント側は、世界中のパソコンの90%以上にインストールされており、特殊なプラグインを必要としないMacromedia Flash Playerを用いる。また、配信用および受信用のアプリケーションはSWF形式であるため、WindowsあるいはMacintoshのいずれであってもFlash Playerさえあれば利用可能である。
【0079】
c.Javaコンテンツ制作ツール
サーバ側で使用するJavaコンテンツの制作ツールとしては、Eclipseを用いる。
【0080】
d.Flashコンテンツ制作ツール
Flashコンテンツ制作ツールとしては、Adobe Flash CS3 Professionalを用いる。
【0081】
ロ.ストリーミングサーバとクライアント間のデータの流れ
ストリーミングサーバとクライアント間のデータの流れについて、図8を参照しつつ説明する。図8は、ストリーミングサーバとクライアント間のデータの流れを示す図である。
【0082】
a.サーバ側の流れ
サーバ側では、データを図8の(2)に相当するC言語とJava間でのデータの通信プログラムから受取る。次に、(3)に相当する配信プログラムは、受取ったデータを読み込んでred5に認識させる。red5への接続が成功したら、red5に認識させたデータを読み出した後、配信用SWFを作成して配信する。次に、web.xml,red5−web.xml,red5−web.propertiesにそれぞれ作成したアプリケーションを指定し、パスを通す。
【0083】
プログラムは、Eclipseのワークスペースでコーディングした後、red5のwebappフォルダにコピーし、red5を再起動することにより有効となる。
【0084】
b.サーバとクライアント間の流れ
クライアント側では、先ず図8の(5)に当る受信用SWFを作成する。受信用SWFに、(4)のred5があるパーソナルコンピュータのIPアドレスを指定し、接続する。次に、動画を扱うオブジェクトを作成し、red5から送信された映像をクライアント側に表示させる。red5は、(3)の配信プログラムから受取った映像を、クライアント側からのリクエストに応じて配信する。
【0085】
クライアント側で受信用SWFを実行すると、RTMPで配信されている可視化サーバで作成されたストリーミング動画を、(6)のFlash Playerで閲覧することが可能となる。
【0086】
なお、red5は、SWFとのデータのやりとりをRTMP(Real−Time Messaging Protocol)という専用プロトコルを使用して行う。クライアントのWebブラウザは、HTTPを通してWebサーバからHTMLやSWFをダウンロードし、次にFlash PlayerがそのSWFに含まれる動作に従ってRTMPプロトコルを使用してred5に接続する。red5上の可視化サーバが作成した動画はred5からストリーミングされ、クライアントのSWF上で再生される。
【産業上の利用可能性】
【0087】
本発明は、高価な専用の高速回線と可視化サーバ等の設置が困難な一般ユーザ、中小の研究所、中小の病院や開業医等における大規模データの利用に用いられる。
【符号の説明】
【0088】
10 スーパーコンピュータ
11 大規模なデータ
20 送信側のサーバ
21 可視化サーバ
22 ストリーミングサーバ
23 送信部
24 受信部
31 クライアントA側の端末
32 クライアントB側の端末

【特許請求の範囲】
【請求項1】
遠隔での三次元可視化計算をリアルタイムで対話的に操作する対話的実時間遠隔可視化システムであって、
通信回線を介して遠隔の端末より入力された入力データに基づき、三次元データ保持部から該当する三次元データを可視化サーバに読み出し、前記入力データに基づく処理を行った後、複数の画像ファイルに変換して可視化データを作成する可視化手段と、
ストリーミングサーバが、メモリ上で前記可視化データを動画変換して、ストリーミング動画データを作成するストリーミング手段と、
前記ストリーミング動画データを前記遠隔の端末の表示装置にストリーミング配信する配信手段とを備え、
前記ストリーミング手段における動画変換プログラムと、前記配信手段におけるストリーミング配信プログラムとの間で、メモリが共有されていることを特徴とする対話的実時間遠隔可視化システム。
【請求項2】
前記ストリーミング手段は、BMP形式の可視化データをFLV形式のストリーミング動画データに変換する手段であることを特徴とする請求項1に記載の対話的実時間遠隔可視化システム。
【請求項3】
前記FLV形式のストリーミング動画データの作成は、各BMP形式の画像ファイルのヘッダ情報とメタデータを取得してメモリへ書込み、前記可視化手段により作成された複数の画像ファイルのRGB情報が存在する間、データの読込み、圧縮、およびPrevious Tag Size値の計算と前記メモリへの書込みを繰り返すことにより行われることを特徴とする請求項2に記載の対話的実時間遠隔可視化システム。
【請求項4】
前記圧縮が、「zlib圧縮」であることを特徴とする請求項3に記載の対話的実時間遠隔可視化システム。
【請求項5】
前記動画変換プログラムと前記ストリーミング配信プログラムとの間で行われるストリーミング動画データの受け渡しが、「External API」を使用することにより行われることを特徴とする請求項2ないし請求項4のいずれか1項に記載の対話的実時間遠隔可視化システム。
【請求項6】
前記ストリーミング配信を行うストリーミング配信サーバが、「red5」であることを特徴とする請求項5に記載の対話的実時間遠隔可視化システム。
【請求項7】
遠隔での三次元可視化計算をリアルタイムで対話的に操作する対話的実時間遠隔可視化方法であって、
通信回線を介して遠隔の端末より入力された入力データに基づき、三次元データ保持部から該当する三次元データを可視化サーバに読み出し、前記入力データに基づく処理を行った後、複数の画像ファイルに変換して可視化データを作成する可視化ステップと、
ストリーミングサーバが、メモリ上で前記可視化データを動画変換して、ストリーミング動画データを作成するストリーミングステップと、
前記ストリーミング動画データを前記遠隔の端末の表示装置にストリーミング配信する配信ステップとを備え、
前記ストリーミングステップにおける動画変換プログラムと、前記配信ステップにおけるストリーミング配信プログラムとの間で、メモリが共有されていることを特徴とする対話的実時間遠隔可視化方法。
【請求項8】
前記ストリーミングステップは、BMP形式の可視化データをFLV形式のストリーミング動画データに変換するステップであることを特徴とする請求項7に記載の対話的実時間遠隔可視化方法。
【請求項9】
前記FLV形式のストリーミング動画データの作成は、各BMP形式の画像ファイルのヘッダ情報とメタデータを取得してメモリへ書込み、前記可視化ステップにおいて作成された複数の画像ファイルのRGB情報が存在する間、データの読込み、zlib圧縮、およびPrevious Tag Size値の計算と前記メモリへの書込みを繰り返すことにより行われることを特徴とする請求項8に記載の対話的実時間遠隔可視化方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2011−61385(P2011−61385A)
【公開日】平成23年3月24日(2011.3.24)
【国際特許分類】
【出願番号】特願2009−207416(P2009−207416)
【出願日】平成21年9月8日(2009.9.8)
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り 掲載年月日:平成21年9月3日 掲載アドレス:http://fw8.bookpark.ne.jp/cm/ipsj/particulars.asp?content_id=IPSJ−MPS09075019−PDF
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.FLASH
【出願人】(505195384)国立大学法人奈良女子大学 (15)
【Fターム(参考)】