(57)【特許請求の範囲】
【請求項１】
Ｎ個のビットからなる二値表現されたデータ中の二値の何れか一方の個数を計数する二値データ計数装置であって、
Ｎ×（Ｎ＋１）／２個の２入力１出力のシフタをＮ×Ｎの行列状の配置の対角部分を斜辺とし前記行列状の配置の２つの辺部分をそれぞれ底辺および垂直辺とするＮ段の三角形状に配置し、前記Ｎ個のビットからなる二値表現されたデータの各ビット値を前記三角形状を構成する各段毎のシフタの制御信号とし、前記三角形状の前記底辺に配置されたＮ段目のＮ個のシフタの出力をＮビットの二値データとして出力するシフタアレイを備え、
前記シフタの２つの入力を第１の入力および第２の入力とするとき、前記制御信号により前記シフタの出力として前記第１の入力を出力するか前記第２の入力を出力するかが選択され、
前記三角形状の前記斜辺部分に配置されたシフタの前記第１の入力に二値の一方の値を入力し、前記斜辺部分の２段目からＮ段目のシフタの前記第２の入力に前段の前記斜辺部分に属するシフタの出力を入力し、
前記三角形状の前記垂直辺部分に配置されたシフタの前記第２の入力に二値の他方の値を入力し、前記垂直辺部分の２段目からＮ段目のシフタの前記第１の入力に前段の前記垂直辺部分に属するシフタの出力を入力し、
前記三角形状の前記斜辺部分以外および前記垂直辺部分以外に配置されたシフタの前記第１の入力に前段の同じ列のシフタの出力を入力し、前記第２の入力に前段の同じ列のシフタの隣の前記垂直辺側に配置されたシフタの出力を入力することにより、
前記Ｎ個のビットからなる二値表現されたデータ中の二値の何れか一方の個数だけ、二値の一方または他方が片側に詰められた状態でＮビットの二値データを出力し、
前記シフタアレイより二値の一方または他方が片側に詰められた状態で出力される二値データを、前記二値の一方または他方のＭＳＢ側の位置に応じて多値の数に変換するエンコーダを具備する二値データ計数装置。
【請求項２】
前記Ｎ個のビットからなる二値表現されたデータ中の二値の何れか一方を、計数のために選択的に指定する選択手段を有する請求項１記載の二値データ計数装置。
【請求項３】
Ｎ個のビットからなる二値表現されたデータ中の二値の何れか一方の個数を計数する二値データ計数装置であって、
前記Ｎ個のビットからなる二値表現されたデータの各ビット値を各々入力とするＮ個のフリップフロップと、
Ｎ×（Ｎ＋１）／２個の２入力１出力のシフタをＮ×Ｎの行列状の配置の対角部分を斜辺とし前記行列状の配置の２つの辺部分をそれぞれ底辺および垂直辺とするＮ段の三角形状に配置し、前記Ｎ個のフリップフロップの出力の各々を前記三角形状を構成する各段毎のシフタの制御信号とし、前記三角形状の前記底辺に配置されたＮ段目のＮ個のシフタの出力をＮビットの二値データとして出力するシフタアレイとを備え、
前記シフタの２つの入力を第１の入力および第２の入力とするとき、前記制御信号により前記シフタの出力として前記第１の入力を出力するか前記第２の入力を出力するかが選択され、
前記三角形状の前記斜辺部分に配置されたシフタの前記第１の入力に二値の一方の値を入力し、前記斜辺部分の２段目からＮ段目のシフタの前記第２の入力に前段の前記斜辺部分に属するシフタの出力を入力し、
前記三角形状の前記垂直辺部分に配置されたシフタの前記第２の入力に二値の他方の値を入力し、前記垂直辺部分の２段目からＮ段目のシフタの前記第１の入力に前段の前記垂直辺部分に属するシフタの出力を入力し、
前記三角形状の前記斜辺部分以外および前記垂直辺部分以外に配置されたシフタの前記第１の入力に前段の同じ列のシフタの出力を入力し、前記第２の入力に前段の同じ列のシフタの隣の前記垂直辺側に配置されたシフタの出力を入力し、
前記シフタアレイから出力されるＮビットの二値データを、前記二値表現されたデータの二値の何れか一方の個数を計数した値に変換するエンコーダを具備する二値データ計数装置。
【請求項４】
前記Ｎ個のフリップフロップの出力を反転せずに前記シフタの制御信号とする状態と、前記Ｎ個のフリップフロップの出力を反転して前記シフタの制御信号とする状態とを切り替えることにより、前記Ｎ個のビットからなる二値表現されたデータ中の二値の何れか一方を、計数のために選択的に指定する選択手段を有する請求項３記載の二値データ計数装置。
【請求項５】
請求項１記載の二値データ計数装置を適用した面積情報抽出装置。
【請求項６】
請求項１記載の二値データ計数装置を適用したハフ変換装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ＦＡ(Factory Automation;ファクトリ・オートメーション）機器のパターン認識装置等において、面積の抽出や直線抽出のためのハフ変換等の処理に用いられる二値データ計数装置に関し、さらにその応用装置としての面積情報抽出装置およびハフ変換装置に関するものである。
【０００２】
上記の面積の抽出処理においては、二値画像（例えば、背景が“０”（例えば白））中の“１”（例えば黒）領域の面積の抽出を行うために、二値画像中の“１”の個数を計数する処理に二値データ計数装置が用いられる。
【０００３】
また、ハフ変換処理においては、二値画像（例えば、背景が“０”（例えば白））中の特定の鼓形領域内に存在する“１”（例えば黒）の個数を計数する処理に用いられる。
【０００４】
【従来の技術】
従来、Ｎ個（Ｎは２以上の整数）のビットからなる二値表現されたデータにおける“１”もしくは“０”の個数を計数し、その計数結果を多値のデータとして取り出す方法は、大別して二つある。なお、Ｎ個のビットからなる二値表現されたデータは、Ｎビット長の二値データと表現することもできる。
【０００５】
一つは、Ｎビットのレジスタにデータをセットし、ＡＬＵ（Arithmetic and Logic Unit ）で左方に１ビットシフトし、ＭＳＢ（Most Significant Bit）のビットの値をキャリーに設定し、その値が所望の値であれば、累算器の値を１インクリメントするという方法である。この方法は、ＭＣＵ(Micro Controller Unit; マイクロコントローラユニット）やＤＳＰ (Digital Signal Processor; デジタルシグナルプロセッサ）のソフトウェアで容易に実現することができる。
【０００６】
しかしながら、１ビットの処理に３命令を必要とし、処理速度が遅いという欠点がある。実用的な画像処理では、処理対象が、10,000画素×10,000画素と大きくなる傾向があり、少なくともＮビットを１命令実行時間で処理することが望まれる。そのため、もう一つの手段としてハードウェアの専用回路を用いる方法がある。
【０００７】
ハードウェアで実現する方法の例を図６を用いて説明する。図６は、Ｎ＝１６の場合において、“１”の個数の計数を行う場合の構成を示している。まず、１６個のビットからなる二値表現されたデータＢＤＡＴＡ１５〜ＢＤＡＴＡ０を、ＬＳＢ（Least Significant Bit ）側から、隣接する２ビット毎にペア化し、合わせて８個のペアを作る。そして、これら８個のペアを８個の１ビット加算器ＡＤ１８〜ＡＤ１１にそれぞれ入力して加算を行う。この結果、８個の２ビットデータが形成される。
【０００８】
つぎに、先程と同様にして、１ビット加算器ＡＤ１８〜ＡＤ１１からそれぞれ出力される８個の２ビットデータを、ＬＳＢ側から隣接する２個毎にペア化し、合わせて４個のペアを作る。そして、これら４個のペアを４個の２ビット加算器ＡＤ２４〜ＡＤ２１にそれぞれ入力して加算を行う。この結果、４個の３ビットデータが形成される。
【０００９】
つぎに、先程と同様にして、２ビット加算器ＡＤ２４〜ＡＤ２１からそれぞれ出力される４個の３ビットデータを、ＬＳＢ側から隣接する２個毎にペア化し、合わせて２個のペアを作る。そして、これら２個のペアを２個の３ビット加算器ＡＤ３２，ＡＤ３１にそれぞれ入力して加算を行う。この結果、２個の４ビットデータが形成される。
【００１０】
つぎに、これら２個の４ビットデータを４ビット加算器ＡＤ４１に入力して加算を行う。この結果、１６個のビットからなる二値表現されたデータにおける“１”の個数に相当する１個の５ビットデータが形成される。つまり、１６個のビットからなる二値表現されたデータの多値化が完了する。
【００１１】
以上のように、加算器のネットワークを形成することで、計数装置が実現される。
【００１２】
【発明が解決しようとする課題】
ところが、Ｎ＝１６の場合では、１ビット加算器×１６／２＋２ビット加算器×１６／４＋３ビット加算器×１６／８＋４ビット加算器×１６／１６の、合わせて１５個の加算器が必要である。また、Ｎ＝３２の場合では、１ビット加算器×３２／２＋２ビット加算器×３２／４＋３ビット加算器×３２／８＋４ビット加算器×３２／１６＋５ビット加算器×３２／３２の、合わせて３１個の加算器が必要である。
【００１３】
したがって、ハードウェアとしては、加算器の個数が膨大であるばかりでなく、加算器自体もビット数が増えるにつれて回路構成が複雑となり、全体として回路が大規模なものになってしまう。
【００１４】
上記したように、これら従来の例においては、前者は回路規模は小さいが、処理速度が遅く実用に耐えないし、後者は前者に比べて処理速度は速いが、回路規模が大規模なものになってしまうという欠点があった。
【００１５】
本発明の目的は、処理が高速でかつ小さな回路規模で実現することができる安価な二値データ計数装置、面積情報抽出装置およびハフ変換装置を提供することである。
【００１６】
【課題を解決するための手段】
第１の発明の二値データ計数装置は、Ｎ個のビットからなる二値表現されたデータ中の二値の何れか一方の個数を計数するもので、Ｎ×（Ｎ＋１）／２個の２入力１出力のシフタをＮ×Ｎの行列状の配置の対角部分を斜辺とし行列状の配置の２つの辺部分をそれぞれ底辺および垂直辺とするＮ段の三角形状に配置し、Ｎ個のビットからなる二値表現されたデータの各ビット値を三角形状を構成する各段毎のシフタの制御信号とし、三角形状の底辺に配置されたＮ段目のＮ個のシフタの出力をＮビットの二値データとして出力するシフタアレイを備え、
シフタの２つの入力を第１の入力および第２の入力とするとき、制御信号によりシフタの出力として第１の入力を出力するか第２の入力を出力するかが選択され、
三角形状の斜辺部分に配置されたシフタの第１の入力に二値の一方の値を入力し、斜辺部分の２段目からＮ段目のシフタの第２の入力に前段の斜辺部分に属するシフタの出力を入力し、
三角形状の垂直辺部分に配置されたシフタの第２の入力に二値の他方の値を入力し、垂直辺部分の２段目からＮ段目のシフタの第１の入力に前段の垂直辺部分に属するシフタの出力を入力し、
三角形状の斜辺部分以外および垂直辺部分以外に配置されたシフタの第１の入力に前段の同じ列のシフタの出力を入力し、第２の入力に前段の同じ列のシフタの隣の垂直辺側に配置されたシフタの出力を入力することにより、
Ｎ個のビットからなる二値表現されたデータ中の二値の何れか一方の個数だけ、二値の一方または他方が片側に詰められた状態でＮビットの二値データを出力し、
シフタアレイより二値の一方または他方が片側に詰められた状態で出力される二値データを、二値の一方または他方のＭＳＢ側の位置に応じて多値の数に変換するエンコーダを具備する。
【００１７】
この構成によれば、Ｎ個のビットからなる二値表現されたデータ中の二値の何れか一方の個数を計数し、１０進数や１６進数といった多値の数表現に変換する場合、Ｎ個のビットからなる二値表現されたデータ中の二値の何れか一方の個数の計数を、直接演算によって行うのではなく、以下のようにして二値データの計数処理を実行する。すなわち、Ｎ個のビットからなる二値表現されたデータの各ビット値で、シフタアレイを構成する各シフタの動作を制御することにより、Ｎ個のビットからなる二値表現されたデータ中の二値の何れか一方の個数だけ、二値の一方または他方が片側に詰められた状態でＮビットの二値データを出力する。
【００１８】
つまり、Ｎ個のビットからなる二値表現されたデータの中に、計数しようとしている“１”もしくは“０”が何個あるかを、一意的にエンコードできるように例えば右詰めで二値データを表現することにより、Ｎ個のビットからなる二値表現されたデータの中の“１”もしくは“０”の個数の計数処理を実現する。この場合、シフタアレイの動作は１クロックで完了させることが可能であり、しかも加算器に比べて格段に回路規模が小さい。
【００１９】
したがって、従来例に比較して、処理速度が高速でかつ小さな回路規模で、二値表現されたデータの中の“１”もしくは“０”の個数の計数処理を実現することができ、安価な二値データ計数装置を提供することができる。さらに、シフト動作は多ビットの加算演算処理に比べて短時間に行うことが可能であるため、加算器のネートワーク構成による回路構成よりもさらに高速処理が可能である。
【００２１】
また、シフタアレイより出力される二値データを、エンコーダを用いて二値の一方または他方のＭＳＢ側の位置に応じて多値化することにより、Ｎ個のビットからなる二値表現されたデータ中の二値の何れか一方の個数の計数処理を実現する。
【００２２】
また、上記第１の発明の構成において、Ｎ個のビットからなる二値表現されたデータ中の二値の何れか一方を、計数のために選択的に指定する選択手段を設けることもできる。
【００２３】
この構成によれば、上記第１の発明の構成と同様の効果が得られる。
【００２４】
また、第２の発明の二値データ計数装置は、Ｎ個のビットからなる二値表現されたデータ中の二値の何れか一方の個数を計数するもので、Ｎ個のフリップフロップとシフタアレイを備えている。
【００２５】
Ｎ個のフリップフロップは、Ｎ個のビットからなる二値表現されたデータの各ビット値を各々入力とする。
【００２６】
シフタアレイは、Ｎ×（Ｎ＋１）／２個の２入力１出力のシフタがＮ×Ｎの行列状の配置の対角部分を斜辺とし行列状の配置の２つの辺部分をそれぞれ底辺および垂直辺とするＮ段の三角形状に配置され、Ｎ個のフリップフロップの出力の各々が三角形状を構成する各段毎のシフタの制御信号とされ、三角形状の底辺に配置されたＮ段目のＮ個のシフタの出力がＮビットの二値データとして出力される。
【００２７】
そして、シフタの２つの入力を第１の入力および第２の入力とするとき、制御信号によりシフタの出力として第１の入力を出力するか第２の入力を出力するかが選択される。また、三角形状の斜辺部分に配置されたシフタの第１の入力に二値の一方の値が入力され、斜辺部分の２段目からＮ段目のシフタの第２の入力に前段の斜辺部分に属するシフタの出力が入力される。また、三角形状の垂直辺部分に配置されたシフタの第２の入力に二値の他方の値が入力され、垂直辺部分の２段目からＮ段目のシフタの第１の入力に前段の垂直辺部分に属するシフタの出力が入力される。また、三角形状の斜辺部分以外および垂直辺部分以外に配置されたシフタの第１の入力に前段の同じ列のシフタの出力が入力され、第２の入力に前段の同じ列のシフタの隣の垂直辺側に配置されたシフタの出力が入力される。
また、シフタアレイから出力されるＮビットの二値データを、二値表現されたデータの二値の何れか一方の個数を計数した値に変換するエンコーダが具備されている。
【００２８】
この構成によれば、上記第１の発明の構成と同様の効果が得られる。
【００２９】
上記第２の発明の構成において、シフタアレイから出力されるＮビットの二値データを、二値表現されたデータの二値の何れか一方の個数を計数した値に変換するエンコーダを設けてもよい。
【００３０】
この構成によれば、上記第１の発明と同様の効果が得られる。
【００３１】
また、上記第２の発明の構成において、Ｎ個のフリップフロップの出力を反転せずにシフタの制御信号とする状態と、Ｎ個のフリップフロップの出力を反転してシフタの制御信号とする状態とを切り替えることにより、Ｎ個のビットからなる二値表現されたデータ中の二値の何れか一方を、計数のために選択的に指定する選択手段を設けることもできる。
【００３２】
この構成によれば、上記第１の発明と同様の効果が得られる。
【００３３】
第３の発明の面積情報抽出装置は、第１の発明の二値データ計数装置を適用したものである。
【００３４】
この構成によれば、第１の発明の二値データ計数装置と同様の効果が得られる。
【００３５】
第４の発明のハフ変換装置は、第１の発明の二値データ計数装置を適用したものである。
【００３６】
この構成によれば、第１の発明の二値データ計数装置と同様の効果が得られる。
【００３７】
【発明の実施の形態】
以下、本発明の実施の形態の二値データ計数装置を図１から図３と図７および図８とを用いて説明する。
【００３８】
図１は、本発明の実施の形態で、説明を簡略化するために、Ｎ＝８の場合の二値データ計数装置を示している。
【００３９】
図１において、シフタアレイ１０は、８×（８＋１）／２＝３６個の２入力１出力のシフタ（shifter)より形成されるアレイで、使用されるシフタは、図２（ａ）に示すように制御入力が（ＳＬ，ＳＲ）で、それぞれが排他的論理で表され、ＳＬ＝１ and  ＳＲ＝０の時はスルー動作で、入力ＤＬの値が出力Ｙにセットされ、ＳＬ＝０ and  ＳＲ＝１の時はシフト動作で、入力ＤＲの値が出力Ｙにセットされる。これを数式で表わすと数１のようになる。
（数１）
ＳＬ＝１ and  ＳＲ＝０  のとき  Ｙ＝ＤＬ (スルー：through)
ＳＬ＝０ and  ＳＲ＝１  のとき  Ｙ＝ＤＲ (シフト：shift)
となる。具体的な回路構成としては、例えば図７に示すようなものが考えられる。図７において、符号ＡＮ１，ＡＮ２が論理積回路を示し、符号ＯＲ１が論理和回路を示す。なお、上記のシフタは、制御入力ＳＬ，ＳＲの状態に応じて、入力ＤＬまたはＤＲの何れか一方を選択的に出力するセレクタと表現することも可能である。また、シフタは、上記のような論理回路ではなくパストランジスタを用いて構成することも可能である。また、その回路構成はフルーアダーよりも回路規模が小さく、多ビットの加算器に比べて格段に、例えば数十分の１程度に回路規模が小さいし、シフト処理に要する時間も従来例のような多ビットの加算演算に比べて短くすることができ、したがって１クロックの時間を短く設定することが可能となり、より高速の処理が可能となる。
【００４０】
つぎに、８個のセレクタ２０は、ＭＯＤＥ信号により、二値データＢＤの“０”と“１”のいずれの値を計数するかを選択する回路で、ＭＯＤＥ＝１の時は、“１”の個数を計数し、ＭＯＤＥ＝０の時は、“０”の個数を計数するように設定されている。この関係を数式で表わすと数２のようになる。
（数２）
ＭＯＤＥ＝０  のとき  ＳＲ＝＊ＢＤ，ＳＬ＝ＢＤ
ＭＯＤＥ＝１  のとき  ＳＲ＝ＢＤ，ＳＬ＝＊ＢＤ
となる。ただし、＊記号は反転を意味する。具体的な回路構成としては、例えば図８に示すようなものが考えられる。図８において、符号ＡＮ１１〜ＡＮ１４が論理積回路を示し、符号ＯＲ１１，ＯＲ１２が論理和回路を示す。
【００４１】
つぎに、８個のＤフリップフロップ（以下、Ｄ−ＦＦと記す）３０は、クロック信号ＣＬＯＣＫに同期して、８ビットの二値データ（８個のビットからなる二値表現されたデータ）ＢＤＡＴＡ［７：０］を入力するデータレジスタである。各Ｄ−ＦＦ３０の出力が二値データＢＤとして各セレクタ２０へ与えられる。
【００４２】
シフタアレイ１０より出力される８ビットの信号（二値データ）Ｓ［７：０］は、入力信号ＢＤＡＴＡ［７：０］の中でＭＯＤＥ信号によって指定される所望の値（“１”または“０”の何れか）が、何個あったかを右詰めの“１”の数で表現している。この信号Ｓ［７：０］をエンコーダ４０に入力すると、表１のエンコーダ４０の真理値表で示されるように、Ｓ［７：０］のＭＳＢ側の“１”の位置に注目して、４ビットの出力Ｄ［３：０］にエンコードを行う。この出力Ｄ［３：０］が、つぎのクロック信号ＣＬＯＣＫにより４個のＤ−ＦＦ５０に取り込まれ、多値データＤＡＴＡ［３：０］として利用される。
【００４３】
なお、上記の説明では、“１”を右詰めに配置したが、左詰めであってもよく、その方向に応じてエンコーダ４０を設計すればよい。また、“１”ではなく、“０”を右詰めもしくは左詰めに配置し、ＭＳＢ側の“０”の位置に注目してエンコードしてもよい。また、上記のエンコーダ４０は、表１の入力をアドレス、表１の入力に対応する出力をそのアドレスに書き込むべきデータとするＲＯＭテーブル、もしくは表１の真理値表を論理圧縮した入力と出力との関係を実現する論理回路によって構成できる。
【００４４】
【表１】
0003776319.tif 000002
【００４５】
つぎに、実際のデータ例を用いて、図１の回路動作を説明する。
【００４６】
今、値“１”を計数するとして、８ビットの二値のデータ（０，１，０，０，１，１，０，０）をＢＤＡＴＡ［７：０］に入力し、ＭＯＤＥ＝１として、図１の回路を動作させる場合を示した図が、図３である。この図３を用いて、この回路の動作を以下に説明する。
【００４７】
二値のデータ（０，１，０，０，１，１，０，０）は、８個のＤ−ＦＦ３０に、上から０，１，０，…の順番でクロック信号ＣＬＯＣＫによって読み込まれる。この時、ＭＯＤＥ＝１であるため、セレクタ２０では、数２の式に従い、データ中の“１”の個数を計数することが選択される。この場合、Ｄ−ＦＦ３０にストアーされた値が“１”であれば、シフタアレイ１０上のその段に対応するシフタはシフト動作になり、Ｄ−ＦＦ３０にストアーされた値が“０”であれば、シフタアレイ１０上のその段に対応するシフタはスルー動作になる。
【００４８】
図３で、最上段のＤ−ＦＦ３０の値は“０”であるので、この段のシフタはスルー動作になる。これを図中では、シフタ内に真下向きの矢印で表わしている。
【００４９】
上から２段目のＤ−ＦＦ３０の値は“１”であるため、対応する２段目のシフタの動作は、シフト動作になる。これを図中では、左下向きの矢印で表わしている。これを、以下の各段に施すと、３段目がスルー動作、４段目がスルー動作、５段目がシフト動作、６段目がシフト動作、７段目がスルー動作、最後の８段目がスルー動作となる。
【００５０】
上記の動作の結果、シフタアレイ１０の出力Ｓ［７：０］に出力される二値データは、つぎのようになる。すなわち、Ｓ０＝１，Ｓ１＝１，Ｓ２＝１，Ｓ３＝０，Ｓ４＝０，Ｓ５＝０，Ｓ６＝０，Ｓ７＝０となる。そして、これらの値を入力とするエンコーダ４０の出力Ｄ［３：０］は、Ｄ３＝０，Ｄ２＝０，Ｄ１＝１，Ｄ０＝１と、多値表現で求める値が“３" であることを示している。そして、この値がつぎのクロック信号ＣＬＯＣＫによりＤ−ＦＦ５０に取り込まれる。ＤＡＴＡ０〜ＤＡＴＡ３はその出力である。
【００５１】
以上説明したように、この実施の形態の二値データ計数装置は、二値データの計数を、直接演算するのではなく、Ｎ個のビットからなる二値表現されたデータの中に、計数しようとしている“１" もしくは“０" が何個あるかを、１対１かつ一意的にエンコードできるように、“１”を右詰めにした二値データとし、この二値データをエンコーダ４０を用いて多値化することにより、Ｎ個のビットからなる二値表現されたデータの中の“１" もしくは“０" の個数の計数処理を実現することができる。この場合、シフタアレイの動作は１クロックで完了させることが可能であり、しかもフルアダーよりも回路規模が小さく、多ビットの加算器に比べると格段に、例えば数十分の１程度に回路規模が小さい。
【００５２】
したがって、従来例に比較して、処理速度が高速でかつ小さな回路規模で実現することができ、安価な二値データ計数装置を提供することができる。さらに、シフト動作は多ビットの加算演算処理に比べて短時間に行うことが可能であるため、加算器のネートワーク構成による回路構成よりもさらに高速処理が可能である。
【００５３】
上記のように、本発明の二値データの計数処理では、Ｎ個のビットからなる二値表現されたデータ中の二値の何れか一方の個数を計数して１０進数や１６進数といった多値の数表現に変換する場合、Ｎ個のビットからなる二値表現されたデータ中の二値の何れか一方の個数の計数が、直接演算によって行われるのではなく、以下のようにしてＮ個のビットからなる二値表現されたデータ中の二値の何れか一方の個数の計数が実行される。
【００５４】
すなわち、Ｎ個のビットからなる二値表現されたデータの各ビット値でシフタアレイを構成する各シフタの動作を制御することにより、Ｎ個のビットからなる二値表現されたデータ中の二値の何れか一方の個数だけ、二値の一方または他方が片側に詰められた状態でＮビットの二値データが出力される。
【００５５】
つまり、この二値データ計数装置では、Ｎ個のビットからなる二値表現されたデータがＮ×（Ｎ＋１）／２個からなる三角形型のシフタアレイ１０のシフト動作を制御する制御信号として働く。この場合、シフタアレイ１０は、Ｎ個のビットからなる二値表現されたデータの各ビットに対応してビット配列の上位側から下位側に順次１個ずつシフタが増加して並べて三角形型となり、二値表現されたデータの各ビットが、例えばセレクタ２０を介してシフタの制御入力に入力される。
【００５６】
また、上位側のシフタの出力が直ぐ下位の隣合う２つのシフタの相異なるデータ入力に入力する関係で接続される。
【００５７】
このとき、二値表現されたデータの各ビットに対応する各シフタ群は、両端の相異なるデータ入力すなわち三角形型のシフタアレイ１０の右端および斜辺に当たる左端が未接続となる。三角形型のシフタアレイ１０の右端には、シフト動作で“１”が伝播するための固定入力“１”が設定され、斜辺に当る左端には、スルー動作で“０”が伝播するための固定入力“０”が設定されている。そして最下位側のシフタの出力がシフタアレイ１０の出力となる。
【００５８】
結果的には、このシフタアレイ１０のＮ個の制御信号のうちｍ個がシフト動作を示した場合、シフタアレイ１０の下方に出力されるＮ個の二値データは、右詰めにｍ個が“１”を示し、他の（Ｎ−ｍ）個が“０”を示す。
【００５９】
さらに、この二値データは、ＭＳＢ側の“１”の位置により多値データに変換するエンコーダ４０により、多値データへ変換することが可能になる。
【００６０】
また、上記のシフタアレイ１０のシフト動作を“０”で行うか“１”で行うかを、選択的に指定できる手段例えばセレクタ２０を設ければ、二値データの“０”でも“１”でも任意に計数することが可能である。
【００６１】
ここで、二値データ計数装置の具体構成について、より詳しく説明する。すなわち、この二値データ計数装置は、Ｎ個（この例では、Ｎ＝８）のビットからなる二値表現されたデータ中の二値の何れか一方の個数を計数するもので、Ｎ個のＤ−ＦＦ３０とシフタアレイ１０とエンコーダ４０とセレクタ２０とを主要構成としている。
【００６２】
Ｎ個のＤ−ＦＦ３０は、Ｎ個のビットからなる二値表現されたデータの各ビット値を各々入力とする。
【００６３】
シフタアレイ１０は、Ｎ×（Ｎ＋１）／２個の２入力１出力のシフタがＮ×Ｎの行列状の配置の対角部分を斜辺とし行列状の配置の２つの辺部分をそれぞれ底辺および垂直辺とするＮ段の三角形状に配置され、Ｎ個のＤ−ＦＦ３０の出力の各々が三角形状を構成する各段毎のシフタの制御信号とされ、三角形状の底辺に配置されたＮ段目のＮ個のシフタの出力がＮビットの二値データとして出力される。
【００６４】
そして、シフタの２つの入力を第１の入力および第２の入力とするとき、制御信号によりシフタの出力として第１の入力を出力するか第２の入力を出力するかが選択される。また、三角形状の斜辺部分に配置されたシフタの第１の入力に二値の一方の値、例えば“０”が入力され、斜辺部分の２段目からＮ段目のシフタの第２の入力に前段の斜辺部分に属するシフタの出力が入力される。また、三角形状の垂直辺部分に配置されたシフタの第２の入力に二値の他方の値、例えば“１”が入力され、垂直辺部分の２段目からＮ段目のシフタの第１の入力に前段の垂直辺部分に属するシフタの出力が入力される。また、三角形状の斜辺部分以外および垂直辺部分以外に配置されたシフタの第１の入力に前段の同じ列のシフタの出力が入力され、第２の入力に前段の同じ列のシフタの隣の垂直辺側に配置されたシフタの出力が入力される。
【００６５】
エンコーダ４０は、シフタアレイ１０から出力されるＮビットの二値データを、二値表現されたデータの二値の何れか一方の個数、例えば“１”の個数を計数した値に変換する。
【００６６】
セレクタ２０は、Ｎ個のＤ−ＦＦ３０の出力を反転せずにシフタの制御信号とする状態と、Ｎ個のＤ−ＦＦ３０の出力を反転してシフタの制御信号とする状態とを切り替えることにより、Ｎ個のビットからなる二値表現されたデータ中の二値の何れか一方を、計数のために選択的に指定する。
【００６７】
したがって、本発明の二値データ計数装置は、Ｎ≧３２のような場合、例えば６４ビットあるいはそれ以上のビット数の場合において、従来のハードウェア構成に比較して、非常に小さな回路規模で実現でき、１クロック期間で処理を実行することができ、しかも、１クロック期間をより短くすることができる二値データ計数装置を実現できる。
【００６８】
なお、上記の三角形状の配置は、シフタアレイとして面積を最小にできるものである。しかし、配置の面積を考えなければ、上記の各構成要素の接続および入出力の関係を満足しておればよく、シフタアレイは上記三角形状に限るものではない。つまり、回路構成の説明のために、便宜上三角形状と表現しただけであり、実際の配置は三角形状に限られるものではない。
【００６９】
以下、本発明の二値データ計数装置を適用した面積情報抽出装置およびハフ変換装置について説明する。
【００７０】
まず、本発明の実施の形態の二値データ計数装置を適用した面積情報抽出装置を図４により説明する。図４において、符号４１は原画像データを示している。符号４２は原画像データレジスタを示し、この原画像データレジスタ４２に格納されたデータがＮ個のビットからなる二値表現されたデータで、面積抽出の対象となるデータ（たとえば、“１”の値を有する）を含んでいる。
【００７１】
符号４３はラベル情報を示している。符号４４はラベル情報レジスタを示し、原画像データ４１をラベリング処理した結果のラベル情報４３が格納され、このラベル情報レジスタ４４に格納されたラベル情報４３により面積抽出を行う領域を対象領域として指定することができる。
【００７２】
符号４５はマスク処理回路（論理ＡＮＤ処理回路）を示し、ラベル情報レジスタ４４の情報により、原画像データレジスタ４２の中でラベル情報４３で指定された対象領域以外の領域のデータの値を“０”にマスクする回路である。
【００７３】
符号４６は二値データの“１”の個数を計数する回路を示し、上記の実施の形態が適用される。符号４７は累算器を示し、１を計数する回路４６の出力値の累算処理を行うことで、面積抽出を行う。符号４８は面積情報の値であり、ラベル情報レジスタ４４で指定された領域に対する面積に相当する。上記が本発明の実施の形態の二値データ計数装置を適用した面積情報抽出装置である。
【００７４】
つぎに、本発明の実施の形態の二値データ計数装置を適用したハフ変換装置を図５により説明する。このハフ変換装置は、特開平８−２６３６５３号公報に示されている階層型ハフ変換処理方法およびその処理装置において図示されている論理１計数回路の部分に、上記の実施の形態が適用される。
【００７５】
上記のハフ変換装置は、画像中の直線成分を抽出するものであり、図５のように構成されている。図５において、符号５１は原画像データを示している。符号５２は原画像データレジスタを示している。符号５３はマスクパターンを示している。符号５４はマスクパターンレジスタを示している。符号５５は論理ＡＮＤ処理回路を示している。符号５６は二値データの“１”の個数を計数する回路を示し、上記の実施の形態の二値データ計数装置が適用される。符号５７は累算器を示している。
【００７６】
以上のような構成において、原画像データレジスタ５２の中のハフ変換の対象として有効な部分（ＳΘ平面の所定の矩形領域（ｉ，ｊ）に対応したＸＹ平面上の鼓形領域）を、マスクパターンレジスタ５４で指定する。具体的には、原画像データレジスタ５２のデータとマスクパターンレジスタ５４のデータとの論理ＡＮＤ処理を行う。この論理ＡＮＤ処理の結果が、計数されるべきデータ、つまりハフ変換の対象として有効な部分となり、論理ＡＮＤ処理回路５５より出力される。
【００７７】
この論理ＡＮＤ処理回路５５の出力における“１”の個数を、二値データの１を計数する回路５６で計数する。そして、累算器５７によって、１を計数する回路５６の出力値の累算処理を行う。この累算器５７からハフ変換の対象として有効な部分に対応した代表値Ｖ（ｉ，ｊ) ５８が出力される。この代表値Ｖ（ｉ，ｊ) ５８は、ＳΘ平面の矩形領域（ｉ，ｊ) に対応するＸＹ平面上の原画像データ中の鼓形領域に含まれる黒画素点の数に該当する。
【００７８】
【発明の効果】
本発明によれば、Ｎ個のビットからなる二値表現されたデータの各ビット値で、シフタアレイを構成する各シフタの動作を制御することにより、Ｎ個のビットからなる二値表現されたデータ中の二値の何れか一方の個数だけ、二値の一方または他方が片側に詰められた状態でＮビットの二値データを出力するので、シフタアレイの動作は１クロックで完了させることが可能であり、しかも加算器に比べて格段に回路規模が小さい。
【００７９】
したがって、従来例に比較して、処理速度が高速でかつ小さな回路規模で、二値表現されたデータの中の“１”もしくは“０”の個数の計数処理を実現することができ、安価な二値データ計数装置を提供することができる。さらに、シフト動作は多ビットの加算演算処理に比べて短時間に行うことが可能であるため、加算器のネートワーク構成による回路構成よりもさらに高速処理が可能である。
【図面の簡単な説明】
【図１】  本発明の実施の形態における、Ｎ＝８の場合の二値データ計数装置の構成を示すブロック図である。
【図２】  （ａ）はシフタの説明図、（ｂ）はその動作図表、（ｃ）はセレクタの説明図、（ｄ）はその動作図表である。
【図３】  ＭＯＤＥ＝１，ＢＤＡＴＡ［７：０］＝( ０，０，１，１，０，０，１，０) の場合の処理例の図１の説明図である。
【図４】  本発明の二値データ計数装置を応用した面積情報抽出装置のフローチャートである。
【図５】  本発明の二値データ計数装置を応用したハフ変換装置のフローチャートである。
【図６】  従来例としての、Ｎ＝１６の場合の二値データ計数装置のブロック図である。
【図７】  シフタの構成を示す回路図である。
【図８】  セレクタの構成を示す回路図である。
【符号の説明】
１０    シフタアレイ
２０    セレクタ
３０    Ｄフリップフロップ
４０    エンコーダ
【図１】
0003776319.tif 000003
【図２】
0003776319.tif 000004
【図３】
0003776319.tif 000005
【図４】
0003776319.tif 000006
【図５】
0003776319.tif 000007
【図６】
0003776319.tif 000008
【図７】
0003776319.tif 000009
【図８】
0003776319.tif 000010