(57)【要約】【課題】ハードワイヤード方式の効率性を確保し、且つ、様々な画像処理機能を実現することが容易な画像処理装置を提供する。【解決手段】ハードワイヤード方式で実現される画像処理のための演算機能とバッファメモリのメモリアクセス制御に制約を設けて、その制約の範囲をプログラム制御等によって可変可能とする。バッファメモリ（１０５）は記憶ライン単位という制約を受けて外部からデータを入力し、入力する記憶ライン数と記憶ラインの位置を制御回路（１０１，１０２）によりプログラマブルにでき、演算回路（１０６）はバッファメモリから供給される単数又は複数の記憶ラインのデータ単位で演算を行うという制約を受け、そのデータ単位に対する演算処理単位の演算処理内容を制御回路（１０１，１０２）によりプログラマブルに指定することができる。【選択図】図１
2010086497.tif 000002
【特許請求の範囲】
【請求項１】
演算対象とするデータを外部から読み出して入力するための入力回路と、入力回路によって入力したデータを一時的に保持するバッファメモリと、前記バッファメモリから出力されたデータの演算処理を行なう演算回路と、前記演算回路による演算結果を外部又は前記バッファメモリに書き戻すための出力回路と、制御回路と、を有し、
前記バッファメモリは記憶領域として論理上直列な記憶ラインを複数有し、前記制御回路で指定された前記記憶ラインに入力データを書き込み書き込まれたデータの読出しが可能とされ、
前記演算回路はバッファから出力された単数又は複数の前記記憶ラインのデータを前記制御回路により指定された処理内容で演算処理単位毎に繰り返し演算し、
前記制御回路は、指定した記憶ラインのデータを記憶ライン単位で前記バッファメモリから前記演算回路に出力させる、画像処理装置。
【請求項２】
前記制御回路は、外部から入力されるデータを書き込む単数又は複数の前記記憶ラインを指示し、演算回路による演算結果を書き戻す前記記憶ラインを指示する、請求項１記載の画像処理装置。
【請求項３】
画像処理装置と、前記画像処理装置の制御及びメモリのアクセス制御を行う中央処理装置とを有するデータプロセッサであって、
前記画像処理装置は、演算対象とするデータを前記メモリから読み出して入力するための入力回路と、入力回路によって入力したデータを一時的に保持するバッファメモリと、前記バッファメモリから出力されたデータの演算処理を行なう演算回路と、前記演算回路による演算結果を前記メモリ又は前記バッファメモリに書き戻すための出力回路と、制御回路と、を有し、
前記バッファメモリは記憶領域として論理上直列な記憶ラインを複数有し、指定された前記記憶ラインに入力データを書き込み書き込まれたデータの読出しが可能とされ、
前記演算回路はバッファから出力された単数又は複数の前記記憶ラインのデータを指定された処理内容で演算処理単位毎に繰り返し演算し、
前記制御回路は、前記入力回路から入力されるデータを書き込む単数又は複数の前記記憶ラインを指示し、前記演算回路による演算処理内容を指示し、演算回路による演算結果を書き戻す前記記憶ラインを指示し、バッファメモリから演算回路にデータを供給する記憶ラインを指示する、データプロセッサ。
【請求項４】
前記中央処理装置は画像処理装置の演算動作中に、画像処理装置による演算結果を前記メモリから参照する、請求項３記載のデータプロセッサ。
【請求項５】
画像処理装置とメモリとを有するデータプロセッサであって、
前記画像処理装置は、演算対象とするデータを前記メモリから読み出して入力するための入力回路と、入力回路によって入力したデータを一時的に保持するバッファメモリと、前記バッファメモリから出力されたデータの演算処理を行なう演算回路と、前記演算回路による演算結果を前記メモリ又は前記バッファメモリに書き戻すための出力回路と、制御回路と、を有し、
前記バッファメモリは記憶領域として論理上直列な記憶ラインを複数有し、前記制御回路で指定された前記記憶ラインに入力データを書き込み書き込まれたデータの読出しが可能とされ、
前記演算回路は前記バッファメモリから読み出された複数の前記記憶ラインのデータを前記制御回路で指定された処理内容に従って並列に演算可能であり、
前記制御回路は、前記バッファメモリの複数の記憶ライン分に相当する第１の記憶領域のデータに対して順次データ処理単位毎に前記演算回路に第１の演算を繰り返し実行させ、繰り返し実行された第１の演算による演算家結果が前記バッファメモリの複数の記憶ライン分に相当する第２の記憶領域の記憶ラインに格納されたとき、第１の記憶領域で最も先にデータ記憶が行われた記憶ラインに対してデータ入換えを行ってから、再び前記第１の演算を繰り返し実行させる制御を行う、データプロセッサ。
【請求項６】
前記制御部は、前記第２の記憶領域の記憶ラインに必要な演算結果が揃ったとき、第２の記憶領域のデータに対して順次データ処理単位毎に前記演算回路に第２の演算を繰り返し実行させ、繰り返し実行された第２の演算による演算家結果を前記バッファメモリの第３の記憶領域の記憶ラインに格納させる制御を行う、請求項５記載のデータプロセッサ。
【請求項７】
前記制御部は、前記第３の記憶領域の記憶ラインに必要な演算結果が揃ったとき、第３の記憶領域のデータに対して前記演算回路に第３の演算を繰り返し実行させ、繰り返し実行された第３の演算による演算家結果を前記バッファメモリの第４の記憶領域の記憶ラインに格納させる制御を行う、請求項６記載のデータプロセッサ。
【請求項８】
前記制御回路は、前記第４の記憶領域の記憶ラインに必要な演算結果が揃ったとき、前記出力回路に指示を与えて当該演算結果を前記メモリに書き込む制御を行う、請求項７記載のデータプロセッサ。
【請求項９】
前記制御部は、前記第３の記憶領域の記憶ラインに必要な演算結果が揃ったとき、第３の記憶領域のデータに対して前記演算回路に第３の演算を繰り返し実行させ、繰り返し実行された第３の演算による演算家結果を前記出力回路に外部へ出力させる制御を行う、請求項６記載のデータプロセッサ。
【請求項１０】
前記制御回路は、マイクロコントローラ、制御レジスタ、及び同期化制御回路を有し、
前記マイクロコントローラはプログラムを実行して前記制御レジスタに制御データを書き込む制御を行い、
前記同期化制御回路は前記入力回路及び前記演算回路の動作状態に従って前記前記制御レジスタの書き込み制御を行い、
前記制御レジスタは書き込まれた制御データに従って前記入力回路、前記バッファ回路、前記演算回路及び前記出力回路に制御信号を出力する、請求項５乃至９の何れか１項記載のデータプロセッサ。
【請求項１１】
前記制御レジスタは、入力回路からデータを取り込む記憶ラインを指定するための制御情報、出力回路からデータを取り込む記憶ラインを指定するための制御情報、データを取り込む記憶ラインの本数を指定する制御情報、データを出力する記憶ラインを指定するための制御情報、及びデータを出力する記憶ラインの本数を指定する制御情報が設定される、請求項１０記載のデータプロセッサ。
【請求項１２】
前記第１の演算は、複数記憶ラインの画像データに対してｍ×ｎ画素単位のデータをデータ処理単位とする平滑化のためのコンボリューション演算である、請求項７記載のデータプロセッサ。
【請求項１３】
前記第２の演算は、前記コンボリューション演算された複数記憶ラインの画像データに対してｉ×ｊ画素単位もデータをデータ処理単位とする輪郭強調のためのフィルタ演算である、請求項１２記載のデータプロセッサ。
【請求項１４】
前記第３の演算は、前記前記フィルタ演算された画像データを２値化する演算である、請求項１３記載のデータプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理のためのデータ処理技術に関し、例えばラインメモリのようなバッファメモリと演算回路を用いて画像処理を行なう画像処理装置、更にはデータプロセッサに適用して有効な技術に関する。
【背景技術】
【０００２】
各種の画像処理アルゴリズムについて研究が進展しており、新しいアルゴリズムの発表や従来アルゴリズムの改良等が発表され続けている。これら新アルゴリズムに対応するためには、画像処理演算のプログラムを改変することにより対応することが考えられる。これはＤＳＰ（ディジタル・シグナル・プロセッサ）や一部の多並列演算器を備えた画像処理アーキテクチャによって実現されており、プログラムを組むことにより新アルゴリズムにも一定の対応が可能なものとなっている。プログラムによって新アルゴリズムに対応できるようなアーキテクチャは、一般に消費電力や面積性能比（コストパフォーマンス）の上でハードワイヤード方式に劣る。組込みコントローラ向けには、消費電力や要求される高い面積性能比（コストパフォーマンス）から、ハードワイヤード方式の方が有利である。しかしながら、ハードワイヤード方式はハード設計後に登場する新アーキテクチャへの対応が困難であるという課題があった。ハードワイヤードをベースとして、演算データをラインメモリに書き戻す等、演算の自由度を増やすことを狙った発明として、特許文献１に開示のものがある。
【０００３】
【特許文献１】特開平１０−３４０３４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、演算の自由度を増やすことを狙った特許文献１に開示の技術では、ハードワイヤード方式とプログラム方式との双方の利点を生かしきることが難しいことが本発明者によって見出された。即ち、画像処理機能をハードワイヤード方式で実現される専用ハードウェアで構成した場合、必要最小限のハードウェアで、高い性能を実現することができる反面、メモリのアクセス制御や画像処理の演算処理をハードワイヤード方式にした場合には制御や機能が回路として実装されているため、設計時に予定されている演算アルゴリズム以外の処理をすることは事実上できない。また、汎用プロセッサのようにメモリのアクセス制御や演算処理をプログラムで記述する方式の場合、様々な演算アルゴリズムを可能とするため、メモリへのアクセスに自由度を持たせ、回路が複雑かつ回路規模も大きくなり、その結果、自由度の大きなプログラム記述方式では、ハードワイヤード方式に比べると、同じ性能を実現するためには大きな回路規模で実現しなければならない。
【０００５】
本発明の別の目的は、回路規模が小さく、処理性能に優れた画像処理装置を提供することにある。
【０００６】
本発明の別の目的は、ハードワイヤード方式の効率性を確保し、且つ、様々な画像処理機能を実現することが容易な画像処理装置、更にはデータプロセッサを提供することにある。
【０００７】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【０００９】
すなわち、ハードワイヤード方式で実現される画像処理のための演算機能とバッファメモリのメモリアクセス制御に制約を設けて、その制約の範囲をプログラム制御等によって可変可能とする。これにより、ハードワイヤード方式の効率性が確保され、様々な画像処理機能を実現できるようにそれらのハードワイヤード回路を制御できるようになる。
【発明の効果】
【００１０】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１１】
すなわち、ハードワイヤード方式で高効率に実装された演算アルゴリズムを可変可能に用いてより複雑な演算アルゴリズムを実現することができ、回路規模が小さく、処理性能に優れた画像処理装置を提供することができる。
【発明を実施するための最良の形態】
【００１２】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１３】
〔１〕本発明に係る画像処理装置（２０１）は、演算対象とするデータを外部から読み出して入力するための入力回路（１０４）と、入力回路によって入力したデータを一時的に保持するバッファメモリ（１０５）と、前記バッファメモリから出力されたデータの演算処理を行なう演算回路（１０６）と、前記演算回路による演算結果を外部又は前記バッファメモリに書き戻すための出力回路（１０７）と、制御回路（１０１，１０２）と、を有する。前記バッファメモリは記憶領域として論理上直列な記憶ライン（ＭＬｉ）を複数有し、前記制御回路で指定された前記記憶ラインに入力データを書き込み書き込まれたデータの読出しが可能とされる。前記演算回路はバッファから出力された単数又は複数の前記記憶ラインのデータを前記制御回路により指定された処理内容で演算処理単位毎に繰り返し演算する。前記制御回路は、指定した記憶ラインのデータを記憶ライン単位で前記バッファメモリから前記演算回路に出力させる。
【００１４】
上記によれば、バッファメモリは記憶ライン単位という制約を受けて外部からデータを入力し、入力する記憶ライン数と記憶ラインの位置を制御回路によりプログラマブルにでき、演算回路はバッファメモリから供給される単数又は複数の記憶ラインのデータ単位で演算を行うという制約を受け、そのデータ単位に対する演算処理単位の演算処理内容を制御回路によりプログラマブルに指定することができる。したがって、ハードワイヤード方式の効率性を確保し、様々な画像処理機能を実現できるようにそれらのハードワイヤード回路を制御回路で制御することができる。
【００１５】
〔２〕項１の画像処理装置において、前記制御回路は、外部から入力されるデータを書き込む単数又は複数の前記記憶ラインを指示し、演算回路による演算結果を書き戻す前記記憶ラインを指示する。
【００１６】
〔３〕本発明に係るデータプロセッサは、画像処理装置（２０１）と、前記画像処理装置の制御及びメモリのアクセス制御を行う中央処理装置（２０８）とを有する。前記画像処理装置は、演算対象とするデータを前記メモリから読み出して入力するための入力回路と、入力回路によって入力したデータを一時的に保持するバッファメモリと、前記バッファメモリから出力されたデータの演算処理を行なう演算回路と、前記演算回路による演算結果を前記メモリ又は前記バッファメモリに書き戻すための出力回路と、制御回路と、を有する。前記バッファメモリは記憶領域として論理上直列な記憶ラインを複数有し、指定された前記記憶ラインに入力データを書き込み書き込まれたデータの読出しが可能とされる。前記演算回路はバッファから出力された単数又は複数の前記記憶ラインのデータを指定された処理内容で演算処理単位毎に繰り返し演算する。前記制御回路は、前記入力回路から入力されるデータを書き込む単数又は複数の前記記憶ラインを指示し、前記演算回路による演算処理内容を指示し、演算回路による演算結果を書き戻す前記記憶ラインを指示し、バッファメモリから演算回路にデータを供給する記憶ラインを指示する。
【００１７】
上記同様に、ハードワイヤード方式の効率性を確保し、様々な画像処理機能を実現できるようにそれらのハードワイヤード回路を制御回路で制御することができる。
【００１８】
〔４〕項３のデータプロセッサにおいて、前記中央処理装置は画像処理装置の演算動作中に、画像処理装置による演算結果を前記メモリから参照する。
【００１９】
〔５〕本発明の別の観点によるデータプロセッサは、画像処理装置と、前記画像処理装置の制御及びメモリのアクセス制御を行う中央処理装置とを有する。前記画像処理装置は、演算対象とするデータを前記メモリから読み出して入力するための入力回路と、入力回路によって入力したデータを一時的に保持するバッファメモリと、前記バッファメモリから出力されたデータの演算処理を行なう演算回路と、前記演算回路による演算結果を前記メモリ又は前記バッファメモリに書き戻すための出力回路と、制御回路と、を有する。前記バッファメモリは記憶領域として論理上直列な記憶ライン（ＭＬｉ）を複数有し、前記制御回路で指定された前記記憶ラインに入力データを書き込み書き込まれたデータの読出しが可能とされる。前記演算回路は前記バッファメモリから読み出された複数の前記記憶ラインのデータを前記制御回路で指定された処理内容に従って並列に演算可能である。前記制御回路は、前記バッファメモリの複数の記憶ライン分に相当する第１の記憶領域（ＭＬi〜ＭＬi+4）のデータに対して順次データ処理単位毎に前記演算回路に第１の演算を繰り返し実行させ、繰り返し実行された第１の演算による演算家結果が前記バッファメモリの複数の記憶ライン分に相当する第２の記憶領域（ＭＬj〜ＭＬj+2）の記憶ラインに格納されたとき、第１の記憶領域で最も先にデータ記憶が行われた記憶ラインに対してデータ入換えを行ってから、再び前記第１の演算を繰り返し実行させる制御を行う。
【００２０】
上記同様に、ハードワイヤード方式の効率性を確保し、様々な画像処理機能を実現できるようにそれらのハードワイヤード回路を制御回路で制御することができる。更に、バッファメモリに格納したデータを用いた第１の演算の結果をバッファメモリに書き戻すと共に、第１の演算の用いるデータを記憶ライン単位で更新しながら第１の演算を継続する演算アルゴリズムを実現することができる。
【００２１】
〔６〕項５のデータプロセッサにおいて、前記制御部は、前記第２の記憶領域の記憶ラインに必要な演算結果が揃ったとき、第２の記憶領域のデータに対して順次データ処理単位毎に前記演算回路に第２の演算を繰り返し実行させ、繰り返し実行された第２の演算による演算家結果を前記バッファメモリの第３の記憶領域（ＭＬk）の記憶ラインに格納させる制御を行う。
【００２２】
これにより、バッファメモリに書き戻した第１の演算結果を更に用いて第２の演算を行い、その結果を更にバッファメモリに書き戻して次の演算に備えると言う演算アルゴリズムを実現することができる。
【００２３】
〔７〕項６のデータプロセッサにおいて、前記制御部は、前記第３の記憶領域の記憶ラインに必要な演算結果が揃ったとき、第３の記憶領域のデータに対して前記演算回路に第３の演算を繰り返し実行させ、繰り返し実行された第３の演算による演算家結果を前記バッファメモリの第４の記憶領域（MLm）の記憶ラインに格納させる制御を行う。
【００２４】
これにより、バッファメモリに書き戻した第２の演算結果を更に用いて第３の演算を行い、その結果を更にバッファメモリに書き戻して次の処理に備えると言う演算アルゴリズムを実現することができる。
【００２５】
〔８〕項７のデータプロセッサにおいて、前記制御回路は、前記第４の記憶領域の記憶ラインに必要な演算結果が揃ったとき、前記出力回路に指示を与えて当該演算結果を前記メモリに書き込む制御を行う。これにより、画像処理装置とメモリとの間のデータ転送に伴うオーバーヘッドを抑えることができる。
【００２６】
〔９〕項６のデータプロセッサにおいて、前記制御部は、前記第３の記憶領域の記憶ラインに必要な演算結果が揃ったとき、第３の記憶領域のデータに対して前記演算回路に第３の演算を繰り返し実行させ、繰り返し実行された第３の演算による演算家結果を前記出力回路に外部へ出力させる制御を行う。
【００２７】
〔１０〕項５乃至９の何れかのデータプロセッサにおいて、前記制御回路は、マイクロコントローラ、制御レジスタ、及び同期化制御回路を有する。前記マイクロコントローラはプログラムを実行して前記制御レジスタに制御データを書き込む制御を行う。前記同期化制御回路は前記入力回路及び前記演算回路の動作状態に従って前記前記制御レジスタの書き込み制御を行う。前記制御レジスタは書き込まれた制御データに従って前記入力回路、前記バッファ回路、前記演算回路及び前記出力回路に制御信号を出力する。
【００２８】
〔１１〕項１０のデータプロセッサにおいて、前記制御レジスタは、入力回路からデータを取り込む記憶ラインを指定するための制御情報、出力回路からデータを取り込む記憶ラインを指定するための制御情報、データを取り込む記憶ラインの本数を指定する制御情報、データを出力する記憶ラインを指定するための制御情報、及びデータを出力する記憶ラインの本数を指定する制御情報が設定される。
【００２９】
〔１２〕項７のデータプロセッサにおいて、前記第１の演算は、複数記憶ラインの画像データに対してｍ×ｎ画素単位のデータをデータ処理単位とする平滑化のためのコンボリューション演算である。
【００３０】
〔１３〕項１２のデータプロセッサにおいて、前記第２の演算は、前記コンボリューション演算された複数記憶ラインの画像データに対してｉ×ｊ画素単位もデータをデータ処理単位とする輪郭強調のためのフィルタ演算である。
【００３１】
〔１４〕項１３のデータプロセッサにおいて、前記第３の演算は、前記前記フィルタ演算された画像データを２値化する演算である。
【００３２】
２．実施の形態の詳細
実施の形態について更に詳述する。以下、本発明を実施するための形態を図面に基づいて詳細に説明する。なお、発明を実施するための形態を説明するための全図において、同一の機能を有する要素には同一の符号を付して、その繰り返しの説明を省略する。
【００３３】
図２には本発明に係るデータプロセッサが例示される。同図に示されるデータプロセッサ（ＭＣＵ）１は、特に制限されないが、相補型ＭＯＳ集積回路製造技術等により単結晶シリコン等の１個の半導体基板に形成され、例えばシステム・オン・チップのＬＳＩとして構成される。。
【００３４】
図２において、２０１は画像処理装置（ＩＭＧＰＲＣＳ）、２０２はチップ内バス、２０３は周辺インタフェース（Ｉ／Ｏ）、２０４はリードオンリーメモリ（ＲＯＭ）、２０５は表示出力回路（ＤＣＮＴ）、２０６は主記憶インタフェース（ＭＣＮＴ）、２０７は映像入力回路（ＶＩＮ）、２０８は中央演算装置（ＣＰＵ）、２０９は主記憶（ＲＡＭ）である。主記憶２０９はデータプロセッサ１にオンチップされても良い。
【００３５】
画像処理装置２０１は、画像処理を高速に処理するハードウェアであり、その詳細は後述する。
【００３６】
チップ内バス２０２は、便宜的に１階層で例示した内部バスであり、夫々の内部回路モジュール間でデータやアドレス等を伝達するために使用され、例えば、スプリットトランザクションバス等によって構成することが可能である。
【００３７】
周辺インタフェース２０３は、データプロセッサ１を用いる組込みシステムにおける信号のインプットとアウトプットをつかさどる回路である。
【００３８】
リードオンリーメモリ２０４は、読み出し専用のメモリで、本システムのブートプログラムやシステムに必要な設定等が格納されている。
【００３９】
表示出力回路２０５は、液晶ディスプレイ等の表示装置に接続するための回路である。
【００４０】
主記憶インタフェース２０６は、シンクロナスＤＲＡＭ等から成る主記憶を制御するメモリコントローラである。
【００４１】
映像入力回路２０７は、画像入力カメラ等からの画像データを受け取り、その信号をチップ内バス２０２経由で画像処理装置２０１に伝える。
【００４２】
ＣＰＵ２０８はデータプロセッサ１の全体に対する制御を司る回路であり、画像処理装置装置２０１に対する各種設定もＣＰＵ２０８が行う。特に図示はしないが、ＲＯＭ２０４を命令をフェッチし、フェッチした命令を解読し、その解読結果に従って命令を実行するための演算処理やアクセス処理等を行なう。
【００４３】
画像処理に使用する画像データは、例えば主記憶２０９に格納されている。この画像データは、カメラから入力される場合、映像入力回路２０７を介して主記憶２０９に格納される。また、カメラ以外から入力される場合、周辺インタフェース２０３などの外部インタフェースから入力されて主記憶２０９に格納される。格納された画像データは、例えば図１３に示したメモリ空間にあるように、一塊のデータとして格納されている。この一塊とは、物理的なアドレスを意味しているわけではなく、論理的に一塊のデータとして扱う状況を意味し、連続した画像データが一続きのアドレスに格納されている。カメラから入力された画像データは、映像入力回路２０７によって主記憶２０９の指定されたアドレスに書き込まれる。書き込むアドレスは、ＣＰＵ２０８がプログラムによって決定し、予め映像入力回路２０７に設定されている。
【００４４】
画像処理を行う場合、ＣＰＵ２０８が処理する場合と、画像処理装置２０１が処理する場合の、二通りの処理形態が可能である。ＣＰＵ２０８で処理する場合は、その命令セットに含まれる演算命令や転送命令等を用いて行うものであり、通常の汎用ＣＰＵの動作と差が無いので、ここではその詳細な説明を省略する。画像処理装置２０１で処理を行なう場合は、主記憶２０９の画像データを主記憶インタフェース２０６経由で画像処理装置２０１に転送する。画像処理の結果は、ＣＰＵ２０８や表示出力回路２０５がアクセスできるように、主記憶２０９に書き戻される。これらの設定もＣＰＵ２０８の動作プログラムに従って制御される。すなわち、主記憶２０９のどのアドレスの画像データに関して、画像処理装置２０１がどのような処理をし、主記憶２０９のどのアドレスに書き戻すかについては、ＣＰＵ２０８がその動作プログラムにしたがって処理を行う。
【００４５】
図１には画像処理装置２０１の一例が示される。画像処理装置２０１は、動作を規定するシステムレジスタ（ＳＲＥＧ）１０１、画像処理装置２０１の動作をプログラムによって制御するマイクロコントローラ（ＭＣＲＣＮＴ）１０２、画像処理に必要なデータ取得のタイミングや画像処理機能の切り替えのタイミングを制御する同期化回路（ＳＹＮＣ）１０３、主記憶２０９から画像データを読み出す入力回路（ＩＮＣ）１０４および処理結果を主記憶２０９に書き戻す出力回路（ＯＵＴＣ）１０７、処理に必要な画像データを一時記録しておくバッファメモリとしてのラインメモリ（ＬＮＭＲＹ）１０５、主にハードワイヤードロジック方式で構成され高速に画像処理が可能である演算回路（ＡＲＴＭ）１０６、及びバスインタフェース（ＢＩＦ）１０８から構成されている。バスインタフェース１０８は、画像処理装置２０１をバス２０２に接続するためのインタフェースである。
【００４６】
画像処理装置２０１は、システムレジスタ１０１に設定された情報に基づいて処理を行う。システムレジスタ１０１には、その他の内部回路１０２〜１０８の動作に必要な情報が設定され、その設定値は、夫々の内部回路１０２〜１０８に出力され、夫々の動作を制御する。また、内部レジスタ１０１は、画像処理の演算結果や動作の状況をモニタするために内部回路１０２〜１０８から所定の情報を受け取り、保持する機能を有する。システムレジスタ１０１は、図２におけるＣＰＵ２０８からバスインタフェース１０８を介してアクセスされることにより制御データの設定が可能にされ、ＣＰＵ２０８はシステムレジスタ１０１を介して画像処理装置２０１を制御する。
【００４７】
画像処理装置２０１における画像処理の一例を説明する。ここでは、図１３にある画像データＡを処理して、処理結果を画像データＣとして書き込むことを想定する。
【００４８】
ＣＰＵ２０８からシステムレジスタ１０１を介して、入力回路１０４にデータの取得を設定する。この設定は、画像データＡのメモリ空間上の位置を定義している。画像処理の内容は、システムレジスタ１０１に設定され、その内容が演算回路１０６に伝達される。入力回路１０４と演算回路１０６の間にあるラインメモリ１０５は、入力回路１０４から入力されるデータを保持し、演算回路１０６に必要なデータを供給する役目を果たす。例えば、３×３ウィンドウの平滑化フィルタの場合、処理対象の画素データを処理するのに前後左右一画素づつの合計９個のデータを必要とする。これらの画像データを供給するためには、３ライン分の画像データが必要となり、それらを記録するラインメモリ１０５が必要となる。ラインメモリ１０５から供給された画像データを演算回路１０６で処理する。演算回路１０６は、システムレジスタ１０１に設定された機能を実行し、ハードワイヤード方式で構成された演算回路構成を有する。ハードワイヤード方式ではあるが、システムレジスタ１０１の設定内容を変更することにより、多数の画像処理の演算アルゴリズムを実行することができる。演算回路１０６で処理された結果は出力回路１０７に出力され、バスインタフェース回路１０８経由で主記憶２０９に供給されるか、ラインメモリ１０５に書き戻さえるかの二通りから一つが選択される。この選択設定は、マイクロコントローラ１０２で制御が可能である。主記憶２０９に書き戻された処理結果は、例えば図１の画像データＣとして管理され、パターン認識などの処理に使用される。一方、ラインメモリ１０５に書き戻された処理結果は、再度、演算回路１０６に供給され、別の処理に使用される。
【００４９】
本実施形態の画像処理方式では、入力回路１０４が主記憶２０９からデータを取得して、ラインメモリ１０５にライン毎に記録して、演算回路１０６で画像処理する。ここで、ラインメモリ１０５は記憶領域として論理上直列な記憶ラインを複数有し、前記システムレジスタ１０１等で指定された前記記憶ラインに入力データを書き込み書き込まれたデータの読出しが可能とされる。更に詳しくは、図７に例示されるように、ラインメモリ１０５は、メモリアレイ（ＭＡＲＹ）７０、データ入力バッファ（ＤＩＢ）７１、データ出力バッファ（ＤＯＢ）７２、及びアドレスやアクセス動作形態を制御するメモリ制御回路（ＭＣＮＴ）７３によって構成される。図７においてメモリアレイ７０はＭＬ０−ＭＬｎの記憶ラインを備える。ＡＣＵＮＴ０−ＡＣＵＮＴ４はメモリアレイ７０に対するアドレスポインタとして機能するアドレスカウンタである。アドレスカウンタＡＣＵＮＴ０−ＡＣＵＮＴ４の値がメモリアレイ７０に対するアクセスアドレスになる。夫々のアドレスカウンタＡＣＵＮＴ０−ＡＣＵＮＴ４の意義については後述する。
【００５０】
演算回路１０６はラインメモリから出力された単数又は複数の前記記憶ラインのデータを前記システムレジスタにより指定された処理内容で演算処理単位毎に演算して出力する。例えば、３×３ウィンドウ、５×５ウィンドウといった処理サイズに応じて、局所的な領域のデータを用いて一画素に対応する処理結果を取得するのに、一度演算処理単位で処理をする方式が一般的であり、この場合に、ラインメモリを使用して、一ラインを単位とする処理を行なうことが一般的であるので、ここでもそれに対応する。具体的にはｋ×ｋ個の演算ユニットＵＮＴ及び夫々の演算ユニットＵＮＴによる演算結果を加減算する加算器を有し、指定されたｉ×ｉ個の演算ユニットＵＮＴを用い、ｉ本の記憶ラインから供給されるｉ×ｉ個のデータを並列処理しその処理結果を加算して出力する、というような並列演算が可能にされる。
【００５１】
図１において、同期化回路１０３は、入力回路１０４から画像処理に使用するデータの転送開始と終了を画面毎、およびライン毎に受け取る。また、演算回路１０６からの処理結果有効信号を受け取り、ライン単位の処理に必要となる処理の開始と終了を判断する同期信号を生成し、マイクロコントローラ１０２に出力する。マイクロコントローラ１０２では、一ラインの処理が終了すると次のラインの処理内容、ラインメモリからの読み出し箇所、処理結果の記録箇所などの指定を、システムレジスタ１０１の設定更新によって行い、次の一ラインの処理を制御する。
【００５２】
このとき、入力回路１０４は、システムレジスタ１０１内に記録されている主記憶２０９上の処理対象画像データのスタートアドレスを参照し、設定されたアドレスの範囲のデータを、バスインタフェース１０８経由で一ライン毎に読み込む。
【００５３】
以上の動作を纏めると、ラインメモリ１０５は、入力回路１０４よりデータを受け取り、システムレジスタ１０１により設定される動作モードに従って、ラインメモリ１０５にその値を保持し、さらには演算回路１０６にデータを出力する。演算回路１０６は、ラインメモリ１０５からデータを受け取り、システムレジスタ１０１で設定された演算種別の演算を行う。出力回路１０７は、演算回路１０７からのデータを受け取り、必要に応じてシフト処理等を行い、システムレジスタ１０１の設定に従って、演算回路１０７による処理結果をラインメモリ１０５へ書き戻し、又は、バスインタフェース１０８経由で主記憶２０９へ出力する。したがって、前記制御レジスタ１０１及びマイクロコントローラ１０２は、指定した記憶ラインのデータを記憶ライン単位で前記ラインメモリ１０５から前記演算回路１０６に出力させ、演算回路１０６はラインメモリ１０５から出力された単数又は複数の前記記憶ラインのデータを前記システムレジスタ１０１により指定された処理内容で演算処理単位毎に繰り返し演算する。
【００５４】
画像処理装置の更に具体例を説明する。図３はシステムレジスタ１０１の構成例である。図３において、システムレジスタ１０１は、マイクロコントローラ設定レジスタ（ＭＣｒｅｇ）３０１、同期回路設定レジスタ（ＳＹＮＣｒｅｇ）３０２、入力回路設定レジスタ（ＩＮｒｅｇ）３０３、ラインメモリ設定レジスタ（ＬＭｒｅｇ）３０４、演算回路設定レジスタ（ＡＲｒｅｇ）３０５、出力回路設定レジスタ（ＯＵＴｒｅｇ）３０６、及びバスインタフェース設定レジスタ（ＢＩＦｒｅｇ）３０７を有する。３０８はデータバス、３０９はアドレスバスを意味し、夫々のレジスタに対する書き込み経路を意味し、各種レジスタに設定された制御データが制御信号として対応する内部回路に伝達される制御信号経路については図示を省略してある。
【００５５】
マイクロコントローラ設定レジスタ３０１は、マイクロコントローラ１０２の動作開始等の指示を行ったり、マイクロコントローラ１０２のステータス情報を知るためのレジスタである。
【００５６】
同期回路設定レジスタ３０２は、同期を監視すべき対象についての、動作開始指示や同期とる（waitする）ことを指示するためのレジスタである。本実施形態が、一ライン毎に処理を実施し、一回の実施毎に処理の内容と演算結果の記録先を変更することができる。そのために必要な処理の開始、終了を一ライン毎に把握する機能に対する設定が行なわれる。
【００５７】
入力回路設定レジスタ３０３は、入力回路１０４が主記憶２０９へ出力するアドレスを生成するために必要な値を保持するためのレジスタである。具体的には、処理対象の画像データが主記憶２０９のどこに格納されているか、処理する画像データの横方向の画素数、縦方向の画素数などが設定される。
【００５８】
ラインメモリ設定レジスタ３０４は、ラインメモリの構成制御を行うレジスタである。ラインメモリ１０５は、処理内容や処理方式によってラインメモリを使用しない場合もある。実施形態では、汎用の画像処理装置を想定しており、ラインメモリの使用方法と、マイクロコントローラの制御を許可するかなどについて、必要な設定が行われる。
【００５９】
演算回路設定レジスタ３０５は、演算の種別を設定するためのレジスタである。画像処理機能や、それぞれの画像処理で必要になるパラメータを含んでいる。また、一部の処理結果に関しては、演算回路１０６の処理結果を格納するレジスタも存在する。
【００６０】
出力回路設定レジスタ３０６は、演算結果を出力する際に、ラインメモリ１０５へ出力するか、あるいはバスインタフェースＢＩＦ経由で外部に出力するかを切替えたり、あるいは、演算結果をシフトダウンするといった処理の指示を指定するためのレジスタである。バスインタフェース設定レジスタ３０７にはバスインタフェースの動作に必要な設定が行われる。
【００６１】
図４にはマイクロコントローラ１０２の構成例が示される。図４において、４０１はマイクロプログラム保持回路（ｐｒｏｇ）、４０２はプログラムカウンタ（ＰＣ）、４０３〜４１７はレジスタＲ０−Ｒ１４、４１８は命令デコーダ（ＩＤ）、４１９は実行回路（ＥＸＥ）である。このマイクロコントローラ１０２は、プログラムによってシステムレジスタ１０１にアクセスをして、ラインメモリ１０５の制御、画像処理の機能の選択、パラメータの設定、出力データの格納場所を選択することができる。このマイクロコントローラ１０２がライン毎に制御内容を決定し、さまざまな処理を組み合わせ、ハードワイヤード方式で実装された演算回路１０６の機能を大幅に拡張している。
【００６２】
マイクロプログラム保持回路４０１は、主記憶２０９からマイクロプログラムを読込み、保持するための回路である。プログラムカウンタ４０２は、マイクロプログラム保持回路４０１に格納されたプログラムのうち、現在実行中のアドレスを指すポインタである。レジスタ４０３〜４１７は、マイクロプログラムの中で参照されるレジスタであり、一部は汎用的に使われ、また一部は特定の機能を有するレジスタである。命令デコーダ４１８は、現在実行中の命令を解釈するための回路である。実行回路４１９は、命令解釈により、制御信号を生成し、また、レジスタの更新値を生成するための回路である。
【００６３】
図５には同期化回路１０３の構成例が示される。図５において、５０１は入力同期回路（ＩＮｓｙｎｃ）、５０２は演算処理同期回路（ＡＲｓｙｎｃ）である。５１０はマイクロコントローラ１０２、システムレジスタ１０１とのインタフェース信号を代表し、５１１はマイクロコントローラ１０２とのインタフェース信号を代表する。５１２は入力回路１０４とのインタフェース信号を代表し、５１３は演算処理回路１０６とのインタフェース信号を代表する。
【００６４】
入力同期回路５０１は、入力回路１０４について、設定された同期を監視するための回路である。入力回路１０４は、主記憶２０９からデータを１ライン分読み込む回路である。入力回路１０４に指示することにより、１ライン分読見込む動作の起動を行うことができる。また、入力回路１０４によって、１ライン読み終えたことが検出されると、それが割り込み要求等としてマイクロコントローラ１０２に伝えられる。
【００６５】
演算処理同期回路５０２は、演算処理回路１０５について、設定された同期を監視するための回路である。演算処理回路１０５において、１ライン単位の演算を可能にするため、演算処理同期回路５０２によって、１ライン分の演算の起動が指示され、１ライン分の演算の完了が検出された場合には、演算処理同期回路５０２がその旨を割り込み要求等によってマイクロコントローラ１０２に伝える。
【００６６】
図６には入力回路１０４の構成例が示される。図６において、６０１、６０３はカウンタ（ＩＮＣＵＮＴ）、６０２、６０４は入力データ保持回路（ＩＤＲＥＧ）、６０５は同期判別回路（ＳＹＮＣＤＥＴ）である。カウンタ６０１、６０３は、あらかじめ設定された初期値から最終値まで、カウントアップするカウンタであり、これが主記憶２０９に対するリードアクセスのアドレスとして出力される。カウンタ６０１，６０３には画像処理の対象となる画面先頭（もしくはライン先頭）のアドレスが初期設定され、それを初期値として順次インクリメント動作を行って主記憶２０９上の画像データのメモリアドレスを生成する。生成されたメモリアドレスによって主記憶２０９から読出されたデータは入力データ保持回路６０２、６０４に順次保持される。同期判別回路６０５は１ラインのデータがデータ非時回路６０２，６０４に保持されたことをメモリアドレスから判別し、その結果を同期化回路１０３に与えてラインメモリ１０５に記憶ライン単位でデータを取り込み可能にする。ここで、入力データ保持回路６０２，６０４、カウンタ６０１、６０３の夫々は一対用意されているのは、画像処理によっては、異なる画像間の演算が必要になるためである。ラインメモリが、並列動作可能なハードウェアを一対備えている場合には、異なる画像を並列にラインメモリに蓄積して、演算処理を実行させることができる。６１２はマイクロコントローラ１０２及びシステムレジスタ１０１に接続する信号線を代表的に示し、６１３は同期化回路１０３に接続する信号線を代表的に示し、６１１１はラインメモリに接続する信号線を代表的に示し、６１０はバスインタフェース１０８に接続する信号線を代表的に示す。
【００６７】
図７はラインメモリ１０５の構成例を示す。記憶ラインＭＬ０〜ＭＬｎの規模は論理的に可変であり、例えば、１０２４バイト×４本、又は１２８バイト×３２本という構成を選択できる。演算処理モードの場合、ラインメモリの外からのデータを書きこむ場所（どの記憶ラインか）やラインメモリの外に出力するデータの場所（どの記憶ラインか）の初期値は、マイクロコントローラ１０２で制御可能なシステムレジスタ１０１により設定される。また、あるライン上のどこに書き込まれるか等のライン上のアドレスは、ラインメモリ内にあるカウンタＡＣＵＮＴ０〜ＡＣＵＮＴ４がその動作形態に応じて指定する。ラインメモリは、通常書き込みと読み出しを並行可能なデュアルポートメモリによって構成されており、画像データを読み出しながら、処理結果を書き込むことが可能である。そのために必要なアドレス生成や動作モードの制御はアクセスコントローラ７３が行う。アクセスコントローラ７３は記憶ラインＭＬ０〜ＭＬｎを単なるＦＩＦＯ動作させる動作形態の選択も可能になっており、その選択はシステムレジスタ１０１の設定で決まる。
【００６８】
図８には演算回路１０６の構成例が示される。演算回路１０６は、通常画像処理モードの場合には、画像処理演算のために３×３のフィルタ演算や５×５のフィルタ演算が可能になっている。図８では、一つの矩形が一つの演算機能を果たす回路（演算ユニットＵＮＴ）であり、例えばフィルタ処理の場合、一つの演算ユニットＵＮＴブロックは積和演算を実行することができる。画像処理機能の設定やパラメータ設定は、システムレジスタ１０１で制御され、様々な処理が実装可能である。また、演算処理モードの場合には、前述のフィルタ演算のための演算回路の構成を論理的に変更し、例えば５×５で合計２５個の積和回路がある場合、最大２５並列までの積和演算が可能となる。この演算回路１０６は、ハードワイヤードロジック方式で実装されることが一般的であるが、ラインメモリの構成やフィルタのパラメータ、専用ハードウェアなどを実装することで汎用的な画像処理機能を実現することができる。その回路規模は、汎用のプロセッサを複数搭載して同等性能を実現するよりも十分に小さいハード物量で実現が可能である。
【００６９】
図９には出力回路１０７の構成例が示される。出力回路１０７はシフタ（ＳＨＦＴ）９０１とセレクタ（ＳＬＣＴ）９０２を有する。９１０はマイクロコントローラ１０２及びシステムレジスタ１０１に接続される信号を線を代表的に示す。９１１は演算回路１０６回路による演算結果を受取るための信号線を代表的に示す。９１２はバッフインタフェース１０８への接続経路、９１３はラインメモリ１０５への書き戻し経路である。シフタ９０１は、演算結果のシフトダウンを行うための回路である。例えば、８bit×８bitの演算を行った場合に、その結果は１６bitとなるが、それを８bitの数値としてまるめたい場合等に利用する回路である。セレクタ９０２は、演算結果をラインメモリ１０５に書き戻すか、あるいは、バスインタフェース１０８を通じて主記憶２０９に書き戻すか、を選択する回路である。ここでライン毎に処理結果をラインメモリ１０５に書き戻す機能を実現することによって、処理結果を演算途中の結果として利用することが可能となり、マイクロコントローラ１０２によって基本的な画像処理機能を組み合わせて、高度な画像処理を実現することができる。
【００７０】
図１０にはマイクロコントローラの命令セットが抜粋される。
【００７１】
ＭＶ命令は、データの転送命令である。データを第１オペランドのレジスタから第２オペランドのレジスタへ、或いは、値をレジスタへ、又は、レジスタの値をラベルが示すアドレスへ、それぞれ転送する。レジスタのデータコピー等に利用される。
【００７２】
ＡＤＤ命令は、第１オペランドのレジスタの値と第２オペランドのレジスタとの和を計算し、それを第２オペランドのレジスタに代入する命令である。レジスタのデータ加算等に利用される。
【００７３】
ＣＭＰ命令は、第１オペランドのレジスタの値と第２オペランドのレジスタの値とを比較し（差分をとり）、等しいか否かを条件フラグに反映させる命令である。この条件フラグは後述する分岐命令で利用される。
【００７４】
ＳＴ命令は、レジスタのデータをストアする命令であり、画像処理装置がアクセス可能なレジスタ空間のアドレスにレジスタの値を書きこむための命令である。
【００７５】
ＬＤ命令は、レジスタにデータをロードする命令であり、画像処理装置がアクセス可能なレジスタ空間のアドレスに記録された値を、指定されたレジスタに読み込むための命令である。
【００７６】
ＢＴ命令は、先に述べた、条件フラグが真のときに設定されたアドレスに分岐する命令である。
【００７７】
ＳＮＣ命令は、ライン毎に変化する信号を設定し、同期を採る命令であり、ライン毎に演算機能を切り替えるための同期をとるのに用いることができる。具体的には、オペランドに同期する処理を行なう機能ブロックを記述することにより、記述した対象の機能ブロックが処理をライン単位で処理終了する同期を監視するための命令である。その対象物のライン単位の動作が終わるまで、マイクロプログラムの実行はウェイトされる。なお、ここでいう機能ブロックとは、入力回路、演算回路を指す。例えば、画像処理を行う回路において、一ライン単位のデータに対する実行が終了されるのを待つのに利用する。
【００７８】
ＥＸＥ命令は、そのオペランドに機能ブロックを記述することにより、記述した対象の機能ブロックでライン単位の処理を実行するための命令である。記憶ライン単位の画像データの取り込み、又は画像処理の実行に用いられる命令であり、画像処理を行う回路において、一ライン単位の実行を指示する命令として位置付けることができる。
【００７９】
ＩＮＴ命令は、マイクロコントローラ１０２が必要に応じて、上位のＣＰＵ２０８に割り込みを発生するための命令である。上位のＣＰＵ２０８では、画像認識の処理を行っており、画像処理装置２０１とは独立に動作する。そのため、画像処理の要求が上位ＣＰＵ２０８で発生し、画像処理装置２０１が画像処理を行い、その終了を画像処理装置２０１がＣＰＵ２０８に通知する必要がある。この通知をマイクロコントローラ１０２がプログラム動作によって発生することにより、より効率的な並列処理が可能となる。例えば、従来はハードウェアによる終了通知だったため、予め設計されたタイミング以外では通知をすることができなかった。予めの設計段階で、全ての想定される画像処理を考えることは困難であるため、新しい機能を実現した際に対応できず無駄が発生する可能性がある。この例では、マイクロプログラムによって制御することにより、様々な演算を実装することができる。そして、条件分岐などを実行し、ある場面で上位ＣＰＵ２０８に割込み発生をかけて、画像処理結果に対する処理や処理中の演算実行を中止するなどの、適切な処理をプログラムすることが可能となる。例えば、ＣＰＵ２０８と画像処理装置２０１が独立に処理を実行しなければならないとき、画像処理装置が処理中の任意の状態を、ＣＰＵ２０８に通知して、画像処理装置２０１の演算終了を待たずに、ＣＰＵ２０８が処理結果に対するアクセスを開始することができる。
【００８０】
図１１にはマイクロコントローラのプログラムで利用できるレジスタの機能が例示される。マイクロコントローラ１０２がライン毎に演算回路１０６の機能を変更できることを実現するために、記憶ライン毎のメモリアクセスの情報、画像処理の演算機能の設定、画像処理の演算に必要なデータのライン数などを記録するレジスタを保有している。
ＰＣは、プログラムカウンタであり、現在実行中の命令の場所を示す特別なレジスタ。
R０〜R７は、汎用レジスタであり、マイクロプログラム中での一時データの保持に使えるレジスタである。
R８は、ラインメモリのリードポインタのためのレジスタであり、ソースのＡ側のレジスタである。
R９は、ラインメモリのリードポインタのためのレジスタであり、ソースのＢ側のレジスタである。
R１０は、ラインメモリに予め画像処理に必要なデータを記録しておく情報量を指定するレジスタである。
R１１は、画像処理に必要な画像データのライン数が複数本ある場合に、マイクロプログラムがそれを把握するために必要なデータを記録するレジスタである。例えば、必要なライン数であったり、現在読み込んでいるラインメモリのライン位置であったりする。
Ｒ１２は、入力回路１０４からのデータ取り込み先のＡ側用であり、Ｒ１３は入力回路１０４からのデータ取り込み先のＢ側用である。
Ｒ１４は、 出力回路１０７からのデータ取り込み先である。
Ｒ１５は、スタックポインタである。
【００８１】
図１２には画像処理装置２０１を用いた処理の一例として画像認識処理の流れが例示される。図１２では、原画像に対して、ノイズ除去を目的として、５×５ウィンドウの平滑化処理を行い、その結果画像に対して、輪郭強調処理を行う。輪郭強調処理では、３×３ウィンドウとする。最後に輪郭強調された結果画像に対して二値化処理を行い、物体の輪郭を抽出する。このような処理は画像認識では、頻繁に行われる一連の処理である。平滑化処理は５×５ウィンドウの画像データのピクセル値を平均化して、中心ピクセルの値とするコンボリューション演算によって行われる。この平滑化処理においては５×５ウィンドウのデータが演算処理単位のデータとなる。
【００８２】
図１４には図１２の画像処理におけるラインメモリの利用状態が示される。ラインメモリ１０５の記憶ラインＭＬi〜ＭＬi+4の５ラインに原画像のデータを格納して５×５の平滑化処理を行い、平滑化処理結果の格納にはラインメモリ１０５の記憶ラインＭＬj〜ＭＬj+2の３ラインを用い、３ライン単位で輪郭強調を行い、輪郭強調された画像データの格納には記憶ラインＭＬkを用い、当該記憶ラインＭＬk単位で２値化を行う。２値化された画像データはライン単位で記憶ラインＭＬm以下に格納され、所要のタイミングで主記憶２０９に転送される。
【００８３】
例えば、記憶ラインＭＬi〜ＭＬi+4に画素データラインＰＸＬ０〜ＰＸＬ４が格納されるとすると、それに対して５×５の平滑化処理のためのコンボリューション演算が行われ、演算結果はその中心画素の画像データとして記憶ラインＭＬｊに格納され、順次、５×５の演算処理単位を１ピクセルずつ右方向にずらしながらコンボリューション演算を行ってその演算結果を記憶ラインＭＬｊの隣の画素位置に格納していく、という演算を記憶ラインＭＬi〜ＭＬi+4の右端まで行う。この状態でＭＬjには画素データラインＰＸＬ２における平滑化データＣＭＢ２が取得される。この次は、不用になった画素データラインＰＸＬ０のデータを無効にしてＭＬiに、次の画素データラインＰＸＬ５のデータを格納し、今度は画素データラインＰＸＬ１〜ＰＸＬ５に対して同じく平滑化処理を行なって、ＭＬj+1に画素データラインＰＸＬ３における平滑化データＣＭＢ３を取得する。この次も同様に、不用になった画素データラインＰＸＬ１のデータを無効にしてＭＬi+1に、その次の画素データラインＰＸＬ６のデータを格納し、今度は画素データラインＰＸＬ２〜ＰＸＬ６に対して同じく平滑化処理を行なって、ＭＬj+2に画素データラインＰＸＬ４における平滑化データＣＭＢ４を取得する。
【００８４】
３画素ライン分の平滑化データＣＮＢ２〜ＣＭＢ４が取得されたとことで、今度は、それに対して３×３の輪郭強調処理のための演算が行われ、演算結果はその中心画素の画像データとして記憶ラインＭＬkに格納され、順次、３×３の演算処理単位を１ピクセルずつ右方向にずらしながら輪郭強調演算を行ってその演算結果を記憶ラインＭＬkの隣の画素位置に格納していく、という演算を記憶ラインＭＬkの右端まで行う。この状態でＭＬkには画素データラインＰＸＬ３における輪郭強調データEＭP３が取得される。
【００８５】
輪郭強調データEＭP３が取得されたとことで、今度は、それに対して２値化を行って記憶ラインＭＬｍに格納する。以上の動作を順次繰り返して、記憶ラインＭＬm以下に２値化データを蓄積していく。
【００８６】
上記処理において、図７のアドレスカウンタＡＣＵＮＴ０，ＡＣＵＮＴ１は記憶ラインＭＬi〜Ｍi+4に順次右方向へ画素データを書き込むためのアドレスを生成するライトポインタとして機能される。ＡＣＵＮＴ０とＡＣＵＮＴ１の２個のカウンタを備えるのは複数ウインドウの画像データを並列に書き込む場合を想定する。アドレスカウンタＡＣＵＮＴ２は記憶ラインＭＬi〜Ｍi+4から順次右方向に５画素の画素データを読み出すためのアドレスを生成するリードポインタとして機能される。アドレスカウンタＡＣＵＮＴ３は記憶ラインＭｊに平滑化データを順次書き込む画素位置を生成するアドレスポインタとして機能される。アドレスカウンタＡＣＵＮＴ４は記憶ラインＭＬj〜Ｍj+2から順次右方向に３画素の画素データを読み出すためのアドレスを生成するリードポインタとして機能される。図示は省略するが、その他に、記憶ラインＭＬk、ＭＬm等に対するライトポインタやリードポインタとして機能されるアドレスカウンタも設けられている。記憶ラインの指定はシステムレジスタ１０１への設定で決まる。
【００８７】
尚、２値化処理の演算結果を直接出力回路から主記憶２０９に出力してもよい。このときには、２値化演算結果を一時的に出力回路１０７のシフタ９０１に一時的に蓄積してゆき、1ライン分蓄積されたところで、主記憶２０９に向けて書き込み動作を行えばよい。
【００８８】
図１５には本実施形態で説明したマイクロプログラムで制御する処理フローを示す。処理の開始前に、ＣＰＵ２０８に制御によってマイクロプログラムをマイクロプログラム保持回路４０１に格納する。そして、画像処理を行う段になって、ＣＰＵ２０８から起動の指示をレジスタ設定によって行うことで処理を開始する。マイクロプログラムに記述されている最初の命令は、５×５ウィンドウの平滑化処理を行うため、ラインメモリの５本の記憶ラインに処理対象の画像データを格納するところから始まる。これは、入力回路１０４で指定された処理開始のアドレスから、データを読み込み（Ｓ０１）、図１１で説明したR１２,R１３のレジスタで指定したラインメモリのアドレスに格納される。マイクロコントローラ１０２は同期をとるコマンドＳＮＣ（図１０参照）で、５ラインの入力を待つ。このとき、１ラインづつ待つプログラムでも良いし、５ライン纏めて待つようにすることも可能である。５ラインの読込み終了待ちの処理ステップ（Ｓ０２）を終えて、ラインメモリに５×５ウィンドウの平滑化処理が可能なデータが格納されたら、平滑化処理を起動する（Ｓ０３）。このとき、マイクロコントローラ１０２は、ＭＶやＬＤといった命令を用いて、演算回路１０６が処理する画像処理機能を平滑化処理に設定する。マイクロコントローラは処理を起動した後、同期をとるコマンドＳＮＣで再び、１ライン終了を待つ。平滑化処理の結果は、図１１のR１４に指定したラインメモリに格納する。平滑化処理を１ライン処理している間に、次の１ラインを読み込む(S０４)。次の処理がデータを３ライン必要とする３×３ウィンドウの輪郭強調処理となっているため、平滑化処理を３ライン終了するまで、１ラインづつ処理を繰り返す（S０５）。３ライン処理が終了した段階で、輪郭強調処理が可能となるため、マイクロコントローラ１０２はレジスタアクセスのコマンドを使用して、演算回路１０６の機能を輪郭強調処理に変更し、１ライン分輪郭強調処理を実行する（S０６）。このときも平滑化処理の設定と同様にR１４のレジスタに設定したラインメモリに結果を格納する。その結果に対して、マイクロコントローラ１０２は再度演算回路１０６の機能を二値化処理に変更し処理を行う（Ｓ０７）。処理結果は、出力回路１０７を経由して、主記憶ＲＡＭ２０９に格納される。こうして、１ライン分の一連の処理が終了する。必要ラインに対して全て処理を行なっていないとき（Ｓ０８のNo）、マイクロコントローラ１０２は、再度、主記憶RAM２０９から次の１ライン分のデータをラインメモリに格納する（Ｓ０９）。既にこの一覧を読み込んだ際は、５×５ウィンドウの平滑化処理を実行可能なため、新しい５ライン分のデータが揃った時点で平滑化処理を開始する。平滑化処理を１ライン処理した段階で、輪郭強調処理も３ライン分のデータが既に格納されたこととなり、次の処理をする準備が整っているので、マイクロコントローラによって演算回路１０６の機能を切り替えて輪郭強調処理を実行する。さらに、引き続き二値化処理を実行し、新たな１ライン分の処理結果を主記憶ＲＡＭ２０９に格納する。１ライン処理が終了したので、再度同様の処理を繰り返し行い、必要ライン数処理しかたをチェックして（Ｓ���８）、処理を続ける。必要ライン処理した場合は、その後処理終了して、図１０のＩＮＴ命令によってＣＰＵ２０８に割り込みを発生し、一連の画像処理が終了したことを伝える。
【００８９】
以上のように、ラインメモリ２０１は記憶ライン単位という制約を受けて外部からデータを入力し、入力する記憶ライン数と記憶ラインの位置をシステムレジスタ１０１の設定値及びマイクロコントローラ１０２の制御回路によりプログラマブルにでき、演算回路１０６はラインメモリ１０５から供給される単数又は複数の記憶ラインのデータ単位で演算を行うという制約を受け、そのデータ単位に対する演算処理単位の演算処理内容を制御回路によりプログラマブルに指定することができる。したがって、画像処理装置２０１には、ハードワイヤードロジック方式の高効率な処理と、汎用プロセッサの柔軟性をもった処理を同時に実現することができる。
【００９０】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００９１】
例えば、上記説明では画像認識を画像処理の一例として説明したが本発明おはそれに限定されない。また、画像認識処理として平滑化、輪郭強調、２値化を一例としたが、これについても本発明は限定されない。画像処理装置は１チップのアクセラレータとして構成されてもよい。システムＬＳＩにオンチイプされる回路モジュールは図１に限定されない。
【図面の簡単な説明】
【００９２】
【図１】図１は本発明に係る画像処理装置を例示するブロック図である。
【図２】図２は本発明に係るデータプロセッサを例示するブロック図である。
【図３】図３はシステムレジスタの構成を例示するブロック図である。
【図４】図４はマイクロコントローラの構成を例示するブロック図である。
【図５】図５は同期化回路の構成を例示するブロック図である。
【図６】図６は入力回路の構成を例示するブロック図である。
【図７】図７はラインメモリの構成を例示するブロック図である。
【図８】図８は演算回路の構成を例示するブロック図である。
【図９】図９は出力回路の構成を例示するブロック図である。
【図１０】図１０はマイクロコントローラの命令セットを抜粋して示す説明図である。
【図１１】図１１はマイクロコントローラのプログラムで利用できるレジスタの機能を例示する説明図である。
【図１２】図１２は画像処理装置を用いた処理の一例として画像認識処理による大まかな処理の流れを例示する説明図である。
【図１３】図１３はデータプロセッサのメモリ空間を示すメモリマップ図である。
【図１４】図１４は図１２の画像処理におけるラインメモリの利用状態を示す説明図である。
【図１５】図１５は画像処理装置による画像認識処理の動作を例示するフローチャートである。
【符号の説明】
【００９３】
１０１  システムレジスタ
１０２  マイクロコントローラ
１０３  同期化回路
１０４  入力回路
１０５  ラインメモリ
１０６  演算回路
１０７  出力回路
１０８  バスインタフェース
２０１  画像処理装置
２０２  チップ内バス
２０３  周辺インタフェース
２０４  リードオンリーメモリ(ROM)
２０５  表示回路
２０６  主記憶インタフェース
２０７  ビデオ入力回路
２０８  ＣＰＵ
【図１】
2010086497.tif 000003
【図２】
2010086497.tif 000004
【図３】
2010086497.tif 000005
【図４】
2010086497.tif 000006
【図５】
2010086497.tif 000007
【図６】
2010086497.tif 000008
【図７】
2010086497.tif 000009
【図８】
2010086497.tif 000010
【図９】
2010086497.tif 000011
【図１０】
2010086497.tif 000012
【図１１】
2010086497.tif 000013
【図１２】
2010086497.tif 000014
【図１３】
2010086497.tif 000015
【図１４】
2010086497.tif 000016
【図１５】
2010086497.tif 000017