説明

演算装置

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、画像処理アルゴリズムを簡潔に表現可能な点集計型演算記述を効率よく実行する演算装置に関する。
【0002】
【従来の技術】従来の画像処理装置は、膨大な画素数を持つ画像の各画素の処理方法を指定する形のプログラムで駆動されるため、プログラムは複雑で大量になりがちであり、プログラム作成の負担が大きかった。用意されたライブラリのプログラムだけを実行する画像処理装置も存在するが、その場合処理可能なプログラムの種類が限られるため、処理の柔軟性に問題があった。それに対し画像全体をオペランドとした点集計型演算と呼ばれる面型演算によるプログラム記述を用いれば、画像処理のプログラム作成の負担を大いに軽減可能であるが、従来そうした記述を効率よく実行できる画像処理装置は存在しなかった。
【0003】
【発明が解決しようとする課題】本発明は画像処理のプログラム作成の負担を大いに軽減可能な、画像全体をオペランドとする点集計型演算記述を効率よく実行できる画像処理装置を構成するために必要な演算装置を与えることを目的としている。
【0004】
【課題を解決するための手段】本発明の演算装置は、データa0,b0を格納するデータ格納手段A,Bを有し、a0とb0からデータc0を求め演算結果として出力する演算装置であり、計Nx×Ny個のデータc0の横と縦のデータ数Nx,Ny、計Xa×Ya個のデータa0の横と縦のデータ数Xa,Ya、計XB×YB個のデータb0の横と縦のデータ数XB,YB、c0の先頭データの格納場所を示す横と縦の座標値Xc,Yc、そして命令コードo1,o2とで構成される起動パケットKと、a0と、b0とを入力とし、jを0からNyまで1ずつインクリメントし、その各jに対しiを0からNxまで1ずつインクリメントし、そしてその各iに対し集計演算部Eに(Xc+i)の値、(Yc+j)の値、及びo2で構成される起動データHを出力するとともにyを0からYBまで1ずつインクリメントし、その各yに対しxを0からXBまで1ずつインクリメントし、その各xに対しAに(Xa×(y+j×(Ya−YB)/(Ny−1))+x+i×(Xa−XB)/(Nx−1))の値を持つアドレスAD1、Bに(XB×y+x)の値を持つアドレスAD2、点演算部Dにo1を出力する演算制御部Cと、ALUと乗算器とを持ち、AからAD1で読み出したデータA1、BからAD2で読み出したデータB1をo1に従って演算器を選択して演算し、その結果得られたデータD1を出力する点演算部Dと、CPU、加算器そして最大値検出器とを持ち、DからXB×YB個のD1を対象に、必要に応じH内の(Xc+i)の値、(Yc+i)の値を使用しながら、o2に従って選択して処理し、c0を構成する1データを生成する集計演算部Eとを有することを特徴としている。
【0005】
【実施例】本発明による演算装置Z(図1)をW個(Z(1)〜Z(W))使用して構成した実施例である画像処理装置Y(図4)について詳細に説明する。
【0006】Yは図4に示すように画像格納手段Mと、ホストプロセッサPと、4本のデータ転送手段BU0,BU1,BU2,BU3と、本発明による演算装置Z(図1)をW個(Z(1)〜Z(W))、それにディスプレイ装置L0、カメラ装置L1等からなる。L1からのデータはMまたはL0に送られ、MはPからのアドレスをもとにデータをBU1,BU2経由でZ(1)〜Z(W)に供給し、またZ(1)〜Z(W)はPからの起動データをBU0経由で受取り、演算を行った後に演算結果をBU3経由でM、P、あるいはL0に送るものとする。
【0007】以下ではa、b、cの3枚の画像について、まずaのcに対応する各画素acを決め(図11(a))、次にacの数だけのbを、各bの中心画素位置が各acの画素位置にくるようにaに重ね(図11(b))、その結果aとbで重なった画素同士でOP1の演算を行い(図11(c))、その結果得られた値を各bごとにOP2の演算によって集計し(図11(d))、それらの結果を各acに対応する各acの画素位置に代入する、という一連の処理(図11)をc=a{OP1,OP2}bと表現する点集計型演算記述Sを、Yを用いてどのように処理するかについて詳細に述べる。但しaをXA×YA、bをXB×YB、そしてcをXC×YC、の横と縦のデータ数を持つ画像とし、またaはL1を使用してあるいは以前の演算結果として既にMに格納されており、bはMに格納されているかまたはPが生成するものとする。
【0008】P(図5)ではまず
【0009】
【数1】


【0010】次に、OP1,OP2の演算を表すコードo1,o2、Xa(n)、Ya(n)、XB、YB、Nx(n)、Ny(n)、Xc(n)、そしてYc(n)を持つ起動パケットK(n)をBU0によって各Z(n)に送ると同時に、画像aの画素位置(Sx(n),Sy(n))を起点とする横と縦がXa(n),Ya(n)の領域内のXa(n)×Ya(n)個のデータa0(n)をMから読み出しBU1で各Z(n)に転送し、またMから読み出した画像bあるいはPが各Z(n)ごとに生成した画像b、の計XB×YB個のデータb0(n)をBU2で各Z(n)に転送する。
【0011】各Z(n)では、a0(n)をデータ格納手段Aに、b0(n)をデータ格納手段Bにそれぞれ格納した後、K(n)の内容に従い、記述Sの処理結果としての画像cの一部(W=1の場合は全部)、即ち横と縦の座標値がXc(n),Yc(n)の位置を起点とする横と縦がNx(n),Ny(n)の計Nx(n)×Ny(n)個の演算結果データc0(n)を生成するように、以下のように動作する。但し以下では簡単のため各Z(n)によるc0(n)や、各Z(n)へのa0(n),b0(n)、K(n)及びその内部のデータの記述は(n)を省略し、単にc0,a0,b0,K,Xa,Ya,XB,YB,Nx,Ny,Xc,Ycと記すとする(図6)。
【0012】演算制御部C(図1と図2)は、特許請求の範囲に記載のようにjを0からNyまで1ずつインクリメントし、その各jに対しiを0からNxまで1ずつインクリメントし、そしてその各iに対し集計演算部(図1と図3)Eに(Xc+i)の値、(Yc+j)の値、そしてo2で構成される起動データHを出力するとともにyを0からYBまで1ずつインクリメントし、その各yに対しxを0からXBまで1ずつインクリメントし、その各xに対しAに(Xa×(y+j×(Ya−YB)/(Ny−1))+(x+i×(Xa−XB)/(Nx−1))の値を持つアドレス、Bに(XB×y+x)の値をもつアドレス、点演算部(図1と図3)Dにo1を出力する。
【0013】Dはo1に従いD内のALUあるいは乗算器を選択し、CからのアドレスでA,Bから読み出したデータA1,B1に対し演算を行い、その結果D1をEに送る。
【0014】EはH内の(Xc+i)の値,(Yc+j)の値、それにDから送られてきた計XB×YB個のD1ごとを対象に、H内の演算コードo2に従い加算器、最大値検出器、あるいは汎用CPUを選択し演算を行い演算結果E1を出力する。例えばo2により加算器が選択された場合はXB×YB個のD1ごとの総和を、最大値検出器が選択された場合は計XB×YB個のD1ごとの最大値を、また汎用CPUが選択された場合はo2の指定するメモリ部の先頭アドレスから始まるプログラムで、H内の(Xc+i)の値,(Yc+j)の値、それにDから送られてきた計XB×YB個のD1ごとを対象に処理した結果を、E1として出力する。なお汎用CPUを選択した場合は必要に応じ記憶部Gを使用しながら演算を進めることになる。
【0015】E1は、例えばパケット作成部を設けCあるいはEからの(Xc+i)の値,(Yc+j)の値の情報をもらい、それらをもとにパケットRを作成しBU3に出力することで、E1をL0(ディスプレイ装置)、M、あるいはPにc0の1データとして転送する。また各Z(n)がそれぞれc0のデータをNx×Ny個出力すれば、記述Sの実行が完了したことになるので、そのことをPに知らせるために、各Z(n)のFがRをNx×Ny回出力した後に特殊の値を持ったRを一つ作成しBU3あるいはBU0を用いてPに転送するようにすればよい。
【0016】XA=YA=256,XB=YB=5,XC=YC=120,W=32の場合の例を図7〜図10に示す。図7は、Pで計算される1…32の各nに対するNx、Ny、Xa、Ya、Xc、Yc、Sx、Syの各値と、n=5の場合の諸値で構成されるK(5)を示している。また、図8はSx(5)=Sy(5)=42、Xc(5)=Yc(5)=15であることから、Z(5)に転送されるa0は座標位置(42,42)を開始点とした横と縦が9(=Xa),9(=Ya)の計81個のデータで構成され、Z(5)に転送されるb0は横と縦が5(=XB),5(=YB)の計25個のデータで構成され、またZ(5)から演算結果としてM,LあるいはPに返されるc0は座標位置(15,15)を開始点とした横と縦が3(=Nx),3(=Ny)の計9個のデータであることを示している。
【0017】図9は、a0の中でc0と対応する画素を白点(○)に正方形(□)の囲みで表示し、また0から2(=Nx−1)、0から2(=Ny−1)の各i,jの組み合わせにおいてx,yの変化で生成されるCのA、Bへのアドレスに対応するA,Bでの画素位置を太線で、またそれらのアドレスによって読み出される各a0,b0のデータA1,B1を、それぞれ黒点(●)と菱点(◇)で表現した。また各i,jの組み合わせでのx,yの変化に先立ち、CからEに出力されるHの内容も合わせて表示した。
【0018】図10は、一つのi,jの組み合わせに対するA,Bへのこれらの各5(=XB)×5(=YB)回の読み出しで得られたデータA1(●),B1(◇)が、D上でo1の演算によって5×5個のデータD1(□)に変換され、それらがさらにE上でo2の演算によって一つのデータE1(■)に変換される様子を示している。このE1は後にFやBU3等によって、(Xc+i)の値と(Yc+j)の値が指定する場所あるいはPへ転送される。
【0019】
【発明の効果】点集計型演算は、例えば画像に対する膨張、収縮といった非線形変換や距離変換、スケルトン検出等の処理ではOP1を乗算,OP2を最大値検出演算、画像の拡大処理ではb=aとしてOP1をビットごとの排他的論理和、OP2をビットごとの論理積、そしてエッジ強調、ラプラスフィルタ等のフィルタリング処理や弛緩法に基づく最適化処理(M.Kass et.al.,Snakes:Active Contour Models,International Journal of Computer Vision,321−331,1988参照)、画像復元(井宮他,多項式の性質を利用した画像記述法,電子通信情報学会技術報告PRU−86−99)等の処理ではOP1を乗算、OP2を加算とすることにより、従来では数十行から数ページにも及ぶそれらのプログラムを、数行あるいは数演算程度で表現できる。例えば距離画像を得るための点集計型演算記述は、aを処理対象画像、dtをaと同サイズで全画素値が0の画像、t3を3×3の全画素値が1画像とすると、下記のように4行で表現できる。
【0020】


なお、*<とは点演算に乗算、集計演算に最小値検出演算を行う点集計型演算子、またdt += aとは、dtとaの対応する画素同士の加算結果をdtの当該対応画素位置に代入する処理を意味する。
【0021】このように点集計型演算によるプログラム記述は、画像処理のアルゴリズムを大変簡潔に表現できる。これら以外でも、例えば動的計画法に基づくパターンマッチングやFFT等のようなより高度な処理も、OP2を関数の形で記述した点集計型演算を用いれば、従来と比べ大変簡潔なプログラム記述が得られる。
【0022】本発明の演算装置Zで構成される画像処理装置Yは、点集計型演算のような面型演算記述により大変簡潔に表現された画像処理プログラムをそのまま効率よく実行できる効果を持つ。Zは、点演算によく指定される乗算と算術論理演算のために両演算器を備えた点演算部Dと、集計演算によく指定される加算、最大値検出演算、そして関数の演算のためにそれらの演算を備えた集計演算部Eと、そしてD、Eの両演算部にオペランドと演算子とを同期して供給するために、画像間の対応点の計算とアドレスの生成、そして命令コードの供給を行う演算制御部Cとを組み合わせる構成をとることにより、点集計型演算を効率よく実行できる効果を持つ。そしてZを2個以上使用して構成される画像処理装置Yを用いれば、例えばc=a{OP1,OP2}bという点集計型演算記述の計算は、実施例に示したように計算をaのそれぞれの部分画像に対する点集計型演算に分解した上、各Zに演算を割り当て、それぞれが演算結果としてcの部分画像を生成するように処理を進めることが可能となる。その場合Yを構成するZの数を増やせば容易に処理速度の向上という効果が得られる。
【図面の簡単な説明】
【図1】本発明の画像演算装置の構成(点線内が本発明による新規部分)。
【図2】本発明の一部分である演算制御部。
【図3】本発明の一部分である点演算部と集計演算部。
【図4】本発明を用いた画像処理装置の例。
【図5】実施例の画像処理装置内にあるホストプロセッサの構成例。
【図6】実施例のホストプロセッサが発行する起動パケットの構成例。
【図7】実施例での処理の一部を説明した図。
【図8】実施例での処理の一部を説明した図。
【図9】実施例での処理の一部を説明した図。
【図10】実施例での処理の一部を説明した図。
【図11】点集計型演算における演算の手順を示した図。
【符号の説明】
なし

【特許請求の範囲】
【請求項1】データa0,b0を格納するデータ格納手段A,Bを有し、a0とb0からデータc0を求め演算結果として出力する演算装置において、計Nx×Ny個のデータc0の横と縦のデータ数Nx,Ny、計Xa×Ya個のデータa0の横と縦のデータ数Xa,Ya、計XB×YB個のデータb0の横と縦のデータ数XB,YB、c0の先頭データの格納場所を示す横と縦の座標値Xc,Yc、そして命令コードo1,o2とで構成される起動パケットKと、a0と、b0とを入力とし、jを0からNyまで1ずつインクリメントし、その各jに対しiを0からNxまで1ずつインクリメントし、そしてその各iに対し集計演算部Eに(Xc+i)の値、(Yc+j)の値、及びo2で構成される起動データHを出力するとともにyを0からYBまで1ずつインクリメントし、その各yに対しxを0からXBまで1ずつインクリメントし、その各xに対しAに(Xa×(y+j×(Ya−YB)/(Ny−1))+x+i×(Xa−XB)/(Nx−1))の値を持つアドレスAD1、Bに(XB×y+x)の値を持つアドレスAD2、点演算部Dにo1を出力する演算制御部Cと、ALUと乗算器とを持ち、AからAD1で読み出したデータA1、BからAD2で読み出したデータB1をo1に従って演算器を選択して演算し、その結果得られたデータD1を出力する点演算部Dと、CPU、加算器そして最大値検出器とを持ち、DからXB×YB個のD1を対象に、必要に応じH内の(Xc+i)の値、(Yc+i)の値を使用しながら、o2に従って選択して処理し、c0を構成する1データを生成する集計演算部Eとを有することを特徴とする演算装置。

【図1】
image rotate


【図2】
image rotate


【図3】
image rotate


【図5】
image rotate


【図6】
image rotate


【図8】
image rotate


【図4】
image rotate


【図10】
image rotate


【図7】
image rotate


【図9】
image rotate


【図11】
image rotate


【特許番号】第2661553号
【登録日】平成9年(1997)6月13日
【発行日】平成9年(1997)10月8日
【国際特許分類】
【出願番号】特願平6−163517
【出願日】平成6年(1994)7月15日
【公開番号】特開平8−30767
【公開日】平成8年(1996)2月2日
【出願人】(000004237)日本電気株式会社 (19,353)