(57)【要約】【課題】ベクタ形式のＬＳＩ設計データに基づいて、図形のアウトライン表示を高速に行う。【解決手段】ベクタ形式の図形データをメモリ上に展開して、表示対象図形Ｆを含むラスタ形式の元画像Ｇを得る（(a) ）。元画像Ｇを右上にシフトしたシフト画像Ｓ１と元画像Ｇとの論理積をとり、第１論理積画像Ｈ１を得る（(b) ）。元画像Ｇを左下にシフトしたシフト画像Ｓ２と第１論理積画像Ｈ１との論理積をとり、第２論理積画像Ｈ２を得る（(c) ）。元画像Ｇを左上にシフトしたシフト画像Ｓ３と第２論理積画像Ｈ２との論理積をとり、第３論理積画像Ｈ３を得る（(d) ）。元画像Ｇを右下にシフトしたシフト画像Ｓ４と第３論理積画像Ｈ３との論理積をとり、第４論理積画像Ｈ４を得る（(e) ）。元画像Ｇから第４論理積画像Ｈ４を差し引いて差分画像Ｄを得て、これをアウトライン画像として出力する（(f) ）。【選択図】図１２
2015014843.tif 000002
【特許請求の範囲】
【請求項１】
ベクタ形式の図形データに基づいて、図形のアウトラインを表示する装置であって、
表示対象図形をベクタ形式で表現した図形データを格納する図形データ格納部と、
ラスタ形式の画像を格納するメモリ部と、
前記図形データを前記メモリ部に展開してラスタ形式の元画像を生成する図形展開部と、
前記元画像を第１のシフト態様でシフトして得られる第１シフト画像と前記元画像との間で、論理積演算を行うことにより、前記メモリ部に第１論理積画像を生成する第１論理積演算部と、
前記元画像を第２のシフト態様でシフトして得られる第２シフト画像と前記第１論理積画像との間で、論理積演算を行うことにより、前記メモリ部に第２論理積画像を生成する第２論理積演算部と、
前記元画像を第３のシフト態様でシフトして得られる第３シフト画像と前記第２論理積画像との間で、論理積演算を行うことにより、前記メモリ部に第３論理積画像を生成する第３論理積演算部と、
前記元画像を第４のシフト態様でシフトして得られる第４シフト画像と前記第３論理積画像との間で、論理積演算を行うことにより、前記メモリ部に第４論理積画像を生成する第４論理積演算部と、
前記第４論理積画像を前記元画像から差し引く差分演算を行うことにより、前記メモリ部に差分画像を生成する差分演算部と、
前記差分画像を、図形のアウトラインとしてディスプレイ装置の画面上に表示する表示制御部と、
を備え、
前記図形展開部は、二次元行列状に配置された画素の集合体からなる元画像を生成し、
前記第１のシフト態様、前記第２のシフト態様、前記第３のシフト態様、前記第４のシフト態様は、各画素を右方向および上方向にそれぞれ所定画素分移動させる斜め右上シフト、各画素を左方向および下方向にそれぞれ所定画素分移動させる斜め左下シフト、各画素を左方向および上方向にそれぞれ所定画素分移動させる斜め左上シフト、各画素を右方向および下方向にそれぞれ所定画素分移動させる斜め右下シフト、という４種類のシフトのいずれか１つにそれぞれ１対１に対応づけられていることを特徴とする図形のアウトライン表示装置。
【請求項２】
請求項１に記載のアウトライン表示装置において、
メモリ部が、元画像記録領域と作業領域とを有し、
図形展開部が、前記元画像記録領域に元画像を書き込むとともに、前記作業領域に前記元画像を最初の作業画像として書き込み、
第１論理積演算部、第２論理積演算部、第３論理積演算部、第４論理積演算部、差分演算部が、前記元画像記録領域内の元画像を参照しながら前記作業領域内の作業画像を書き換える処理を行い、
表示制御部が、前記作業領域内の最後の作業画像を差分画像としてディスプレイ装置に出力することを特徴とする図形のアウトライン表示装置。
【請求項３】
請求項２に記載のアウトライン表示装置において、
図形展開部が、図形内部の画素については画素値「１」、図形外部の画素については画素値「０」をもった元画像を生成し、
第１論理積演算部が、作業領域内の特定画素の画素値と、元画像記録領域内の前記特定画素と同位置にある対応画素に対して第１のシフト態様とは逆の方向にシフトした位置関係にあるシフト画素の画素値と、の間で論理積演算を行い、得られた演算結果を作業領域内の前記特定画素の新たな画素値として書き込む処理を、作業領域内の個々の画素について実行することにより作業領域内に第１論理積画像を生成し、
第２論理積演算部が、作業領域内の特定画素の画素値と、元画像記録領域内の前記特定画素と同位置にある対応画素に対して第２のシフト態様とは逆の方向にシフトした位置関係にあるシフト画素の画素値と、の間で論理積演算を行い、得られた演算結果を作業領域内の前記特定画素の新たな画素値として書き込む処理を、作業領域内の個々の画素について実行することにより作業領域内に第２論理積画像を生成し、
第３論理積演算部が、作業領域内の特定画素の画素値と、元画像記録領域内の前記特定画素と同位置にある対応画素に対して第３のシフト態様とは逆の方向にシフトした位置関係にあるシフト画素の画素値と、の間で論理積演算を行い、得られた演算結果を作業領域内の前記特定画素の新たな画素値として書き込む処理を、作業領域内の個々の画素について実行することにより作業領域内に第３論理積画像を生成し、
第４論理積演算部が、作業領域内の特定画素の画素値と、元画像記録領域内の前記特定画素と同位置にある対応画素に対して第４のシフト態様とは逆の方向にシフトした位置関係にあるシフト画素の画素値と、の間で論理積演算を行い、得られた演算結果を作業領域内の前記特定画素の新たな画素値として書き込む処理を、作業領域内の個々の画素について実行することにより作業領域内に第４論理積画像を生成し、
差分演算部が、元画像記録領域内の画像から作業領域内の画像を差し引く差分演算を行うことにより、作業領域内に差分画像を生成することを特徴とする図形のアウトライン表示装置。
【請求項４】
請求項２または３に記載のアウトライン表示装置において、
元画像記録領域および作業領域には、ディスプレイ装置の画面の表示対象領域を構成する画素配列と同一の画素配列をもった元画像および作業画像がそれぞれ格納され、
表示制御部が、前記表示対象領域を構成する画素配列と同一の画素配列をもった差分画像を出力することを特徴とする図形のアウトライン表示装置。
【請求項５】
ベクタ形式の図形データに基づいて、図形のアウトラインを表示する装置であって、
表示対象図形をベクタ形式で表現した図形データを格納する図形データ格納部と、
ラスタ形式の画像を格納するメモリ部と、
前記図形データを前記メモリ部に展開してラスタ形式の元画像を生成する図形展開部と、
前記元画像を第１のシフト態様でシフトして得られる第１シフト画像を、前記元画像から差し引く差分演算を行うことにより、前記メモリ部に第１差分画像を生成する第１差分演算部と、
前記元画像を第２のシフト態様でシフトして得られる第２シフト画像を、前記元画像から差し引く差分演算を行うことにより、前記メモリ部に第２差分画像を生成する第２差分演算部と、
前記元画像を第３のシフト態様でシフトして得られる第３シフト画像を、前記元画像から差し引く差分演算を行うことにより、前記メモリ部に第３差分画像を生成する第３差分演算部と、
前記元画像を第４のシフト態様でシフトして得られる第４シフト画像を、前記元画像から差し引く差分演算を行うことにより、前記メモリ部に第４差分画像を生成する第４差分演算部と、
前記第１差分画像、前記第２差分画像、前記第３差分画像、前記第４差分画像について、論理和演算を行うことにより、前記メモリ部に論理和画像を生成する論理和演算部と、
前記論理和画像を、図形のアウトラインとしてディスプレイ装置の画面上に表示する表示制御部と、
を備え、
前記図形展開部は、二次元行列状に配置された画素の集合体からなる元画像を生成し、
前記第１のシフト態様、前記第２のシフト態様、前記第３のシフト態様、前記第４のシフト態様は、各画素を右方向および上方向にそれぞれ所定画素分移動させる斜め右上シフト、各画素を左方向および下方向にそれぞれ所定画素分移動させる斜め左下シフト、各画素を左方向および上方向にそれぞれ所定画素分移動させる斜め左上シフト、各画素を右方向および下方向にそれぞれ所定画素分移動させる斜め右下シフト、という４種類のシフトのいずれか１つにそれぞれ１対１に対応づけられていることを特徴とする図形のアウトライン表示装置。
【請求項６】
請求項５に記載のアウトライン表示装置において、
メモリ部が、元画像記録領域と作業領域と結果蓄積領域とを有し、
図形展開部が、最初の差分演算が行われる前に前記元画像記録領域に元画像を書き込み、個々の差分演算が行われる前に毎回前記作業領域に前記元画像を作業画像として書き込み、最初の差分演算が行われる前に前記結果蓄積領域に空の図形を有する画像を蓄積画像として書き込み、
第１差分演算部、第２差分演算部、第３差分演算部、第４差分演算部が、前記元画像記録領域内の元画像を参照しながら前記作業領域内の作業画像を書き換える処理を順番に行い、
論理和演算部が、前記作業領域内に第１差分画像、第２差分画像、第３差分画像、第４差分画像が得られるたびに、得られた差分画像と結果蓄積領域内の蓄積画像との間で論理和演算を行い、得られた画像を新たな蓄積画像として結果蓄積領域に書き込む処理を行うことを特徴とする図形のアウトライン表示装置。
【請求項７】
請求項６に記載のアウトライン表示装置において、
図形展開部が、図形内部の画素については画素値「１」、図形外部の画素については画素値「０」をもった元画像を生成し、
第１差分演算部が、作業領域内の特定画素の画素値と、元画像記録領域内の前記特定画素と同位置にある対応画素に対して第１のシフト態様とは逆の方向にシフトした位置関係にあるシフト画素の画素値と、の間で差分演算を行い、得られた演算結果を作業領域内の前記特定画素の新たな画素値として書き込む処理を、作業領域内の個々の画素について実行することにより作業領域内に第１差分画像を生成し、
第２差分演算部が、作業領域内の特定画素の画素値と、元画像記録領域内の前記特定画素と同位置にある対応画素に対して第２のシフト態様とは逆の方向にシフトした位置関係にあるシフト画素の画素値と、の間で差分演算を行い、得られた演算結果を作業領域内の前記特定画素の新たな画素値として書き込む処理を、作業領域内の個々の画素について実行することにより作業領域内に第２差分画像を生成し、
第３差分演算部が、作業領域内の特定画素の画素値と、元画像記録領域内の前記特定画素と同位置にある対応画素に対して第３のシフト態様とは逆の方向にシフトした位置関係にあるシフト画素の画素値と、の間で差分演算を行い、得られた演算結果を作業領域内の前記特定画素の新たな画素値として書き込む処理を、作業領域内の個々の画素について実行することにより作業領域内に第３差分画像を生成し、
第４差分演算部が、作業領域内の特定画素の画素値と、元画像記録領域内の前記特定画素と同位置にある対応画素に対して第４のシフト態様とは逆の方向にシフトした位置関係にあるシフト画素の画素値と、の間で差分演算を行い、得られた演算結果を作業領域内の前記特定画素の新たな画素値として書き込む処理を、作業領域内の個々の画素について実行することにより作業領域内に第４差分画像を生成し、
前記各差分演算部が行う差分演算は、
特定画素の画素値が「０」、シフト画素の画素値が「０」の場合は、画素値「０」を演算結果とし、
特定画素の画素値が「０」、シフト画素の画素値が「１」の場合は、画素値「０」を演算結果とし、
特定画素の画素値が「１」、シフト画素の画素値が「０」の場合は、画素値「１」を演算結果とし、
特定画素の画素値が「１」、シフト画素の画素値が「１」の場合は、画素値「０」を演算結果とする演算であることを特徴とする図形のアウトライン表示装置。
【請求項８】
請求項６または７に記載のアウトライン表示装置において、
元画像記録領域、作業領域、結果蓄積領域には、ディスプレイ装置の画面の表示対象領域を構成する画素配列と同一の画素配列をもった元画像、作業画像、蓄積画像がそれぞれ格納され、
表示制御部が、前記表示対象領域を構成する画素配列と同一の画素配列をもった論理和画像を出力することを特徴とする図形のアウトライン表示装置。
【請求項９】
請求項１〜８のいずれかに記載のアウトライン表示装置において、
図形データ格納部が、表示対象図形の構成に必要な個々の部分図形を示す部分図形データと、複数の部分図形を合成して表示対象図形を生成するための合成方法を示す情報と、を格納しており、
図形展開部が、前記合成方法に基づいて複数の部分図形を合成しながら展開を行い、ラスタ形式の元画像を生成することを特徴とする図形のアウトライン表示装置。
【請求項１０】
請求項１〜９のいずれかに記載のアウトライン表示装置において、
図形展開部が、オペレータからの指示入力に基づいて、特定図形の特定箇所を特定倍率で表示するための元画像を生成することを特徴とする図形のアウトライン表示装置。
【請求項１１】
請求項１〜１０のいずれかに記載のアウトライン表示装置において、
図形展開部が、オペレータからアウトラインの太さを示すパラメータＴを入力する機能を有し、
第１のシフト態様、第２のシフト態様、第３のシフト態様、第４のシフト態様は、各画素を右方向および上方向にそれぞれＴ画素分移動させる斜め右上シフト、各画素を左方向および下方向にそれぞれＴ画素分移動させる斜め左下シフト、各画素を左方向および上方向にそれぞれＴ画素分移動させる斜め左上シフト、各画素を右方向および下方向にそれぞれＴ画素分移動させる斜め右下シフト、という４種類のシフトのいずれか１つにそれぞれ１対１に対応づけられていることを特徴とする図形のアウトライン表示装置。
【請求項１２】
請求項１〜１１のいずれかに記載のアウトライン表示装置において、
表示制御部が、表示対象図形のアウトラインのみを表示する機能と、表示対象図形のみを表示する機能と、表示対象図形にアウトラインを重畳させて表示する機能と、を有することを特徴とする図形のアウトライン表示装置。
【請求項１３】
請求項１〜１２のいずれかに記載のアウトライン表示装置において、
図形展開部および各演算部の処理を、パソコン用の画像処理専用集積回路を利用して実行させることを特徴とする図形のアウトライン表示装置。
【請求項１４】
請求項１〜１２のいずれかに記載のアウトライン表示装置としてコンピュータを機能させるプログラム。
【請求項１５】
請求項１〜１２のいずれかに記載のアウトライン表示装置を含んだＬＳＩ設計装置。
【請求項１６】
二次元行列状に配置された画素の集合体からなる元図形に基づいて、当該元図形のアウトラインを作成する方法であって、
前記元図形を第１のシフト態様でシフトして得られる第１シフト図形と前記元図形との間で、論理積演算を行うことにより、第１論理積図形を生成する第１論理積演算段階と、
前記元図形を第２のシフト態様でシフトして得られる第２シフト図形と前記第１論理積図形との間で、論理積演算を行うことにより、第２論理積図形を生成する第２論理積演算段階と、
前記元図形を第３のシフト態様でシフトして得られる第３シフト図形と前記第２論理積図形との間で、論理積演算を行うことにより、第３論理積図形を生成する第３論理積演算段階と、
前記元図形を第４のシフト態様でシフトして得られる第４シフト図形と前記第３論理積図形との間で、論理積演算を行うことにより、第４論理積図形を生成する第４論理積演算段階と、
前記第４論理積図形を前記元図形から差し引く差分演算を行うことにより、差分図形を生成する差分演算段階と、
をコンピュータが実行し、前記差分図形を、前記元図形のアウトラインとして出力し、
前記第１のシフト態様、前記第２のシフト態様、前記第３のシフト態様、前記第４のシフト態様は、各画素を右方向および上方向にそれぞれ所定画素分移動させる斜め右上シフト、各画素を左方向および下方向にそれぞれ所定画素分移動させる斜め左下シフト、各画素を左方向および上方向にそれぞれ所定画素分移動させる斜め左上シフト、各画素を右方向および下方向にそれぞれ所定画素分移動させる斜め右下シフト、という４種類のシフトのいずれか１つにそれぞれ１対１に対応づけられていることを特徴とする図形のアウトライン作成方法。
【請求項１７】
二次元行列状に配置された画素の集合体からなる元図形に基づいて、当該元図形のアウトラインを作成する方法であって、
前記元図形を第１のシフト態様でシフトして得られる第１シフト図形を、前記元図形から差し引く差分演算を行うことにより、第１差分図形を生成する第１差分演算段階と、
前記元図形を第２のシフト態様でシフトして得られる第２シフト図形を、前記元図形から差し引く差分演算を行うことにより、第２差分図形を生成する第２差分演算段階と、
前記元図形を第３のシフト態様でシフトして得られる第３シフト図形を、前記元図形から差し引く差分演算を行うことにより、第３差分図形を生成する第３差分演算段階と、
前記元図形を第４のシフト態様でシフトして得られる第４シフト図形を、前記元図形から差し引く差分演算を行うことにより、第４差分図形を生成する第４差分演算段階と、
前記第１差分図形、前記第２差分図形、前記第３差分図形、前記第４差分図形について、論理和演算を行うことにより、論理和図形を生成する論理和演算段階と、
をコンピュータが実行し、前記論理和図形を、前記元図形のアウトラインとして出力し、
前記第１のシフト態様、前記第２のシフト態様、前記第３のシフト態様、前記第４のシフト態様は、各画素を右方向および上方向にそれぞれ所定画素分移動させる斜め右上シフト、各画素を左方向および下方向にそれぞれ所定画素分移動させる斜め左下シフト、各画素を左方向および上方向にそれぞれ所定画素分移動させる斜め左上シフト、各画素を右方向および下方向にそれぞれ所定画素分移動させる斜め右下シフト、という４種類のシフトのいずれか１つにそれぞれ１対１に対応づけられていることを特徴とする図形のアウトライン作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、図形のアウトライン表示装置に関し、特に、ＬＳＩの設計に用いられる図形について、そのアウトラインをディスプレイ画面上に表示する装置に関する。
【背景技術】
【０００２】
コンピュータで図形を取り扱う場合、対象となる図形をベクタ形式で表現する方法が広く利用されている。たとえば、下記の特許文献１には、ＣＣＤカメラなどで撮像された物体のアウトラインを、点と点とを結ぶ折れ線の集合体からなる図形データとして抽出する輪郭線抽出方法が開示されている。また、製品設計や建築物設計の分野では、ＣＡＤの技術を利用して、ベクタ形式で表現した基本図形を組み合わせることにより、様々な製品や建造物の設計が行われている。
【０００３】
ＬＳＩの分野においても、ベクタ形式で表現した図形データを用いて、コンピュータによる半導体集積回路のレイアウト設計が行われている。たとえば、下記の特許文献２には、半導体集積回路のレイアウトパターンを複数の基本図形の集合体によって構成し、これら基本図形群によって構成される合成図形のアウトラインを抽出する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−０８４２３７号公報
【特許文献２】特開平７−０７８１９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
このように、ＬＳＩをはじめとする様々な分野で、複数の基本図形を組み合わせることにより設計を行う手法が利用されている。このような設計プロセスで利用されるデータは、通常、ベクタ形式で表現した図形データであり、たとえば、矩形であれば、その２頂点の位置を示す座標値、円であれば、中心点の座標値と半径値、といった数値によって構成される。
【０００６】
一方、実際に図形をディスプレイ装置の画面上に表示する際には、ベクタ形式の図形データを多数の画素の集合体からなるラスタ形式の画像データに変換する必要がある。このため、複数の基本図形を組み合わせて構成される合成図形のアウトラインを画面上に表示するためには、まず、個々の基本図形を示す図形データを合成して、合成図形を示すベクタ形式の図形データを生成し、その輪郭線をラスタ形式の画像データの形式でディスプレイ装置に与える必要がある。
【０００７】
ところが、合成図形に対応するベクタ形式の図形データを生成する処理は、ベクタ形式のデータを用いた演算になるため、演算負担がかなり重く、処理が完了するまでに時間を要する。このため、オペレータが、コンピュータに対して特定の合成図形のアウトラインを表示させる旨の指示を与えたとしても、当該合成図形を構成する基本図形が多数にわたる場合、実際に画面表示が行われるまで、ある程度の待ち時間が必要となる。
【０００８】
特に、一般的なＬＳＩ設計データは、数万個〜数億個の基本図形を組み合わせたレイアウトパターンによって構成されるため、合成図形に対応する図形データを生成する処理の演算負担は極めて重い。したがって、現在用いられているパソコンレベルのコンピュータでは、合成図形をアウトライン表示させる旨の指示を与えてから、実際にディスプレイ画面にアウトラインが表示されるまで、数分〜数時間のオーダの演算時間が必要になり、リアルタイムによる表示は実用上困難である。
【０００９】
そこで本発明は、ベクタ形式の図形データに基づいて、ディスプレイ画面上に図形のアウトラインを表示する処理を、低演算負担で高速に行うことが可能な図形のアウトライン表示装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
(1)   本発明の第１の態様は、ベクタ形式の図形データに基づいて、図形のアウトラインを表示するアウトライン表示装置において、
表示対象図形をベクタ形式で表現した図形データを格納する図形データ格納部と、
ラスタ形式の画像を格納するメモリ部と、
図形データをメモリ部に展開してラスタ形式の元画像を生成する図形展開部と、
元画像を第１のシフト態様でシフトして得られる第１シフト画像と元画像との間で、論理積演算を行うことにより、メモリ部に第１論理積画像を生成する第１論理積演算部と、
元画像を第２のシフト態様でシフトして得られる第２シフト画像と第１論理積画像との間で、論理積演算を行うことにより、メモリ部に第２論理積画像を生成する第２論理積演算部と、
元画像を第３のシフト態様でシフトして得られる第３シフト画像と第２論理積画像との間で、論理積演算を行うことにより、メモリ部に第３論理積画像を生成する第３論理積演算部と、
元画像を第４のシフト態様でシフトして得られる第４シフト画像と第３論理積画像との間で、論理積演算を行うことにより、メモリ部に第４論理積画像を生成する第４論理積演算部と、
第４論理積画像を元画像から差し引く差分演算を行うことにより、メモリ部に差分画像を生成する差分演算部と、
差分画像を、図形のアウトラインとしてディスプレイ装置の画面上に表示する表示制御部と、
を設け、
図形展開部が、二次元行列状に配置された画素の集合体からなる元画像を生成するようにし、
第１のシフト態様、第２のシフト態様、第３のシフト態様、第４のシフト態様は、各画素を右方向および上方向にそれぞれ所定画素分移動させる斜め右上シフト、各画素を左方向および下方向にそれぞれ所定画素分移動させる斜め左下シフト、各画素を左方向および上方向にそれぞれ所定画素分移動させる斜め左上シフト、各画素を右方向および下方向にそれぞれ所定画素分移動させる斜め右下シフト、という４種類のシフトのいずれか１つにそれぞれ１対１に対応づけられているようにしたものである。
【００１１】
(2)   本発明の第２の態様は、上述した第１の態様に係る図形のアウトライン表示装置において、
メモリ部が、元画像記録領域と作業領域とを有し、
図形展開部が、元画像記録領域に元画像を書き込むとともに、作業領域に元画像を最初の作業画像として書き込み、
第１論理積演算部、第２論理積演算部、第３論理積演算部、第４論理積演算部、差分演算部が、元画像記録領域内の元画像を参照しながら作業領域内の作業画像を書き換える処理を行い、
表示制御部が、作業領域内の最後の作業画像を差分画像としてディスプレイ装置に出力するようにしたものである。
【００１２】
(3)   本発明の第３の態様は、上述した第２の態様に係る図形のアウトライン表示装置において、
図形展開部が、図形内部の画素については画素値「１」、図形外部の画素については画素値「０」をもった元画像を生成し、
第１論理積演算部が、作業領域内の特定画素の画素値と、元画像記録領域内の特定画素と同位置にある対応画素に対して第１のシフト態様とは逆の方向にシフトした位置関係にあるシフト画素の画素値と、の間で論理積演算を行い、得られた演算結果を作業領域内の特定画素の新たな画素値として書き込む処理を、作業領域内の個々の画素について実行することにより作業領域内に第１論理積画像を生成し、
第２論理積演算部が、作業領域内の特定画素の画素値と、元画像記録領域内の特定画素と同位置にある対応画素に対して第２のシフト態様とは逆の方向にシフトした位置関係にあるシフト画素の画素値と、の間で論理積演算を行い、得られた演算結果を作業領域内の特定画素の新たな画素値として書き込む処理を、作業領域内の個々の画素について実行することにより作業領域内に第２論理積画像を生成し、
第３論理積演算部が、作業領域内の特定画素の画素値と、元画像記録領域内の特定画素と同位置にある対応画素に対して第３のシフト態様とは逆の方向にシフトした位置関係にあるシフト画素の画素値と、の間で論理積演算を行い、得られた演算結果を作業領域内の特定画素の新たな画素値として書き込む処理を、作業領域内の個々の画素について実行することにより作業領域内に第３論理積画像を生成し、
第４論理積演算部が、作業領域内の特定画素の画素値と、元画像記録領域内の特定画素と同位置にある対応画素に対して第４のシフト態様とは逆の方向にシフトした位置関係にあるシフト画素の画素値と、の間で論理積演算を行い、得られた演算結果を作業領域内の特定画素の新たな画素値として書き込む処理を、作業領域内の個々の画素について実行することにより作業領域内に第４論理積画像を生成し、
差分演算部が、元画像記録領域内の画像から作業領域内の画像を差し引く差分演算を行うことにより、作業領域内に差分画像を生成するようにしたものである。
【００１３】
(4)   本発明の第４の態様は、上述した第２または第３の態様に係る図形のアウトライン表示装置において、
元画像記録領域および作業領域には、ディスプレイ装置の画面の表示対象領域を構成する画素配列と同一の画素配列をもった元画像および作業画像がそれぞれ格納されるようにし、
表示制御部が、表示対象領域を構成する画素配列と同一の画素配列をもった差分画像を出力するようにしたものである。
【００１４】
(5)   本発明の第５の態様は、ベクタ形式の図形データに基づいて、図形のアウトラインを表示するアウトライン表示装置において、
表示対象図形をベクタ形式で表現した図形データを格納する図形データ格納部と、
ラスタ形式の画像を格納するメモリ部と、
図形データをメモリ部に展開してラスタ形式の元画像を生成する図形展開部と、
元画像を第１のシフト態様でシフトして得られる第１シフト画像を、元画像から差し引く差分演算を行うことにより、メモリ部に第１差分画像を生成する第１差分演算部と、
元画像を第２のシフト態様でシフトして得られる第２シフト画像を、元画像から差し引く差分演算を行うことにより、メモリ部に第２差分画像を生成する第２差分演算部と、
元画像を第３のシフト態様でシフトして得られる第３シフト画像を、元画像から差し引く差分演算を行うことにより、メモリ部に第３差分画像を生成する第３差分演算部と、
元画像を第４のシフト態様でシフトして得られる第４シフト画像を、元画像から差し引く差分演算を行うことにより、メモリ部に第４差分画像を生成する第４差分演算部と、
第１差分画像、第２差分画像、第３差分画像、第４差分画像について、論理和演算を行うことにより、メモリ部に論理和画像を生成する論理和演算部と、
論理和画像を、図形のアウトラインとしてディスプレイ装置の画面上に表示する表示制御部と、
を設け、
図形展開部が、二次元行列状に配置された画素の集合体からなる元画像を生成するようにし、
第１のシフト態様、第２のシフト態様、第３のシフト態様、第４のシフト態様は、各画素を右方向および上方向にそれぞれ所定画素分移動させる斜め右上シフト、各画素を左方向および下方向にそれぞれ所定画素分移動させる斜め左下シフト、各画素を左方向および上方向にそれぞれ所定画素分移動させる斜め左上シフト、各画素を右方向および下方向にそれぞれ所定画素分移動させる斜め右下シフト、という４種類のシフトのいずれか１つにそれぞれ１対１に対応づけられているようにしたものである。
【００１５】
(6)   本発明の第６の態様は、上述した第５の態様に係る図形のアウトライン表示装置において、
メモリ部が、元画像記録領域と作業領域と結果蓄積領域とを有し、
図形展開部が、最初の差分演算が行われる前に元画像記録領域に元画像を書き込み、個々の差分演算が行われる前に毎回作業領域に元画像を作業画像として書き込み、最初の差分演算が行われる前に結果蓄積領域に空の図形を有する画像を蓄積画像として書き込み、
第１差分演算部、第２差分演算部、第３差分演算部、第４差分演算部が、元画像記録領域内の元画像を参照しながら作業領域内の作業画像を書き換える処理を順番に行い、
論理和演算部が、作業領域内に第１差分画像、第２差分画像、第３差分画像、第４差分画像が得られるたびに、得られた差分画像と結果蓄積領域内の蓄積画像との間で論理和演算を行い、得られた画像を新たな蓄積画像として結果蓄積領域に書き込む処理を行うようにしたものである。
【００１６】
(7)   本発明の第７の態様は、上述した第６の態様に係る図形のアウトライン表示装置において、
図形展開部が、図形内部の画素については画素値「１」、図形外部の画素については画素値「０」をもった元画像を生成し、
第１差分演算部が、作業領域内の特定画素の画素値と、元画像記録領域内の特定画素と同位置にある対応画素に対して第１のシフト態様とは逆の方向にシフトした位置関係にあるシフト画素の画素値と、の間で差分演算を行い、得られた演算結果を作業領域内の特定画素の新たな画素値として書き込む処理を、作業領域内の個々の画素について実行することにより作業領域内に第１差分画像を生成し、
第２差分演算部が、作業領域内の特定画素の画素値と、元画像記録領域内の特定画素と同位置にある対応画素に対して第２のシフト態様とは逆の方向にシフトした位置関係にあるシフト画素の画素値と、の間で差分演算を行い、得られた演算結果を作業領域内の特定画素の新たな画素値として書き込む処理を、作業領域内の個々の画素について実行することにより作業領域内に第２差分画像を生成し、
第３差分演算部が、作業領域内の特定画素の画素値と、元画像記録領域内の特定画素と同位置にある対応画素に対して第３のシフト態様とは逆の方向にシフトした位置関係にあるシフト画素の画素値と、の間で差分演算を行い、得られた演算結果を作業領域内の特定画素の新たな画素値として書き込む処理を、作業領域内の個々の画素について実行することにより作業領域内に第３差分画像を生成し、
第４差分演算部が、作業領域内の特定画素の画素値と、元画像記録領域内の特定画素と同位置にある対応画素に対して第４のシフト態様とは逆の方向にシフトした位置関係にあるシフト画素の画素値と、の間で差分演算を行い、得られた演算結果を作業領域内の特定画素の新たな画素値として書き込む処理を、作業領域内の個々の画素について実行することにより作業領域内に第４差分画像を生成し、
各差分演算部が行う差分演算は、
特定画素の画素値が「０」、シフト画素の画素値が「０」の場合は、画素値「０」を演算結果とし、
特定画素の画素値が「０」、シフト画素の画素値が「１」の場合は、画素値「０」を演算結果とし、
特定画素の画素値が「１」、シフト画素の画素値が「０」の場合は、画素値「１」を演算結果とし、
特定画素の画素値が「１」、シフト画素の画素値が「１」の場合は、画素値「０」を演算結果とする演算であるようにしたものである。
【００１７】
(8)   本発明の第８の態様は、上述した第６または第７の態様に係る図形のアウトライン表示装置において、
元画像記録領域、作業領域、結果蓄積領域には、ディスプレイ装置の画面の表示対象領域を構成する画素配列と同一の画素配列をもった元画像、作業画像、蓄積画像がそれぞれ格納されるようにし、
表示制御部が、表示対象領域を構成する画素配列と同一の画素配列をもった論理和画像を出力するようにしたものである。
【００１８】
(9)   本発明の第９の態様は、上述した第１〜第８の態様に係る図形のアウトライン表示装置において、
図形データ格納部が、表示対象図形の構成に必要な個々の部分図形を示す部分図形データと、複数の部分図形を合成して表示対象図形を生成するための合成方法を示す情報と、を格納しており、
図形展開部が、合成方法に基づいて複数の部分図形を合成しながら展開を行い、ラスタ形式の元画像を生成するようにしたものである。
【００１９】
(10)  本発明の第１０の態様は、上述した第１〜第９の態様に係る図形のアウトライン表示装置において、
図形展開部が、オペレータからの指示入力に基づいて、特定図形の特定箇所を特定倍率で表示するための元画像を生成するようにしたものである。
【００２０】
(11)  本発明の第１１の態様は、上述した第１〜第１０の態様に係る図形のアウトライン表示装置において、
図形展開部が、オペレータからアウトラインの太さを示すパラメータＴを入力する機能を有し、
第１のシフト態様、第２のシフト態様、第３のシフト態様、第４のシフト態様は、各画素を右方向および上方向にそれぞれＴ画素分移動させる斜め右上シフト、各画素を左方向および下方向にそれぞれＴ画素分移動させる斜め左下シフト、各画素を左方向および上方向にそれぞれＴ画素分移動させる斜め左上シフト、各画素を右方向および下方向にそれぞれＴ画素分移動させる斜め右下シフト、という４種類のシフトのいずれか１つにそれぞれ１対１に対応づけられているようにしたものである。
【００２１】
(12)  本発明の第１２の態様は、上述した第１〜第１１の態様に係る図形のアウトライン表示装置において、
表示制御部が、表示対象図形のアウトラインのみを表示する機能と、表示対象図形のみを表示する機能と、表示対象図形にアウトラインを重畳させて表示する機能と、を有するようにしたものである。
【００２２】
(13)  本発明の第１３の態様は、上述した第１〜第１２の態様に係る図形のアウトライン表示装置において、
図形展開部および各演算部の処理を、パソコン用の画像処理専用集積回路を利用して実行させるようにしたものである。
【００２３】
(14)  本発明の第１４の態様は、上述した第１〜第１２の態様に係る図形のアウトライン表示装置を、コンピュータに専用のプログラムを組み込むことにより構成したものである。
【００２４】
(15)  本発明の第１５の態様は、上述した第１〜第１２の態様に係る図形のアウトライン表示装置を組み込むことにより、ＬＳＩ設計装置を構成したものである。
【００２５】
(16)  本発明の第１６の態様は、二次元行列状に配置された画素の集合体からなる元図形に基づいて、当該元図形のアウトラインを作成する図形のアウトライン作成方法において、
元図形を第１のシフト態様でシフトして得られる第１シフト図形と元図形との間で、論理積演算を行うことにより、第１論理積図形を生成する第１論理積演算段階と、
元図形を第２のシフト態様でシフトして得られる第２シフト図形と第１論理積図形との間で、論理積演算を行うことにより、第２論理積図形を生成する第２論理積演算段階と、
元図形を第３のシフト態様でシフトして得られる第３シフト図形と第２論理積図形との間で、論理積演算を行うことにより、第３論理積図形を生成する第３論理積演算段階と、
元図形を第４のシフト態様でシフトして得られる第４シフト図形と第３論理積図形との間で、論理積演算を行うことにより、第４論理積図形を生成する第４論理積演算段階と、
第４論理積図形を元図形から差し引く差分演算を行うことにより、差分図形を生成する差分演算段階と、
をコンピュータに実行させ、差分図形を、元図形のアウトラインとして出力させるようにし、
第１のシフト態様、第２のシフト態様、第３のシフト態様、第４のシフト態様が、各画素を右方向および上方向にそれぞれ所定画素分移動させる斜め右上シフト、各画素を左方向および下方向にそれぞれ所定画素分移動させる斜め左下シフト、各画素を左方向および上方向にそれぞれ所定画素分移動させる斜め左上シフト、各画素を右方向および下方向にそれぞれ所定画素分移動させる斜め右下シフト、という４種類のシフトのいずれか１つにそれぞれ１対１に対応づけられているようにしたものである。
【００２６】
(17)  本発明の第１７の態様は、二次元行列状に配置された画素の集合体からなる元図形に基づいて、当該元図形のアウトラインを作成する図形のアウトライン作成方法において、
元図形を第１のシフト態様でシフトして得られる第１シフト図形を、元図形から差し引く差分演算を行うことにより、第１差分図形を生成する第１差分演算段階と、
元図形を第２のシフト態様でシフトして得られる第２シフト図形を、元図形から差し引く差分演算を行うことにより、第２差分図形を生成する第２差分演算段階と、
元図形を第３のシフト態様でシフトして得られる第３シフト図形を、元図形から差し引く差分演算を行うことにより、第３差分図形を生成する第３差分演算段階と、
元図形を第４のシフト態様でシフトして得られる第４シフト図形を、元図形から差し引く差分演算を行うことにより、第４差分図形を生成する第４差分演算段階と、
第１差分図形、第２差分図形、第３差分図形、第４差分図形について、論理和演算を行うことにより、論理和図形を生成する論理和演算段階と、
をコンピュータに実行させ、論理和図形を、元図形のアウトラインとして出力させるようにし、
第１のシフト態様、第２のシフト態様、第３のシフト態様、第４のシフト態様が、各画素を右方向および上方向にそれぞれ所定画素分移動させる斜め右上シフト、各画素を左方向および下方向にそれぞれ所定画素分移動させる斜め左下シフト、各画素を左方向および上方向にそれぞれ所定画素分移動させる斜め左上シフト、各画素を右方向および下方向にそれぞれ所定画素分移動させる斜め右下シフト、という４種類のシフトのいずれか１つにそれぞれ１対１に対応づけられているようにしたものである。
【発明の効果】
【００２７】
本発明のアウトライン表示装置によれば、ラスタ形式の元画像と当該元画像を４方向にシフトしたシフト画像との間で論理演算を行うことにより、シフト量に応じた画素幅をもつアウトライン画像を生成することができる。このため、ベクタ形式の図形データに基づいて、ディスプレイ画面上に図形のアウトラインを表示する処理を、低演算負担で高速に行うことが可能になる。
【図面の簡単な説明】
【００２８】
【図１】複数の部分図形Ｆ１，Ｆ２，Ｆ３を組み合わせることにより構成される合成図形Ｆの一例を示す平面図である。
【図２】図１に示す個々の部分図形Ｆ１，Ｆ２，Ｆ３の図形データの構成例を示す図である。
【図３】図１に示す合成図形ＦのアウトラインＬの表示例を示す平面図である。
【図４】図１に示す合成図形Ｆを一筆書きで構成した図形データの構成例を示す図である。
【図５】ベクタ形式の図形データに基づいて図形のアウトライン表示を行う原理を、従来のアルゴリズムと本発明のアルゴリズムとで対比して示す図である。
【図６】本発明の第１の実施形態に係る図形のアウトライン表示装置の構成を示すブロック図である。
【図７】図６に示す図形展開部１２０により、部分図形Ｆ１をメモリ部１３０に展開した状態を示す平面図である。
【図８】図７に示す展開状態を、実際のビットマップとして示す平面図である。
【図９】図６に示す図形展開部１２０により、部分図形Ｆ１の上に部分図形Ｆ２を重ねて展開した状態を示す平面図である。
【図１０】図６に示す図形展開部１２０により、部分図形Ｆ１，Ｆ２，Ｆ３を重畳展開した状態を示す平面図である。
【図１１】元画像Ｇと、これを４方向にシフトして得られる４種類のシフト画像Ｓ１〜Ｓ４を示す平面図である。
【図１２】図６に示す本発明の第１の実施形態に係る図形のアウトライン表示装置における具体的な処理プロセスを示す平面図である。
【図１３】図６に示すメモリ部１３０内の２つの領域１３１，１３２に対して行われる論理演算処理の手順を示す平面図である。
【図１４】本発明の第２の実施形態に係る図形のアウトライン表示装置の構成を示すブロック図である。
【図１５】図１４に示す本発明の第２の実施形態に係る図形のアウトライン表示装置における具体的な処理プロセスを示す平面図である。
【図１６】図１４に示すメモリ部２３０内の３つの領域２３１，２３２，２３３に対して行われる論理演算処理の手順を示す平面図である。
【図１７】元画像Ｇに対して、右方向および上方向に２画素分ずつシフトして得られるシフト画像Ｓを示す平面図である。
【図１８】シフト量とアウトラインＬの線幅との関係を示す平面図である。
【図１９】本発明に係る図形のアウトライン表示装置の表示態様のバリエーションを示す平面図である。
【発明を実施するための形態】
【００２９】
以下、本発明を図示する実施形態に基づいて説明する。
【００３０】
＜＜＜  §１．  従来のアウトライン表示アルゴリズム  ＞＞＞
はじめに、本発明との対比を容易にするために、従来のアウトライン表示アルゴリズムを簡単に説明しておく。ここでは、説明の便宜上、図１に示すような単純な図形を実例として挙げながら、以下の説明を行うことにする。いま、図１(a) に示すような表示対象図形Ｆ（内部にハッチングを施した図形）が定義されている場合に、この図形Ｆについてのアウトライン（輪郭線）をディスプレイ画面上に表示することを考えてみよう。
【００３１】
ここで、表示対象図形Ｆは、実際には、図１(b) に示す部分図形Ｆ１、図１(c) に示す部分図形Ｆ２、図１(d) に示す部分図形Ｆ３という３つの部分図形を組み合わせることにより構成される合成図形であるものとしよう。図１において破線は、いずれも表示対象図形Ｆの輪郭を示すものである。この破線で示す輪郭位置を参照すれば、個々の部分図形Ｆ１，Ｆ２，Ｆ３が表示対象図形Ｆのどの位置を占める図形であるかを直観的に把握することができよう。
【００３２】
結局、この図１に示す表示対象図形Ｆは、３つの部分図形Ｆ１，Ｆ２，Ｆ３について幾何学的な論理和をとることによって得られる合成図形ということになる。３つの部分図形Ｆ１，Ｆ２，Ｆ３はいずれも単純な矩形であり、表示対象図形Ｆは、このような矩形の集合体として定義された図形ということになる。表示対象図形Ｆの形状自体は不規則な多角形であるが、単純な３つの矩形の集合体として表現することができる。
【００３３】
ＬＳＩ設計装置で定義されるレイアウトパターンは多層構造を有し、個々の層に対応するパターンは非常に複雑な形状をもった図形になるが、通常は、矩形、円、扇形など、多数の基本図形を組み合わせた合成図形として定義される。前述したように、実際には、１チップのＬＳＩ用レイアウトパターンには、数万個〜数億個の基本図形が含まれており、同一の材料層を構成する１つのパターンでも、膨大な数の基本図形の集合体を構成することになる。ただ、ここでは便宜上、図１に示すように、３つの部分図形Ｆ１，Ｆ２，Ｆ３によって構成された単純な合成図形Ｆを表示対象とした例について、以下の説明を行うことにする。
【００３４】
図２は、図１に示す個々の部分図形Ｆ１，Ｆ２，Ｆ３の図形データの構成例を示す図である。通常、矩形からなる部分図形は、対角位置にある２頂点の位置座標によって定義することができる。たとえば、図２(a) に示す例では、ＸＹ二次元座標系上に定義された２個の座標点Ｐ１１，P１２（黒丸）を対角頂点とする矩形（実線で示す）として部分図形Ｆ１が定義され、２個の座標点Ｐ２１，P２２（×印）を対角頂点とする矩形（破線で示す）として部分図形Ｆ２が定義され、２個の座標点Ｐ３１，P３２（白丸）を対角頂点とする矩形（一点鎖線で示す）として部分図形Ｆ３が定義されている。そして、これら３つの部分図形Ｆ１，Ｆ２，Ｆ３の論理和をとった合成図形として、図１(a) に示す表示対象図形Ｆが定義されることになる。
【００３５】
図２(b) は、このようにして定義された表示対象図形Ｆをベクタ形式の図形データで表現した一例を示す図である。この例の場合、式(1) に「Ｆ＝Ｆ１＋Ｆ２＋Ｆ３」と示されているように、まず、図形Ｆが、３つの部分図形Ｆ１，Ｆ２，Ｆ３の論理和からなる図形であることが示されている。一方、式(2) 「Ｆ１＝ＲＥＣ（Ｐ１１（ｘ１１，ｙ１１），Ｐ１２（ｘ１２，ｙ１２））」における「ＲＥＣ」は、部分図形Ｆ１が矩形であることを示す符号であり、後続する「Ｐ１１（ｘ１１，ｙ１１），Ｐ１２（ｘ１２，ｙ１２）」は、当該矩形の対角位置にある頂点が、座標値（ｘ１１，ｙ１１）をもつ座標点Ｐ１１と、座標値（ｘ１２，ｙ１２）をもつ座標点Ｐ１２とであることを示している。同様に、式(3) は部分図形Ｆ２を定義する式であり、式(4) は部分図形Ｆ３を定義する式である。
【００３６】
このように、図２(b) に示す式(2) 〜(4) は、ＸＹ二次元座標系上の複数の座標点の位置情報とこれら座標点間の連結態様を示す情報（矩系であることを示す情報）とによって、各部分図形Ｆ１，Ｆ２，Ｆ３を定義するベクタ形式の図形データになっており、式(1) は、これら部分図形Ｆ１，Ｆ２，Ｆ３を合成して表示対象図形Ｆを生成するための合成方法（この例の場合、論理和による合成）を示すデータになっている。ここで、ＸＹ二次元座標系の座標軸Ｘ，Ｙの単位が、ＬＳＩレイアウトパターン上での実寸値（たとえば、μｍ単位）となるようにしておけば、図２(b) に示すベクタ形式の図形データによって、実際のレイアウトパターンを描画することが可能になる。
【００３７】
もちろん、図２(b) に示す図形データは、図形をベクタ形式で記述する１つのフォーマットを例示するものであり、実際には、この他にも様々なフォーマット形式が利用されている。また、たとえば、円の場合は、中心点の座標と半径値によって記述することができ、扇形の場合は、更に、中心角の角度値を加えることによって記述することができる。更に、ベジェ曲線などの表現形式を用いれば任意の曲線を記述することも可能である。
【００３８】
図３は、図１に示す合成図形ＦのアウトラインＬを、ディスプレイ装置の画面上に表示した例を示す平面図である。一般的なディスプレイ装置には、表示対象をラスタ形式の画像データ、すなわち、画素の集合体のデータとして与える必要があるので、図３に示すようなアウトラインＬを画面上に表示するためには、ベクタ形式ではなく、ラスタ形式の画像として、アウトラインＬを用意する必要がある。そのため、従来のＬＳＩ設計装置では、まず、図２(a) に示すような部分図形Ｆ１，Ｆ２，Ｆ３を合成して、図４(a) に示すような合成図形Ｆを生成し、この合成図形Ｆの輪郭Ｃに基づいて、図３に示すようなアウトラインＬを作成している。
【００３９】
図４(a) に示す合成図形Ｆは、１０個の座標点Ｐ１〜Ｐ１０を一筆書きで連結してなる輪郭Ｃに囲まれた図形であり、ベクタ形式の図形データとしては、たとえば、図４(b) に示すようなデータとして表現される。ここで、Ｐ１（ｘ１，ｙ１）〜Ｐ１０（ｘ１０，ｙ１０）は、それぞれ座標値（ｘ１，ｙ１）〜（ｘ１０，ｙ１０）をもつ座標点Ｐ１〜Ｐ１０を示しており、これらをハイフンで結合することにより、座標点間の連結状態が示されている。Ｐ１（ｘ１，ｙ１）から始まり、一巡してＰ１（ｘ１，ｙ１）で終わることにより、閉領域からなる合成図形Ｆが定義される。
【００４０】
幾何学上の「線」は太さの概念をもたないため、図４(a) に示す輪郭Ｃは太さの概念をもたないが、図３に示すアウトラインＬは、ディスプレイ画面上の画素単位の幅をもった線になる。別言すれば、ベクタ形式の図形データとして表現されている輪郭Ｃは、ラスタ形式の画像に展開した上で、アウトラインＬとしてディスプレイの画面上に表示されることになる。なお、本願では、便宜上、図４(a) のようにベクタデータで表現された太さの概念をもたない図形の外形線を「輪郭Ｃ」と呼び、図３のようにラスタデータで表現された太さの概念をもつ図形の外形線を「アウトラインＬ」と呼んで区別することにする。
【００４１】
ここで、図４(a) に示す輪郭Ｃ（ベクタデータ）を、図３に示すアウトラインＬ（ラスタデータ）に変換する処理は、一般的に、それほど負担の重い処理ではない。ラスタデータを格納するためのメモリ上に二次元画素配列を定義し、図４(b) に示すベクタデータに基づいて、各座標点Ｐ１〜Ｐ１０に対応する位置にある画素およびこれら座標点間を結ぶ位置にある画素を計算し、これらの画素には画素値「１」、その他の画素には画素値「０」を与える処理を行えば、メモリ上にアウトラインＬを示すラスタデータを得ることができる。
【００４２】
これに対して、図２(a) に示す部分図形Ｆ１，Ｆ２，Ｆ３（ベクタデータ）を合成して、図４(a) に示す合成図形Ｆ（ベクタデータ）を生成する処理は、演算負担がかなり重く、処理が完了するまでに時間を要する。たとえば、図示の例の場合、図２(b) の式(1) 〜(4) で示されるベクタ形式の図形データに基づいて、図４(b) の式で示されるベクタ形式の図形データを求める必要がある。そのためには、交点として、座標点Ｐ４，Ｐ７，Ｐ１０を求める演算が必要になり、一筆書きの経路を決定する演算も必要になる。
【００４３】
図では、説明の便宜上、わずか３つの部分図形Ｆ１，Ｆ２，Ｆ３を合成する例を示しているが、前述したとおり、一般的なＬＳＩ設計データは、数万個〜数億個の部分図形を組み合わせたレイアウトパターンによって構成されるため、合成図形Ｆに対応する図形データを生成する処理の演算負担は極めて重くなる。部分図形が矩形だけでなく、円、扇形、任意の多角形、ベジェ曲線などを含んでいた場合、演算負担は更に重くなる。
【００４４】
もちろん、ＬＳＩ設計装置の本来の目的は、電子線描画装置などに与える露光パターンデータを作成することにあるので、設計作業が完了した後、合成図形Ｆを生成して露光パターンデータを作成する処理にある程度の時間がかかっても、重大な支障にはならない。しかしながら、設計作業の途中段階で、現時点での合成図形Ｆの輪郭をディスプレイ画面上で確認する用途に利用する場合、オペレータがアウトラインＬの表示指示を与えてから、実際にディスプレイ画面上に表示されるまでの遅延時間が長くなると、作業効率は著しく低下する。
【００４５】
たとえば、現在用いられているパソコンレベルのコンピュータ上で動作するアプリケーションプログラムとして、上述した従来のアルゴリズムに基づくアウトライン表示用のビューアプログラムを作成したとしても、オペレータが合成図形をアウトライン表示させる旨の指示を与えてから、実際にディスプレイ画面にアウトラインが表示されるまで、数分〜数時間のオーダの演算時間が必要になり、リアルタイムによる表示は実用上困難である。
【００４６】
そこで本発明では、従来とは異なるアルゴリズムを採用してアウトライン表示を行うようにし、演算負担を低減し、高速な表示が可能になるようにしている。以下、§２以降において、本発明を詳述する。
【００４７】
＜＜＜  §２．  本発明の基本原理  ＞＞＞
図５は、ベクタ形式の図形データに基づいて図形のアウトライン表示を行う原理を、従来のアルゴリズムと本発明のアルゴリズムとで対比して示す図である。ここでは、§１で述べた例と同様に、３つの部分図形Ｆ１，Ｆ２，Ｆ３によって構成される合成図形Ｆを表示対象図形とする例が示されている。すなわち、３つの部分図形Ｆ１，Ｆ２，Ｆ３を示す部分図形データ１０に基づいて、合成図形Ｆを生成し、そのアウトラインＬをディスプレイ画面上に表示する処理が行われる。
【００４８】
既に述べたとおり、部分図形Ｆ１，Ｆ２，Ｆ３は、たとえば、図２の式(2) 〜(4) のようなベクタ形式の図形データによって表現され、その合成方法（この例では論理和演算）が、図２の式(1) によって示される。
【００４９】
従来のアウトライン表示アルゴリズムでは、図５の左側に示すように、まず、部分図形Ｆ１，Ｆ２，Ｆ３を示すベクタ形式の図形データに対して合成演算２０を実行し、一筆書きの輪郭Ｃの情報をもったベクタ形式の合成図形Ｆの図形データを生成する。このデータは、たとえば、図４(b) に示すようなものになる。そして、この合成図形Ｆの図形データをラスタ画像に展開して、ディスプレイの画面上にアウトライン表示３０を得る。ここで表示されるアウトラインＬは、画素単位の太さをもった線になる。しかしながら、この従来の方法では、合成演算２０の演算負担が重いため、合成図形Ｆの図形データを生成する処理に時間がかかり、リアルタイムでアウトラインＬを表示させることは実用上困難である。
【００５０】
これに対して、本発明に係るアウトライン表示アルゴリズムでは、図５の右側に示すように、まず、部分図形Ｆ１，Ｆ２，Ｆ３を示すベクタ形式の図形データに対して図形展開４０を実行し、ラスタ形式の元画像Ｇを生成する。すなわち、ラスタデータを格納するため、メモリ上に二次元画素配列を定義し、部分図形データ１０をメモリ上に展開する処理を実行すればよい。この展開処理は、各部分図形Ｆ１，Ｆ２，Ｆ３について、図形内部の
画素には画素値「１」、外部の画素には画素値「０」を与える処理を順番に行えばよいので、比較的軽い演算負担で済む。
【００５１】
続いて、このメモリ上に展開されたラスタ形式の元画像Ｇ（画素の集合体）から、その輪郭部分を抽出するアウトライン抽出５０を行い、アウトラインＬを生成する。こうして生成されたアウトラインＬは、画素単位の太さをもった線で構成され、ラスタ形式の画像データにより表現することができるので、そのままディスプレイ装置に与えることにより、画面上にアウトライン表示３０を得ることができる。
【００５２】
アウトライン抽出５０の具体的なアルゴリズムは、§３で述べる第１の実施形態や§４で述べる第２の実施形態において詳述するが、いずれも、ラスタ形式の元画像Ｇと当該元画像Ｇを斜め４方向にシフトしたシフト画像との間で論理演算を行う方法を採用しているため、ラスタ形式のアウトラインＬを低演算負担で高速に生成することができる。
【００５３】
要するに、従来のアルゴリズムでは、ベクタ形式の部分図形データＦ１，Ｆ２，Ｆ３に基づいて、ベクタ形式の合成図形データＦを生成する合成演算２０を行った上で、これをラスタライズしてラスタ形式のアウトラインＬを生成する処理を行っていたのに対して、本発明のアルゴリズムでは、ベクタ形式の部分図形データＦ１，Ｆ２，Ｆ３をメモリ上に展開して、ラスタ形式の元画像Ｇを生成し、この元画像Ｇからその輪郭部分を抽出してラスタ形式のアウトラインＬを生成する処理を行うことになる。
【００５４】
このように、本発明では、ベクタ形式の部分図形データＦ１，Ｆ２，Ｆ３に対する合成演算２０が不要になり、演算負担は大幅に軽減される。このため、アウトライン表示用のビューアプログラムをパソコンレベルのコンピュータに組み込んで利用したとしても、高速処理が可能になる。部分図形の数が増えた場合でも、アウトライン抽出５０の処理アルゴリズムは、ラスタ形式に展開された元画像Ｇと斜め４方向にシフトしたシフト画像との間での論理演算を行う点に変わりはないので、処理負担が重くなることはない。
【００５５】
したがって、ＬＳＩ設計用のレイアウトパターンなど、膨大な数の部分図形から構成される合成図形のアウトライン表示を行う場合でも、高速なリアルタイム表示が可能になる。これは、ＬＳＩ設計作業の途中段階で、現時点での合成図形Ｆの輪郭をディスプレイ画面上で一時的にチェックする作業を行う場合、作業効率の向上に大幅に寄与する。オペレータは、現在設計中のレイアウトパターンのアウトラインＬをリアルタイムで即座にディスプレイ画面上に表示して確認することができ、必要に応じて、即座に設計変更を繰り返してゆくことができる。
【００５６】
＜＜＜  §３．  本発明の第１の実施形態  ＞＞＞
続いて、本発明の第１の実施形態に係る図形のアウトライン表示装置の構成および動作を、図６のブロック図を参照しながら説明する。
【００５７】
＜３−１  装置の基本構成および基本動作＞
図６に示すとおり、このアウトライン表示装置は、図形データ格納部１１０、図形展開部１２０、メモリ部１３０、表示制御部１４０、各演算部１５０〜１９０によって構成され、ディスプレイ装置３００の画面上に、表示対象図形ＦのアウトラインＬを表示する機能を果たす。
【００５８】
図形データ格納部１１０は、表示対象図形Ｆをベクタ形式で表現した図形データを格納する構成要素である。ここに示す実施形態の場合、表示対象図形Ｆは、複数の部分図形Ｆ１，Ｆ２，Ｆ３を合成することによって得られる合成図形によって構成されているため、図形データ格納部１１０には、表示対象図形Ｆの構成に必要な個々の部分図形Ｆ１，Ｆ２，Ｆ３を示す部分図形データ（たとえば、図２(b) の式(2) 〜(4) に対応するデータ）と、これら複数の部分図形Ｆ１，Ｆ２，Ｆ３を合成して表示対象図形Ｆを生成するための合成方法を示す情報（たとえば、図２(b) の式(1) に対応するデータ）と、が格納されている。このアウトライン表示装置は、結局、これらベクタ形式の図形データに基づいて、表示対象図形ＦのアウトラインＬをディスプレイ装置３００の画面上に表示する処理を行うことになる。
【００５９】
図形展開部１２０は、図形データ格納部１１０内に格納されているベクタ形式の図形データをメモリ部１３０に展開してラスタ形式の元画像Ｇを生成する機能を果たす構成要素である。メモリ部１３０は、ラスタ形式の画像を格納する役割を果たすが、ここに示す第１の実施形態の場合、図示のように、元画像記録領域１３１と作業領域１３２とが定義されている。元画像Ｇは、元画像記録領域１３１に展開され格納される。一方、作業領域１３２は、この元画像Ｇを利用して、アウトライン抽出作業を行うための作業場所として利用される。ここでは、この作業領域１３２に格納されている画像を作業画像Ｋと呼ぶことにする。
【００６０】
元画像Ｇも作業画像Ｋも、ラスタ形式の画像であり、二次元行列状に配置された画素の集合体によって構成されている。第１論理積演算部１５０、第２論理積演算部１６０、第３論理積演算部１７０、第４論理積演算部１８０、差分演算部１９０は、元画像記録領域１３１に格納されている元画像Ｇを参照しながら、作業領域１３２内の作業画像Ｋを書き換える処理を行う構成要素である。各演算部の具体的な処理作業の内容は後述するが、これらの処理作業は、第１論理積演算部１５０、第２論理積演算部１６０、第３論理積演算部１７０、第４論理積演算部１８０、差分演算部１９０の順番で順次行われることになる。
【００６１】
こうして、最終的に差分演算部１９０による作業後に作業領域１３２に得られた作業画像Ｋ（作業領域１３２内の最後の作業画像Ｋ）は、後述するように差分画像Ｄになり、アウトラインＬを構成するラスタ形式の画像になる。表示制御部１４０は、この差分画像Ｄを、図形のアウトラインＬとしてディスプレイ装置３００の画面上に表示する。
【００６２】
以上、図６に示す各構成要素の概要を説明したが、実際には、これらの各構成要素は、コンピュータに専用のプログラムを組み込むことにより構成することができる。たとえば、図形データ格納部１１０は、コンピュータに接続されたハードディスク装置などの記憶装置によって構成することができ、メモリ部１３０は、コンピュータに搭載されたＲＡＭなどのメモリによって構成することができ、表示制御部１４０は、ディスプレイ装置３００との間のインタフェイス回路によって構成することができる。また、図形展開部１２０や各演算部１５０〜１９０の機能は、専用のプログラムによって実現することができる。
【００６３】
なお、実用上は、図形展開部１２０および各演算部１５０〜１９０の処理を、パソコン用のグラフィックボードなどに組み込まれた画像処理専用集積回路によって実行させるようにするのが好ましい。一般的なパソコン用のグラフィックボードには、ベクタ形式の図形データをラスタ形式の画像データに展開する機能や、ラスタ形式の画像データに対する様々な論理演算機能が備わっている。そこで、このグラフィックボードの機能を利用して、図形展開部１２０および各演算部１５０〜１９０の処理を実行するようにすれば、グラフィックボード上のハードウエア（画像処理専用集積回路）を利用して処理を行うことができるようになり、処理の高速化を図ることができる。
【００６４】
＜３−２  図形展開部による具体的な処理プロセス＞
続いて、図形展開部１２０による具体的な処理プロセスを、図１に示す合成図形Ｆを表示対象図形とする具体例について詳述する。
【００６５】
図形展開部１２０は、オペレータからの指示入力（表示対象図形ＦについてのアウトラインＬを表示すべき指示）に基づいて、表示対象図形Ｆをメモリ部１３０にラスタ形式の画像として展開する処理を実行する。すなわち、図形データ格納部１１０内に格納されているベクタ形式の図形データに基づいて、メモリ部１３０内の元画像記録領域１３１内に、二次元行列状に配置された画素の集合体からなる元画像Ｇが生成されることになる。
【００６６】
ここに示す実施形態のように、表示対象図形Ｆが複数の部分図形Ｆ１，Ｆ２，Ｆ３からなる合成図形である場合、図形展開部１２０は、図形データ内に示された合成方法に基づいて複数の部分図形を合成しながら展開を行い、ラスタ形式の元画像Ｇを生成する処理を行うことになる。ここに示す例の場合、合成方法は、図２(b) の式(1) に「Ｆ＝Ｆ１＋Ｆ２＋Ｆ３」と記述されているように論理和合成である。したがって、合成図形Ｆは、３つの部分図形Ｆ１，Ｆ２，Ｆ３についての論理和をとることにより得られるので、図形展開部１２０は、各部分図形を論理和をとりながら順番にメモリ上に展開してゆく作業を行えばよい。
【００６７】
具体的には、まず、図７に示すように、部分図形Ｆ１をメモリ部１３０に展開して、部分図形Ｆ１を示すラスタ画像をメモリ上の画素配列として形成する。図７に示すＸＹ二次元座標系は、図２に示す座標系に対応するものであり、個々のセルは画素を示している。すなわち、図７は、メモリ上に定義された二次元画素配列を示しており、個々の画素の位置は、図２に示す座標系上の特定の座標位置に対応することになる。図７において、内部にハッチングを施して示すセルは、部分図形Ｆ１の内部の画素を示し、白地のセルは、部分図形Ｆ１の外部の画素を示している。したがって、メモリ部１３０に展開された部分図形Ｆ１は二値画像ということになる。
【００６８】
なお、ここでは説明の便宜上、メモリ上に展開されたラスタ画像を、ハッチングされた画素（図形内部の画素）と白地の画素（図形外部の画素）の集合体として示すことにするが、実際には、１つの画素の画素値は１ビットのメモリ領域に、「０」または「１」として記録される。図８は、図７に示すラスタ画像の展開状態を、実際のビットマップとして示す平面図である。この例では、図形内部の画素については論理値「１」、図形外部の画素については論理値「０」が画素値として格納されている。
【００６９】
続いて、図形展開部１２０は、部分図形Ｆ１が展開されている状態（図７）のメモリの上に、更に、部分図形Ｆ２を重ねて展開する処理を行う。このとき、合成方法が「論理和」である点を考慮し、個々の画素ごとに論理和演算を行いながら、部分図形Ｆ２の重畳展開を行う。
【００７０】
具体的には、元の部分図形Ｆ１の画素値が「０」、部分図形Ｆ２の画素値が「０」の場合は、新たな画素値「０」を書き込み、元の部分図形Ｆ１の画素値が「１」、部分図形Ｆ２の画素値が「０」の場合は、新たな画素値「１」を書き込み、元の部分図形Ｆ１の画素値が「０」、部分図形Ｆ２の画素値が「１」の場合は、新たな画素値「１」を書き込み、元の部分図形Ｆ１の画素値が「１」、部分図形Ｆ２の画素値が「１」の場合は、新たな画素値「１」を書き込めばよい。図９は、このようにして、メモリ上に部分図形Ｆ２の重畳展開を行った状態を示している。
【００７１】
更に、図形展開部１２０は、この図９に示す状態のメモリの上に、部分図形Ｆ３を重ねて展開する処理を行う。このときも、合成方法が「論理和」である点を考慮し、個々の画素ごとに論理和演算を行いながら、部分図形Ｆ３の重畳展開を行えば、最終的に、図１０に示す状態が得られる。ここで、ハッチングが施された画素の集合体は、部分図形Ｆ１，Ｆ２，Ｆ３の論理和図形を示すものであり、図１(a) に示す表示対象図形Ｆに対応する。ここでは、この表示対象図形Ｆを含む矩形状の枠内の画像全体を元画像Ｇと呼ぶことにする。メモリ部１３０に得られた元画像Ｇは、画素値「０」もしくは「１」をもつ画素の集合体からなる二値画像ということになる。
【００７２】
以上、３つの部分図形Ｆ１，Ｆ２，Ｆ３の論理和図形として表示対象図形Ｆが構成される単純な例を示したが、部分図形の数が数万個に増えたとしても、基本的な展開方法は同じである。また、合成方法として異なる論理演算が定義されていた場合（たとえば、表示対象図形Ｆが論理積図形として定義されていたり、差分演算などを含むより複雑な論理演算式で定義されていた場合）でも、新たな画素値を求める論理演算の内容が異なるだけであり、基本的な展開方法は同じである。もちろん、合成図形は、内部に窓部が形成された中抜け図形であってもかまわない。図形展開部１２０による展開処理自体は、それほど演算負担が重い処理ではなく、パソコンレベルのコンピュータを利用した場合でも、処理時間が長時間かかることはない。
【００７３】
この図形展開部１２０による展開処理は、メモリ部１３０内の元画像記録領域１３１に対して行われ、結局、図１０に示す元画像Ｇは、元画像記録領域１３１に書き込まれることになる。ただ、図形展開部１２０は、元画像記録領域１３１に得られた元画像Ｇを、作業領域１３２にコピーする書込処理を行う。こうして、作業領域１３２内に書き込まれた元画像Ｇは、最初の作業画像Ｋとしての役割を果たす。各演算部１５０〜１９０は、この作業画像Ｋを順次書き換える処理を行うことになる。
【００７４】
＜３−３  シフト画像の特徴＞
次に、説明の便宜上、シフト画像Ｓ１〜Ｓ４についての説明を行っておく。いま、メモリ上に、図１１(a) に示すような元画像Ｇが格納されているものとしよう。この元画像Ｇは、図１０に示すように、表示対象図形Ｆを二次元画素配列上に展開したものであり、実際には、複数の画素の集合体によって構成される（ここに示す例の場合、表示対象図形Ｆの内部の画素には画素値「１」、外部の画素には画素値「０」が付与されている）。ただ、ここでは、図が繁雑になるのを避けるため、個々の画素のセル枠の図示は省略する。
【００７５】
この図１１(a) に示す元画像Ｇに対して、図１１(b) 〜(e) に示すようなシフト画像Ｓ１〜Ｓ４を考える。これらの図において、細線は元画像Ｇ上の表示対象図形Ｆの輪郭線Ｆ（Ｇ）の位置を参考のために示すものである。シフト画像Ｓ１〜Ｓ４は、元画像Ｇを所定方向に所定量（ここに示す例の場合、縦および横にそれぞれ１画素分）だけシフトすることにより得られる画像であり、当然ながら、元画像Ｇに含まれていた表示対象図形Ｆも、同じ方向にシフトすることになる。図１１に示す太線Ｆ（Ｓ１）〜Ｆ（Ｓ４）は、表示対象図形Ｆをシフトすることにより得られるシフト図形の輪郭線を示している。ここでは、各シフト図形の位置を明確に示すため、その内部にハッチングを施して示してある。
【００７６】
図１１(b) に示す第１シフト画像Ｓ１は、元画像Ｇを構成する各画素を右方向および上方向にそれぞれ１画素分移動させる斜め右上シフトを行うことにより得られた画像であり、図１１(c) に示す第２シフト画像Ｓ２は、元画像Ｇを構成する各画素を左方向および下方向にそれぞれ１画素分移動させる斜め左下シフトを行うことにより得られた画像であり、図１１(d) に示す第３シフト画像Ｓ３は、元画像Ｇを構成する各画素を左方向および上方向にそれぞれ１画素分移動させる斜め左上シフトを行うことにより得られた画像であり、図１１(e) に示す第４シフト画像Ｓ４は、元画像Ｇを構成する各画素を右方向および下方向にそれぞれ１画素分移動させる斜め右下シフトを行うことにより得られた画像である。
【００７７】
図１１(a) 〜(e) の外枠は、二次元ＸＹ座標系上の同一位置に配置されており、図１１(b) 〜(e) に細線で示された輪郭線Ｆ（Ｇ）は、図１１(a) に示す元画像Ｇ上の表示対象図形Ｆの輪郭線であるので、これらを基準にすれば、第１シフト画像Ｓ１は元画像Ｇを右上にシフトした画像、第２シフト画像Ｓ２は元画像Ｇを左下にシフトした画像、第３シフト画像Ｓ３は元画像Ｇを左上にシフトした画像、第４シフト画像Ｓ４は元画像Ｇを右下にシフトした画像であることが容易に理解できよう。すなわち、図にハッチングを施して示すシフト図形の輪郭線Ｆ（Ｓ１）〜Ｆ（Ｓ４）は、輪郭線Ｆ（Ｇ）に対して、それぞれ右上、左下、左上、右下にシフトした位置に配置されている。
【００７８】
元画像Ｇを所定方向にシフトすると、図の外枠外に追い出された画素は失われ、その逆側に新たな画素が追加されることになるが、この新たな画素については、図形外部の画素値（図８に示す例の場合は、画素値「０」）を与えるようにすればよい。たとえば、図１１(b) に示す第１シフト画像Ｓ１を作成するには、図１１(a) に示す元画像Ｇを構成する各画素の画素値を、それぞれ右方向に１画素、上方向に１画素だけ移動させた画素に新たに付与しなおす画素値の更新作業を行えばよい。その結果、元画像Ｇの最上行に位置する画素および最右列に位置する画素の画素値は失われ、最下行および最左列に位置する画素には、新たな画素値「０」が付与されることになる。
【００７９】
このようなシフト画像を作成する処理は、単なる画素値の移し替え（メモリ上でのビット単位の情報の移動）であり、作業負担は非常に軽いものである。なお、実際には、後述するように、メモリ上に実際に各シフト画像Ｓ１〜Ｓ４を作成する代わりに、元画像記録領域１３１に記録されている元画像Ｇを読み出す際に、アドレスをシフトさせる処理を行うことにより、あたかも各シフト画像Ｓ１〜Ｓ４から特定の画素値を読み出す処理が行われたようにする処理が行われる。したがって、実際には、シフト画像を作成する処理は不要であり、画素値を読み出す際にアドレス値をシフトさせるという非常に簡単な作業により、シフト画像を作成した場合と同等の効果を得ることができる。
【００８０】
＜３−４  各演算部による具体的な処理プロセス＞
続いて、各演算部１５０〜１９０による具体的な処理プロセスを、元画像記録領域１３１内に図１１(a) に示す元画像Ｇが格納されている具体的な事例について詳述する。
【００８１】
図１２は、この第１の実施形態に係る図形のアウトライン表示装置における各演算部による具体的な処理プロセスを示す平面図である。図１２(a) は、図形展開部１２０によって、元画像記録領域１３１に書き込まれた元画像Ｇを示す。この元画像Ｇには、図示のとおり、表示対象図形Ｆが含まれている。実際には、図１２(a) にハッチングを施した部分（図形Ｆの内部）の画素には画素値「１」が、白地部分（図形Ｆの外部）の画素には画素値「０」が書き込まれている。なお、相互位置関係の把握を容易にする便宜上、図１２(b) 〜(f) においても、この元画像Ｇ上の表示対象図形Ｆの輪郭線を、符号Ｆ（Ｇ）を付した細線で示すことにする。
【００８２】
前述したとおり、この元画像Ｇは、作業領域１３２にもコピーされ、最初の作業画像Ｋになる。別言すれば、図６に示すメモリ部１３０には、最初の段階では、元画像記録領域１３１にも作業領域１３２にも、図１２(a) に示す元画像Ｇが書き込まれた状態になっている。ここで、作業領域１３２に書き込まれた元画像Ｇ（最初の作業画像Ｋ）は、以下に述べる各処理プロセスにより順次書き換えられてゆくが、元画像記録領域１３１に書き込まれた元画像Ｇは、最後の処理プロセス（差分演算部１９０による差分演算のプロセス）が完了するまで、そのまま残ることになる。
【００８３】
まず、第１論理積演算部１５０によって、第１シフト画像Ｓ１と元画像Ｇとの間で論理積演算を行うことにより、作業領域１３２に第１論理積画像Ｈ１を生成する処理が行われる。図１２(b) は、このような論理積演算によって得られた第１論理積画像Ｈ１を示している。図１２(b) において、符号Ｆ（Ｈ１）が付されたハッチング部分は、第１論理積画像Ｈ１上における図形部分（画素値「１」が与えられた画素の集合体）を示しており、符号Ｆ（Ｓ１）が付された太線枠は、第１シフト画像Ｓ１上におけるシフト図形の輪郭線を示している。結局、図１２(b) において、符号Ｆ（Ｈ１）が付されたハッチング部分は、細線で示す輪郭線Ｆ（Ｇ）の内部、かつ、太線で示すシフト図形の輪郭線Ｆ（Ｓ１）の内部という論理積部分に相当する。
【００８４】
こうして、作業領域１３２内の作業画像Ｋとして、図１２(b) に示すような第１論理積画像Ｈ１が得られたら、続いて、第２論理積演算部１６０によって、第２シフト画像Ｓ２と第１論理積画像Ｈ１との間で論理積演算を行うことにより、作業領域１３２に第２論理積画像Ｈ２を生成する処理が行われる。図１２(c) は、このような論理積演算によって得られた第２論理積画像Ｈ２を示している。ここで、符号Ｆ（Ｈ２）が付されたハッチング部分は、第２論理積画像Ｈ２上における図形部分（画素値「１」が与えられた画素の集合体）を示しており、符号Ｆ（Ｓ２）が付された太線枠は、第２シフト画像Ｓ２上におけるシフト図形の輪郭線を示している。結局、図１２(c) において、符号Ｆ（Ｈ２）が付されたハッチング部分は、図１２(b) にハッチングが施された図形部分Ｆ（Ｈ１）の内部、かつ、図１２(c) に太線で示すシフト図形の輪郭線Ｆ（Ｓ２）の内部という論理積部分に相当する。
【００８５】
作業領域１３２内の作業画像Ｋとして、図１２(c) に示すような第２論理積画像Ｈ２が得られたら、続いて、第３論理積演算部１７０によって、第３シフト画像Ｓ３と第２論理積画像Ｈ２との間で論理積演算を行うことにより、作業領域１３２に第３論理積画像Ｈ３を生成する処理が行われる。図１２(d) は、このような論理積演算によって得られた第３論理積画像Ｈ３を示している。ここで、符号Ｆ（Ｈ３）が付されたハッチング部分は、第３論理積画像Ｈ３上における図形部分（画素値「１」が与えられた画素の集合体）を示しており、符号Ｆ（Ｓ３）が付された太線枠は、第３シフト画像Ｓ３上におけるシフト図形の輪郭線を示している。結局、図１２(d) において、符号Ｆ（Ｈ３）が付されたハッチング部分は、図１２(c) にハッチングが施された図形部分Ｆ（Ｈ２）の内部、かつ、図１２(d) に太線で示すシフト図形の輪郭線Ｆ（Ｓ３）の内部という論理積部分に相当する。
【００８６】
作業領域１３２内の作業画像Ｋとして、図１２(d) に示すような第３論理積画像Ｈ３が得られたら、続いて、第４論理積演算部１８０によって、第４シフト画像Ｓ４と第３論理積画像Ｈ３との間で論理積演算を行うことにより、作業領域１３２に第４論理積画像Ｈ４を生成する処理が行われる。図１２(e) は、このような論理積演算によって得られた第４論理積画像Ｈ４を示している。ここで、符号Ｆ（Ｈ４）が付されたハッチング部分は、第４論理積画像Ｈ４上における図形部分（画素値「１」が与えられた画素の集合体）を示しており、符号Ｆ（Ｓ４）が付された太線枠は、第４シフト画像Ｓ４上におけるシフト図形の輪郭線を示している。結局、図１２(e) において、符号Ｆ（Ｈ４）が付されたハッチング部分は、図１２(d) にハッチングが施された図形部分Ｆ（Ｈ３）の内部、かつ、図１２(e) に太線で示すシフト図形の輪郭線Ｆ（Ｓ４）の内部という論理積部分に相当する。
【００８７】
こうして、作業領域１３２内の作業画像Ｋとして、図１２(e) に示すような第４論理積画像Ｈ４が得られたら、最後に、差分演算部１９０によって、この第４論理積画像Ｈ４を元画像記録領域１３１内の元画像Ｇから差し引く差分演算を行うことにより、作業領域１３２に差分画像Ｄを生成する処理が行われる。図１２(f) は、このような差分演算によって得られた差分画像Ｄを示している。ここで、符号Ｆ（Ｄ）が付されたハッチング部分は、差分画像Ｄ上における図形部分（画素値「１」が与えられた画素の集合体）を示している。当該ハッチング部分は、図１２(a) にハッチングが施された表示対象図形ＦのアウトラインＬを構成する図形になっている。
【００８８】
そこで、表示制御部１４０は、作業領域１３２内の最後の作業画像Ｋを差分画像Ｄとしてディスプレイ装置３００に出力すればよい。そうすれば、画面上には、図１２(f) に示すように、１画素分の幅をもった線からなるアウトラインＬが表示されることになる。
【００８９】
＜３−５  作業画像を構成する画素に対する画素値の更新処理＞
図６に示すように、メモリ部１３０には、元画像記録領域１３１と作業領域１３２とが設けられており、各演算部１５０〜１９０は、元画像記録領域１３１内に記録されている元画像Ｇを参照しながら、作業領域１３２に記録されている作業画像Ｋの画素値を更新する処理を行うことになる。そこで、ここでは、作業画像Ｋを構成する画素に対する画素値の更新処理の好ましい実施例を述べておく。
【００９０】
図１３は、メモリ部１３０内の元画像記録領域１３１および作業領域１３２に対して行われる論理演算処理の手順を示す平面図である。ここでは、第１論理積演算部１５０によって行われる論理積演算を例にとって、画素値の更新処理の具体的な作業手順を述べることにする。前述したとおり、第１論理積演算部１５０が行う処理は、第１シフト画像Ｓ１と元画像Ｇとの間での論理積演算である。作業領域１３２に格納されている最初の作業画像Ｋは元画像Ｇであるから、最初の段階では、図１３に示すように、両領域１３１，１３２には、いずれも元画像Ｇが格納されていることになる。
【００９１】
以下、図１３を参照しながら、作業領域１３２内の特定画素Ｑ１の画素値を更新する処理を説明する。説明の便宜上、ここでは、この特定画素Ｑ１が、画素配列上の第ｉ行第ｊ列目の画素であるものとし、画素Ｑ１（ｉ，ｊ）と記述することにしよう。ここで行う特定画素Ｑ１（ｉ，ｊ）についての画素値更新処理とは、作業領域１３２から当該画素の画素値を読み出し、元画像記録領域１３１内の元画像Ｇを参照した論理演算を行って新たな画素値を生成し、生成した新たな画素値を作業領域１３２の同じ位置（第ｉ行第ｊ列目の画素の位置）に書き込む処理ということになる。
【００９２】
図１３に示すように、元画像記録領域１３１に記録されている元画像Ｇについての第ｉ行第ｊ列目の画素は対応画素Ｑ２（ｉ，ｊ）である。別言すれば、元画像記録領域１３１内の対応画素Ｑ２（ｉ，ｊ）は、作業領域１３２内の特定画素Ｑ１（ｉ，ｊ）と、画素配列上、同じ位置に配置された画素ということになる。ただ、第１論理積演算部１５０が行う論理積演算は、第１シフト画像Ｓ１と元画像Ｇとの間での論理積演算である。そこで、図示のとおり、元画像記録領域１３１からは、対応画素Ｑ２（ｉ，ｊ）の画素値を読み出す代わりに、その左下位置にあるシフト画素Ｑ３（ｉ＋１，ｊ−１）の画素値を読み出すことにし、特定画素Ｑ１（ｉ，ｊ）の画素値とシフト画素Ｑ３（ｉ＋１，ｊ−１）の画素値との間で論理積演算を行い、得られた演算結果を作業領域１３２内の特定画素Ｑ１（ｉ，ｊ）の新たな画素値として書き込む処理を行うようにする。
【００９３】
図示の例の場合、特定画素Ｑ１（ｉ，ｊ）の画素値は「１」、シフト画素Ｑ３（ｉ＋１，ｊ−１）の画素値は「０」であるから、両者の論理積である画素値「０」が特定画素Ｑ１（ｉ，ｊ）の新たな画素値として書き込まれることになる。結局、この画素値の更新処理により、作業領域１３２内の特定画素Ｑ１（ｉ，ｊ）の画素値「１」は新たな画素値「０」に書き換えられることになる。図１２(b) において、特定画素Ｑ１（ｉ，ｊ）に対応する位置にある画素が白地の画素になっているのは、第１論理積演算部１５０によって、上述のような画素値の更新処理が行われたためである。
【００９４】
ここで、シフト画素Ｑ３（ｉ＋１，ｊ−１）として、対応画素Ｑ２（ｉ，ｊ）を左下へシフトさせた位置にある画素を選んだ理由は、第１論理積演算部１５０が、第１シフト画像Ｓ１と元画像Ｇとの間での論理積演算を行う必要があるためである。第１シフト画像Ｓ１は、図１１(b) に示すように、元画像Ｇを右上方向にシフトすることにより得られる画像である。したがって、第１シフト画像Ｓ１上において、第ｉ行第ｊ列目の位置にある画素は、元画像記録領域１３１に記録されている元画像Ｇ上の対応画素Ｑ２（ｉ，ｊ）を左下（第１シフト画像Ｓ１のシフト方向とは逆方向）へシフトさせた位置にあるシフト画素Ｑ３（ｉ＋１，ｊ−１）ということになる。
【００９５】
別言すれば、図示のシフト画素Ｑ３（ｉ＋１，ｊ−１）を白矢印で示すように右上方向にシフトすれば、対応画素Ｑ２（ｉ，ｊ）の位置にくることになる。したがって、元画像記録領域１３１からシフト画素Ｑ３（ｉ＋１，ｊ−１）の画素値を読み出し、作業領域１３２から読み出した特定画素Ｑ１（ｉ，ｊ）の画素値との間で論理積演算を行えば、第１シフト画像Ｓ１と元画像Ｇとの間での論理積演算が行われたことになる。このような画素値の更新処理を、作業領域１３２内の個々の画素について実行すれば、作業領域１３２内に、図１２(b) に示すような第１論理積画像Ｈ１が得られる。以上が、第１論理積演算部１５０が行う画素値の更新処理の手順である。なお、シフト画素Ｑ３の位置が元画像Ｇの枠外となってしまう場合は、便宜上、シフト画素Ｑ３の画素値として「０」を採用すればよい。
【００９６】
第２論理積演算部１６０、第３論理積演算部１７０、第４論理積演算部１８０が行う画素値の更新処理の手順も同様である。たとえば、第２論理積演算部１６０は、第２シフト画像Ｓ２と第１論理積画像Ｈ１との間で論理積演算を行うことにより、作業領域１３２に第２論理積画像Ｈ２を生成する処理を行うことになるが、第２論理積演算部１６０が処理を開始した時点で、作業領域１３２内には第１論理積画像Ｈ１が格納された状態になっている。一方、第２シフト画像Ｓ２は、図１１(c) に示すように、元画像Ｇを左下方向にシフトすることにより得られる画像である。
【００９７】
そこで、第２論理積演算部１６０は、作業領域１３２内の第１論理積画像Ｈ１上の第ｉ行第ｊ列目に位置する特定画素Ｑ１（ｉ，ｊ）の画素値を読み出すとともに、元画像記録領域１３１内の元画像Ｇ上の対応画素Ｑ２（ｉ，ｊ）を右上（第２シフト画像Ｓ２のシフト方向とは逆方向）へシフトさせた位置にあるシフト画素Ｑ３（ｉ−１，ｊ＋１）の画素値を読み出し、読み出した一対の画素値についての論理積を求め、得られた値を特定画素Ｑ１（ｉ，ｊ）の新たな画素値として、作業領域１３２内に書き込む更新処理を行えばよい。
【００９８】
このような方法で作業領域１３２内の各画素の画素値を更新する方法を採れば、メモリ上に実際に各シフト画像Ｓ１〜Ｓ４を作成する必要はないので、メモリ資源を有効に活用することができ、また、無駄を省くことにより処理の高速化を図ることができる。実際には、元画像記録領域１３１に記録されている元画像Ｇを読み出す際に、アドレスをシフトさせる処理を行うことにより、あたかも各シフト画像Ｓ１〜Ｓ４から特定の画素値を読み出す処理が行われたようにする処理を行うことができる。
【００９９】
このように、元画像記録領域１３１からの読み出し時にアドレスをシフトさせることにより、各シフト画像Ｓ１〜Ｓ４を生成したのと同等の効果を得る手法を採用する場合、各演算部の処理をまとめると次のようになる。
【０１００】
まず、第１論理積演算部１５０は、作業領域１３２内の特定画素の画素値と、元画像記録領域１３１内の当該特定画素と同位置にある対応画素に対して第１のシフト態様（斜め右上シフト）とは逆の方向にシフト（斜め左下シフト）した位置関係にあるシフト画素の画素値と、の間で論理積演算を行い、得られた演算結果を作業領域１３２内の当該特定画素の新たな画素値として書き込む処理を、作業領域１３２内の個々の画素について実行することにより作業領域１３２内に第１論理積画像Ｈ１を生成すればよい。
【０１０１】
また、第２論理積演算部１６０は、作業領域１３２内の特定画素の画素値と、元画像記録領域１３１内の当該特定画素と同位置にある対応画素に対して第２のシフト態様（斜め左下シフト）とは逆の方向にシフト（斜め右上シフト）した位置関係にあるシフト画素の画素値と、の間で論理積演算を行い、得られた演算結果を作業領域１３２内の当該特定画素の新たな画素値として書き込む処理を、作業領域１３２内の個々の画素について実行することにより作業領域１３２内に第２論理積画像Ｈ２を生成すればよい。
【０１０２】
一方、第３論理積演算部１７０は、作業領域１３２内の特定画素の画素値と、元画像記録領域１３１内の当該特定画素と同位置にある対応画素に対して第３のシフト態様（斜め左上シフト）とは逆の方向にシフト（斜め右下シフト）した位置関係にあるシフト画素の画素値と、の間で論理積演算を行い、得られた演算結果を作業領域１３２内の当該特定画素の新たな画素値として書き込む処理を、作業領域１３２内の個々の画素について実行することにより作業領域１３２内に第３論理積画像Ｈ３を生成すればよい。
【０１０３】
そして、第４論理積演算部１８０は、作業領域１３２内の特定画素の画素値と、元画像記録領域１３１内の当該特定画素と同位置にある対応画素に対して第４のシフト態様（斜め右下シフト）とは逆の方向にシフト（斜め左上シフト）した位置関係にあるシフト画素の画素値と、の間で論理積演算を行い、得られた演算結果を作業領域１３２内の当該特定画素の新たな画素値として書き込む処理を、作業領域１３２内の個々の画素について実行することにより作業領域１３２内に第４論理積画像Ｈ４を生成すればよい。
【０１０４】
最後に、差分演算部１９０は、元画像記録領域１３１内の元画像Ｇから、作業領域１３２内の第４論理積画像Ｈ４を差し引く差分演算を行うことにより、作業領域１３２内に差分画像Ｄを生成する処理を行う。この処理にはシフト画像は関与しないので、たとえば、作業領域１３２に格納されている第４論理積画像Ｈ４上の第ｉ行第ｊ列目に位置する特定画素Ｑ１（ｉ，ｊ）の画素値を、元画像記録領域１３１に格納されている元画像Ｇ上の第ｉ行第ｊ列目に位置する対応画素Ｑ２（ｉ，ｊ）から差し引く差分処理を行い、得られた演算結果を作業領域１３２内の当該特定画素Ｑ１（ｉ，ｊ）の新たな画素値として書き込む処理を、作業領域１３２内の個々の画素について実行すればよい。
【０１０５】
ここで、差分演算とは、元画像Ｇ上の対応画素Ｑ２（ｉ，ｊ）の画素値が「０」、第４論理積画像Ｈ４上の特定画素Ｑ１（ｉ，ｊ）の画素値が「０」の場合は、画素値「０」を演算結果とし、元画像Ｇ上の対応画素Ｑ２（ｉ，ｊ）の画素値が「０」、第４論理積画像Ｈ４上の特定画素Ｑ１（ｉ，ｊ）の画素値が「１」の場合は、画素値「０」を演算結果とし、元画像Ｇ上の対応画素Ｑ２（ｉ，ｊ）の画素値が「１」、第４論理積画像Ｈ４上の特定画素Ｑ１（ｉ，ｊ）の画素値が「０」の場合は、画素値「１」を演算結果とし、元画像Ｇ上の対応画素Ｑ２（ｉ，ｊ）の画素値が「１」、第４論理積画像Ｈ４上の特定画素Ｑ１（ｉ，ｊ）の画素値が「１」の場合は、画素値「０」を演算結果とする処理である。
【０１０６】
＜＜＜  §４．  本発明の第２の実施形態  ＞＞＞
次に、本発明の第２の実施形態に係る図形のアウトライン表示装置の構成および動作を、図１４のブロック図を参照しながら説明する。この第２の実施形態に係る装置も、ベクタ形式の図形データに基づいて、図形のアウトラインを表示する装置という点では、§３で述べた第１の実施形態に係る装置と全く同じであり、図５の右側に示すように、展開されたラスタ形式の元画像Ｇからアウトライン抽出５０の処理を行うことになる。ただ、アウトライン抽出５０のアルゴリズムが若干異なっている。
【０１０７】
＜４−１  装置の基本構成および基本動作＞
図１４に示すとおり、このアウトライン表示装置は、図形データ格納部１１０、図形展開部１２０、メモリ部２３０、表示制御部１４０、各演算部２５０〜２９０によって構成され、ディスプレイ装置３００の画面上に、表示対象図形ＦのアウトラインＬを表示する機能を果たす。
【０１０８】
ここで、１００番台の符号が付された図形データ格納部１１０、図形展開部１２０、表示制御部１４０は、図６に示す第１の実施形態に係る図形のアウトライン表示装置において同符号で示された各構成要素と実質的に同じものである。すなわち、図形データ格納部１１０は、表示対象図形をベクタ形式で表現した図形データを格納する構成要素であり、図形展開部１２０は、この図形データをメモリ部２３０に展開してラスタ形式の元画像Ｇを生成する構成要素であり、表示制御部１４０は、メモリ部２３０に最終的に得られた画像を、図形のアウトラインＬとしてディスプレイ装置３００の画面上に表示する構成要素である。そこで、以下、この第２の実施形態の特徴となる２００番台の符号が付されたメモリ部２３０および各演算部２５０〜２９０についての説明を行う。
【０１０９】
まず、メモリ部２３０は、ラスタ形式の画像を格納する役割を果たすが、ここに示す第２の実施形態の場合、図示のように、元画像記録領域２３１と作業領域２３２に加えて、更に、結果蓄積領域２３３が定義されている。第１の実施形態と同様に、元画像記録領域２３１は、元画像Ｇを展開して格納する領域として利用され、作業領域２３２は、この元画像Ｇを利用して、アウトライン抽出作業を行うための作業場所として利用される。ここでも、この作業領域２３２に格納されている画像を作業画像Ｋと呼ぶことにする。結果蓄積領域２３３は、後述するように、作業領域２３２を補助する役割を果たし、ここに格納されている画像を蓄積画像Ｒと呼ぶ。
【０１１０】
元画像Ｇ、作業画像Ｋ、蓄積画像Ｒは、いずれもラスタ形式の画像であり、二次元行列状に配置された画素の集合体によって構成されている。第１差分演算部２５０、第２差分演算部２６０、第３差分演算部２７０、第４差分演算部２８０は、元画像記録領域２３１に格納されている元画像Ｇを参照しながら、作業領域２３２内の作業画像Ｋを書き換える処理を行う構成要素であり、論理和演算部２９０は、各差分演算部による演算結果を論理和をとりながら結果蓄積領域２３３に格納する処理を行う構成要素である。これら各演算部の具体的な処理作業の内容は後述する。
【０１１１】
こうして、最終的に結果蓄積領域２３３に得られた蓄積画像Ｒ（論理和画像Ｗ）は、後述するように、アウトラインＬを構成するラスタ形式の画像になる。表示制御部１４０は、この論理和画像Ｗを、図形のアウトラインＬとしてディスプレイ装置３００の画面上に表示する。
【０１１２】
以上、図１４を参照しながら第２の実施形態の各構成要素の概要を説明したが、第１の実施形態と同様に、これらの各構成要素は、コンピュータに専用のプログラムを組み込むことにより構成することができる。たとえば、図形データ格納部１１０は、コンピュータに接続されたハードディスク装置などの記憶装置によって構成することができ、メモリ部２３０は、コンピュータに搭載されたＲＡＭなどのメモリによって構成することができ、表示制御部１４０は、ディスプレイ装置３００との間のインタフェイス回路によって構成することができる。また、図形展開部１２０や各演算部２５０〜２９０の機能は、専用のプログラムによって実現することができる。
【０１１３】
また、第１の実施形態と同様に、実用上は、図形展開部１２０および各演算部２５０〜２９０の処理を、パソコン用のグラフィックボードなどに組み込まれた画像処理専用集積回路によって実行させるようにするのが好ましい。そうすれば、グラフィックボード上のハードウエアを利用して処理を行うことができるようになり、処理の高速化を図ることができる。
【０１１４】
＜４−２  各演算部による具体的な処理プロセス＞
続いて、各演算部２５０〜２９０による具体的な処理プロセスを説明する。ここでも、第１の実施形態における説明と同様に、図形展開部１２０が元画像記録領域２３１内に、図１１(a) に示す元画像Ｇを展開した具体的な事例について説明を行う。
【０１１５】
図１５は、この第２の実施形態に係る図形のアウトライン表示装置における各演算部による具体的な処理プロセスを示す平面図である。図１５(a) は、図形展開部１２０によって、元画像記録領域２３１に書き込まれた元画像Ｇを示す。この元画像Ｇには、図示のとおり、表示対象図形Ｆが含まれている。実際には、図１５(a) にハッチングを施した部分（図形Ｆの内部）の画素には画素値「１」が、白地部分（図形Ｆの外部）の画素には画素値「０」が書き込まれている。ここでも、相互位置関係の把握を容易にする便宜上、図１５(b) 〜(f) には、この元画像Ｇ上の表示対象図形Ｆの輪郭線を、符号Ｆ（Ｇ）を付した細線で示す。
【０１１６】
第２の実施形態においても、元画像記録領域２３１に展開された元画像Ｇは、作業領域２３２にもコピーされ、最初の段階における作業画像Ｋを構成する。したがって、図１４に示すメモリ部２３０は、最初の段階では、元画像記録領域２３１にも作業領域２３２にも、図１５(a) に示す元画像Ｇが書き込まれた状態になっている。一方、最初の段階では、結果蓄積領域２３３には、「空の図形を有する画像」が最初の蓄積画像Ｒとして書き込まれる。ここで、「空の図形を有する画像」とは、図形部分（画素値「１」が与えられた画素の集合体）が存在しない画像、すなわち、すべての画素に画素値「０」が付与された画像を意味する（図示した場合、ハッチング領域が全く存在しない画像になる）。
【０１１７】
ここで、作業領域２３２に書き込まれた作業画像Ｋおよび結果蓄積領域２３３に書き込まれた蓄積画像Ｒは、以下に述べる各処理プロセスにより順次書き換えられてゆくが、元画像記録領域２３１に書き込まれた元画像Ｇは、最後の処理プロセス（論理和演算部２９０による最後の論理和演算のプロセス）が完了するまで、そのまま残ることになる。
【０１１８】
図１４に示す第２の実施形態に係る装置では、まず、図形展開部１２０が、最初の段階において、元画像記録領域２３１および作業領域２３２に元画像Ｇを書き込む処理を行う。実際には、元画像記録領域２３１にベクタ形式の図形データを展開して元画像Ｇを生成し、これを作業領域２３２にコピーする処理を行えばよい。また、図形展開部１２０は、最初の段階において、結果蓄積領域２３３に空の図形を有する画像を最初の蓄積画像Ｒとして書き込む処理を行う。これは、結果蓄積領域２３３内の全画素の画素値に「０」を書き込む処理ということになる。
【０１１９】
図形展開部１２０による上記処理が完了すれば、準備は完了であり、各演算部２５０〜２９０によって次のような処理が実行される。すなわち、第１差分演算部２５０、第２差分演算部２６０、第３差分演算部２７０、第４差分演算部２８０は、それぞれ元画像記録領域２３１内の元画像Ｇを参照しながら作業領域２３２内の作業画像Ｋを差分演算によって書き換える処理を順番に行う。各差分演算部２５０〜２８０による処理順は、どのような順序であってもかまわないが、個々の差分演算部による差分演算が行われる前に、図形展開部１２０によって、毎回、作業領域２３２に元画像Ｇが作業画像Ｋとして書き込まれるようにする。
【０１２０】
すなわち、図形展開部１２０は、各差分演算部２５０〜２８０が処理を開始する前に、毎回、元画像記録領域２３１内の元画像Ｇを作業領域２３２にコピーする処理を行う。§３で述べた第１の実施形態の場合、第１論理積演算部１５０による演算結果が第２論理積演算部１６０で利用され、第２論理積演算部１６０による演算結果が第３論理積演算部１７０で利用され、... というように、演算結果が作業領域１３２上の作業画像Ｋとして各演算部１５０〜１９０に引き継がれてゆき、相互間の連携動作が行われている。これに対して、ここで述べる第２の実施形態の場合、第１差分演算部２５０、第２差分演算部２６０、第３差分演算部２７０、第４差分演算部２８０は、それぞれ別個独立して差分演算を実行して、それぞれ第１差分画像Ｄ１、第２差分画像Ｄ２、第３差分画像Ｄ３、第４差分画像Ｄ４を作業領域２３２上に得る処理を行う。したがって、相互間での連携動作は行われない。
【０１２１】
その代わりに、論理和演算部２９０が、作業領域２３２内に第１差分画像Ｄ１、第２差分画像Ｄ２、第３差分画像Ｄ３、第４差分画像Ｄ４が得られるたびに、得られた差分画像Ｄ１，Ｄ２，Ｄ３，Ｄ４と結果蓄積領域２３３内の蓄積画像Ｒとの間で論理和演算を行い、得られた画像を新たな蓄積画像Ｒとして結果蓄積領域２３３に書き込む処理を行う。以下、図１５を参照しながら、このような処理プロセスを具体例に即して説明する。
【０１２２】
まず、第１差分演算部２５０によって、第１シフト画像Ｓ１を元画像Ｇから差し引く差分演算を行うことにより、作業領域２３２に第１差分画像Ｄ１を生成する処理が行われる。図１５(b) は、このような差分演算によって得られた第１差分画像Ｄ１を示している。図１５(b) において、符号Ｆ（Ｄ１）が付されたハッチング部分は、第１差分画像Ｄ１上における図形部分（画素値「１」が与えられた画素の集合体）を示しており、符号Ｆ（Ｓ１）が付された太線枠は、第１シフト画像Ｓ１上におけるシフト図形の輪郭線を示している。結局、図１５(b) において、符号Ｆ（Ｄ１）が付されたハッチング部分は、細線で示す輪郭線Ｆ（Ｇ）の内部領域から、太線で示すシフト図形の輪郭線Ｆ（Ｓ１）の内部領域を除外した差分領域ということになる。
【０１２３】
こうして、第１差分演算部２５０による差分演算により、作業領域２３２内に、図１５(b) に示すような第１差分画像Ｄ１が得られたら、論理和演算部２９０が、この作業領域２３２内の第１差分画像Ｄ１と結果蓄積領域２３３内の蓄積画像Ｒとの間で論理和演算を行い、得られた画像を新たな蓄積画像Ｒとして結果蓄積領域２３３に書き込む処理を行う。この段階で結果蓄積領域２３３に格納されていた蓄積画像Ｒは、「空の図形を有する画像」であるので、結局、図１５(b) に示す第１差分画像Ｄ１がそのまま新たな蓄積画像Ｒとして、結果蓄積領域２３３に書き込まれることになる。
【０１２４】
次に、第２差分演算部２６０による差分演算が実行されるが、その前に、作業領域２３２内の作業画像Ｋを元画像Ｇにリセットする処理が行われる。すなわち、この時点で作業領域２３２に格納されている作業画像Ｋは、図１５(b) に示す第１差分画像Ｄ１であるので、図形展開部１２０により、元画像記録領域２３１内の元画像Ｇを作業領域２３２にコピーする処理が行われる。したがって、第２差分演算部２６０による差分演算は、作業領域２３２に新たにコピーされた元画像Ｇと、第２シフト画像Ｓ２との間で行われる。
【０１２５】
具体的には、第２差分演算部２６０によって、第２シフト画像Ｓ２を元画像Ｇから差し引く差分演算を行うことにより、作業領域２３２に第２差分画像Ｄ２を生成する処理が行われる。図１５(c) は、このような差分演算によって得られた第２差分画像Ｄ２を示している。図１５(c) において、符号Ｆ（Ｄ２）が付されたハッチング部分は、第２差分画像Ｄ２上における図形部分（画素値「１」が与えられた画素の集合体）を示しており、符号Ｆ（Ｓ２）が付された太線枠は、第２シフト画像Ｓ２上におけるシフト図形の輪郭線を示している。結局、図１５(c) において、符号Ｆ（Ｄ２）が付されたハッチング部分は、細線で示す輪郭線Ｆ（Ｇ）の内部領域から、太線で示すシフト図形の輪郭線Ｆ（Ｓ２）の内部領域を除外した差分領域ということになる。
【０１２６】
こうして、第２差分演算部２６０による差分演算により、作業領域２３２内に、図１５(c) に示すような第２差分画像Ｄ２が得られたら、論理和演算部２９０が、この作業領域２３２内の第２差分画像Ｄ２と結果蓄積領域２３３内の蓄積画像Ｒとの間で論理和演算を行い、得られた画像を新たな蓄積画像Ｒとして結果蓄積領域２３３に書き込む処理を行う。この段階で結果蓄積領域２３３に格納されていた蓄積画像Ｒは、図１５(b) に示す第１差分画像Ｄ１であるので、結局、図１５(b) に示す第１差分画像Ｄ１と図１５(c) に示す第２差分画像Ｄ２との論理和画像が新たな蓄積画像Ｒとして、結果蓄積領域２３３に書き込まれることになる。
【０１２７】
次に、第３差分演算部２７０による差分演算が実行されるが、その前に、作業領域２３２内の作業画像Ｋを元画像Ｇにリセットする処理が行われる。すなわち、この時点で作業領域２３２に格納されている作業画像Ｋは、図１５(c) に示す第２差分画像Ｄ２であるので、図形展開部１２０により、元画像記録領域２３１内の元画像Ｇを作業領域２３２にコピーする処理が行われる。したがって、第３差分演算部２７０による差分演算は、作業領域２３２に新たにコピーされた元画像Ｇと、第３シフト画像Ｓ３との間で行われる。
【０１２８】
具体的には、第３差分演算部２７０によって、第３シフト画像Ｓ３を元画像Ｇから差し引く差分演算を行うことにより、作業領域２３２に第３差分画像Ｄ３を生成する処理が行われる。図１５(d) は、このような差分演算によって得られた第３差分画像Ｄ３を示している。図１５(d) において、符号Ｆ（Ｄ３）が付されたハッチング部分は、第３差分画像Ｄ３上における図形部分（画素値「１」が与えられた画素の集合体）を示しており、符号Ｆ（Ｓ３）が付された太線枠は、第３シフト画像Ｓ３上におけるシフト図形の輪郭線を示している。結局、図１５(d) において、符号Ｆ（Ｄ３）が付されたハッチング部分は、細線で示す輪郭線Ｆ（Ｇ）の内部領域から、太線で示すシフト図形の輪郭線Ｆ（Ｓ３）の内部領域を除外した差分領域ということになる。
【０１２９】
こうして、第３差分演算部２７０による差分演算により、作業領域２３２内に、図１５(d) に示すような第３差分画像Ｄ３が得られたら、論理和演算部２９０が、この作業領域２３２内の第３差分画像Ｄ３と結果蓄積領域２３３内の蓄積画像Ｒとの間で論理和演算を行い、得られた画像を新たな蓄積画像Ｒとして結果蓄積領域２３３に書き込む処理を行う。この段階で結果蓄積領域２３３に格納されていた蓄積画像Ｒは、第１差分画像Ｄ１と第２差分画像Ｄ２との論理和画像であるので、結局、３つの差分画像Ｄ１，Ｄ２，Ｄ３の論理和画像が新たな蓄積画像Ｒとして、結果蓄積領域２３３に書き込まれることになる。
【０１３０】
次に、第４差分演算部２８０による差分演算が実行されるが、その前に、作業領域２３２内の作業画像Ｋを元画像Ｇにリセットする処理が行われる。すなわち、この時点で作業領域２３２に格納されている作業画像Ｋは、図１５(d) に示す第３差分画像Ｄ３であるので、図形展開部１２０により、元画像記録領域２３１内の元画像Ｇを作業領域２３２にコピーする処理が行われる。したがって、第４差分演算部２８０による差分演算は、作業領域２３２に新たにコピーされた元画像Ｇと、第４シフト画像Ｓ４との間で行われる。
【０１３１】
具体的には、第４差分演算部２８０によって、第４シフト画像Ｓ４を元画像Ｇから差し引く差分演算を行うことにより、作業領域２３２に第４差分画像Ｄ４を生成する処理が行われる。図１５(e) は、このような差分演算によって得られた第４差分画像Ｄ４を示している。図１５(e) において、符号Ｆ（Ｄ４）が付されたハッチング部分は、第４差分画像Ｄ４上における図形部分（画素値「１」が与えられた画素の集合体）を示しており、符号Ｆ（Ｓ４）が付された太線枠は、第４シフト画像Ｓ４上におけるシフト図形の輪郭線を示している。結局、図１５(e) において、符号Ｆ（Ｄ４）が付されたハッチング部分は、細線で示す輪郭線Ｆ（Ｇ）の内部領域から、太線で示すシフト図形の輪郭線Ｆ（Ｓ４）の内部領域を除外した差分領域ということになる。
【０１３２】
こうして、第４差分演算部２８０による差分演算により、作業領域２３２内に、図１５(e) に示すような第４差分画像Ｄ４が得られたら、論理和演算部２９０が、この作業領域２３２内の第４差分画像Ｄ４と結果蓄積領域２３３内の蓄積画像Ｒとの間で論理和演算を行い、得られた画像を新たな蓄積画像Ｒとして結果蓄積領域２３３に書き込む処理を行う。この段階で結果蓄積領域２３３に格納されていた蓄積画像Ｒは、３つの差分画像Ｄ１，Ｄ２，Ｄ３の論理和画像であるので、結局、４つの差分画像Ｄ１，Ｄ２，Ｄ３，Ｄ４の論理和画像が新たな蓄積画像Ｒとして、結果蓄積領域２３３に書き込まれることになる。
【０１３３】
ここでは、こうして最終的に結果蓄積領域２３３に得られた蓄積画像Ｒ（４つの差分画像Ｄ１，Ｄ２，Ｄ３，Ｄ４の論理和画像）を論理和画像Ｗと呼ぶことにする。この論理和画像Ｗを図１５(f) に示す。ここで、符号Ｆ（Ｗ）が付されたハッチング部分は、論理和画像Ｗ上における図形部分（画素値「１」が与えられた画素の集合体）を示している。当該ハッチング部分は、図１５(a) にハッチングが施された表示対象図形ＦのアウトラインＬを構成する図形になっている。
【０１３４】
そこで、表示制御部１４０は、結果蓄積領域２３３内の最後の蓄積画像Ｒを論理和画像Ｗとしてディスプレイ装置３００に出力すればよい。そうすれば、画面上には、図１５(f) に示すように、１画素分の幅をもった線からなるアウトラインＬが表示されることになる。
【０１３５】
＜４−３  作業画像を構成する画素に対する画素値の更新処理＞
図１４に示すように、メモリ部２３０には、元画像記録領域２３１、作業領域２３２、結果蓄積領域２３３が設けられており、各差分演算部２５０〜２８０は、元画像記録領域２３１内に記録されている元画像Ｇを参照しながら、作業領域２３２に記録されている作業画像Ｋの画素値を更新する処理を行うことになる。また、論理和演算部２９０は、作業領域２３２内に得られた差分画像Ｄ１〜Ｄ４に基づいて、結果蓄積領域２３３に記録されている蓄積画像Ｒの画素値を更新する処理を行うことになる。そこで、ここでは、作業画像Ｋを構成する画素および蓄積画像Ｒを構成する画素に対する画素値の更新処理の好ましい実施例を述べておく。
【０１３６】
図１６は、メモリ部２３０内の元画像記録領域２３１、作業領域２３２、結果蓄積領域２３３に対して行われる論理演算処理の手順を示す平面図である。ここでは、第１差分演算部２５０によって行われる差分演算を例にとって、画素値の更新処理の具体的な作業手順を述べることにする。前述したとおり、第１差分演算部２５０が行う処理は、第１シフト画像Ｓ１を元画像Ｇから差し引く差分演算である。この差分演算を行う前に作業領域２３２に格納されている作業画像Ｋは元画像Ｇであるから、図１６に示すように、元画像記録領域２３１および作業領域２３２には、いずれも元画像Ｇが格納されていることになる。
【０１３７】
以下、図１６を参照しながら、作業領域２３２内の特定画素Ｑ１の画素値を更新する処理を説明する。ここでも、前述した第１の実施形態と同様に、この特定画素Ｑ１が、画素配列上の第ｉ行第ｊ列目の画素であるものとし、画素Ｑ１（ｉ，ｊ）と記述する。ここで行う特定画素Ｑ１（ｉ，ｊ）についての画素値更新処理とは、作業領域２３２から当該画素の画素値を読み出し、元画像記録領域２３１内の元画像Ｇを参照した論理演算を行って新たな画素値を生成し、生成した新たな画素値を作業領域２３２の同じ位置（第ｉ行第ｊ列目の画素の位置）に書き込む処理ということになる。
【０１３８】
図１６に示すように、元画像記録領域２３１に記録されている元画像Ｇについての第ｉ行第ｊ列目の画素は対応画素Ｑ２（ｉ，ｊ）である。別言すれば、元画像記録領域２３１内の対応画素Ｑ２（ｉ，ｊ）は、作業領域２３２内の特定画素Ｑ１（ｉ，ｊ）と、画素配列上、同じ位置に配置された画素ということになる。ただ、第１差分演算部２５０が行う差分演算は、第１シフト画像Ｓ１を元画像Ｇから差し引く演算である。そこで、図示のとおり、元画像記録領域２３１からは、対応画素Ｑ２（ｉ，ｊ）の画素値を読み出す代わりに、その左下位置にあるシフト画素Ｑ３（ｉ＋１，ｊ−１）の画素値を読み出すことにし、特定画素Ｑ１（ｉ，ｊ）の画素値とシフト画素Ｑ３（ｉ＋１，ｊ−１）の画素値との間で差分演算を行い、得られた演算結果を作業領域２３２内の特定画素Ｑ１（ｉ，ｊ）の新たな画素値として書き込む処理を行うようにする。
【０１３９】
図示の例の場合、特定画素Ｑ１（ｉ，ｊ）の画素値は「１」、シフト画素Ｑ３（ｉ＋１，ｊ−１）の画素値は「０」であるから、前者から後者を差し引く差分演算を行うと、新たな画素値「１」が得られる。そこで、この画素値「１」を特定画素Ｑ１（ｉ，ｊ）の新たな画素値として書き込む処理が行われる。結局、この画素値の更新処理では、作業領域２３２内の特定画素Ｑ１（ｉ，ｊ）の画素値「１」は新たな画素値「１」に書き換えられたことになる（結果的に、画素値は変化しない）。図１５(b) において、特定画素Ｑ１（ｉ，ｊ）に対応する位置にある画素がハッチングが施された画素になっているのは、第１差分演算部２５０によって、上述のような画素値の更新処理が行われたためである。
【０１４０】
ここで、シフト画素Ｑ３（ｉ＋１，ｊ−１）として、対応画素Ｑ２（ｉ，ｊ）を左下へシフトさせた位置にある画素を選んだ理由は、既に§３で述べたとおりである。すなわち、第１シフト画像Ｓ１は、図１１(b) に示すように、元画像Ｇを右上方向にシフトすることにより得られる画像であるので、第１シフト画像Ｓ１上において、第ｉ行第ｊ列目の位置にある画素は、元画像記録領域２３１に記録されている元画像Ｇ上の対応画素Ｑ２（ｉ，ｊ）を左下（第１シフト画像Ｓ１のシフト方向とは逆方向）へシフトさせた位置にあるシフト画素Ｑ３（ｉ＋１，ｊ−１）になる。
【０１４１】
このような画素値の更新処理を、作業領域２３２内の個々の画素について実行すれば、作業領域２３２内に、図１５(b) に示すような第１差分画像Ｄ１が得られる。以上が、第１差分演算部２５０が行う画素値の更新処理の手順である。続いて、論理和演算部２９０が、作業領域２３２内に得られた第１差分画像Ｄ１と、結果蓄積領域２３３内の蓄積画像Ｒ（この時点では「空の図形を有する画像」）との間で論理和演算を行い、その結果を新たな蓄積画像Ｒとして、結果蓄積領域２３３に書き込む処理を行う。
【０１４２】
この論理和演算では、シフト画像は用いられないので、それぞれ対応する位置にある画素同士での論理和演算を行えばよい。たとえば、論理和演算部２９０が、蓄積画像Ｒを構成する画素配列上の第ｉ行第ｊ列目の着目画素Ｑ４（ｉ，ｊ）についての画素値更新処理を行うには、この着目画素Ｑ４（ｉ，ｊ）の画素値と、作業領域２３２内の作業画素Ｋを構成する画素配列上の第ｉ行第ｊ列目の特定画素Ｑ１（ｉ，ｊ）の画素値との間で論理和演算を行い、得られた結果を着目画素Ｑ４（ｉ，ｊ）の新たな画素値として、結果蓄積領域２３３に書き込む処理を行えばよい。
【０１４３】
第２差分演算部２６０、第３差分演算部２７０、第４差分演算部２８０が行う画素値の更新処理の手順も同様である。このような方法で作業領域２３２内の各画素の画素値を更新する方法を採れば、メモリ上に実際に各シフト画像Ｓ１〜Ｓ４を作成する必要はないので、メモリ資源を有効に活用することができ、また、無駄を省くことにより処理の高速化を図ることができる。実際には、元画像記録領域２３１に記録されている元画像Ｇを読み出す際に、アドレスをシフトさせる処理を行うことにより、あたかも各シフト画像Ｓ１〜Ｓ４から特定の画素値を読み出す処理が行われたようにする処理を行うことができる。
【０１４４】
このように、元画像記録領域２３１からの読み出し時にアドレスをシフトさせることにより、各シフト画像Ｓ１〜Ｓ４を生成したのと同等の効果を得る手法を採用する場合、各差分演算部２５０〜２８０の処理をまとめると次のようになる。
【０１４５】
まず、第１差分演算部２５０は、作業領域２３２内の特定画素の画素値と、元画像記録領域２３１内の当該特定画素と同位置にある対応画素に対して第１のシフト態様（斜め右上シフト）とは逆の方向にシフト（斜め左下シフト）した位置関係にあるシフト画素の画素値と、の間で差分演算を行い、得られた演算結果を作業領域２３２内の当該特定画素の新たな画素値として書き込む処理を、作業領域２３２内の個々の画素について実行することにより作業領域２３２内に第１差分画像Ｄ１を生成すればよい。
【０１４６】
また、第２差分演算部２６０は、作業領域２３２内の特定画素の画素値と、元画像記録領域２３１内の当該特定画素と同位置にある対応画素に対して第２のシフト態様（斜め左下シフト）とは逆の方向にシフト（斜め右上シフト）した位置関係にあるシフト画素の画素値と、の間で差分演算を行い、得られた演算結果を作業領域２３２内の当該特定画素の新たな画素値として書き込む処理を、作業領域２３２内の個々の画素について実行することにより作業領域２３２内に第２差分画像Ｄ２を生成すればよい。
【０１４７】
一方、第３差分演算部２７０は、作業領域２３２内の特定画素の画素値と、元画像記録領域２３１内の当該特定画素と同位置にある対応画素に対して第３のシフト態様（斜め左上シフト）とは逆の方向にシフト（斜め右下シフト）した位置関係にあるシフト画素の画素値と、の間で差分演算を行い、得られた演算結果を作業領域２３２内の当該特定画素の新たな画素値として書き込む処理を、作業領域２３２内の個々の画素について実行することにより作業領域２３２内に第３差分画像Ｄ３を生成すればよい。
【０１４８】
そして、第４差分演算部２８０は、作業領域２３２内の特定画素の画素値と、元画像記録領域２３１内の当該特定画素と同位置にある対応画素に対して第４のシフト態様（斜め右下シフト）とは逆の方向にシフト（斜め左上シフト）した位置関係にあるシフト画素の画素値と、の間で差分演算を行い、得られた演算結果を作業領域２３２内の当該特定画素の新たな画素値として書き込む処理を、作業領域２３２内の個々の画素について実行することにより作業領域２３２内に第４差分画像Ｄ４を生成すればよい。
【０１４９】
ここで、差分演算とは、特定画素の画素値Ｑ１（ｉ，ｊ）が「０」、シフト画素の画素値Ｑ３（ｉ±１，ｊ±１）が「０」の場合は、画素値「０」を演算結果とし、特定画素の画素値Ｑ１（ｉ，ｊ）が「０」、シフト画素の画素値Ｑ３（ｉ±１，ｊ±１）が「１」の場合は、画素値「０」を演算結果とし、特定画素の画素値Ｑ１（ｉ，ｊ）が「１」、シフト画素の画素値Ｑ３（ｉ±１，ｊ±１）が「０」の場合は、画素値「１」を演算結果とし、特定画素の画素値Ｑ１（ｉ，ｊ）が「１」、シフト画素の画素値Ｑ３（ｉ±１，ｊ±１）が「１」の場合は、画素値「０」を演算結果とする処理である。
【０１５０】
＜＜＜  §５．  いくつかの変形例  ＞＞＞
これまで本発明を、第１の実施形態（§３）と第２の実施形態（§４）とについて説明してきたが、ここでは、これら２つの実施形態に適用可能ないくつかの変形例を述べておく。
【０１５１】
＜５−１  シフト量の設定＞
これまで述べた実施形態では、図１１に示すように、元画像Ｇを横方向（左または右）に１画素分、縦方向（上または下）に１画素分だけずらすことにより、各シフト画像Ｓ１〜Ｓ４を定義していたが、本発明を実施するにあたり、シフト量は必ずしも１画素分に限定されるものではない。
【０１５２】
たとえば、図１７は、元画像Ｇ（ハッチングを施した部分が図形内部領域）に対して、右方向および上方向に２画素分ずつシフトして得られるシフト画像Ｓを示す平面図である。すなわち、図示のようなＸＹ二次元座標系を定義し、画素の横方向ピッチをΔｘ、縦方向ピッチをΔｙとした場合、シフト画像Ｓは、元画像ＧをＸ軸方向に２Δｘ、Ｙ軸方向に２Δｙだけシフトして得られる画像ということになる。図では説明の便宜上、各画像上の図形の輪郭を太線で示してある。
【０１５３】
このシフト量は、最終的に得られるアウトラインＬの太さＴ（線幅）を左右するパラメータになる。たとえば、これまで述べてきた実施形態では、図１０に示すような二次元画素配列上に定義された元画像Ｇを、図１１に示すように、縦および横に１画素ずつシフトさせて４通りのシフト画像Ｓ１〜Ｓ４を定義しているため、得られるアウトラインＬは、図１２(f) に差分画像Ｄとして示すように、１画素分の太さをもった帯状図形になる（図１５(f) の論理和画像Ｗも同様）。
【０１５４】
したがって、図１７に示すように、縦および横に２画素ずつシフトさせて４通りのシフト画像Ｓ１〜Ｓ４を定義した場合（シフト量：２Δｘ，２Δｙ）、得られるアウトラインＬは、図１８(a) に差分画像Ｄとして示すように、２画素分の太さをもった帯状図形になる。更に、縦および横に３画素ずつシフトさせて４通りのシフト画像Ｓ１〜Ｓ４を定義した場合は（シフト量：３Δｘ，３Δｙ）、得られるアウトラインＬは、図１８(b) に差分画像Ｄとして示すように、３画素分の太さをもった帯状図形になる。
【０１５５】
図１２(f) や図１５(f) に示された１画素分の太さをもつアウトラインＬは、元画像Ｇの輪郭形状をそのまま表現したものになるが、図１８(a) に示す２画素分の太さをもつアウトラインＬでは、左側の内側部分が一部潰れており、図１８(b) に示す３画素分の太さをもつアウトラインＬでは、内側部分が完全に潰れてしまっている。
【０１５６】
結局、ディスプレイ画面上での視認性向上という観点からは、なるべく太いアウトラインＬを表示させるのが好ましいが、できるだけ精彩な表現を行うという観点からは、なるべく細いアウトラインＬを表示させるのが好ましい。したがって、実用上は、表示対象図形の細かさや、利用するディスプレイ装置３００の解像度などを考慮して、最適な太さのアウトラインＬが表示されるように、適切なシフト量を設定するのが好ましい。
【０１５７】
また、必要があれば、図形展開部１２０に、オペレータからアウトラインＬの太さを示すパラメータＴを入力する機能をもたせておき、このパラメータＴの値を各演算部に伝達するようにしておけば、オペレータが指定したパラメータＴに応じたシフト量に基づいて各シフト画像Ｓ１〜Ｓ４を定義することができるようになる。そうすれば、オペレータは、所望の太さをもったアウトラインＬをディスプレイ画面上に表示させることができる。
【０１５８】
なお、横方向のシフト量と縦方向のシフト量とは、必ずしも等しく設定する必要はない。たとえば、横方向シフト量として３Δｘ、縦方向シフト量として２Δｙを設定すれば、縦の輪郭線の幅が横の輪郭線の幅の１．５倍となるようなアウトラインＬを表示させることもできる。また、画素の横方向ピッチΔｘと、縦方向ピッチΔｙとは、必ずしも等しくする必要はなく、必要に応じて異なるピッチを設定してもかまわない。
【０１５９】
＜５−２  各シフト画像のシフト態様＞
これまで述べた実施形態では、図１１に示すように、第１のシフト画像Ｓ１として斜め右上方向にシフトさせた画像を用い、第２のシフト画像Ｓ２として斜め左下方向にシフトさせた画像を用い、第３のシフト画像Ｓ３として斜め左上方向にシフトさせた画像を用い、第４のシフト画像Ｓ４として斜め右下方向にシフトさせた画像を用いているが、各シフト画像Ｓ１〜Ｓ４と、４通りのシフト態様との対応関係は、必ずしも上記関係にする必要はない。たとえば、第１のシフト画像Ｓ１として斜め左上方向にシフトさせた画像を用い、第２のシフト画像Ｓ２として斜め左下方向にシフトさせた画像を用い、... といったように、様々なバリエーションが可能である。
【０１６０】
結局、４通りのシフト態様を、シフト方向を特定せずに、第１のシフト態様、第２のシフト態様、第３のシフト態様、第４のシフト態様と呼ぶことにすれば、各実施形態における各演算部は、次のような処理を実行すればよいことになる。
【０１６１】
まず、第１の実施形態の場合、第１論理積演算部１５０は、元画像Ｇを第１のシフト態様でシフトして得られる第１シフト画像Ｓ１と元画像Ｇとの間で、論理積演算を行うことにより、メモリ部１３０に第１論理積画像Ｈ１を生成する処理を行い、第２論理積演算部１６０は、元画像Ｇを第２のシフト態様でシフトして得られる第２シフト画像Ｓ２と第１論理積画像Ｈ１との間で、論理積演算を行うことにより、メモリ部１３０に第２論理積画像Ｈ２を生成する処理を行い、第３論理積演算部１７０は、元画像Ｇを第３のシフト態様でシフトして得られる第３シフト画像Ｓ３と第２論理積画像Ｈ２との間で、論理積演算を行うことにより、メモリ部１３０に第３論理積画像Ｈ３を生成する処理を行い、第４論理積演算部１８０は、元画像Ｇを第４のシフト態様でシフトして得られる第４シフト画像Ｓ４と第３論理積画像Ｈ３との間で、論理積演算を行うことにより、メモリ部１３０に第４論理積画像Ｈ４を生成する処理を行い、
差分演算部１９０は、第４論理積画像Ｈ４を元画像Ｇから差し引く差分演算を行うことにより、メモリ部１３０に差分画像Ｄを生成する処理を行えばよい。
【０１６２】
一方、第２の実施形態の場合、第１差分演算部２５０は、元画像Ｇを第１のシフト態様でシフトして得られる第１シフト画像Ｓ１を、元画像Ｇから差し引く差分演算を行うことにより、メモリ部１３０に第１差分画像Ｄ１を生成する処理を行い、第２差分演算部２６０は、元画像Ｇを第２のシフト態様でシフトして得られる第２シフト画像Ｓ２を、元画像Ｇから差し引く差分演算を行うことにより、メモリ部１３０に第２差分画像Ｄ２を生成する処理を行い、第３差分演算部２７０は、元画像Ｇを第３のシフト態様でシフトして得られる第３シフト画像Ｓ３を、元画像Ｇから差し引く差分演算を行うことにより、メモリ部１３０に第３差分画像Ｄ３を生成する処理を行い、第４差分演算部２８０は、元画像Ｇを第４のシフト態様でシフトして得られる第４シフト画像Ｓ４を、元画像Ｇから差し引く差分演算を行うことにより、メモリ部１３０に第４差分画像Ｄ４を生成する処理を行い、論理和演算部２９０は、第１差分画像Ｄ１、第２差分画像Ｄ２、第３差分画像Ｄ３、第４差分画像Ｄ４について、論理和演算を行うことにより、メモリ部１３０に論理和画像Ｗを生成する処理を行えばよい。
【０１６３】
ここで、第１のシフト態様、第２のシフト態様、第３のシフト態様、第４のシフト態様は、各画素を右方向および上方向にそれぞれ所定画素分移動させる斜め右上シフト、各画素を左方向および下方向にそれぞれ所定画素分移動させる斜め左下シフト、各画素を左方向および上方向にそれぞれ所定画素分移動させる斜め左上シフト、各画素を右方向および下方向にそれぞれ所定画素分移動させる斜め右下シフト、という４種類のシフトのいずれか１つにそれぞれ１対１に対応づけられていれば、どのような対応関係になっていてもかまわない。
【０１６４】
§５−１で述べたように、図形展開部１２０に、オペレータの操作に基づいてアウトラインの太さを示すパラメータＴを入力する機能をもたせた場合は、第１のシフト態様、第２のシフト態様、第３のシフト態様、第４のシフト態様は、各画素を右方向および上方向にそれぞれＴ画素分移動させる斜め右上シフト、各画素を左方向および下方向にそれぞれＴ画素分移動させる斜め左下シフト、各画素を左方向および上方向にそれぞれＴ画素分移動させる斜め左上シフト、各画素を右方向および下方向にそれぞれＴ画素分移動させる斜め右下シフト、という４種類のシフトのいずれか１つにそれぞれ１対１に対応づけるようにすればよい。
【０１６５】
なお、元画像Ｇに含まれる図形の形状によっては、必ずしも４種類のシフト画像を用いた演算を行う必要はなく、たとえば、３種類のシフト画像を用いた演算を行うだけで、所望のアウトラインＬが得られるケースもあるが、これまで述べた方法で４種類のシフト画像を用いた演算を行えば、元画像Ｇがどのような形状の図形を含んでいても、正しいアウトラインＬを得ることができる。もちろん、元画像Ｇが、内部に窓領域を含むいわゆる中抜け図形の画像であっても、窓領域の輪郭を含むアウトラインが得られることになる。
【０１６６】
＜５−３  表示のバリエーション＞
本発明は、ディスプレイの画面上に、元画像Ｇに含まれる図形のアウトラインＬを表示させる技術に関するものであるが、もちろん、アウトラインＬだけでなく、元画像Ｇを表示させることも可能である。すなわち、メモリ部１３０，２３０内の元画像記録領域１３１，２３１には、元画像Ｇがそのまま記録されているので、表示制御部１４０に、表示対象図形ＦのアウトラインＬのみを表示する機能と、元画像Ｇのみを表示する機能と、元画像ＧにアウトラインＬを重畳させて表示する機能と、をもたせておくようにすれば、オペレータは、表示制御部１４０に指示を与えることにより、ディスプレイ画面上に所望の形態で表示を行わせることができる。
【０１６７】
図１９は、このような表示態様のバリエーションを示す平面図である。図１９(a) は、これまで述べてきた実施形態で説明したとおり、ディスプレイ画面上に表示対象図形ＦのアウトラインＬのみを表示させた例である。これに対して、図１９(b) は、ディスプレイ画面上に元画像Ｇ（表示対象図形Ｆ）のみを表示させた例である。図形の輪郭ではなく、内部の全領域がいわゆるベタ塗りの状態で表示されている。また、図１９(c) は、元画像Ｇの上にアウトラインＬを重畳させて表示させた例である。表示対象図形Ｆの全領域がベタ塗りの状態で表示されるとともに、その輪郭部分が、アウトラインＬによって縁取りされており、表示対象図形Ｆの形状認識を行う上では最適な表示形態になっている。
【０１６８】
なお、図１９(c) に示す表示形態では、実際には、元画像Ｇの図形部分とアウトラインＬの部分とを異なる色もしくは輝度で表示するようにし、背景部分、元画像Ｇの図形部分、アウトラインＬの部分を視覚的に区別できるようにしている。
【０１６９】
＜５−４  ディスプレイ装置の解像度との関係＞
既に述べたとおり、本発明に係るアウトライン表示装置を構成する場合、図形展開部１２０や各演算部１５０〜１９０，２５０〜２９０の処理を、パソコン用のグラフィックボードによって実行させるようにするのが好ましい。そうすれば、グラフィックボード上のハードウエアを利用して処理を行うことができるようになり、処理の高速化を図ることができる。
【０１７０】
第１の実施形態の場合、メモリ部１３０として、グラフィックボード上のグラフィックメモリをそのまま利用することができるので、メモリ部１３０を構成する元画像記録領域１３１および作業領域１３２には、ディスプレイ装置３００の画面の表示対象領域を構成する画素配列と同一の画素配列をもった元画像Ｇおよび作業画像Ｋをそれぞれ格納するようにすれば、表示制御部１４０は、表示対象領域を構成する画素配列と同一の画素配列をもった差分画像Ｄをそのままディスプレイ装置３００に出力することができる。
【０１７１】
同様に、第２の実施形態の場合、メモリ部２３０として、グラフィックボード上のグラフィックメモリをそのまま利用することができるので、元画像記録領域２３１、作業領域２３２、結果蓄積領域２３３には、ディスプレイ装置３００の画面の表示対象領域を構成する画素配列と同一の画素配列をもった元画像Ｇ、作業画像Ｋ、蓄積画像Ｒをそれぞれ格納するようにすれば、表示制御部１４０は、表示対象領域を構成する画素配列と同一の画素配列をもった論理和画像Ｗをそのままディスプレイ装置３００に出力することができる。
【０１７２】
要するに、メモリ部１３０，２３０に、ディスプレイ装置３００の解像度に合わせた画素配列を定義して差分画像Ｄや論理和画像Ｗを格納するようにすれば、メモリ部１３０，２３０に得られた画像の個々の画素が、ディスプレイ装置３００の画面の表示対象領域を構成する個々の画素に１対１に対応することになるので、表示制御部１４０による高速な表示処理が可能になる。
【０１７３】
＜５−５  表示箇所・倍率の指定＞
前述したとおり、一般的なＬＳＩ設計データは、数万個〜数億個の部分図形を組み合わせたレイアウトパターンによって構成されている。このため、図形データ格納部１１０には、膨大な数の部分図形データが格納されることになる。そこで、実用上は、レイアウトパターンの特定の一部分のみを所定の倍率でディスプレイ上に表示させ、確認を行うことができるようにするのが好ましい。
【０１７４】
そのためには、図形展開部１２０に、オペレータからの指示入力に基づいて、特定図形の特定箇所を特定倍率で表示するための元画像Ｇを生成する機能をもたせておけばよい。倍率が指定された場合、図形展開部１２０は、当該倍率を考慮して図形展開処理を行い、メモリ部１３０，２３０に、当該倍率に応じた元画像Ｇを生成すればよい。このように、レイアウトパターンの特定箇所を特定倍率で表示するための具体的な方法は、一般のＬＳＩ設計装置において既に利用されている公知技術であるため、ここでは詳しい説明は省略する。
【０１７５】
＜５−６  ＬＳＩ設計装置＞
本発明に係る図形のアウトライン表示装置は、ベクタ形式の図形データに基づいて、図形のアウトラインを表示する処理が必要な様々な分野に利用することが可能である。たとえば、種々の製品設計を行うため、あるいは種々の建築物の設計を行うためのＣＡＤシステムなどに利用することができる。
【０１７６】
ただ、これまでも述べてきたとおり、本発明に係る技術は、特に、ＬＳＩ設計装置に利用した場合に有効である。ＬＳＩ設計データは、膨大な数の部分図形を組み合わせたレイアウトパターンによって構成されているため、従来のアルゴリズムでアウトライン表示を行うと、演算負担がかなり重くなり、オペレータが、特定の合成図形のアウトラインを表示させる旨の指示を与えたとしても、実際に画面表示が行われるまで、かなりの待ち時間が必要となる。
【０１７７】
ところが、本発明のアルゴリズムを採用すれば、メモリ上にラスタ形式の元画像Ｇを展開した上で、４種類のシフト画像Ｓ１〜Ｓ４を利用した所定の論理演算を行うだけでアウトラインＬを示すラスタ形式の画像が得られるため、低演算負担で高速にアウトライン表示を行うことができるようになる。したがって、本発明に係るアウトライン表示装置を組み込んだＬＳＩ設計装置を用いれば、ＬＳＩ用レイアウトパターンの所望箇所のアウトラインをリアルタイムで表示させることが可能になる。これは、ＬＳＩの設計者が、レイアウトパターンの形状をディスプレイ画面上で逐次確認した上で、必要に応じて修正を加えてゆく作業を行う上で極めて有用である。
【０１７８】
＜５−７  図形のアウトライン作成方法＞
これまで、本発明を図形のアウトライン表示装置の発明として把握した説明を行ってきたが、本発明は、図形のアウトライン表示方法という方法発明として把握することも可能である。
【０１７９】
たとえば、上述した第１の実施形態に係る発明は、二次元行列状に配置された画素の集合体からなる元図形に基づいて、当該元図形のアウトラインを作成する図形のアウトライン表示方法として把握することができる。
【０１８０】
この方法は、元図形を第１のシフト態様でシフトして得られる第１シフト図形と元図形との間で、論理積演算を行うことにより、第１論理積図形を生成する第１論理積演算段階と、元図形を第２のシフト態様でシフトして得られる第２シフト図形と第１論理積図形との間で、論理積演算を行うことにより、第２論理積図形を生成する第２論理積演算段階と、元図形を第３のシフト態様でシフトして得られる第３シフト図形と第２論理積図形との間で、論理積演算を行うことにより、第３論理積図形を生成する第３論理積演算段階と、元図形を第４のシフト態様でシフトして得られる第４シフト図形と第３論理積図形との間で、論理積演算を行うことにより、第４論理積図形を生成する第４論理積演算段階と、第４論理積図形を元図形から差し引く差分演算を行うことにより、差分図形を生成する差分演算段階と、をコンピュータに実行させ、得られた差分図形を、元図形のアウトラインとして出力することにより実行できる。
【０１８１】
また、上述した第２の実施形態に係る発明も、二次元行列状に配置された画素の集合体からなる元図形に基づいて、当該元図形のアウトラインを作成する図形のアウトライン表示方法として把握することができる。
【０１８２】
この方法は、元図形を第１のシフト態様でシフトして得られる第１シフト図形を、元図形から差し引く差分演算を行うことにより、第１差分図形を生成する第１差分演算段階と、元図形を第２のシフト態様でシフトして得られる第２シフト図形を、元図形から差し引く差分演算を行うことにより、第２差分図形を生成する第２差分演算段階と、元図形を第３のシフト態様でシフトして得られる第３シフト図形を、元図形から差し引く差分演算を行うことにより、第３差分図形を生成する第３差分演算段階と、元図形を第４のシフト態様でシフトして得られる第４シフト図形を、元図形から差し引く差分演算を行うことにより、第４差分図形を生成する第４差分演算段階と、第１差分図形、第２差分図形、第３差分図形、第４差分図形について、論理和演算を行うことにより、論理和図形を生成する論理和演算段階と、をコンピュータに実行させ、得られた論理和図形を、元図形のアウトラインとして出力することにより実行できる。
【０１８３】
いずれも場合も、第１のシフト態様、第２のシフト態様、第３のシフト態様、第４のシフト態様は、各画素を右方向および上方向にそれぞれ所定画素分移動させる斜め右上シフト、各画素を左方向および下方向にそれぞれ所定画素分移動させる斜め左下シフト、各画素を左方向および上方向にそれぞれ所定画素分移動させる斜め左上シフト、各画素を右方向および下方向にそれぞれ所定画素分移動させる斜め右下シフト、という４種類のシフトのいずれか１つにそれぞれ１対１に対応づけられているようにすればよい。
【符号の説明】
【０１８４】
１０：部分図形データ
２０：合成演算
３０：アウトライン表示
４０：図形展開
５０：アウトライン抽出
１１０：図形データ格納部
１２０：図形展開部
１３０：メモリ部
１３１：元画像記録領域
１３２：作業領域
１４０：表示制御部
１５０：第１論理積演算部
１６０：第２論理積演算部
１７０：第３論理積演算部
１８０：第４論理積演算部
１９０：差分演算部
２３０：メモリ部
２３１：元画像記録領域
２３２：作業領域
２３３：結果蓄積領域
２５０：第１差分演算部
２６０：第２差分演算部
２７０：第３差分演算部
２８０：第４差分演算部
２９０：論理和演算部
３００：ディスプレイ装置
Ｃ：図形の輪郭
Ｄ：差分画像
Ｄ１：第１差分画像
Ｄ２：第２差分画像
Ｄ３：第３差分画像
Ｄ４：第４差分画像
Ｆ：表示対象図形（合成図形）
Ｆ１，Ｆ２，Ｆ３：部分図形／部分図形データ
Ｆ（Ｄ）：差分画像Ｄ上の図形部分
Ｆ（Ｄ１）〜Ｆ（Ｄ４）：各差分画像Ｄ１〜Ｄ４上の図形部分
Ｆ（Ｇ）：元画像Ｇ上の表示対象図形Ｆの輪郭線
Ｆ（Ｈ１）〜Ｆ（Ｈ４）：各論理積画像Ｈ１〜Ｈ４上の図形部分
Ｆ（Ｓ１）〜Ｆ（Ｓ４）：各シフト画像Ｓ１〜Ｓ４上のシフト図形の輪郭線
Ｇ：元画像
Ｈ１：第１論理積画像
Ｈ２：第２論理積画像
Ｈ３：第３論理積画像
Ｈ４：第４論理積画像
Ｋ：作業画像
Ｌ：アウトライン
Ｏ：座標系の原点
Ｐ１〜Ｐ３２：座標点
Ｑ１：特定画素
Ｑ２：対応画素
Ｑ３：シフト画素
Ｑ４：着目画素
Ｒ：蓄積画像
Ｓ：シフト画像
Ｓ１：第１シフト画像
Ｓ２：第２シフト画像
Ｓ３：第３シフト画像
Ｓ４：第４シフト画像
Ｔ：アウトラインの太さ
Ｗ：論理和画像
Ｘ：座標軸
ｘ１〜ｘ３２：Ｘ座標値
Ｙ：座標軸
ｙ１〜ｙ３２：Ｙ座標値
Δｘ：Ｘ軸方向の画素ピッチ
Δｙ：Ｙ軸方向の画素ピッチ
【図１】
2015014843.tif 000003
【図２】
2015014843.tif 000004
【図３】
2015014843.tif 000005
【図４】
2015014843.tif 000006
【図５】
2015014843.tif 000007
【図６】
2015014843.tif 000008
【図７】
2015014843.tif 000009
【図８】
2015014843.tif 000010
【図９】
2015014843.tif 000011
【図１０】
2015014843.tif 000012
【図１１】
2015014843.tif 000013
【図１２】
2015014843.tif 000014
【図１３】
2015014843.tif 000015
【図１４】
2015014843.tif 000016
【図１５】
2015014843.tif 000017
【図１６】
2015014843.tif 000018
【図１７】
2015014843.tif 000019
【図１８】
2015014843.tif 000020
【図１９】
2015014843.tif 000021