JP2002304295A - 画像処理アプリケーション開発のためのブロック線図ベースのグラフィカルなアルゴリズム記述方法 - Google Patents

画像処理アプリケーション開発のためのブロック線図ベースのグラフィカルなアルゴリズム記述方法

Info

Publication number
JP2002304295A
JP2002304295A JP2001107683A JP2001107683A JP2002304295A JP 2002304295 A JP2002304295 A JP 2002304295A JP 2001107683 A JP2001107683 A JP 2001107683A JP 2001107683 A JP2001107683 A JP 2001107683A JP 2002304295 A JP2002304295 A JP 2002304295A
Authority
JP
Japan
Prior art keywords
block
processing
block diagram
computer
control
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2001107683A
Other languages
English (en)
Inventor
Makoto Toyotaka
誠 豊高
Takeshi Murata
剛 村田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
LINX CORP
Original Assignee
LINX CORP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LINX CORP filed Critical LINX CORP
Priority to JP2001107683A priority Critical patent/JP2002304295A/ja
Publication of JP2002304295A publication Critical patent/JP2002304295A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 (修正有) 【課題】 データの流れが判りやすいブロック線図ベー
スのグラフィカルなアルゴリズムの記述を可能とする。 【解決手段】機能単位である関数をブロックライブラリ
として提供し、ブロックを編集用のウインドウ上に配置
できるようにし、配置されたブロック間をデータフロー
により接続してコンピュータ上でアルゴリズムを構築す
るブロック線図を作成する。ブロック線図からコンピュ
ータプログラミング言語の自動生成等を行うことができ
る。ブロックライブラリには、繰り返し処理と条件処理
の制御ブロック52,54を用意し、制御ブロック5
2,54をプレートPの形で表現する。プレート上に関
数ブロックのアイコンを配置することができ、あるいは
プレート上に他のプレートを重ねることでコンピュータ
上に制御構造のネストを表現できるようにする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、画像処理アプリケ
ーション開発のためのブロック線図ベースのグラフィカ
ルなアルゴリズム記述方法に関し、更に特定すれば、主
に制御系のプログラム開発用CAEツールで使用される
グラフィカルなアルゴリズム記述方法のひとつであるブ
ロック線図を画像処理系にも適用するための改善の方法
に関する。
【0002】
【従来の技術】ソフトウエアプログラムの中で、繰り返
し使用するようなある纏まった機能(処理)を独立させ
たものを関数という。関数は通常、入力されたデータに
基づいてなんらかの処理を行い、処理されたデータを出
力する。記述言語にも依存するが、関数を呼び出して処
理を行うプログラムで関数を呼び出す場合、一般に下記
のように記述される。
【0003】戻り値名 = 関数名(入力変数名1, 入力変
数名2, ..., 出力変数名1, 出力変数名2, ...) 変数名、戻り値名は、データを格納する入れ物の識別名
であり、そのデータが格納されるメモリのアドレスを示
している。関数名も同様に、その関数(部分プログラ
ム)が始まるアドレスを指し、上位のプログラムがこの
関数を呼ぶと、関数の開始番地へジャンプし、関数内で
記述された処理を行って、その処理結果や戻り値を指定
されたアドレスに代入する。
【0004】例えば、円の面積を計算する関数を呼び出
すプログラムは、入力データの変数名をRとし、関数名
をArea、戻り値をE、出力変数名をSとすると下記のよう
になる。 R = 5.0 // Rという変数に5.0という値を設
定する E = Area (R, S) //Rを入力データとして関数Areaを
呼び出し、結果をSに格納
【0005】通常、ブロック線図とは関数をブロックで
表現し、データフローでデータの流れを表現するアルゴ
リズムの記述方法を指している。上記の関数をデータフ
ローによりデータの流れを記述するブロックとして表現
すると図8のようになる。上記のように、ブロック線図
では、一般に関数をブロック(図8参照)として表現
し、そのブロック(2)に入力するデータをブロックへ
のデータフロー(4)で、ブロック(2)からの出力デ
ータをブロック(2)からのデータフロー(6)で表
す。データフロー(4)(6)はデータがどのようにブ
ロック間を伝えられるかを示している。
【0006】図9において、外側の円の半径がR1=10c
m、内側の円の半径がR2=5cmの同心円の面積を求める計
算を、円の面積を求めるブロック(8)(10)およ
び、値を変数に設定するブロック(12)(14)、差
を計算するブロック(16)を使用して表現すると、図
9のようなブロック線図になる。上記の例の様に、デー
タフローはずべての処理の順番を決定するものでは無
い。処理の順番はABCDEでも、ACBDEでも良い。他方、通
常のプログラム言語を使用する場合には、処理の順番は
一意に決定するような表現になる。制御フローは、図1
0のように処理の順番を決定するフローを持ち(フロー
チャート)、通常はデータフローを持たない。
【0007】このため、処理の順番や処理の流れを明確
にすることは可能であるが、データがどのように処理さ
れるかを一見して、理解することが難しい。元来、ブロ
ック線図は、電子回路のアルゴリズムを第3者にもわか
り易く図的に表現するために使用されていた。そして、
この場合にはブロックは電子回路のハードウエア部品を
示し、フローは信号線を意味していた。このため、電子
回路で実現されていた制御部品を扱う制御工学の分野で
は、ブロック線図を使用してその制御アルゴリズムを表
現していた。
【0008】しかしながら、制御部品のソフトウエア化
(プログラム化)に伴い、プログラムのアルゴリズムを
示す表現として、転用されるようになった。ソフトウエ
アのアルゴリズムを表現する場合には、ブロックは、関
数(プログラムされたある単位の機能)をグラフイカル
に表現するために使用され、フローはデータの流れを示
すために使用された。そして、約20年前、このブロック
線図をコンピュータのGUI機能で編集でき、かつ編集し
たアルゴリズムのシミュレーションを行ってその検証が
行える制御系設計のためのCAEソフトウエアが開発され
た。
【0009】上記のソフトウエアでは、制御アルゴリズ
ム開発の歴史から、ブロック線図は下記のような記述方
法のみを提供していた。 * データフローのみのサポート * 条件分岐処理に関してはデータパススイッチブロック
のみをサポート * 繰り返し処理に関するブロックはサポートしない
【0010】一つのCPUを使用して、プログラムを逐次
に処理するソフトウエアでのアルゴリズムと異なり、電
子回路で実現されていたハードウエアによる制御アルゴ
リズムの場合には、並列に信号処理が行われるため、処
理の順番はそれほど重要では無く、ある回路ブロックが
処理を行うために必要な信号が前段の回路により準備さ
れていれば問題はなかった。また、条件判断も同様に、
並列で処理された複数の信号のどれを次ぎの回路ブロッ
クにパスすれば良いかを記述できれば良く、ソフトウエ
アの遂次処理のように、条件判断に従って、不要な処理
を行わない事が、処理の効率化になるという考え方は必
要なかった。
【0011】繰り返し処理に関しては、電子回路では、
常に連続的に信号が処理されており、その意味では、ブ
ロック線図で表現されたアルゴリズムは常に、連続で処
理される事を前提としていた。有限時間(有限回)の処
理も、上記のデータパススイッチブロックを使用して、
条件処理として記述する事ができた。このような事か
ら、ハードウエアの電子回路を表現する場合には、上記
のCAEソフトウエアの提供した記述方法のみで十分であ
った。
【0012】
【発明が解決しようとする課題】しかしながら、一つの
CPUで遂次処理を行う場合には連続で処理を行う事は不
可能であり、一連の処理を離散化し、連続処理の場合と
同様な効果が得られる一定時間毎(サンプリング周期)
にその処理を繰り返す事によりその機能を実現する。こ
れは、リアルタイム処理といわれ、繰り返しの時間間隔
内で処理する事が絶対条件である。そして、もし、その
時間間隔で処理が終了しない場合には、その機能は保証
されないため、処理はできるだけ高速に行われる必要が
あり、そのためには、できるだけ高速なCPUで、できる
だけ効率的なアルゴリズムを実行する事が必要になる。
【0013】他方で、量産化を考慮した場合、CPU等の
部品はできるだけ安価であることが要求されるが、安価
なCPUはそれだけ処理速度が遅く、その上で実行される
ソフトウエアプログラムの効率は製品の価格をも左右す
るほど重要な要素となる。上記のCAEソフトウエアの提
供するアルゴリズムの記述方法の場合、非リアルタイム
でのシミュレーションによってアルゴリズムの検証を行
うために使用するのであれば、データフローによって正
しい処理順が決定でき、データパススイッチによって、
条件処理が記述できれば、十分であり問題は発生しな
い。
【0014】しかしながら、そのブロック線図からリア
ルタイムで稼動するプログラムを自動生成する場合に
は、処理順の正しさに加えて、効率的なアルゴリズムが
記述できることが必要条件になる。図11に、上記制御
系CAEソフトウエアと同様にデータフローとデータパス
スイッチブロックをサポートするCAEソフトウエアでの
条件処理のブロック線図例を示している。
【0015】中央にある「Switch」ブロック(18)
(データパススイッチ)は、左端にある「Sin Wave」ブ
ロック(20)(Sin信号の生成)で生成された信号に
関して、「Abs」ブロック(22)(絶対値計算)処理
と「Saturation」ブロック(24)(飽和計算)処理の
両方を計算した後、実行開始からの時間が5秒以上かど
うかの条件により、「Mux」ブロック(26)(マルチ
プレクサ)に対して、前者の出力データを渡すか、後者
の出力データを渡すかの判断処理を行う。
【0016】この例では、開始後の時間が5秒までは、
後者「Saturation」ブロック(24)の出力データを渡
し、5秒以降は前者「Abs」ブロック(22)の出力デー
タを渡すアルゴリズムになっているため、5秒までは後
者の計算のみ、5秒後は前者の計算のみを行えば効率的
な処理アルゴリズムとなるが、データパススイッチブロ
ック(18)では、この例のように常に両方を計算する
ようなアルゴリズム記述になる。この例では、データパ
ススイッチブロック(18)に入力するデータを計算す
るための処理が少ないため全体の処理量から考えるとそ
れほど非効率的な処理にはなっていないが、条件処理の
複数のパスが複雑な計算処理を行う場合には、非常に効
率の悪いアルゴリズム記述になる。
【0017】このブロック線図をプログラムで記述する
と、次のようになり、Absの処理とSaturationの処理が
常に実行されるプログラムが生成される。 Y1=sin(t) //Sinブロックの処理 Y2=Abs(Y1) //Absブロックの処理 Y3=Saturation(Y1) //Saturationブロックの処理 If(t>5) //Switchブロックの処理(時間が5秒以降のパス) Y4=Y2 //Absブロックの結果をパス Else //Switchブロックの処理(時間が5秒以前のパス) Y4=Y3 //Saturationブロックの結果をパス Endif Y5=Mux(Y1,Y4) //Muxブロックの処理
【0018】効率的なソフトウエアアルゴリズムを記述
するためには、条件処理や繰り返し処理を記述するため
の制御ブロックを導入する必要がある。すなわち、条件
処理に関してはデータパススイッチのように、条件判断
のすべてのパスに関して処理を行った後に、必用なデー
タを選択するのでは無く、初めに条件判断を行い、その
条件で必要なデータを計算するパスのみを実行するよう
なアルゴリズムを記述できるようにする事が必要であ
る。また、繰り返し処理も同様で、必用な回数や条件が
成立する間のみ処理を繰り返す様に記述できる方が、効
率的なアルゴリズムの記述が可能になる。
【0019】しかしながら、データの流れを記述するブ
ロック線図に制御構造を記述する制御ブロックを導入す
る場合、多くの場合、ブロック間をデータフローで接続
できない部分が出来てしまう(図12参照)。ブロック
線図中にデータフローが接続できない部分が存在する
と、正しい処理の順序を決定する事ができなくなり、ア
ルゴリズムの記述方法として意味をなさない。このよう
な問題を解決するためには、データフローが接続できな
い部分を補完し、処理の流れを一意に指定できる記述を
導入する必要がある。従来ツールでは、そのような処理
順を指定する方法として制御フローを併用するものや、
データフローと制御フローを混在させたトークンを導入
したものが存在する。
【0020】データフローと制御フローを併用する記述
形式では、データフローから決まる処理順よりも制御フ
ローで指定される処理順を優先するように決める事がで
きるため、データフローから決まる幾つかの自由度のあ
る正しい処理順に対して、ユーザが明確に一意の処理順
を指定したい場合には、データフローが接続されている
ブロック間に関しても、制御フローを合わせて指定する
事が可能である。
【0021】上記の例に関して、従来からある画像処理
CAEソフトウエアの条件判断の制御構造を用いてブロッ
ク線図記述を行うと図12のようになる。実際には、上
記制御系CAEツールが提供するブロックとまったく同じ
機能のブロックが提供されているわけではないので、図
12はあくまで、表現方法の違いのみを示すためのもの
である。図12において、破線(28)(30)(3
2)は制御フローを示している。
【0022】この例のように、制御構造ブロック(条件
判断Ifブロック)を導入すると、データフローが接続で
きないブロックが存在することになり、処理の流れ(処
理順)を指定するために制御フローも合わせて導入する
か、本来データが伝達されるわけではないのに、無理や
りデータフローで接続するような表現が必要になる。
【0023】なお、上記従来例の画像処理CAEソフト
ウェアの場合、一度分岐した制御フローを統合するよう
なブロックが存在しないため、分岐後の複数のパスで同
一の処理を行う場合には、それぞれのパスに同一のブロ
ック記述を行う必要がある。図12の例では、Muxブロ
ック(34)(36)の処理が両方のパスに記述されて
いる。
【0024】上記の例に関して、従来形式のブロック線
図により生成されるプログラムは下記のようになると思
われる。このプログラムでは、実行開始からの時間の条
件により、どちらかの処理を行えば良いので、常に両方
の処理を行う場合に比較し、効率的な処理を行う事がで
きる。 Y1=sin(t) //Sinの計算 If(t>5) //If条件判断(時間が5秒以降のパス) Y2=Abs(Y1) //Absの計算 Y4=Mux(Y1,Y2) //Muxの計算 Else //Else条件(時間が5秒以前のパス) Y3=Saturation(Y1) //Saturationの計算 Y4=Mux(Y1,Y3) //Muxの計算 Endif
【0025】図13の例は、他の従来ツールが採用して
いるデータフローと制御フローを混在したトークンフロ
ーという表現方法でのブロック線図である。トークンフ
ローの場合、ブロック線図の全体のイメージはすっきり
した形になるが、データの流れと制御の流れが混在して
いるため、どのデータが実際にどこに渡されているか
を、一見して理解することが難しくなる。なお、この従
来ツールでは「Joint」ブロックをサポートしており、
分岐したトークンを一つに戻す事が可能である。
【0026】上記従来形式のブロック線図の場合には、
トークンというオブジェクト(または構造体)によるデ
ータの伝達であるが、記述されるプログラムは上記と同
様の構造になると思われる。以上述べてきたところから
明らかなように、今までのブロック線図をサポートする
ツールには、(a) データフローのみで、制御フローがサ
ポートされていない場合が多いため、処理の順番を明確
に指定する事が難しい。データフローでは、あるブロッ
クの処理に必要なデータが前のブロックによって計算さ
れている必要があることから、処理の順序が決定される
が、ブロックが複数の入力や出力を持つ場合には、ある
程度の処理順の自由度があり、ユーザが特に細かく処理
の順を指定する事ができないという特徴がある。
【0027】図14の例のSumブロック(40)では、
その入力が3つありこの入力データをどの順に生成する
かは、自由度がある。また、特に画像処理の分野では、
解析途中の結果をディスプレイ等の画面に表示する事が
多いため、その表示用の各種パラメータ設定を行う処理
多い。このような処理は前処理からのデータ入力や後処
理への出力データを持たないため、データフローがつな
がらない事が多い。このため、データフローのみで、処
理の順番を明確にすることが難しくなる。
【0028】(b) プログラム制御ブロックが提供されて
いない場合が多いため、効率的なアルゴリズムを記述で
きない。データフローのみのサポートの場合には、通
常、条件判断用の制御ブロックを導入することが難しい
ため、条件分岐処理には、データパススイッチブロック
が使用されるが、データパススイッチはそのブロックの
前の処理をすべて計算した後で、複数のデータパスから
どれかひとつのデータをパスする形でアルゴリズムを作
成する必要があるため、本来、その条件では計算しなく
ても良い処理まで計算しておく必要があり、演算効率の
良い処理を記述することができないという特徴がある。
【0029】(c) プログラム制御ブロックと制御フロー
がサポートされている場合でも、プログラム制御ブロッ
クが通常の関数ブロックと同様な形式のブロックとして
デザインされているため、繰り返し処理が行なわれる部
分がどこか、条件分岐が真の場合に実行されるのがどの
部分かを一見して理解する事が難しい。繰り返しや条件
分岐がネストしている場合には、更に判り難くなってし
まい、せっかくのグラフィカルな記述が意味を持たな
い。本発明は、上記問題点を解決することを目的とする
ものである。
【0030】
【課題を解決するための手段】上記目的を達成するた
め、本発明は、ある機能の単位である関数をコンピュー
タ上でブロックライブラリとして提供し、ユーザがこれ
らのブロックを編集用のウインドウ上に配置できるよう
に成し、配置されたブロック間をデータフローにより接
続してコンピュータ上でアルゴリズムを構築するブロッ
ク線図を作成できるように成し、このブロック線図から
コンピュータプログラミング言語の自動生成等を行うこ
とができるようにしたアルゴリズム記述方法であって、
コンピュータ上のブロックライブラリに、繰り返し処理
と条件処理の制御ブロックを用意し、該制御ブロックを
プレートの形で表現し、そのプレート上に関数ブロック
のアイコンを配置し、あるいはプレート上に他のプレー
トを重ねることでコンピュータ上に制御構造のネストを
表現できるようにしたものである。
【0031】また本発明は、前記条件処理の制御ブロッ
クは、IF、ElseIF、Else条件で実行される
複数の条件処理を記述できるように前記プレートをタブ
付きの複数プレート形式とし、そのタブが属するプレー
ト上にその条件が成り立つ場合の処理をブロックアイコ
ンにより構築できるようにしたものである。また本発明
は、前記プレート上に配置される関数ブロックのアイコ
ンに、データフロー接続ポートと制御フロー接続ポート
を設けたものである。
【0032】また本発明は、ある機能の単位である関数
をコンピュータ上でブロックライブラリとして提供し、
ユーザがこれらのブロックを編集用のウインドウ上に配
置できるように成し、配置されたブロック間をデータフ
ローにより接続してコンピュータ上でアルゴリズムを構
築するブロック線図を作成できるように成し、このブロ
ック線図からコンピュータプログラミング言語の自動生
成等を行うことができるようにしたアルゴリズム記述方
法であって、コンピュータ上のブロックライブラリに、
条件処理の制御ブロックを用意し、該制御ブロックをプ
レートとして表現し、そのプレート上に関数ブロックの
アイコンを配置しプレート上にその制御ブロックの条件
で実行される処理アルゴリズムを構築できるようにした
ものである。
【0033】また本発明は、ある機能の単位である関数
をコンピュータ上でブロックライブラリとして提供し、
ユーザがこれらのブロックを編集用のウインドウ上に配
置できるように成し、配置されたブロック間をデータフ
ローにより接続してコンピュータ上でアルゴリズムを構
築するブロック線図を作成できるように成し、このブロ
ック線図からコンピュータプログラミング言語の自動生
成等を行うことができるようにしたアルゴリズム記述方
法であって、コンピュータ上のブロックライブラリに、
繰り返し処理の制御ブロックを用意し、該制御ブロック
をプレートの形で表現し、そのプレート上に関数ブロッ
クのアイコンを配置することでコンピュータ上に指定さ
れた条件の間中くり返される処理アルゴリズムを構築で
きるようにするとともに、制御構造のネストを表現でき
るようにしたものである。
【0034】
【発明の実施の形態】以下に本発明の実施の形態を、添
付した図面を参照して詳細に説明する。図1(B)にお
いて、(42)は、ある関数の単位を構成する、制御フ
ローとデータフローをサポートするブロックであり、コ
ンピュータ上にアイコンの形でブロックライブラリとし
て提供される。ユーザは、これらのブロック(42)を
編集用のウインドウ上に配置することができる。
【0035】このブロック(42)は、データの流れを
明確化して、第3者にもアルゴリズムの構造を理解し易
くするとともに、必要な場合には、処理の順番をユーザ
が明確に指定できるように構成されている。これによ
り、制御ブロックをサポートし、データフローのみでは
記述が難しい効率的なアルゴリズムの記述を可能にす
る。複数のブロック(42)アイコン間をデータフロー
で接続するには、マウスの左ボタンでデータ送信側ブロ
ックのデータフローポート(44)を選択し、データ受
信側のデータフローポート(44)までドラッグして、
マウスをリリースすることにより、データフロー(4
6)を接続することができる。
【0036】接続されたデータフロー(46)は白色の
実線で表示される。制御フローの接続も同様に前に処理
を行うブロックの制御フローポート(50)からその次
に処理を行うブロックの制御フローポート(50)に向
けてのマウスのドラッグ操作により接続を行うことがで
きる。図1(A)において、(52)(54)は、繰り
返し処理制御ブロックと、条件処理制御ブロックであ
り、コンピュータのディスプレイの編集用のウインドウ
上に、プレート(P)の形で表現され、このプレート
(P)上に関数ブロック(42)やその他の関数ブロッ
クを配置することができるように構成されている。ま
た、複数の繰り返し処理制御ブロック(52)のプレー
ト(P)を互いに重ねたり、あるいは、繰り返し処理制
御ブロック(52)のプレート(P)に条件処理制御ブ
ロック(54)のプレート(P)を重ねることで制御構
造のネストを表現することができ、従来分かりにくくな
りがちだった制御構造をよりわかりやすく記述すること
ができるように構成されている。
【0037】条件処理の場合には、IF、ElseIF、Else条
件で実行される複数の条件処理を記述できるように、図
2に示すように、タブ(56)付きの複数毎のプレート
(P)で一つの条件分岐処理を表現するようにしても良
い。このブロック(58)では、入力データに対する処
理の条件をタブ(56)上に表示し、そのタブ(56)
が属するプレート(P)上にその条件が成り立つ場合の
処理をブロックにより構築する。図2では、入力データ
indatに関して、indat==0の場合の処理とindat==1の場
合の処理タブを持つ例を示している。
【0038】プレート形式の条件処理および繰り返し処
理ブロック(54)(52)では、そのプレート(P)
とブロックを配置した後、そのプレート(P)の左上に
あるボックス(60)(62)に判断条件(data >= 0
など)を記述する。その後、このプレート(P)上に、
通常の関数ブロックを配置する事により、その条件が成
り立つ際の処理を記述することができる。このようにし
て作成されたブロック線図によるアルゴリズムは、シミ
ュレーションやC++コードの自動生成に使用される。
【0039】図3は、本発明のブロック線図による条件
処理と繰り返し処理を含むアルゴリズムを含むブロック
アルゴリズム構築の画面例を示している。次に、プレー
ト形式の制御ブロック(52)(54)を用いてアルゴ
リズムを記述する具体例を、代表的な従来例と比較しつ
つ、以下に説明する。従来の図12,13に示す例を本
発明の方法で記述すると、図4,5に示すブロック線図
になる。本発明では、データフローと制御フローでの記
述方法をサポートし、かつ、制御ブロックとして、条件
判断ブロックでは無く、プレート形式の条件処理ブロッ
ク(条件処理およびくり返し処理)をサポートしている
点が、従来の記述方法と異なっている。
【0040】ユーザはおのおのの条件で実行される処理
をそのプレート上に配置することにより処理アルゴリズ
ムを構築できるため、第3者にも、制御構造が分かり易
い記述方法になっている。このプレート形式表現は、制
御構造がネストする複雑なアルゴリズムに関して、より
その効果を発揮する。図4,5の2種のブロック線図か
ら生成されるプログラムは図12に示す従来の形式のブ
ロック線図から生成されるものと同様であり、同程度の
実行効率を持つ。従って、条件に従って、Abs処理かSat
uration処理のどちらかを実行するため、データフロー
とデータパススイッチのみによるブロック線図に比較し
実行効率に良い。
【0041】さらに、本発明のブロック線図では、図6
に示すように変数代入ブロック(64)、変数参照ブロ
ック(66)を使用する形でアルゴリズムを記述するこ
とにより、若干実行効率を悪くしても、コードサイズ
(メモリ使用量)を小さくするようなブロック線図を記
述することも可能であり、ユーザが開発要件に応じたア
ルゴリズムを構築することを可能とする自由度を提供し
ている。すなわち、図12に示す従来方式では、一旦分
岐した条件処理のパスを統合するための表現方法を持た
ないため、分岐処理を行った後、同じ処理を行う場合、
おのおのの処理パスに同じ処理を記述する必要がある
が、本発明では図6のような表現を行うことにより、パ
スを統合する事が可能である。
【0042】図6の「Write Var1」は変数代入ブロック
であり、AbsまたはSaturation処理の結果を変数Var1に
格納する処理を行う。「Read Var1」は変数参照ブロッ
クであり、変数Var1の値を参照する事を意味している。
今回使用している例では、統合後の処理がMuxのみであ
るため、図12に示す従来方式の方が、コンパクトにな
っているが、統合後の処理が2つ以上になった場合に
は、アルゴリズムの作成に使用するブロック数も少なく
(ブロック線図編集作業の効率も良い)、生成されるプ
ログラムのサイズも小さくなる。図6は単一プレート形
式の条件処理ブロックを用いた例を示してしるが、タブ
付複数枚プレート形式の条件処理ブロック(58)で
も、同様の記述を行う事ができる。
【0043】より効率的なアルゴリズムの記述が可能で
あることに加えて、さらに、複数のメンバーによる開発
やメンテナンスの効率を考慮した場合には、記述された
アルゴリズムがより分かりやすい表現であることが必要
になる。しかしながら、効率的なアルゴリズムを記述可
能にするために導入する制御構造は、アルゴリズムを解
りにくくする。特に、制御構造がネストする場合には、
2次元的な表現では、どの部分のブロック構造が、どの
制御構造に属してしているかが分かり難くなる。本発明
では、繰り返しブロック(52)および条件処理ブロッ
ク(54)をプレート(P)で表現し、制御構造のネス
トをそのプレート(P)を奥行き方向(3次元的)に重
ねることで表現することにより、複雑な構造のブロック
線図を直感的に理解できるようにした。
【0044】以下に、縦、横のピクセルサイズが500×5
00の画像情報からそのグレイ値階調(それぞれ0から255
の値)が、128より大きいピクセルを探し、その数をカ
ウントする処理を、先に示した従来ツールおよび本発明
を用いた場合に関して、ブロック線図の例を示す。代表
的な従来のツールは繰り返し構造を表現するためのブロ
ックをサポートしていない。繰り返しは、実行中のブロ
ック線図自身を、その処理の中で「Call」ブロックによ
り再帰呼び出しすることにより表現する。繰り返し処理
の中で、条件分岐処理が行われる場合、条件判断処理を
記述し、その最後でそのブロック線図自身を呼び出す。
【0045】図15に上記例題に関する代表的な従来形
式のブロック線図を示す。図中の「Write Count」「Wri
te X」「Write Y」ブロックは変数代入ブロックであ
り、それぞれの変数に値を代入する。また、「Read Gra
y(x,y)」「Read Count」、「Read X」「Read Y」ブロッ
クは変数参照ブロックであり、それぞれの値を参照す
る。Gray(x,y)は位置X、Yでのグレイ値である。「Call
myself」はこのブロック線図自身を再帰的に呼び出し、
0 <= X < 500、0 <= Y < 500の間Grayが128以上のピク
セルを探しカウントアップする処理を繰り返す。
【0046】他の従来ツールでは繰り返し処理用のブロ
ックを用意している。図16では、「For」ブロック
(68)(70)を使用してXとYに関する2重ループを
記述している。条件分岐は「If」ブロック(72)を使
用して記述している。繰り返し処理ブロック(68)
(70)の変数XおよびYは自動的にカウントアップされ
るため、他の従来のツールのようにその処理を記述する
必要がない。トークンの統合が可能なため、かなりすっ
きりした表現になっているが、どのデータがどのブロッ
クからどのブロックに渡されているかを容易に読み取る
事が難しい。また、ネスト構造が2次元的に表現されて
いるため、制御構造も一見しただけでは、理解する事が
難しい。
【0047】前述のように、本発明では、条件処理およ
び繰り返し処理をプレート形式のブロック上に記述す
る。図7に本発明の記述方法により、同じ例題に関する
ブロック線図をしめしている。3枚のプレートブロック
(52)(52)(54)と5個の関数ブロック(7
4)(76)(78)(80)(82)により表されて
いる。一番外側のプレートはXに関する繰り返し処理用
ブロック(52)、次のプレートはYに関する繰り返し
処理用ブロック(52)である。そして、そのプレート
上に、各ピクセルのグレイ値を参照するブロック(7
4)と、条件処理のブロック(54)のプレートが載っ
ている。そして、その条件処理用ブロック(54)のプ
レート上には、グレイ値が128以上のピクセルをカウン
トする処理が記述されている。繰り返し処理ブロック
(52)(52)の変数XおよびYは自動的にカウントア
ップされるため、図15に示す従来ツールのようにその
処理を記述する必要がない。
【0048】この例では、制御フローを使用する必要が
ないため、使用していないが、この繰り返し処理の前後
に処理が存在する場合には制御フローを使用して処理の
順番を指定する事が必要になる。図7からわかるように
データフローによりデータの流れが容易に理解できると
ともに、プレートブロック(52)(54)の3次元的
な重ね合わせ表現により、どの部分が条件が真の場合の
処理部分か、どの部分がどのように繰り返すかという制
御構造も一目で理解できる。
【0049】
【発明の効果】本発明は上述の如く構成したので、デー
タの流れが明確で第3者がアルゴリズムが判りやすい。
また、処理順も必要に応じてユーザが明確化することが
可能であり、処理の誤りが発生し難い。また、実行効率
の良いアルゴリズムを記述でき、しかも複雑な制御構造
も直感的に理解し易い。
【図面の簡単な説明】
【図1】本発明の説明図である。
【図2】本発明の他の実施形態を示し、タブ付き条件処
理ブロックの説明図である。
【図3】本発明の条件処理と繰り返し処理を含むブロッ
ク線図の説明図である。
【図4】本発明のプレート形式制御ブロックを用いたブ
ロック線図の説明図である。
【図5】本発明のタブ付き複数プレート形式制御ブロッ
クを用いたブロック線図の説明図である。
【図6】本発明の条件処理ブロックを用いたブロック線
図の説明図である。
【図7】本発明のブロックを用いたブロック線図の説明
図である。
【図8】従来技術を示し、関数を表現するブロックの説
明図である。
【図9】従来技術の説明図である。
【図10】従来技術の説明図である。
【図11】従来技術の説明図である。
【図12】従来技術の説明図である。
【図13】従来技術の説明図である。
【図14】従来技術の説明図である。
【図15】従来技術の説明図である。
【図16】従来技術の説明図である。
【符号の説明】
2 ブロック 4 データフロー 6 データフロー 8 ブロック 10 ブロック 12 ブロック 14 ブロック 16 ブロック 18 ブロック 20 ブロック 22 ブロック 24 ブロック 26 ブロック 28 制御フロー 30 制御フロー 32 制御フロー 34 ブロック 36 ブロック 38 ブロック 40 ブロック 42 ブロック 44 データフローポート 46 データフロー 48 制御フロー 50 制御フローポート 52 繰り返し処理制御ブロック 54 条件処理制御ブロック 56 タブ 58 ブロック 60 ボックス 62 ボックス 64 変数代入ブロック 66 変数参照ブロック 68 ブロック 70 ブロック 72 ブロック 74 ブロック 76 ブロック 78 ブロック 80 ブロック 82 ブロック
───────────────────────────────────────────────────── フロントページの続き Fターム(参考) 5B076 DB04 DD04 DD05 DE00 DE06

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 ある機能の単位である関数をコンピュー
    タ上でブロックライブラリとして提供し、ユーザがこれ
    らのブロックを編集用のウインドウ上に配置できるよう
    に成し、配置されたブロック間をデータフローにより接
    続してコンピュータ上でアルゴリズムを構築するブロッ
    ク線図を作成できるように成し、このブロック線図から
    コンピュータプログラミング言語の自動生成等を行うこ
    とができるようにしたアルゴリズム記述方法であって、
    コンピュータ上のブロックライブラリに、繰り返し処理
    と条件処理の制御ブロックを用意し、該制御ブロックを
    プレートの形で表現し、そのプレート上に関数ブロック
    のアイコンを配置し、あるいはプレート上に他のプレー
    トを重ねることでコンピュータ上に制御構造のネストを
    表現できるようにしたことを特徴とする画像処理アプリ
    ケーション開発のためのブロック線図ベースのグラフィ
    カルなアルゴリズム記述方法。
  2. 【請求項2】 前記条件処理の制御ブロックは、IF、
    ElseIF、Else条件で実行される複数の条件処
    理を記述できるように前記プレートをタブ付きの複数プ
    レート形式とし、そのタブが属するプレート上にその条
    件が成り立つ場合の処理をブロックアイコンにより構築
    できるようにしたことを特徴とする「請求項1」に記載
    の画像処理アプリケーション開発のためのブロック線図
    ベースのグラフィカルなアルゴリズム記述方法。
  3. 【請求項3】 前記プレート上に配置される関数ブロッ
    クのアイコンに、データフロー接続ポートと制御フロー
    接続ポートを設けたことを特徴とする「請求項1」又は
    「請求項2」に記載の画像処理アプリケーション開発の
    ためのブロック線図ベースのグラフィカルなアルゴリズ
    ム記述方法。
  4. 【請求項4】 ある機能の単位である関数をコンピュー
    タ上でブロックライブラリとして提供し、ユーザがこれ
    らのブロックを編集用のウインドウ上に配置できるよう
    に成し、配置されたブロック間をデータフローにより接
    続してコンピュータ上でアルゴリズムを構築するブロッ
    ク線図を作成できるように成し、このブロック線図から
    コンピュータプログラミング言語の自動生成等を行うこ
    とができるようにしたアルゴリズム記述方法であって、
    コンピュータ上のブロックライブラリに、条件処理の制
    御ブロックを用意し、該制御ブロックをプレートとして
    表現し、そのプレート上に関数ブロックのアイコンを配
    置しプレート上にその制御ブロックの条件で実行される
    処理アルゴリズムを構築できるようにしたことを特徴と
    する画像処理アプリケーション開発のためのブロック線
    図ベースのグラフィカルなアルゴリズム記述方法。
  5. 【請求項5】 ある機能の単位である関数をコンピュー
    タ上でブロックライブラリとして提供し、ユーザがこれ
    らのブロックを編集用のウインドウ上に配置できるよう
    に成し、配置されたブロック間をデータフローにより接
    続してコンピュータ上でアルゴリズムを構築するブロッ
    ク線図を作成できるように成し、このブロック線図から
    コンピュータプログラミング言語の自動生成等を行うこ
    とができるようにしたアルゴリズム記述方法であって、
    コンピュータ上のブロックライブラリに、繰り返し処理
    の制御ブロックを用意し、該制御ブロックをプレートの
    形で表現し、そのプレート上に関数ブロックのアイコン
    を配置することでコンピュータ上に制御構造のネストを
    表現できるようにしたことを特徴とする画像処理アプリ
    ケーション開発のためのブロック線図ベースのグラフィ
    カルなアルゴリズム記述方法。
JP2001107683A 2001-04-05 2001-04-05 画像処理アプリケーション開発のためのブロック線図ベースのグラフィカルなアルゴリズム記述方法 Pending JP2002304295A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001107683A JP2002304295A (ja) 2001-04-05 2001-04-05 画像処理アプリケーション開発のためのブロック線図ベースのグラフィカルなアルゴリズム記述方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001107683A JP2002304295A (ja) 2001-04-05 2001-04-05 画像処理アプリケーション開発のためのブロック線図ベースのグラフィカルなアルゴリズム記述方法

Publications (1)

Publication Number Publication Date
JP2002304295A true JP2002304295A (ja) 2002-10-18

Family

ID=18959959

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001107683A Pending JP2002304295A (ja) 2001-04-05 2001-04-05 画像処理アプリケーション開発のためのブロック線図ベースのグラフィカルなアルゴリズム記述方法

Country Status (1)

Country Link
JP (1) JP2002304295A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008084261A (ja) * 2006-09-29 2008-04-10 Fuji Electric Holdings Co Ltd プログラム自動生成装置、プログラム自動生成方法およびプログラム自動生成プログラム
JP2014219988A (ja) * 2013-05-10 2014-11-20 富士通株式会社 フィードバック付き機能モジュール組み合わせ方法及び装置並びにデータ処理方法及び設備
US9513875B2 (en) 2011-11-22 2016-12-06 International Business Machines Corporation Processing instruction information
JP2019521402A (ja) * 2016-05-16 2019-07-25 ティブコ ソフトウェア インク プロセスアプリケーションを開発及び診断するためのステップバック機構

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008084261A (ja) * 2006-09-29 2008-04-10 Fuji Electric Holdings Co Ltd プログラム自動生成装置、プログラム自動生成方法およびプログラム自動生成プログラム
US9513875B2 (en) 2011-11-22 2016-12-06 International Business Machines Corporation Processing instruction information
JP2014219988A (ja) * 2013-05-10 2014-11-20 富士通株式会社 フィードバック付き機能モジュール組み合わせ方法及び装置並びにデータ処理方法及び設備
JP2019521402A (ja) * 2016-05-16 2019-07-25 ティブコ ソフトウェア インク プロセスアプリケーションを開発及び診断するためのステップバック機構
JP7015625B2 (ja) 2016-05-16 2022-02-03 ティブコ ソフトウェア インク プロセスアプリケーションを開発及び診断するためのステップバック機構

Similar Documents

Publication Publication Date Title
US7882491B2 (en) Automatic generation of a graphical program with a structure node in response to receiving a diagram with states and state transitions
US5291587A (en) Graphical system for executing a process and for programming a computer to execute a process, including graphical variable inputs and variable outputs
US5301336A (en) Graphical method for programming a virtual instrument
US5610828A (en) Graphical system for modelling a process and associated method
US8307330B2 (en) Type generic graphical programming
US8560958B1 (en) Signal navigation and label propagation in block diagrams
JP4482563B2 (ja) ダイアグラミング環境言語のための単純化データ信号サポート
EP0242131A2 (en) Graphical system for modelling a process and associated method
JP4296421B2 (ja) 信号処理装置
US20030016234A1 (en) Implicit frame-based processing for block-diagram simulation
JP2002229783A (ja) ソフトウェア構築支援システム、その方法およびソフトウェア構築支援プログラム
US7120877B2 (en) System and method for creating a graphical program including a plurality of portions to be executed sequentially
Lauwereins et al. Geometric parallelism and cyclo-static data flow in GRAPE-II
JP4348546B2 (ja) 信号処理装置、信号処理プログラムおよび記録媒体
US7152218B2 (en) Behavioral synthesis system, behavioral synthesis method, control program, readable recording medium, logic circuit production method, and logic circuit
JP2002304295A (ja) 画像処理アプリケーション開発のためのブロック線図ベースのグラフィカルなアルゴリズム記述方法
WO2019168215A1 (ko) 자동가상풍동 시스템 및 자동가상풍동 해석 방법
US10102110B1 (en) Simulation process for interface behavior
US5740070A (en) Apparatus for automatically generating logic circuit
RU2383916C2 (ru) Способ определения последовательности обработки функциональных модулей системы автоматизации и система автоматизации
JP3197685B2 (ja) 高位合成装置
White XPole: An Interactive, Graphical Signal Analysis and Filter Design Tool
JPS63170767A (ja) モジユ−ル型動特性シミユレ−タ
JPH04111169A (ja) 回路設計方式
JPH09231345A (ja) モデルの接合状態認識装置