以下に添付図面を参照して、本発明にかかる情報処理プログラム、情報処理方法および情報処理装置の実施の形態を詳細に説明する。
(実施の形態にかかる情報処理装置100の一実施例)
図1は、実施の形態にかかる情報処理装置100の一実施例を示す説明図である。情報処理装置100は、例えば、化合物の構造式111に含まれる原子記号の属性を示す値と結合記号の属性を示す値とを、構造式111を描画領域上に描画した画像110を示す画像情報内に埋め込むコンピュータである。以下の説明では、情報処理装置100によって行われる原子記号の属性を示す値と結合記号の属性を示す値とを、構造式111を描画領域上に描画した画像110を示す画像情報内に埋め込む動作を「第1の動作」と表記する場合がある。
ここで、原子記号とは、例えば、化合物内の原子を示す記号である。原子記号の一例としては、炭素原子を示す記号「C」がある。原子記号の属性とは、例えば、原子記号の記号種別を示す種別情報、構造式111に含まれる各々の原子記号に割り当てられた原子ID(Identification)、原子番号の値、構造式111に含まれる原子記号の位置を示す値、および電荷の値などである。また、結合記号とは、例えば、化合物内の原子間の結合を示す記号である。結合記号の属性とは、例えば、結合記号の記号種別を示す種別情報、結合される2つの原子の原子ID、結合記号の結合種別を示す値、および結合記号の立体種別を示す値などである。
また、情報処理装置100は、例えば、構造式111を描画領域上に描画した画像110を示す画像情報内に埋め込まれた原子記号の属性を示す値と結合記号の属性を示す値とを、画像情報から抽出するコンピュータである。以下の説明では、情報処理装置100によって行われる構造式111を描画領域上に描画した画像110を示す画像情報内に埋め込まれた原子記号の属性を示す値と結合記号の属性を示す値とを画像情報から抽出する動作を「第2の動作」と表記する場合がある。
<第1の動作>
ここで、情報処理装置100によって行われる第1の動作の一例について説明する。ここで、図1の例では、画像110が上部に示され、画像110の中央部分を拡大したものが下部に示されている。
情報処理装置100は、例えば、画像110内の原子記号「C」の一部分を表す画素を特定する。次に、情報処理装置100は、特定した画素の画素情報を示すビット列のうち、所定の位置にあるビットの値を、原子記号「C」の属性を示す値に変更する。以下の説明では、属性を示す値を「属性値」と表記する場合がある。ここで、画素情報とは、例えば、RGB値を示す24ビットのビット列である。属性とは、例えば、記号種別の情報であって、原子記号または結合記号のいずれかであることを示す種別情報である。属性値とは、例えば、種別情報「原子記号」を示す値「1」である。
情報処理装置100は、具体的には、画像110内の原子記号「C」の一部分を表す画素112を特定する。次に、情報処理装置100は、特定した画素112の画素情報を示すビット列「000000000000000000000000」のうち、所定の位置「1ビット目」にあるビットの値を、原子記号「C」の属性「原子記号」を示す値「1」に変更する。結果として、特定した画素112は、文字色「黒」とも背景色「白」とも異なる色になる。また、情報処理装置100は、他の原子記号や結合記号に対しても同様の処理を行う。
これにより、情報処理装置100は、画像情報に原子記号の属性値と結合記号の属性値とを埋め込むことができる。このため、情報処理装置100の利用者は、画像情報と、原子記号の属性と結合記号の属性とを示す構造情報と、を別個に管理しなくてもよく、管理にかかる作業量を削減することができる。情報処理装置100によって行われる第1の動作の詳細については図6〜図18を用いて後述する。
ここでは、情報処理装置100は、一つの画素の画素情報を示すビット列のうちの所定の位置にあるビットの値を属性値に変更したが、これに限らない。例えば、情報処理装置100は、属性値が複数のビットで表現される場合は、複数ビットの各々のビットに対応する画素の画素情報を示すビット列のうちの所定の位置にあるビットの値を、各々のビットの値に変更してもよい。
<第2の動作>
次に、情報処理装置100によって行われる第2の動作の一例について説明する。情報処理装置100は、例えば、画像情報から、文字色「黒」とも背景色「白」とも異なる色を示す画素を特定し、特定した画素の画素情報を抽出する。次に、情報処理装置100は、抽出した画素の画素情報を示すビット列のうち、所定の位置にあるビットの値から属性値を抽出して、特定した画素を含む画素群が表す記号の属性を特定する。
情報処理装置100は、具体的には、画像110内で文字色とも背景色とも異なる色を示す画素112を特定する。次に、情報処理装置100は、特定した画素112の画素情報を示すビット列「000000000000000000000000」のうち、所定の位置「1ビット目」にある値「1」を抽出する。そして、情報処理装置100は、特定した画素112を含む画素群が表す記号の属性として、抽出した値「1」が示す属性「原子記号」を特定する。また、情報処理装置100は、文字色とも背景色とも異なる色を示す他の画素に対しても同様の処理を行う。
これにより、情報処理装置100は、画像情報から原子記号の属性と結合記号の属性とを特定することができ、特定した原子記号の属性と結合記号の属性とを出力することができる。このため、情報処理装置100の利用者は、原子記号の属性と結合記号の属性とを示す構造情報を把握することができる。情報処理装置100によって行われる第2の動作の詳細については図24および図25を用いて後述する。
ここでは、情報処理装置100は、第1の動作と第2の動作とを行うコンピュータであったが、これに限らない。例えば、情報処理装置100は、第1の動作のみを行うコンピュータであってもよいし、第2の動作のみを行うコンピュータであってもよい。
(情報処理装置100のハードウェア構成例)
図2は、実施の形態にかかる情報処理装置100のハードウェア構成例を示すブロック図である。図2において、情報処理装置100は、CPU(Central Processing Unit)201と、ROM(Read Only Memory)202と、RAM(Random Access Memory)203と、磁気ディスクドライブ(Hard Disk Drive)204と、磁気ディスク205と、光ディスクドライブ206と、光ディスク207と、ディスプレイ208と、インターフェース(I/F:Interface)209と、キーボード210と、マウス211と、スキャナ212と、プリンタ213と、を備えている。また、各構成部はバス200によってそれぞれ接続されている。
ここで、CPU201は、情報処理装置100の全体の制御を司る。ROM202は、ブートプログラムなどのプログラムを記憶する。また、ROM202は、例えば、図3に後述する原子記号−属性対応情報テーブル300と、図4に後述する結合記号−属性対応情報テーブル400と、を記憶する。
RAM203は、CPU201のワークエリアとして使用される。磁気ディスクドライブ204は、CPU201の制御にしたがって磁気ディスク205に対するデータのリード/ライトを制御する。磁気ディスク205は、磁気ディスクドライブ204の制御で書き込まれたデータを記憶する。
光ディスクドライブ206は、CPU201の制御にしたがって光ディスク207に対するデータのリード/ライトを制御する。光ディスク207は、光ディスクドライブ206の制御で書き込まれたデータを記憶したり、光ディスク207に記憶されたデータをコンピュータに読み取らせたりする。
ディスプレイ208は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ208は、例えば、液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
I/F209は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク214に接続され、このネットワーク214を介して他の装置に接続される。そして、I/F209は、ネットワーク214と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F209には、例えばモデムやLANアダプタなどを採用することができる。
キーボード210は、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス211は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
スキャナ212は、画像を光学的に読み取り、情報処理装置100内に画像データを取り込む。なお、スキャナ212は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ213は、画像データや文書データを印刷する。プリンタ213には、例えば、レーザプリンタやインクジェットプリンタを採用することができる。なお、光ディスクドライブ206、光ディスク207、ディスプレイ208、キーボード210、マウス211、スキャナ212、およびプリンタ213の少なくともいずれか1つは、なくてもよい。
(原子記号−属性対応情報テーブル300)
次に、図3を用いて、原子記号−属性対応情報テーブル300の記憶内容の一例について説明する。原子記号−属性対応情報テーブル300は、例えば、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶領域により実現される。
図3は、原子記号−属性対応情報テーブル300の記憶内容の一例を示す説明図である。図3に示すように、原子記号−属性対応情報テーブル300は、種別項目と、属性項目と、属性値項目と、対応ビット項目と、を有し、原子記号の属性の種別ごとに各項目の値がレコードとして記憶される。
種別項目には、原子記号の属性の種別が記憶される。原子記号の属性の種別とは、例えば、記号種別、原子ID、原子番号、X座標値、Y座標値、および電荷である。属性項目には、原子記号の属性が記憶される。属性とは、例えば、属性の種別が「記号種別」である場合は「原子記号」および「結合記号」である。また、属性とは、例えば、属性の種別が「原子番号」である場合は、原子番号を示す値「1〜118」である。また、属性とは、例えば、属性の種別が「電荷」である場合は、電荷を示す値「0〜8」である。
属性値項目には、属性を示す値が記憶される。属性値とは、例えば、種別情報「原子記号」を示すビット列「0000001」である。また、属性値とは、例えば、原子番号「1」を示すビット列「00000000000001」である。対応ビット項目には、画素情報を示すビット列のうちの属性値に変更するビットの位置が記憶される。ビットの位置は、例えば、属性の種別「記号種別」の属性値に変更する場合は、画素情報を示すビット列のうちの「1ビット目」である。また、ビットの位置は、例えば、属性の種別「原子ID」の属性値に変更する場合は、画素情報を示すビット列のうちの「2,3ビット目」である。
(結合記号−属性対応情報テーブル400)
次に、図4を用いて、結合記号−属性対応情報テーブル400の記憶内容の一例について説明する。結合記号−属性対応情報テーブル400は、例えば、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶領域により実現される。
図4は、結合記号−属性対応情報テーブル400の記憶内容の一例を示す説明図である。図4に示すように、結合記号−属性対応情報テーブル400は、種別項目と、属性項目と、属性値項目と、対応ビット項目と、を有し、結合記号の属性の種別ごとに各項目の値がレコードとして記憶される。
種別項目には、結合記号の属性の種別が記憶される。結合記号の属性の種別とは、例えば、記号種別、1番目の原子ID、2番目の原子ID、結合種別、および立体種別である。属性項目には、結合記号の属性が記憶される。属性とは、例えば、属性の種別が「記号種別」である場合は、「原子記号」および「結合記号」である。また、属性とは、例えば、属性の種別が「結合種別」である場合は、「単結合」、「二重結合」、「三重結合」、および「芳香環結合」である。また、属性とは、例えば、属性の種別が「立体種別」である場合は、「なし」、「上」、「上か下」、および「下」である。
属性値項目には、属性を示す値が記憶される。属性値とは、例えば、種別情報「結合記号」を示すビット列「0000010」である。また、属性値とは、例えば、結合種別「単結合」を示すビット列「00000000000001」である。対応ビット項目には、画素情報を示すビット列のうちの属性値に変更するビットの位置が記憶される。ビットの位置は、例えば、属性の種別「記号種別」の属性値に変更する場合は、画素情報を示すビット列のうちの「1ビット目」である。また、ビットの位置は、例えば、属性の種別「結合種別」の属性値に変更する場合は、画素情報を示すビット列のうちの「19ビット目」である。
(情報処理装置100の機能的構成例)
次に、図5を用いて、情報処理装置100の機能的構成例について説明する。
図5は、情報処理装置100の機能的構成を示すブロック図である。情報処理装置100は、取得部501と、第1の特定部502と、第2の特定部503と、第1の変更部504と、第2の変更部505と、抽出部506と、第3の特定部507と、を含む。
<第1の動作>
まず、第1の動作を実現する機能部について説明する。第1の動作は、取得部501と、第1の特定部502と、第2の特定部503と、第1の変更部504と、第2の変更部505と、によって実現される。
取得部501は、描画領域に描画される化合物の構造式111に含まれる原子を示す原子記号の属性と、構造式111に含まれる原子間の結合を示す結合記号の属性と、を含む構造情報を取得する。取得部501は、例えば、描画領域に描画される化合物「CH3−CHO(アセトアルデヒド)」の構造式111に含まれる原子記号の属性と結合記号の属性とを示す構造情報を取得する。
これにより、第1の特定部502は、取得部501によって取得された構造情報を参照して、構造式111に含まれる原子記号の属性と結合記号の属性とを特定することができる。取得されたデータは、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。取得部501は、例えば、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、または、I/F209により、その機能を実現する。
第1の特定部502は、取得した構造情報を参照して、構造式111の中から選択された原子記号または結合記号のいずれかの記号の属性を特定する。第1の特定部502は、例えば、構造式111の中から原子記号「C」を選択し、構造情報を参照して、原子記号「C」の属性として、種別情報「原子記号」やX座標値「30」やY座標値「57」や電荷の値「0」を特定する。また、第1の特定部502は、同様に、構造式111の中から、未選択の原子記号または結合記号のいずれかの記号を、順次選択して、選択した記号の属性を特定する。
これにより、第1の変更部504は、第1の特定部502によって特定された属性から、属性値を生成することができる。特定されたデータは、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。第1の特定部502は、例えば、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、その機能を実現する。
第2の特定部503は、構造情報を参照して、描画領域上に描画される構造式111の画像情報に含まれる記号を表す画素群のうちのいずれかの画素の画素情報を特定する。第2の特定部503は、例えば、化合物構造情報ファイルに含まれる原子記号「C」のX座標値やY座標値を参照して、原子記号「C」を表す画素群を特定し、特定した画素群のうちのいずれかの画素の画素情報を特定する。
また、第2の特定部503は、属性値が複数のビットで表現される場合に、記号を表す画素群のうちの複数のビットの各々のビットに対応する画素の画素情報を特定してもよい。第2の特定部503は、例えば、構造情報に含まれる原子記号「C」のX座標値やY座標値を参照して、原子記号「C」を表す画素群を特定する。次に、第2の特定部503は、原子記号−属性対応情報テーブル300を参照して、種別情報「原子記号」を示す属性値「0000001」を特定する。
そして、第2の特定部503は、種別情報「原子記号」が複数のビットで表現されるため、特定した原子記号「C」を表す画素群のうち、各々のビットに対応する7つの画素の画素情報を特定する。以下の説明では、種別情報「原子記号」を示す属性値「0000001」の各々のビットを「第1〜第7のビット」と表記する場合がある。また、以下の説明では、第1〜第7のビットの各々のビットに対応する画素の画素情報を「第1〜第7の画素情報」と表記する場合がある。
これにより、第1の変更部504は、第2の特定部503によって特定された画素情報を、変更対象の画素情報として取得することができる。特定されたデータは、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。第2の特定部503は、例えば、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、その機能を実現する。
第1の変更部504は、特定した画素の画素情報を示すビット列のうち、特定した属性の種別に応じた位置にあるビットの値を、特定した属性値に変更する。第1の変更部504は、例えば、原子記号−属性対応情報テーブル300を参照して、属性の種別「記号種別」に応じた位置「1ビット目」を特定する。次に、第1の変更部504は、種別情報「原子記号」を示す属性値「1」を特定する。そして、第1の変更部504は、第1の変更部504は、特定した画素の画素情報を示すビット列「000000000000000000000000」のうち、特定した位置「1ビット目」にあるビットの値を、種別情報「原子記号」を示す属性値「1」に変更する。
また、第1の変更部504は、第2の特定部503によって各々のビットに対応する画素の画素情報が特定された場合は、各々のビットに対応する画素情報を示すビット列のうち、属性の種別に応じた位置にあるビットの値を、各々のビットの値に変更してもよい。第1の変更部504は、例えば、第1の画素情報を示すビット列「000000000000000000000000」のうち、属性の種別「記号種別」に応じた位置「1ビット目」にあるビットの値を、第1のビットの値「0」に変更する。
また、第1の変更部504は、同様に、第2〜第6の画素情報の各々の画素情報を示すビット列のうち、属性の種別「記号種別」に応じた位置「1ビット目」にあるビットの値を、第2〜第6のビットの各々のビットの値「0」に変更する。また、第1の変更部504は、例えば、第7の画素情報を示すビット列「000000000000000000000000」のうち、属性の種別「記号種別」に応じた位置「1ビット目」にあるビットの値を、第7のビットの値「1」に変更する。
これにより、第1の変更部504は、画像情報の中に、原子記号の属性と結合記号の属性とを埋め込むことができる。変更されたデータは、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。第1の変更部504は、例えば、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、その機能を実現する。
第2の変更部505は、特定した画素情報を示すビット列のうち、特定した属性に応じた位置とは異なる所定の位置にあるビットの値を、所定の値に変更する。ここで、所定の値とは、例えば、画素情報を示すビット列が第1の変更部504によって変更されたことを示す格納先の識別子であって、「1,0,1」である。所定の位置とは、例えば、画素情報を示すビット列のうちの格納先の識別子に変更する位置であって、8,16,24ビット目である。第2の変更部505は、例えば、特定した画素の画素情報を示すビット列「000000000000000000000000」のうち、所定の位置「8,16,24ビット目」にあるビットの値を、格納先の識別子を示す所定の値「1,0,1」に変更する。
これにより、抽出部506は、画像情報の中から、所定の位置「8,16,24ビット目」にあるビットの値が所定の値「1,0,1」に変更された画素情報を探索して、原子記号の属性値または結合記号の属性値が格納された画素情報を抽出することができる。変更されたデータは、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。第2の変更部505は、例えば、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、その機能を実現する。
<第2の動作>
次に、第2の動作を実現する機能部について説明する。第2の動作は、抽出部506と、第3の特定部507と、によって実現される。
抽出部506は、構造式111の画像情報の中から、所定の位置にあるビットの値が所定の値である画素情報を抽出する。ここで、構造式111の画像情報は、例えば、記号の属性に応じた位置にあるビットの値が記号の属性を示すビットの値に変更され、かつ、所定の位置にあるビットの値が所定の値に変更された画素情報を含む。抽出部506は、例えば、第1および第2の変更部505によって変更された変更後の画像情報の中から、所定の位置「8,16,24ビット目」にあるビットの値が、格納先の識別子を示す所定の値「1,0,1」に変更された画素情報を抽出する。
これにより、第3の特定部507は、抽出部506によって抽出された画素情報から、原子記号の属性または結合記号の属性を特定することができる。抽出されたデータは、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。抽出部506は、例えば、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、その機能を実現する。
ここでは、抽出部506は、所定の位置にあるビットの値が所定の値である画素情報を抽出したが、これに限らない。例えば、抽出部506は、画像情報の各々の画素情報を、ラスタスキャンする順番で特定し、所定の条件を満たす位置にある画素の画素情報を抽出してもよい。
第3の特定部507は、抽出した画素情報を示すビット列のうち、記号の属性の種別に応じた位置にあるビットの値に基づいて、属性を特定する。第3の特定部507は、例えば、属性の種別が「記号種別」である場合、原子記号−属性対応情報テーブル300を参照して、属性の種別に対応するビットの位置「1ビット目」を特定する。次に、第3の特定部507は、抽出した画素情報を示すビット列「100000010000000000000001」のうち、特定した位置「1ビット目」にあるビットの値「1」から、種別情報「原子記号」を特定することができる。
これにより、第3の特定部507は、記号の種別を特定することができる。特定されたデータは、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。第3の特定部507は、例えば、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、その機能を実現する。
(第1の動作の具体例)
次に、図6〜図18を用いて、第1の動作の具体例について説明する。
図6〜図18は、第1の動作の具体例を示す説明図である。図6〜図18の例では、情報処理装置100は、化合物「CH3−CHO(アセトアルデヒド)」の構造式111を描画した画像情報に、構造式111に含まれる原子記号の属性値および結合記号の属性値を埋め込む。
図6において、情報処理装置100は、化合物構造情報ファイル600を取得する。化合物構造情報ファイル600は、化合物「CH3−CHO」の構造式111に含まれる原子記号の属性と結合記号の属性とを含む。図6の例では、化合物構造情報ファイル600の原子ブロックの部分に、原子記号の属性が含まれる。化合物構造情報ファイル600の結合ブロックの部分には、結合記号の属性が含まれる。
化合物構造情報ファイル600に含まれる原子記号の属性とは、例えば、原子記号のX座標値、原子記号のY座標値、原子記号、原子記号の電荷などである。化合物構造情報ファイル600の原子ブロックの部分において、1列目の数字が原子記号のX座標値を示し、2列目の数字が原子記号のY座標値を示し、3列目の文字列が原子記号を示し、4列目の数字が原子記号の電荷を示す。図6の例では、化合物構造情報ファイル600の1行目に、原子記号の属性として、X座標値「30」、Y座標値「57」、原子記号「C」、および電荷「0」が記憶されている。
また、化合物構造情報ファイル600に含まれる結合記号の属性とは、例えば、結合記号によって結合される第1および第2の原子記号のうちの第1の原子記号の第1の原子IDと第2の原子記号の第2の原子ID、結合種別、立体種別などである。化合物構造情報ファイル600の結合ブロックの部分において、1列目の数字が第1の原子IDを示し、2列目の数字が第2の原子IDを示し、3列目の数字が結合種別を示し、4列目の数字が立体種別を示す。原子記号の原子IDは、例えば、化合物構造情報ファイル600における原子記号の出現順に割り当てられる。例えば、化合物構造情報ファイル600の1行目に記載された原子記号「C」の原子IDは「1」である。図6の例では、化合物構造情報ファイル600の9行目に、結合記号の属性として、第1の原子記号の原子ID「1」、第2の原子記号の原子ID「3」、結合種別「1」、および立体種別「3」が記憶されている。
図7において、情報処理装置100は、構造式111を描画するための第1の描画領域700を作成する。第1の描画領域700とは、例えば、画素の画素情報として背景色「白」が設定された画像情報である。図7の例では、第1の描画領域700が上部に示され、第1の描画領域700の左上部分を拡大したものが下部に示されている。
ここで、背景色「白」の画素の画素情報はビット列「111111111111111111111111」である。ビット列「111111111111111111111111」は、(R,G,B)=(255,255,255)を示す。
図8において、情報処理装置100は、第1の描画領域700上に化合物の構造式111を描画したベース画像800を作成する。ベース画像800とは、例えば、第1の描画領域700上の構造式111の描画位置にある画素の画素情報として文字色「黒」を設定することによって、第1の描画領域700上に構造式111を描画した画像である。描画位置は、例えば、化合物構造情報ファイル600の原子記号のX座標値とY座標値とから特定される。図8の例では、ベース画像800が上部に示され、ベース画像800の左上部分を拡大したものが下部に示されている。
ここで、文字色「黒」の画素の画素情報は「000000000000000000000000」である。ビット列「000000000000000000000000」は、(R,G,B)=(0,0,0)を示す。
図9において、情報処理装置100は、第1の描画領域700と同一サイズであって、構造式111に含まれる原子記号または結合記号のいずれかの記号を描画するための第2の描画領域900を作成する。第2の描画領域900とは、例えば、画素の画素情報として背景色「白」が設定された画像情報である。図9の例では、第2の描画領域900が上部に示され、第2の描画領域900の左上部分を拡大したものが下部に示されている。
図10において、情報処理装置100は、化合物の構造式111に含まれる原子記号または結合記号のいずれかの記号を選択し、第2の描画領域900上に選択した記号を描画した構造画像1000を作成する。ここで、例えば、構造式111に含まれる原子記号「C」が選択された場合を例に挙げる。この場合、構造画像1000とは、第2の描画領域900上の原子記号「C」の描画位置にある画素の画素情報として文字色「黒」を設定することによって、第2の描画領域900上に原子記号「C」を描画した画像である。図10の例では、構造画像1000が上部に示され、構造画像1000の左上部分を拡大したものが下部に示されている。
次に、情報処理装置100は、構造画像1000のうちの原子記号「C」を表す画素群を特定する。そして、情報処理装置100は、特定した画素群のうち、原子記号「C」の属性値の格納先となる、符号1001の位置にある7つの画素を特定する。ここでは、情報処理装置100は、座標(136,86)の画素、座標(137,85)の画素、座標(137,86)の画素、座標(137,87)の画素、座標(138,85)の画素、座標(138,86)の画素、および座標(139,85)の画素を特定する。
図11において、情報処理装置100は、特定した7つの画素の各々の画素の画素情報の変更内容を決定し、各々の画素の画素情報を変更する。情報処理装置100は、例えば、原子記号「C」の種別情報である「原子記号」を示す属性値「0000001」を特定する。次に、情報処理装置100は、属性値のビットの値を、先頭から順に、特定した7つの画素1001のうちのX座標値が相対的に小さい画素の画素情報に対応付ける。ここで、情報処理装置100は、X座標値が同一の画素がある場合は、属性値のビットの値を、X座標が同一の画素のうちのY座標値が相対的に小さい画素の画素情報に対応付ける。
結果として、情報処理装置100は、属性値の1ビット目を、座標(136,86)の画素に対応付ける。また、情報処理装置100は、属性値の2ビット目を、座標(137,85)の画素に対応付ける。また、情報処理装置100は、属性値の3ビット目を、座標(137,86)の画素に対応付ける。また、情報処理装置100は、属性値の4ビット目を、座標(137,87)の画素に対応付ける。また、情報処理装置100は、属性値の5ビット目を、座標(138,85)の画素に対応付ける。また、情報処理装置100は、属性値の6ビット目を、座標(138,86)の画素に対応付ける。また、情報処理装置100は、属性値の7ビット目を、座標(139,85)の画素に対応付ける。
そして、情報処理装置100は、原子記号の属性の格納先の画素情報であることを示す格納先画素情報を生成する。格納先画素情報は、例えば、画素情報の「8,16,24ビット目」の各々のビットの値を、格納先の識別子「1,0,1」の各々の値に変更したビット列「000000010000000000000001」である。次に、情報処理装置100は、座標(136,86)の画素の画素情報「000000000000000000000000」と、格納先画素情報「000000010000000000000001」と、のANDをとる。
そして、情報処理装置100は、原子記号−属性対応情報テーブル300を参照して、原子記号の種別情報である「原子記号」に応じた位置「1ビット目」を特定する。次に、情報処理装置100は、ANDをとった結果「000000010000000000000001」のうち、特定した位置「1ビット目」にあるビットの値を、属性値の1ビット目の値「0」に変更する。変更した結果は、ビット列「000000010000000000000001」になる。
そして、情報処理装置100は、座標(136,86)の画素の画素情報を、生成したビット列「000000010000000000000001」に変更する。また、情報処理装置100は、同様にして、他の座標の画素の画素情報についても変更する。これにより、情報処理装置100は、特定した7つの画素の画素情報に、原子記号の種別情報である「原子記号」を示す属性値を格納することができる。
次に、情報処理装置100は、化合物構造情報ファイル600を参照することにより、原子記号「C」の出現順番「1」を特定し、原子記号「C」の原子ID「1」を特定する。そして、情報処理装置100は、特定した原子記号「C」の原子IDである「1」を示す属性値「00000000000001」を特定する。次に、情報処理装置100は、属性値を7ビットごとに分割し、第1のビット列「0000000」と第2のビット列「0000001」とに分割する。
そして、情報処理装置100は、第1のビット列の先頭のビットの値から順に、特定した7つの画素のうちのX座標値が相対的に小さい画素の画素情報に対応付ける。このとき、情報処理装置100は、X座標値が同一の画素がある場合はX座標が同一の画素のうちのY座標値が相対的に小さい画素の画素情報に対応付ける。
また、情報処理装置100は、第2のビット列の先頭のビットの値から順に、特定した7つの画素のうちのX座標値が相対的に小さい画素の画素情報に対応付ける。このとき、情報処理装置100は、X座標値が同一の画素がある場合はX座標が同一の画素のうちのY座標値が相対的に小さい画素の画素情報に対応付ける。
結果として、情報処理装置100は、属性値の1ビット目と8ビット目とを、座標(136,86)の画素に対応付ける。また、情報処理装置100は、属性値の2ビット目と9ビット目とを、座標(137,85)の画素に対応付ける。また、情報処理装置100は、属性値の3ビット目と10ビット目とを、座標(137,86)の画素に対応付ける。また、情報処理装置100は、属性値の4ビット目と11ビット目とを、座標(137,87)の画素に対応付ける。また、情報処理装置100は、属性値の5ビット目と12ビット目とを、座標(138,85)の画素に対応付ける。また、情報処理装置100は、属性値の6ビット目と13ビット目とを、座標(138,86)の画素に対応付ける。また、情報処理装置100は、属性値の7ビット目と14ビット目とを、座標(139,85)の画素に対応付ける。
次に、情報処理装置100は、座標(136,86)の画素の画素情報「000000000000000000000000」と、格納先画素情報「000000010000000000000001」と、のANDをとる。
そして、情報処理装置100は、原子記号−属性対応情報テーブル300を参照して、原子記号の原子IDである「1」に応じた位置「2,3ビット目」を特定する。次に、情報処理装置100は、ANDをとった結果「000000010000000000000001」のうち、特定した位置「2,3ビット目」にある各々のビットの値を、属性値の1,8ビット目の各々の値「0,0」に変更する。変更した結果は、ビット列「000000010000000000000001」になる。
そして、情報処理装置100は、座標(136,86)の画素の画素情報を、生成したビット列「000000010000000000000001」に変更する。また、情報処理装置100は、同様にして、他の座標の画素の画素情報についても変更する。これにより、情報処理装置100は、特定した7つの画素の画素情報に、原子記号の原子IDである「1」を示す属性値を格納することができる。
また、情報処理装置100は、同様にして、特定した7つの画素の画素情報に、原子記号「C」の原子番号である「6」を示す属性値「00000000000110」を格納する。また、情報処理装置100は、同様にして、特定した7つの画素の画素情報に、原子記号「C」のX座標値である「30」を示す属性値「000000000000000011110」を格納する。
また、情報処理装置100は、同様にして、特定した7つの画素の画素情報に、原子記号「C」のY座標値である「57」を示す属性値「000000000000000111001」を格納する。また、情報処理装置100は、同様にして、特定した7つの画素の画素情報に、原子記号「C」の電荷の値である「0」を示す属性値「0000000」を格納する。結果として、特定した7つの画素の画素情報は、図11に示す画素情報に変更される。
これにより、図12に示すように、構造画像1000は、画像情報の中に原子記号「C」の属性値が格納された構造画像1200になる。図12の例では、構造画像1200が上部に示され、構造画像1200の左上部分を拡大したものが下部に示されている。次に、情報処理装置100は、図8に示したベース画像800の各々の画素情報と、図12に示す構造画像1200の各々の画素情報と、のANDをとる。
これにより、図13に示すように、ベース画像800は、化合物の構造式111を示し、原子記号「C」を表す画素群の一部の画素の画素情報に、原子記号「C」の属性値が格納されたベース画像1300になる。図13の例では、ベース画像1300が上部に示され、ベース画像1300の左上部分を拡大したものが下部に示されている。
図14において、情報処理装置100は、図9〜図12と同様にして、図9〜図12において属性値を格納した原子記号「C」とは異なる他の原子記号または他の結合記号について、属性値を格納した構造画像1400を作成する。
図14の例では、情報処理装置100は、再び、第2の描画領域900を作成する。次に、情報処理装置100は、図9〜図12において属性値を格納した原子記号「C」とは異なる結合記号「単結合」を選択し、第2の描画領域900上に選択した記号を描画した構造画像1400を作成する。図14の例では、構造画像1400が上部に示され、構造画像1400の左上部分を拡大したものが下部に示されている。
そして、情報処理装置100は、構造画像1400のうちの結合記号「単結合」を表す画素群を特定する。次に、情報処理装置100は、特定した画素群のうち、結合記号「単結合」の属性値の格納先となる、符号1401の位置にある7つの画素を特定する。ここでは、情報処理装置100は、座標(49,87)の画素、座標(49,88)の画素、座標(49,89)の画素、座標(49,90)の画素、座標(49,91)の画素、座標(49,92)の画素、および座標(49,93)の画素を特定する。
図15において、情報処理装置100は、特定した7つの画素の各々の画素の画素情報の変更内容を決定し、各々の画素の画素情報を変更する。情報処理装置100は、例えば、結合記号「単結合」の種別情報である「結合記号」を示す属性値「0000010」を特定する。
次に、情報処理装置100は、第1のビット列の先頭のビットの値から順に、特定した7つの画素のうちのX座標値が相対的に小さい画素の画素情報に対応付ける。このとき、情報処理装置100は、X座標値が同一の画素がある場合はX座標が同一の画素のうちのY座標値が相対的に小さい画素の画素情報に対応付ける。
結果として、情報処理装置100は、属性値の1ビット目を、座標(49,87)の画素に対応付ける。また、情報処理装置100は、属性値の2ビット目を、座標(49,88)の画素に対応付ける。また、情報処理装置100は、属性値の3ビット目を、座標(49,89)の画素に対応付ける。また、情報処理装置100は、属性値の4ビット目を、座標(49,90)の画素に対応付ける。また、情報処理装置100は、属性値の5ビット目を、座標(49,91)の画素に対応付ける。また、情報処理装置100は、属性値の6ビット目を、座標(49,92)の画素に対応付ける。また、情報処理装置100は、属性値の7ビット目を、座標(49,93)の画素に対応付ける。
次に、情報処理装置100は、座標(49,87)の画素の画素情報「000000000000000000000000」と、格納先画素情報「000000010000000000000001」と、のANDをとる。
そして、情報処理装置100は、結合記号−属性対応情報テーブル400を参照して、結合記号の種別情報である「結合記号」に応じた位置「1ビット目」を特定する。次に、情報処理装置100は、ANDをとった結果「000000010000000000000001」のうち、特定した位置「1ビット目」にあるビットの値を、属性値の1ビット目の値「0」に変更する。変更した結果は、ビット列「000000010000000000000001」になる。
そして、情報処理装置100は、座標(49,87)の画素の画素情報を、生成したビット列「000000010000000000000001」に変更する。また、情報処理装置100は、同様にして、他の座標の画素の画素情報についても変更する。これにより、情報処理装置100は、特定した7つの画素の画素情報に、結合記号の種別情報である「結合記号」を示す属性値を格納することができる。
次に、情報処理装置100は、化合物構造情報ファイル600を参照して、結合記号「単結合」の立体種別である「下」を示す属性値「00000000000011」を特定する。そして、情報処理装置100は、第1のビット列の先頭のビットの値から順に、特定した7つの画素のうちのX座標値が相対的に小さい画素の画素情報に対応付ける。このとき、情報処理装置100は、X座標値が同一の画素がある場合はX座標が同一の画素のうちのY座標値が相対的に小さい画素の画素情報に対応付ける。
結果として、情報処理装置100は、属性値の1ビット目を、座標(49,87)の画素に対応付ける。また、情報処理装置100は、属性値の2ビット目を、座標(49,88)の画素に対応付ける。また、情報処理装置100は、属性値の3ビット目を、座標(49,89)の画素に対応付ける。また、情報処理装置100は、属性値の4ビット目を、座標(49,90)の画素に対応付ける。また、情報処理装置100は、属性値の5ビット目を、座標(49,91)の画素に対応付ける。また、情報処理装置100は、属性値の6ビット目を、座標(49,92)の画素に対応付ける。また、情報処理装置100は、属性値の7ビット目を、座標(49,93)の画素に対応付ける。
次に、情報処理装置100は、座標(49,87)の画素の画素情報「000000000000000000000000」と、格納先画素情報「000000010000000000000001」と、のANDをとる。
そして、情報処理装置100は、結合記号−属性対応情報テーブル400を参照して、結合記号の立体種別である「下」に応じた位置「20ビット目」を特定する。次に、情報処理装置100は、ANDをとった結果「000000010000000000000001」のうち、特定した位置「20ビット目」にあるビットの値を、属性値の1ビット目の値「0」に変更する。変更した結果は、ビット列「000000010000000000000001」になる。
そして、情報処理装置100は、座標(49,87)の画素の画素情報を、生成したビット列「000000010000000000000001」に変更する。また、情報処理装置100は、同様にして、他の座標の画素の画素情報についても変更する。これにより、情報処理装置100は、特定した7つの画素の画素情報に、結合記号の立体種別である「下」を示す属性値を格納することができる。
また、情報処理装置100は、同様にして、特定した7つの画素の画素情報に、結合記号「単結合」の結合種別である「単結合」を示す属性値「00000000000001」を格納する。また、情報処理装置100は、同様にして、特定した7つの画素の画素情報に、結合記号「単結合」によって結合される第1の原子記号を示す第1の原子IDである「1」を示す属性値「00000000000001」を格納する。
また、情報処理装置100は、同様にして、特定した7つの画素の画素情報に、結合記号「単結合」によって結合される第2の原子記号を示す第2の原子IDである「3」を示す属性値「00000000000011」を格納する。結果として、特定した7つの画素の画素情報は、図15に示す画素情報に変更される。
これにより、図16に示すように、構造画像1400は、画像情報の中に結合記号「単結合」の属性値が格納された構造画像1600になる。図16の例では、構造画像1600が上部に示され、構造画像1600の左上部分を拡大したものが下部に示されている。次に、情報処理装置100は、図13に示したベース画像1300の各々の画素情報と、図16に示す構造画像1600の各々の画素情報と、のANDをとる。
これにより、図17に示すように、ベース画像1300は、化合物の構造式111を示し、結合記号「単結合」を表す画素群の一部の画素の画素情報に、結合記号「単結合」の属性値が格納されたベース画像1700になる。図17の例では、ベース画像1700が上部に示され、ベース画像1700の左上部分を拡大したものが下部に示されている。
また、情報処理装置100は、図9〜図17と同様にして、図9〜図17において属性値を格納した原子記号「C」および結合記号「単結合」とは異なる他の原子記号または他の結合記号について、属性値を格納した構造画像を作成する。そして、情報処理装置100は、作成する都度、ベース画像の各々の画素情報と、作成した構造画像の各々の画素情報と、のANDをとる。
これにより、図18に示すように、ベース画像1700は、化合物の構造式111を示し、化合物の構造式111に含まれる各々の記号の属性値を格納したベース画像1800になる。図18の例では、ベース画像1800が上部に示され、ベース画像1800の左上部分を拡大したものが下部に示されている。
これにより、情報処理装置100は、画像情報に原子記号の属性値と結合記号の属性値とを埋め込むことができる。このため、情報処理装置100の利用者は、画像情報と、原子記号の属性と結合記号の属性とを示す構造情報と、を別個に管理しなくてもよく、管理にかかる作業量を削減することができる。
(属性値格納処理)
次に、図19を用いて、情報処理装置100の属性値格納処理手順の一例について説明する。属性値格納処理は、図6〜図18に示した第1の動作を行うための処理である。
図19は、属性値格納処理手順の一例を示すフローチャートである。図19において、情報処理装置100は、化合物構造情報ファイル600を取得する(ステップS1901)。次に、情報処理装置100は、化合物構造情報ファイル600から原子記号の属性と結合記号の属性とを取得する(ステップS1902)。
そして、情報処理装置100は、原子記号の属性と結合記号の属性とに基づいて、ベース画像を作成する(ステップS1903)。次に、情報処理装置100は、化合物の構造式111に含まれる原子記号と結合記号とのうち、未選択の記号を選択する(ステップS1904)。
そして、情報処理装置100は、図20に示す構造画像作成処理を実行する(ステップS1905)。次に、情報処理装置100は、図21に示す画素抽出処理を実行する(ステップS1906)。そして、情報処理装置100は、図23に示す構造情報埋込処理を実行する(ステップS1907)。
次に、情報処理装置100は、ベース画像内の各々の画素の画素情報と、構造画像内の各々の画素の画素情報と、のANDをとる(ステップS1908)。そして、情報処理装置100は、ステップS1904において、化合物の構造式111に未選択の記号が含まれるか否かを判定する(ステップS1909)。
ここで、未選択の記号がある場合(ステップS1909:Yes)、情報処理装置100は、ステップS1904に戻る。一方で、未選択の記号がない場合(ステップS1909:No)、情報処理装置100は、属性値格納処理を終了する。これにより、情報処理装置100は、画像情報に原子記号の属性値と結合記号の属性値とを埋め込むことができる。このため、情報処理装置100の利用者は、画像情報と、原子記号の属性と結合記号の属性とを示す構造情報と、を別個に管理しなくてもよく、管理にかかる作業量を削減することができる。
(構造画像作成処理)
次に、図20を用いて、ステップS1905に示した構造画像作成処理手順の一例について説明する。
図20は、構造画像作成処理手順の一例を示すフローチャートである。図20において、情報処理装置100は、ベース画像と同一のサイズの描画領域を作成する(ステップS2001)。次に、情報処理装置100は、ステップS1904において選択した記号が、原子記号か否かを判定する(ステップS2002)。
ここで、原子記号である場合(ステップS2002:Yes)、情報処理装置100は、ステップS2001において作成した描画領域上に選択した原子記号を描画して構造画像を作成する(ステップS2003)。そして、情報処理装置100は、構造画像作成処理を終了する。
一方で、原子記号ではない場合(ステップS2002:No)、情報処理装置100は、ステップS2001において作成した描画領域上に選択した結合記号を描画して構造画像を作成する(ステップS2004)。そして、情報処理装置100は、構造画像作成処理を終了する。これにより、情報処理装置100は、ベース画像と重ね合わせるための構造画像を作成することができる。
(画素抽出処理)
次に、図21を用いて、ステップS1906に示した画素抽出処理手順の一例について説明する。
図21は、画素抽出処理手順の一例を示すフローチャートである。図21において、情報処理装置100は、構造画像上のX座標値を示す変数xに0を設定する(ステップS2101)。次に、情報処理装置100は、構造画像上のY座標値を示す変数yに0を設定する(ステップS2102)。
そして、情報処理装置100は、構造画像上の各々の画素に対応付けたチェックフラグと、抽出した画素の座標を格納する一時記憶領域と、を初期化する(ステップS2103)。次に、情報処理装置100は、図22に示す再帰処理を実行する(ステップS2104)。そして、情報処理装置100は、一時記憶領域にN個以上の画素の座標が記憶されているか否かを判定する(ステップS2105)。
ここで、記憶されている場合(ステップS2105:Yes)、情報処理装置100は、一時記憶領域の記憶内容をグローバル記憶領域に格納する(ステップS2106)。そして、情報処理装置100は、画素抽出処理を終了する。
一方で、記憶されていない場合(ステップS2105:No)、情報処理装置100は、変数yに1を加算する(ステップS2107)。そして、情報処理装置100は、変数yが、構造画像の画像高さより大きい値であるか否かを判定する(ステップS2108)。ここで、大きい値ではない場合(ステップS2108:No)、情報処理装置100は、ステップS2103に戻る。
一方で、大きい値である場合(ステップS2108:Yes)、情報処理装置100は、変数xに1を加算する(ステップS2109)。そして、情報処理装置100は、変数xが、構造画像の画像幅より大きい値であるか否かを判定する(ステップS2110)。ここで、大きい値ではない場合(ステップS2110:No)、情報処理装置100は、ステップS2102に戻る。
一方で、大きい値である場合(ステップS2110:Yes)、情報処理装置100は、画素抽出処理を終了する。これにより、情報処理装置100は、原子記号または結合記号のいずれかの記号の属性値を格納する画素を抽出することができる。ここで、情報処理装置100は、画素抽出処理によってN個の画素を抽出できなかった場合は、属性値格納処理を終了してもよい。
(再帰処理)
次に、図22を用いて、ステップS2104に示した再帰処理手順の一例について説明する。
図22は、再帰処理手順の一例を示すフローチャートである。図22において、情報処理装置100は、変数xと変数yとが示す座標にある画素の画素情報を取得する(ステップS2201)。次に、情報処理装置100は、取得した画素情報と、当該画素に対応付けられたチェックフラグと、を参照して、当該画素の画素情報が文字色を示し、かつ、当該画素が未チェックであるか否かを判定する(ステップS2202)。
ここで、当該画素の画素情報が文字色以外を示す場合、または、当該画素がチェック済である場合(ステップS2202:No)、情報処理装置100は、再帰処理を終了する。一方で、当該画素の画素情報が文字色を示し、かつ、当該画素が未チェックである場合(ステップS2202:Yes)、情報処理装置100は、ステップS2203の処理に移行する。
ステップS2203において、情報処理装置100は、当該画素が、グローバル記憶領域に格納された座標にある画素ではなく、かつ、グローバル記憶領域に格納された座標にある画素に隣接する画素ではないか否かを判定する(ステップS2203)。ここで、当該画素が、グローバル記憶領域に格納された座標にある画素である場合、または、グローバル記憶領域に格納された座標にある画素に隣接する画素である場合(ステップS2203:No)、情報処理装置100は、再帰処理を終了する。
一方で、当該画素が、グローバル記憶領域に格納された座標にある画素ではなく、かつ、グローバル記憶領域に格納された座標にある画素に隣接する画素ではない場合(ステップS2203:Yes)、情報処理装置100は、ステップS2204の処理に移行する。
ステップS2204において、情報処理装置100は、変数xと変数yとが示す座標を、一時記憶領域に格納する(ステップS2204)。次に、情報処理装置100は、一時記憶領域にN個以上の画素の座標が格納されたか否かを判定する(ステップS2205)。ここで、画素の座標が格納されている場合(ステップS2205:Yes)、情報処理装置100は、再帰処理を終了する。
一方で、画素の座標が格納されていない場合(ステップS2205:No)、情報処理装置100は、当該画素のチェックフラグをチェック済に設定する(ステップS2206)。次に、情報処理装置100は、当該画素の周囲にある8画素のうち、未選択の画素を選択する(ステップS2207)。そして、情報処理装置100は、再帰処理を実行する(ステップS2208)。
次に、情報処理装置100は、一時記憶領域にN個以上の画素の座標が格納されたか否かを判定する(ステップS2209)。ここで、格納されている場合(ステップS2209:Yes)、情報処理装置100は、再帰処理を終了する。
一方で、格納されていない場合(ステップS2209:No)、情報処理装置100は、当該画素の周囲にある8画素のうち、未選択の画素があるか否かを判定する(ステップS2210)。ここで、未選択の画素がある場合(ステップS2210:Yes)、情報処理装置100は、ステップS2207の処理に戻る。一方で、未選択の画素がない場合(ステップS2210:No)、情報処理装置100は、再帰処理を終了する。これにより、情報処理装置100は、原子記号または結合記号のいずれかの記号の属性値を格納する画素を抽出することができる。
(構造情報埋込処理)
次に、図23を用いて、ステップS1907に示した構造情報埋込処理手順の一例について説明する。
図23は、構造情報埋込処理手順の一例を示すフローチャートである。図23において、情報処理装置100は、ステップS1904において選択した記号の属性のうち、未選択の属性を選択する(ステップS2301)。次に、情報処理装置100は、選択した属性を、Nビットの2進数で表現して、属性値を作成する(ステップS2302)。
そして、情報処理装置100は、グローバル記憶領域に格納されているN個の画素の画素情報の各々の画素情報と、Nビットの属性値の各々のビットの値と、を対応付ける(ステップS2303)。
次に、情報処理装置100は、グローバル記憶領域に格納されているN個の画素の画素情報のうち、未選択の画素情報を選択する(ステップS2304)。そして、情報処理装置100は、選択した画素情報と、格納先画素情報と、のANDをとる(ステップS2305)。
次に、情報処理装置100は、原子記号−属性対応情報テーブル300または結合記号−属性対応情報テーブル400と、選択した画素情報に対応する属性値のビットの値を参照して、ANDをとった結果を示すビット列を変更するか否かを判定する(ステップS2306)。ここで、変更しない場合(ステップS2306:No)、情報処理装置100は、ステップS2308の処理に移行する。
一方で、変更する場合(ステップS2306:Yes)、情報処理装置100は、ANDをとった結果を示すビット列のうち、選択した属性に応じた位置にあるビットの値を、選択した画素情報に対応する属性値のビットの値に変更する(ステップS2307)。そして、情報処理装置100は、ステップS2308の処理に移行する。
ステップS2308において、情報処理装置100は、選択した画素情報を、ステップS2305においてANDをとった結果、またはステップS2307において変更されたANDをとった結果に変更する(ステップS2308)。
次に、情報処理装置100は、グローバル記憶領域に格納されているN個の画素の画素情報のうち、未選択の画素情報があるか否かを判定する(ステップS2309)。ここで、未選択の画素情報がある場合(ステップS2309:Yes)、情報処理装置100は、ステップS2304の処理に戻る。
一方で、未選択の画素情報がない場合(ステップS2309:No)、情報処理装置100は、ステップS1904において選択した記号の属性のうち、未選択の属性があるか否かを判定する(ステップS2310)。ここで、未選択の属性がある場合(ステップS2310:Yes)、情報処理装置100は、ステップS2301の処理に戻る。一方で、未選択の属性がない場合(ステップS2310:No)、情報処理装置100は、構造情報埋込処理を終了する。これにより、情報処理装置100は、画像情報に原子記号の属性値と結合記号の属性値とを埋め込むことができる。
(第2の動作の具体例)
次に、図24および図25を用いて、第2の動作の具体例について説明する。
図24および図25は、第2の動作の具体例を示す説明図である。図24の例では、情報処理装置100は、化合物「CH3−CHO(アセトアルデヒド)」の構造式111を描画した画像2400の画像情報の中から、構造式111に含まれる原子記号の属性と結合記号の属性とを特定する。図24の例では、画像2400が上部に示され、画像2400の左上部分を拡大したものが下部に示されている。画像2400は、図18に示したベース画像1800と同一の画像である。
図24において、情報処理装置100は、例えば、符号2401に示す対象領域の選択を受け付ける。次に、情報処理装置100は、対象領域にある各々の画素の画素情報と、抽出用画素情報「000000100000010000001」と、をAND演算し、AND演算結果が「000000100000000000001」になる画素情報を抽出する。
これにより、情報処理装置100は、対象領域にある画素の画素情報の中から、「8,16,24ビット目」の各々のビットの値が、格納先の識別子「1,0,1」の各々の値に変更された画素情報を抽出することができる。換言すれば、情報処理装置100は、原子記号または結合記号のいずれかの記号の属性を示す値が格納された画素情報を抽出することができる。
そして、情報処理装置100は、抽出した画素情報の中で、隣接する画素同士の画素情報をグループ化する。図24の例では、座標(24,89)の画素、座標(24,90)の画素、座標(24,91)の画素、座標(24,92)の画素、座標(25,89)の画素、座標(25,90)の画素、および座標(25,91)の画素が、第1のグループになる。
また、座標(49,87)の画素、座標(49,88)の画素、座標(49,89)の画素、座標(49,90)の画素、座標(49,91)の画素、座標(49,92)の画素、および座標(49,93)の画素が、第2のグループになる。
また、座標(136,86)の画素、座標(137,85)の画素、座標(137,86)の画素、座標(137,87)の画素、座標(138,85)の画素、座標(138,86)の画素、および座標(139,85)の画素が、第3のグループになる。
次に、情報処理装置100は、各々のグループの画素情報から、原子記号の属性または結合記号の属性のいずれかの属性を特定する。情報処理装置100は、例えば、第2のグループの画素情報を、X座標値が小さい順に並べる。ここで、情報処理装置100は、X座標値が同一の画素の画素情報がある場合は、第2のグループの画素情報を、X座標値が同一の画素の画素情報のうちのY座標値が小さい順に並べる。
次に、情報処理装置100は、原子記号−属性対応情報テーブル300および結合記号−属性対応情報テーブル400に共通して、種別情報の属性値が格納されている位置「1ビット目」を特定する。そして、情報処理装置100は、種別情報の属性値が格納されている各々の画素情報の「1ビット目」の値を特定するために、各々の画素情報と、1ビット目のみ1を設定した抽出用画素情報「100000000000000000000」と、のAND演算を行う。これにより、情報処理装置100は、AND演算の結果から、各々の画素情報の1ビット目のビットの値が「0」、「0」、「0」、「0」、「0」、「1」、「0」であると特定する。
次に、情報処理装置100は、特定したビットの値を並べたビット列「0000010」を、「記号種別」の属性値として特定する。そして、情報処理装置100は、属性値「0000010」が示す属性「結合記号」を特定する。
また、情報処理装置100は、属性「結合記号」が特定されたため、結合記号−属性対応情報テーブル400を参照して、他の属性の属性値が格納されている位置を特定して、他の属性の属性値を特定する。情報処理装置100は、例えば、「立体種別」の属性値が格納されている位置「20ビット目」を特定する。
次に、情報処理装置100は、「立体種別」の属性値が格納されている各々の画素情報の「20ビット目」の値を特定するために、各々の画素情報と、20ビット目のみ1を設定した抽出用画素情報「000000000000000000010」と、のAND演算を行う。これにより、情報処理装置100は、AND演算の結果から、各々の画素情報の20ビット目のビットの値が「0」、「0」、「0」、「0」、「0」、「1」、「1」であると特定する。
次に、情報処理装置100は、特定したビットの値を並べたビット列「0000011」を、「立体種別」の属性値として特定する。そして、情報処理装置100は、属性値「0000011」が示す「下」を特定する。これにより、情報処理装置100は、画像情報から結合記号の属性を特定することができる。
また、情報処理装置100は、例えば、第3のグループの画素情報を、X座標値が小さい順に並べる。ここで、情報処理装置100は、X座標値が同一の画素の画素情報がある場合は、第3のグループの画素情報を、X座標値が同一の画素の画素情報のうちのY座標値が小さい順に並べる。
次に、情報処理装置100は、原子記号−属性対応情報テーブル300および結合記号−属性対応情報テーブル400に共通して、種別情報の属性値が格納されている位置「1ビット目」を特定する。そして、情報処理装置100は、種別情報の属性値が格納されている各々の画素情報の「1ビット目」の値を特定するために、各々の画素情報と、1ビット目のみ1を設定した抽出用画素情報「100000000000000000000」と、のAND演算を行う。これにより、情報処理装置100は、AND演算の結果から、各々の画素情報の1ビット目のビットの値が「0」、「0」、「0」、「0」、「0」、「0」、「1」であると特定する。
次に、情報処理装置100は、特定したビットの値を並べたビット列「0000001」を、「記号種別」の属性値として特定する。そして、情報処理装置100は、属性値「0000001」が示す属性「原子記号」を特定する。
また、情報処理装置100は、属性「原子記号」が特定されたため、原子記号−属性対応情報テーブル300を参照して、他の属性の属性値が格納されている位置を特定して、他の属性の属性値を特定する。情報処理装置100は、例えば、「原子ID」の属性値が格納されている位置「2,3ビット目」を特定する。
次に、情報処理装置100は、「原子ID」の属性値が格納されている各々の画素情報の「2ビット目」の値を特定するために、各々の画素情報と、2ビット目のみ1を設定した抽出用画素情報「010000000000000000000」と、のAND演算を行う。これにより、情報処理装置100は、AND演算の結果から、各々の画素情報の2ビット目のビットの値が「0」、「0」、「0」、「0」、「0」、「0」、「0」であると特定する。
また、情報処理装置100は、「原子ID」の属性値が格納されている各々の画素情報の「3ビット目」の値を特定するために、各々の画素情報と、3ビット目のみ1を設定した抽出用画素情報「001000000000000000000」と、のAND演算を行う。これにより、情報処理装置100は、AND演算の結果から、各々の画素情報の3ビット目のビットの値が「0」、「0」、「0」、「0」、「0」、「0」、「1」であると特定する。
次に、情報処理装置100は、特定したビットの値を並べたビット列「00000000000001」を、「原子ID」の属性値として特定する。そして、情報処理装置100は、属性値「00000000000001」が示す原子ID「1」を特定する。これにより、情報処理装置100は、画像情報から原子記号の属性を特定することができる。
図25において、情報処理装置100は、図24において特定した原子記号の属性と結合記号の属性とから構造情報を作成して、作成した構造情報をポップアップ表示する。これにより、情報処理装置100の利用者は、自ら化合物の構造式を解析しなくても、構造情報を把握することができ、構造式の化学的性質を把握することができる。また、情報処理装置100の利用者は、構造情報を元に、構造式のうちの対象領域の部分を含む別の構造式を作成することができる。
(構造情報出力処理)
次に、図26を用いて、情報処理装置100の構造情報出力処理手順の一例について説明する。構造情報出力処理は、図24および図25に示した第2の動作を行うための処理である。
図26は、構造情報出力処理手順の一例を示すフローチャートである。図26において、情報処理装置100は、化合物の構造物が描画された画像の画像情報の中の対象領域の選択を受け付ける(ステップS2601)。次に、情報処理装置100は、対象領域の中から、所定の位置にあるビットの値が所定の値である画素情報を抽出する(ステップS2602)。そして、情報処理装置100は、抽出した画素情報のうち、隣接する画素同士の画素情報をグループ化する(ステップS2603)。
次に、情報処理装置100は、各々のグループ内の画素情報から、原子記号の属性または結合記号の属性のいずれかを特定する(ステップS2604)。そして、情報処理装置100は、特定した原子記号の属性または結合記号の属性を、構造情報として出力する(ステップS2605)。次に、情報処理装置100は、構造情報出力処理を終了する。
これにより、情報処理装置100は、画像情報から原子記号の属性値と結合記号の属性値とを抽出することができる。また、情報処理装置100は、抽出した原子記号の属性値から特定した原子記号の属性と抽出した結合記号の属性値から特定した結合記号の属性とを構造情報として出力することができる。このため、情報処理装置100の利用者は、構造情報を把握することができる。
以上説明したように、情報処理プログラムによれば、化合物の構造式111を描画した画像情報に含まれる原子記号または結合記号を表す画素群の画素の画素情報の一部を、原子記号の属性値または結合記号の属性値に変更することができる。これにより、情報処理プログラムは、化合物の構造式111を描画した画像情報と、化合物の構造式111に含まれる原子記号の属性と結合記号の属性と、を一体として記憶しておくことができる。このため、情報処理プログラムの利用者は、画像情報と、原子記号の属性と結合記号の属性と、を対応付けて別個に管理しなくてもよい。
情報処理プログラムは、例えば、化合物の構造式111を描画した画像情報と、原子記号または結合記号の描画位置と、を一体として記憶しておくことができる。また、情報処理プログラムは、例えば、化合物の構造式111を描画した画像情報と、原子記号または前記結合記号のいずれかであることを示す種別情報と、を一体として記憶しておくことができる。
また、情報処理プログラムは、例えば、化合物の構造式111を描画した画像情報と、原子の原子番号と、構造式における原子の電荷と、を一体として記憶しておくことができる。また、情報処理プログラムは、例えば、化合物の構造式111を描画した画像情報と、結合記号の結合種別と、結合記号の立体種別と、を一体として記憶しておくことができる。
また、情報処理プログラムによれば、属性値が複数ビットで表現される場合は、画像情報に含まれる複数の画素の画素情報に、属性値を分けて格納することができる。これにより、情報処理プログラムは、1つの画素を用いた場合に比べて、属性値として画像情報の中に格納可能なビット長を長くすることができる。
また、情報処理プログラムによれば、画素情報の中に属性値を格納した場合、属性値を格納した画素情報を示すビット列の所定の位置にあるビットの値を、格納先の識別子を示す値に変更する。これにより、情報処理プログラムは、属性値が格納された画素情報の抽出のための識別子を、画素情報に格納することができる。
また、情報処理プログラムによれば、画像情報の中から属性値が格納された画素情報を抽出し、原子記号の属性または結合記号の属性を特定することができる。これにより、情報処理プログラムの利用者は、画像情報に描画された化合物の構造式111の構造情報を把握することができる。
また、画像情報から原子記号と結合記号とを含む構造式を認識する文字図形認識ソフトウェアによって、原子記号の属性と結合記号の属性とを特定する場合が考えられる。しかしながら、この場合、文字図形認識ソフトウェアの開発に化学知識やプログラミングスキルが必要となり、文字図形認識ソフトウェアのコストが増大してしまう。一方で、情報処理プログラムによれば、画像情報に対するビット演算によって原子記号の属性と結合記号の属性とを特定することができ、文字図形認識ソフトウェアを開発する場合に比べてコストを低減することができる。
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本情報処理プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本情報処理プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
描画領域に描画される化合物の構造式に含まれる原子を示す原子記号の属性と、前記構造式に含まれる原子間の結合を示す結合記号の属性と、を含む構造情報を取得し、
取得した前記構造情報を参照して、前記構造式の中から選択された前記原子記号または前記結合記号のいずれかの記号の属性を特定し、
前記構造情報を参照して、前記描画領域上に描画される前記構造式の画像情報に含まれる前記記号を表す画素群のうちのいずれかの画素の画素情報を特定し、
特定した前記画素の画素情報を示すビット列のうち、特定した前記属性の種別に応じた位置にあるビットの値を、特定した前記属性を示す値に変更する、
処理を実行させることを特徴とする情報処理プログラム。
(付記2)前記画素情報を特定する処理は、
前記属性を示す値が複数のビットで表現される場合に、前記記号を表す画素群のうちの前記複数のビットの各々のビットに対応する画素の画素情報を特定し、
前記変更する処理は、
特定した前記各々のビットに対応する画素の画素情報を示すビット列のうち、前記属性の種別に応じた位置にあるビットの値を、前記各々のビットの値に変更することを特徴とする付記1に記載の情報処理プログラム。
(付記3)前記コンピュータに、
特定した前記画素情報を示すビット列のうち、特定した前記属性に応じた位置とは異なる所定の位置にあるビットの値を、所定の値に変更する処理を実行させることを特徴とする付記1または2に記載の情報処理プログラム。
(付記4)前記コンピュータに、
前記記号の属性に応じた位置にあるビットの値が前記記号の属性を示すビットの値に変更され、かつ、前記所定の位置にあるビットの値が前記所定の値に変更された画素情報を含む、前記構造式の画像情報の中から、前記所定の位置にあるビットの値が前記所定の値である画素情報を抽出し、
抽出した画素情報を示すビット列のうち、前記記号の属性の種別に応じた位置にあるビットの値に基づいて、前記属性を特定する、
処理を実行させることを特徴とする付記3に記載の情報処理プログラム。
(付記5)前記記号の属性は、前記描画領域上の前記記号の描画位置を含み、
前記画素情報を特定する処理は、
前記構造情報に含まれる前記記号の描画位置を参照して、前記記号を表す画素群のうちのいずれかの画素の画素情報を特定することを特徴とする付記1〜4のいずれか一つに記載の情報処理プログラム。
(付記6)前記記号の属性は、前記記号が前記原子記号または前記結合記号のいずれかであることを示す種別情報を含むことを特徴とする付記1〜5のいずれか一つに記載の情報処理プログラム。
(付記7)前記記号の属性は、前記記号が前記原子記号である場合には、前記原子の原子番号と、前記構造式における前記原子の電荷と、前記描画領域上の前記原子記号の描画位置と、を含むことを特徴とする付記1〜6のいずれか一つに記載の情報処理プログラム。
(付記8)前記記号の属性は、前記記号が前記結合記号である場合には、前記結合の結合種別と、前記結合の立体種別と、前記描画領域上の前記結合記号の描画位置と、を含むことを特徴とする付記1〜7のいずれか一つに記載の情報処理プログラム。
(付記9)コンピュータに、
描画領域上に描画される化合物の構造式の画像情報の中から、前記構造式に含まれる原子記号または結合記号のいずれかの記号を示す画素群のいずれかの画素の画素情報であって、前記画素情報を示すビット列のうちの前記記号の属性に応じた位置にあるビットの値が前記属性を示す値に変更された前記画素情報を抽出し、
抽出した前記画素情報を示すビット列のうちの前記属性に応じた位置にあるビットの値に基づいて、前記記号の属性を特定する、
処理を実行させることを特徴とする情報処理プログラム。
(付記10)コンピュータが、
描画領域に描画される化合物の構造式に含まれる原子を示す原子記号の属性と、前記構造式に含まれる原子間の結合を示す結合記号の属性と、を含む構造情報を取得し、
取得した前記構造情報を参照して、前記構造式の中から選択された前記原子記号または前記結合記号のいずれかの記号の属性を特定し、
前記構造情報を参照して、前記描画領域上に描画される前記構造式の画像情報に含まれる前記記号を表す画素群のうちのいずれかの画素の画素情報を特定し、
特定した前記画素の画素情報を示すビット列のうち、特定した前記属性の種別に応じた位置にあるビットの値を、特定した前記属性を示す値に変更する、
処理を実行することを特徴とする情報処理方法。
(付記11)コンピュータが、
描画領域上に描画される化合物の構造式の画像情報の中から、前記構造式に含まれる原子記号または結合記号のいずれかの記号を示す画素群のいずれかの画素の画素情報であって、前記画素情報を示すビット列のうちの前記記号の属性に応じた位置にあるビットの値が前記属性を示す値に変更された前記画素情報を抽出し、
抽出した前記画素情報を示すビット列のうちの前記属性に応じた位置にあるビットの値に基づいて、前記記号の属性を特定する、
処理を実行することを特徴とする情報処理方法。
(付記12)描画領域に描画される化合物の構造式に含まれる原子を示す原子記号の属性と、前記構造式に含まれる原子間の結合を示す結合記号の属性と、を含む構造情報を取得する取得部と、
前記取得部によって取得された前記構造情報を参照して、前記構造式の中から選択された前記原子記号または前記結合記号のいずれかの記号の属性を特定する第1の特定部と、
前記構造情報を参照して、前記描画領域上に描画される前記構造式の画像情報に含まれる前記記号を表す画素群のうちのいずれかの画素の画素情報を特定する第2の特定部と、
前記第2の特定部によって特定された前記画素の画素情報を示すビット列のうち、前記第1の特定部によって特定された前記属性の種別に応じた位置にあるビットの値を、前記第1の特定部によって特定された前記属性を示す値に変更する変更部と、
を有することを特徴とする情報処理装置。
(付記13)描画領域上に描画される化合物の構造式の画像情報の中から、前記構造式に含まれる原子記号または結合記号のいずれかの記号を示す画素群のいずれかの画素の画素情報であって、前記画素情報を示すビット列のうちの前記記号の属性に応じた位置にあるビットの値が前記属性を示す値に変更された前記画素情報を抽出する抽出部と、
前記抽出部によって抽出された前記画素情報を示すビット列のうちの前記属性に応じた位置にあるビットの値に基づいて、前記記号の属性を特定する特定部と、
を有することを特徴とする情報処理装置。