(57)【要約】【課題】  高速に輝度勾配ヒストグラムを生成することができるヒストグラム生成回路及びヒストグラム生成方法を提供する。【解決手段】  入力画像の輝度勾配ヒストグラムを生成するヒストグラム生成回路であって、前記入力画像のＸ方向エッジ画像及びＹ方向エッジ画像のそれぞれにおける画素の画素値であるＸ方向勾配強度及びＹ方向勾配強度の供給を受け、画素ごとの勾配強度を算出する勾配強度算出部と、前記Ｘ方向勾配強度及び前記Ｙ方向勾配強度の供給を受け、画素ごとに勾配方向に対応するビン番号を求める勾配方向算出部と、前記ビン番号を用いて定められたメモリのアドレスに、前記勾配強度を書き込むことで、輝度勾配ヒストグラムを生成する勾配ヒストグラム生成部と、を含む。【選択図】  図１
2018147304.tif 000002
【特許請求の範囲】
【請求項１】
ＸＹ平面上の入力画像の輝度勾配ヒストグラムを生成するヒストグラム生成回路であって、
前記入力画像のＸ方向エッジ画像及びＹ方向エッジ画像のそれぞれにおける画素の画素値であるＸ方向勾配強度及びＹ方向勾配強度の供給を受け、画素ごとの勾配強度を算出する勾配強度算出部と、
前記Ｘ方向勾配強度及び前記Ｙ方向勾配強度の供給を受け、画素ごとに勾配方向に対応するビン番号を求める勾配方向算出部と、
前記ビン番号を用いて定められたメモリのアドレスに、前記勾配強度を書き込むことで、輝度勾配ヒストグラムを生成する勾配ヒストグラム生成部と、
を含む、
ヒストグラム生成回路。
【請求項２】
前記勾配方向算出部は、前記Ｘ方向勾配強度及び前記Ｙ方向勾配強度の少なくとも１つを入力とする１以上の比較器を用いて前記ビン番号を求める、請求項１に記載のヒストグラム生成回路。
【請求項３】
前記勾配方向算出部は、
前記Ｘ方向勾配強度の供給を受け、該Ｘ方向勾配強度が０未満であるか否かを判断する第１の比較器と、
前記Ｙ方向勾配強度の供給を受け、該Ｙ方向勾配強度が０未満であるか否かを判断する第２の比較器と、
前記Ｘ方向勾配強度及び前記Ｙ方向勾配強度の供給を受け、該Ｘ方向勾配強度の絶対値が、該Ｙ方向勾配強度の絶対値未満であるか否かを判断する第３の比較器と、
前記第１の比較器、前記第２の比較器及び前記第３の比較器から供給される出力値を結合した前記ビン番号を出力する出力部と、
を含む、
請求項２に記載のヒストグラム生成回路。
【請求項４】
前記勾配ヒストグラム生成部は、
前記勾配方向算出部から供給された前記ビン番号を記憶して、それに基づくアドレス信号を前記メモリに出力するアドレスレジスタと、
前記勾配強度算出部から供給された前記勾配強度と、前記アドレス信号により指定された前記メモリのアドレスから読み出されたリードデータに基づく値とを加算して加算値を求める加算器と、
前記加算器から供給された加算値を記憶し、ライトデータとして前記メモリに出力するデータレジスタと、
を含み、
前記ライトデータは、前記アドレス信号により指定された前記メモリのアドレスに記憶される、
請求項１〜３のいずれか一項に記載のヒストグラム生成回路。
【請求項５】
前記勾配ヒストグラム生成部は、さらに、
前記加算器に出力するデータを、前記リードデータ、前記データレジスタが記憶しているデータである記憶データ及び前記データレジスタが前回記憶していたデータである前回記憶データの中から選択可能なマルチプレクサと、
前記アドレスレジスタが記憶している記憶ビン番号、前記アドレスレジスタが前回記憶していた前回記憶ビン番号、及び前記アドレスレジスタが前々回記憶していた前々回記憶ビン番号に基づき、前記マルチプレクサを制御する制御信号、前記メモリからのデータの読み出しを可能とするリードイネーブル信号及び前記メモリへのデータの書き込みを可能とするライトイネーブル信号を生成する制御部と、
を含み、
前記制御部は、
前記記憶ビン番号と前記前回記憶ビン番号とが等しい場合に、前記記憶データを前記マルチプレクサに選択させ、前記記憶ビン番号と前記前々回記憶ビン番号とが等しい場合に、前記前回記憶データを前記マルチプレクサに選択させ、前記記憶ビン番号が前記前回記憶ビン番号及び前記前々回記憶ビン番号のいずれとも等しくない場合に、前記リードデータを前記マルチプレクサに選択させる制御信号を生成し、
前記記憶ビン番号が前記前回記憶ビン番号及び前記前々回記憶ビン番号のいずれとも等しくない場合に前記リードイネーブル信号を生成し、
前記前々回記憶ビン番号が前記記憶ビン番号及び前記前回記憶ビン番号のいずれとも等しくない場合に前記ライトイネーブル信号を生成する、
請求項４に記載のヒストグラム生成回路。
【請求項６】
前記アドレスレジスタは、前記記憶ビン番号に基づくリードアドレス信号と、前記前々回記憶ビン番号に基づくライトアドレス信号を前記メモリに出力し、
前記リードデータは、前記リードイネーブル信号が前記メモリに供給された場合に、前記リードアドレス信号により指定された前記メモリのアドレスより読み出され、
前記ライトデータは、前記ライトイネーブル信号が前記メモリに供給された場合に、前記ライトアドレス信号により指定された前記メモリのアドレスに書き込まれる、
請求項５に記載のヒストグラム生成回路。
【請求項７】
請求項１〜６のいずれか一項に記載のヒストグラム生成回路と、
前記入力画像に対してエッジ検出フィルタを適用することで前記Ｘ方向エッジ画像及び前記Ｙ方向エッジ画像を生成して、前記ヒストグラム生成回路に出力するエッジ検出フィルタ回路と、
を含むヒストグラム生成システム。
【請求項８】
複数の請求項１〜６のいずれか一項に記載のヒストグラム生成回路と、
前記入力画像に対してエッジ検出フィルタを適用することで前記Ｘ方向エッジ画像及び前記Ｙ方向エッジ画像を生成して複数のセルに分割し、分割後の各セルを、当該セルに対応する前記ヒストグラム生成回路にそれぞれ出力するエッジ検出フィルタ回路と、
を含むヒストグラム生成システム。
【請求項９】
ヒストグラム生成回路において、ＸＹ平面上の入力画像の輝度勾配ヒストグラムを生成するヒストグラム生成方法であって、
勾配強度算出部にて、前記入力画像のＸ方向エッジ画像及びＹ方向エッジ画像のそれぞれにおける画素の画素値であるＸ方向勾配強度及びＹ方向勾配強度から、画素ごとの勾配強度を算出することと、
勾配方向算出部にて、前記Ｘ方向勾配強度及び前記Ｙ方向勾配強度から、画素ごとに勾配方向に対応するビン番号を求めることと、
勾配ヒストグラム生成部により、前記ビン番号を用いて定められたメモリのアドレスに、前記勾配強度を書き込むことで、輝度勾配ヒストグラムを生成することと、
を含む、
ヒストグラム生成方法。
【請求項１０】
前記勾配方向算出部にて前記ビン番号を求めることは、前記Ｘ方向勾配強度及び前記Ｙ方向勾配強度の少なくとも１つを入力とする１以上の比較器を用いて行われる、請求項９に記載のヒストグラム生成方法。
【請求項１１】
前記勾配方向算出部にて前記ビン番号を求めることには、
第１の比較器にて、前記Ｘ方向勾配強度が０未満であるか否かを判断することと、
第２の比較器にて、前記Ｙ方向勾配強度が０未満であるか否かを判断することと、
第３の比較器にて、前記Ｘ方向勾配強度の絶対値が、前記Ｙ方向勾配強度の絶対値以下であるか否かを判断することと、
出力部にて、前記第１の比較器、前記第２の比較器及び前記第３の比較器から供給される出力値を結合した前記ビン番号を出力することと、
を含む、
請求項１０に記載のヒストグラム生成方法。
【請求項１２】
前記勾配ヒストグラム生成部により、前記輝度勾配ヒストグラムを生成することには、
アドレスレジスタにて、前記勾配方向算出部から供給された前記ビン番号を記憶し、それに基づくアドレス信号を前記メモリに出力することと、
加算器にて、前記勾配強度算出部から供給された前記勾配強度と、前記アドレス信号により指定された前記メモリのアドレスから読み出されたリードデータに基づく値とを加算して加算値を求めることと、
データレジスタにて、前記加算器から供給された加算値を記憶し、ライトデータとして前記メモリへ出力することと、
を含み、
前記リードデータは、前記アドレス信号により指定された前記メモリのアドレスに記憶される、
請求項９〜１１のいずれか一項に記載のヒストグラム生成方法。
【請求項１３】
前記勾配ヒストグラム生成部により、前記輝度勾配ヒストグラムを生成することには、
マルチプレクサにて、前記加算器に出力するデータを、前記データレジスタが記憶しているデータである記憶データ及び前記データレジスタが前回記憶していたデータである前回記憶データの中から選択することと、
制御部にて、前記アドレスレジスタが記憶している記憶ビン番号、前記アドレスレジスタが前回記憶していた前回記憶ビン番号、及び前記アドレスレジスタが前々回記憶していた前々回記憶ビン番号に基づき、前記マルチプレクサを制御する制御信号、前記メモリからのデータの読み出しを可能とするリードイネーブル信号及び前記メモリへのデータの書き込みを可能とするライトイネーブル信号を生成することと、
を含み、
前記制御部にて、前記記憶ビン番号と前記前回記憶ビン番号とが等しい場合に、前記記憶データを前記マルチプレクサに選択させ、前記記憶ビン番号と前記前々回記憶ビン番号とが等しい場合に、前記前回記憶データを前記マルチプレクサに選択させ、前記記憶ビン番号が前記前回記憶ビン番号及び前記前々回記憶ビン番号のいずれとも等しくない場合に、前記リードデータを前記マルチプレクサに選択させる制御信号を生成し、前記記憶ビン番号が前記前回記憶ビン番号及び前記前々回記憶ビン番号のいずれとも等しくない場合に前記リードイネーブル信号を生成し、前記前々回記憶ビン番号が前記記憶ビン番号及び前記前回記憶ビン番号のいずれとも等しくない場合に前記ライトイネーブル信号を生成する、
請求項１２に記載のヒストグラム生成方法。
【請求項１４】
前記勾配ヒストグラム生成部により、前記輝度勾配ヒストグラムを生成することには、
前記アドレスレジスタにて、前記記憶ビン番号に基づくリードアドレス信号と、前記前々回記憶ビン番号に基づくライトアドレス信号を前記メモリに出力すること、
を含み、
前記リードデータは、前記リードイネーブル信号が前記メモリに供給された場合に、前記リードアドレス信号により指定された前記メモリのアドレスより読み出され、
前記ライトデータは、前記ライトイネーブル信号が前記メモリに供給された場合に、前記ライトアドレス信号により指定された前記メモリのアドレスに書き込まれる、
請求項１３に記載のヒストグラム生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ヒストグラム生成回路及びヒストグラム生成方法に関し、特に、画像データから輝度勾配ヒストグラムを生成するヒストグラム生成回路及びヒストグラム生成方法に関する。
【背景技術】
【０００２】
輝度勾配ヒストグラムを利用した画像の特徴量は、画像認識技術に利用されることが知られている。輝度勾配ヒストグラムを利用する代表的な画像の特徴量としては、ＨＯＧ（Histogram of Oriented Gradient）特徴量及びＳＩＦＴ（Scale Invariant Feature Transform）特徴量等が挙げられる。
【０００３】
上述の輝度勾配ヒストグラムを生成するにあたっては、一般的に、数値演算やデータアクセスが頻繁に発生するため、時間を要するという問題がする。そこで、輝度勾配ヒストグラムを高速に生成するための技術が提案されている。
【０００４】
例えば、下記特許文献１は、演算量の多い三角関数を使用せずに、高速に輝度勾配方向を計算する方法及び装置を開示する。具体的には、特許文献１の装置は、所定画素を囲む８つの画素の輝度値から、所定画素を中心とする８つ点対称方向にそれぞれ沿った方向の輝度差分値を求め、各輝度差分値の大きさの比較に基づき、所定画素における輝度勾配方向を求めている。
【０００５】
また、下記特許文献２は、演算器とレジスタとにより構成されたプロセッシングエレメントをアレイ状に多数実装し、勾配強度計算、勾配方向計算及び輝度勾配ヒストグラムの生成を、上記アレイ状に多数実装したプロセッシングエレメントによる分散処理により行う画像認識プロセッサを開示する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許５５６１１３３号公報
【特許文献２】特開２０１２−２２１１３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記特許文献１は、演算量の多い三角関数を使用しないことで勾配強度及び勾配方向を高速に算出する技術に向けられており、メモリへの高速アクセスに関して何ら考慮されておらず、輝度勾配ヒストグラム生成の高速化が十分でなかった。
また、上記特許文献２は、アレイ状に多数実装したプロセッシングエレメントによる分散処理により輝度勾配ヒストグラム生成の高速化を図っているが、メモリへの高速アクセスに関して何ら考慮されておらず、更なる改善の余地があった。
【０００８】
そこで、本発明は、高速に輝度勾配ヒストグラムを生成することができるヒストグラム生成回路及びヒストグラム生成方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するための本発明は、以下に示す発明特定事項乃至は技術的特徴を含んで構成される。
【００１０】
すなわち、ある観点に従う発明は、ＸＹ平面上の入力画像の輝度勾配ヒストグラムを生成するヒストグラム生成回路である。かかるヒストグラム生成回路は、前記入力画像のＸ方向エッジ画像及びＹ方向エッジ画像のそれぞれにおける画素の画素値であるＸ方向勾配強度及びＹ方向勾配強度の供給を受け、画素ごとの勾配強度を算出する勾配強度算出部と、前記Ｘ方向勾配強度及び前記Ｙ方向勾配強度の供給を受け、画素ごとに勾配方向に対応するビン番号を求める勾配方向算出部と、前記ビン番号を用いて定められたメモリのアドレスに、前記勾配強度を書き込むことで、輝度勾配ヒストグラムを生成する勾配ヒストグラム生成部と、を含む。
【００１１】
ここで、前記勾配方向算出部は、前記Ｘ方向勾配強度及び前記Ｙ方向勾配強度の少なくとも１つを入力とする１以上の比較器を用いて前記ビン番号を求め得る。
【００１２】
ここで、前記勾配方向算出部は、前記Ｘ方向勾配強度の供給を受け、該Ｘ方向勾配強度が０未満であるか否かを判断する第１の比較器と、前記Ｙ方向勾配強度の供給を受け、該Ｙ方向勾配強度が０未満であるか否かを判断する第２の比較器と、前記Ｘ方向勾配強度及び前記Ｙ方向勾配強度の供給を受け、該Ｘ方向勾配強度の絶対値が、該Ｙ方向勾配強度の絶対値未満であるか否かを判断する第３の比較器と、前記第１の比較器、前記第２の比較器及び前記第３の比較器から供給される出力値を結合した前記ビン番号を出力する出力部と、を含み得る。
【００１３】
ここで、前記勾配ヒストグラム生成部は、前記勾配方向算出部から供給された前記ビン番号を記憶して、それに基づくアドレス信号を前記メモリに出力するアドレスレジスタと、前記勾配強度算出部から供給された前記勾配強度と、前記アドレス信号により指定された前記メモリのアドレスから読み出されたリードデータに基づく値とを加算して加算値を求める加算器と、前記加算器から供給された加算値を記憶し、ライトデータとして前記メモリに出力するデータレジスタと、を含み、前記ライトデータは、前記アドレス信号により指定された前記メモリのアドレスに記憶され得る。
【００１４】
ここで、前記勾配ヒストグラム生成部は、さらに、前記加算器に出力するデータを、前記リードデータ、前記データレジスタが記憶しているデータである記憶データ及び前記データレジスタが前回記憶していたデータである前回記憶データの中から選択可能なマルチプレクサと、前記アドレスレジスタが記憶している記憶ビン番号、前記アドレスレジスタが前回記憶していた前回記憶ビン番号、及び前記アドレスレジスタが前々回記憶していた前々回記憶ビン番号に基づき、前記マルチプレクサを制御する制御信号、前記メモリからのデータの読み出しを可能とするリードイネーブル信号及び前記メモリへのデータの書き込みを可能とするライトイネーブル信号を生成する制御部と、を含み、前記制御部は、前記記憶ビン番号と前記前回記憶ビン番号とが等しい場合に、前記記憶データを前記マルチプレクサに選択させ、前記記憶ビン番号と前記前々回記憶ビン番号とが等しい場合に、前記前回記憶データを前記マルチプレクサに選択させ、前記記憶ビン番号が前記前回記憶ビン番号及び前記前々回記憶ビン番号のいずれとも等しくない場合に、前記リードデータを前記マルチプレクサに選択させる制御信号を生成し、前記記憶ビン番号が前記前回記憶ビン番号及び前記前々回記憶ビン番号のいずれとも等しくない場合に前記リードイネーブル信号を生成し、前記前々回記憶ビン番号が前記記憶ビン番号及び前記前回記憶ビン番号のいずれとも等しくない場合に前記ライトイネーブル信号を生成し得る。
【００１５】
ここで、前記アドレスレジスタは、前記記憶ビン番号に基づくリードアドレス信号と、前記前々回記憶ビン番号に基づくライトアドレス信号を前記メモリに出力し、前記リードデータは、前記リードイネーブル信号が前記メモリに供給された場合に、前記リードアドレス信号により指定された前記メモリのアドレスより読み出され、前記ライトデータは、前記ライトイネーブル信号が前記メモリに供給された場合に、前記ライトアドレス信号により指定された前記メモリのアドレスに書き込まれ得る。
【００１６】
また、ある観点に従う発明は、上記いずれかのヒストグラム生成回路と、前記入力画像に対してエッジ検出フィルタを適用することで前記Ｘ方向エッジ画像及び前記Ｙ方向エッジ画像を生成して、前記ヒストグラム生成回路に出力するエッジ検出フィルタ回路と、を含むヒストグラム生成システムである。
【００１７】
また、ある観点に従う発明は、複数の上記いずれかのヒストグラム生成回路と、前記入力画像に対してエッジ検出フィルタを適用することで前記Ｘ方向エッジ画像及び前記Ｙ方向エッジ画像を生成して複数のセルに分割し、分割後の各セルを、当該セルに対応する前記ヒストグラム生成回路にそれぞれ出力するエッジ検出フィルタ回路と、を含むヒストグラム生成システムである。
【００１８】
また、ある観点に従う発明は、ヒストグラム生成回路において、ＸＹ平面上の入力画像の輝度勾配ヒストグラムを生成するヒストグラム生成方法である。かかるヒストグラム生成方法は、勾配強度算出部にて、前記入力画像のＸ方向エッジ画像及びＹ方向エッジ画像のそれぞれにおける画素の画素値であるＸ方向勾配強度及びＹ方向勾配強度から、画素ごとの勾配強度を算出することと、勾配方向算出部にて、前記Ｘ方向勾配強度及び前記Ｙ方向勾配強度から、画素ごとに勾配方向に対応するビン番号を求めることと、勾配ヒストグラム生成部により、前記ビン番号を用いて定められたメモリのアドレスに、前記勾配強度を書き込むことで、輝度勾配ヒストグラムを生成することと、を含む。
【００１９】
また、前記勾配方向算出部にて前記ビン番号を求めることは、前記Ｘ方向勾配強度及び前記Ｙ方向勾配強度の少なくとも１つを入力とする１以上の比較器を用いて行い得る。
【００２０】
また、前記勾配方向算出部にて前記ビン番号を求めることには、第１の比較器にて、前記Ｘ方向勾配強度が０未満であるか否かを判断することと、第２の比較器にて、前記Ｙ方向勾配強度が０未満であるか否かを判断することと、第３の比較器にて、前記Ｘ方向勾配強度の絶対値が、前記Ｙ方向勾配強度の絶対値以下であるか否かを判断することと、出力部にて、前記第１の比較器、前記第２の比較器及び前記第３の比較器から供給される出力値を結合した前記ビン番号を出力することと、を含み得る。
【００２１】
また、前記勾配ヒストグラム生成部により、前記輝度勾配ヒストグラムを生成することには、アドレスレジスタにて、前記勾配方向算出部から供給された前記ビン番号を記憶し、それに基づくアドレス信号を前記メモリに出力することと、加算器にて、前記勾配強度算出部から供給された前記勾配強度と、前記アドレス信号により指定された前記メモリのアドレスから読み出されたリードデータに基づく値とを加算して加算値を求めることと、データレジスタにて、前記加算器から供給された加算値を記憶し、ライトデータとして前記メモリへ出力することと、を含み、前記リードデータは、前記アドレス信号により指定された前記メモリのアドレスに記憶され得る。
【００２２】
また前記勾配ヒストグラム生成部により、前記輝度勾配ヒストグラムを生成することには、マルチプレクサにて、前記加算器に出力するデータを、前記データレジスタが記憶しているデータである記憶データ及び前記データレジスタが前回記憶していたデータである前回記憶データの中から選択することと、制御部にて、前記アドレスレジスタが記憶している記憶ビン番号、前記アドレスレジスタが前回記憶していた前回記憶ビン番号、及び前記アドレスレジスタが前々回記憶していた前々回記憶ビン番号に基づき、前記マルチプレクサを制御する制御信号、前記メモリからのデータの読み出しを可能とするリードイネーブル信号及び前記メモリへのデータの書き込みを可能とするライトイネーブル信号を生成することと、を含み、前記制御部にて、前記記憶ビン番号と前記前回記憶ビン番号とが等しい場合に、前記記憶データを前記マルチプレクサに選択させ、前記記憶ビン番号と前記前々回記憶ビン番号とが等しい場合に、前記前回記憶データを前記マルチプレクサに選択させ、前記記憶ビン番号が前記前回記憶ビン番号及び前記前々回記憶ビン番号のいずれとも等しくない場合に、前記リードデータを前記マルチプレクサに選択させる制御信号を生成し、前記記憶ビン番号が前記前回記憶ビン番号及び前記前々回記憶ビン番号のいずれとも等しくない場合に前記リードイネーブル信号を生成し、前記前々回記憶ビン番号が前記記憶ビン番号及び前記前回記憶ビン番号のいずれとも等しくない場合に前記ライトイネーブル信号を生成し得る。
【００２３】
また、前記勾配ヒストグラム生成部により、前記輝度勾配ヒストグラムを生成することには、前記アドレスレジスタにて、前記記憶ビン番号に基づくリードアドレス信号と、前記前々回記憶ビン番号に基づくライトアドレス信号を前記メモリに出力すること、を含み、前記リードデータは、前記リードイネーブル信号が前記メモリに供給された場合に、前記リードアドレス信号により指定された前記メモリのアドレスより読み出され、前記ライトデータは、前記ライトイネーブル信号が前記メモリに供給された場合に、前記ライトアドレス信号により指定された前記メモリのアドレスに書き込まれ得る。
【発明の効果】
【００２４】
本発明によれば、高速に輝度勾配ヒストグラムを生成することができるようになる。
【００２５】
本発明の他の技術的特徴、目的、及び作用効果乃至は利点は、添付した図面を参照して説明される以下の実施形態により明らかにされる。
【図面の簡単な説明】
【００２６】
【図１】本発明の一実施形態に係るヒストグラム生成回路を説明するためのブロックダイアグラムである。
【図２Ａ】本発明の一実施形態に係る勾配方向算出部を説明するためのブロックダイアグラムである。
【図２Ｂ】本発明の一実施形態に係る画素の勾配方向と各比較器の出力との関係を説明するためのテーブルである。
【図３】本発明の一実施形態に係る勾配ヒストグラム生成部の概略構成を説明するためのブロックダイアグラムである。
【図４】本発明の一実施形態に係る勾配ヒストグラム生成部の構成を具体的に説明するためのブロックダイアグラムである。
【図５】本発明の一実施形態に係るヒストグラム生成回路の各部の動きを示すタイミングチャートである。
【図６】本発明の一実施形態に係るヒストグラム生成回路の各部の動きを示すタイミングチャートである。
【図７】本発明の一実施形態に係るヒストグラム生成回路の各部の動きを示すタイミングチャートである。
【図８Ａ】本発明の一実施形態に係るヒストグラム生成方法を示すフローチャートである。
【図８Ｂ】本発明の一実施形態に係るヒストグラム生成方法を示すフローチャートである。
【図８Ｃ】本発明の一実施形態に係るヒストグラム生成方法を示すフローチャートである。
【図８Ｄ】本発明の一実施形態に係るヒストグラム生成方法を示すフローチャートである。
【図９】本発明の一実施形態に係るヒストグラム生成システムを説明するためのブロックダイアグラムである。
【図１０】本発明の一実施形態に係るヒストグラム生成システムを説明するためのブロックダイアグラムである。
【発明を実施するための形態】
【００２７】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。本発明は、その趣旨を逸脱しない範囲で種々変形（例えば各実施形態を組み合わせる等）して実施することができる。また、以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付して表している。図面は模式的なものであり、必ずしも実際の寸法や比率等とは一致しない。図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることがある。
【００２８】
図１は、本発明の一実施形態に係るヒストグラム生成回路を説明するためのブロックダイアグラムである。同図に示すように、本実施形態に係るヒストグラム生成回路１は、例えば、勾配強度算出部１０と、勾配方向算出部２０と、勾配ヒストグラム生成部３０とを含み構成される。ヒストグラム生成回路１は、例えば、輝度勾配ヒストグラムに基づくＨＯＧ特徴量やＳＩＦＴ特徴量等を利用して画像認識を行う画像認識装置に組み込まれる。
本実施形態において、ヒストグラム生成回路１は、入力画像を複数に分割したセルごとの輝度勾配ヒストグラムを生成する。
【００２９】
勾配強度算出部１０は、輝度勾配ヒストグラムを生成すべき入力画像のセルに含まれる画素ごとの勾配強度を算出する。具体的には、勾配強度算出部１０は、入力画像に対してエッジ検出フィルタ（図示せず）を適用することで生成されたＸ方向エッジ画像及びＹ方向エッジ画像における画素の画素値の供給を受け、画素ごとの勾配強度を算出する。本実施形態では、勾配強度算出部１０は、座標（ｘ，ｙ）である画素のＸ方向エッジ画像における画素値であるＸ方向勾配強度ｄｘ（ｘ，ｙ）、及びＹ方向エッジ画像における画素値であるＹ方向勾配強度ｄｙ（ｘ，ｙ）の供給を受ける。勾配強度算出部１０は、Ｘ方向勾配強度ｄｘ（ｘ，ｙ）及びＹ方向勾配強度ｄｙ（ｘ，ｙ）の２乗和の平方根を求めることで、座標（ｘ，ｙ）における勾配強度ｍａｇ（ｘ，ｙ）を算出する。勾配強度算出部１０は、算出した勾配強度ｍａｇ（ｘ，ｙ）を勾配ヒストグラム生成部３０に出力する。
【００３０】
なお、本実施形態においては、勾配強度算出部１０は、２サイクル以内のクロックＣＬＫで勾配強度ｍａｇ（ｘ，ｙ）を算出する。これを実現するため、勾配強度算出部１０は、例えば、パイプライン化又はマルチサイクルパス化するなど既知の技術を適用した演算回路を採用して勾配強度ｍａｇ（ｘ，ｙ）の算出を高速化してよく、また、必要な精度を満たすことを条件に、近似計算を用いることで勾配強度ｍａｇ（ｘ，ｙ）の算出を高速化してよい。
【００３１】
勾配方向算出部２０は、輝度勾配ヒストグラムを生成すべき入力画像のセルに含まれる画素ごとに勾配方向に対応するビン番号を求める。具体的には、勾配方向算出部２０は、入力画像に対してエッジ検出フィルタ（図示せず）を適用することで生成されたＸ方向エッジ画像及びＹ方向エッジ画像における画素の画素値の供給を受け、画素ごとに勾配方向に対応するビン番号を求める。本実施形態では、勾配方向算出部２０は、例えば、座標（ｘ，ｙ）である画素のＸ方向エッジ画像の画素値であるＸ方向勾配強度ｄｘ（ｘ，ｙ）及びＹ方向エッジ画像の画素値であるＹ方向勾配強度ｄｙ（ｘ，ｙ）の供給を受ける。そして、勾配方向算出部２０は、Ｘ方向勾配強度ｄｘ（ｘ，ｙ）及びＹ方向勾配強度ｄｙ（ｘ，ｙ）の少なくとも１つを入力とする１つ以上の比較器を使用し、１サイクルのクロックＣＬＫで、座標（ｘ，ｙ）である画素の勾配方向に対応するビン番号ｂｉｎ（ｘ，ｙ）を求める。勾配方向算出部２０は、求めたビン番号ｂｉｎ（ｘ，ｙ）を勾配ヒストグラム生成部３０に出力する。なお、勾配方向算出部２０におけるビン番号ｂｉｎ（ｘ，ｙ）を求める方法の詳細については後述する。
【００３２】
勾配ヒストグラム生成部３０は、勾配強度算出部１０から供給される勾配強度ｍａｇ（ｘ，ｙ）と勾配方向算出部２０から供給されるビン番号ｂｉｎ（ｘ，ｙ）とに基づき、セルの輝度勾配ヒストグラムを生成する。本実施形態では、勾配ヒストグラム生成部３０は、勾配強度算出部１０から供給された座標（ｘ，ｙ）である画素の勾配強度ｍａｇ（ｘ，ｙ）を、勾配方向算出部２０から供給された座標（ｘ，ｙ）である画素の勾配方向に対応するビン番号ｂｉｎ（ｘ，ｙ）に対応したメモリ４０のアドレスに書き込むことで、輝度勾配ヒストグラムを生成する。なお、勾配ヒストグラム生成部３０における輝度勾配ヒストグラムの生成方法の詳細については後述する。
【００３３】
メモリ４０は、勾配ヒストグラム生成部３０から出力される輝度勾配ヒストグラムに関するデータを記憶すると共に、記憶している輝度勾配ヒストグラムに関するデータを勾配ヒストグラム生成部３０に出力する。本実施形態では、メモリ４０は、リードポート及びライトポートを各１つ有する２ポートメモリであり、また、リードレイテンシが１サイクルである。
【００３４】
図２Ａは、本発明の一実施形態に係る勾配方向算出部を説明するためのブロックダイアグラムである。同図に示すように、本実施形態に係る勾配方向算出部２０は、例えば、第１の比較器２０１と、第２の比較器２０２と、第３の比較器２０３と、出力部２０４とを含み構成される。なお、本実施形態においては、輝度勾配ヒストグラムのビンの数を８個としている。したがって、各ビンは、座標（ｘ，ｙ）である画素の勾配角度の角度範囲が、０〜４５度、４５〜９０度、９０〜１３５度、１３５〜１８０度、１８０〜２２５度、２２５〜２７０度、２７０〜３１５度及び３１５〜３６０度である場合にそれぞれ対応する。
【００３５】
第１の比較器２０１は、Ｘ方向勾配強度ｄｘ（ｘ，ｙ）の供給を受け、Ｘ方向勾配強度ｄｘ（ｘ，ｙ）が０未満であるか否かを判断する。つまり、第１の比較器２０１は、座標（ｘ，ｙ）の輝度勾配が、９０〜２７０度の角度範囲内にあるか否かを判断する。第１の比較器２０１は、Ｘ方向勾配強度ｄｘ（ｘ，ｙ）が０未満である場合、例えば出力ビット［２］として“１”を出力する。一方、第１の比較器２０１は、Ｘ方向勾配強度ｄｘ（ｘ，ｙ）が０以上である場合、例えば出力ビット［２］として“０”を出力する。
【００３６】
第２の比較器２０２は、Ｙ方向勾配強度ｄｙ（ｘ，ｙ）の供給を受け、Ｙ方向勾配強度ｄｙ（ｘ，ｙ）が０未満であるか否かを判断する。つまり、第２の比較器２０２は、座標（ｘ，ｙ）の輝度勾配が、１８０〜３６０度の角度範囲内にあるか否かを判断する。第２の比較器２０２は、Ｙ方向勾配強度ｄｙ（ｘ，ｙ）が０未満である場合、例えば出力ビット［１］として“１”を出力する。一方、第２の比較器２０２は、Ｙ方向勾配強度ｄｙ（ｘ，ｙ）が０以上である場合、例えば出力ビット［１］として “０”を出力する。
【００３７】
第３の比較器２０３は、Ｘ方向勾配強度ｄｘ（ｘ，ｙ）及びＹ方向勾配強度ｄｙ（ｘ，ｙ）の供給を受け、Ｘ方向勾配強度ｄｘ（ｘ，ｙ）の絶対値がＹ方向勾配強度ｄｙ（ｘ，ｙ）の絶対値未満であるか否かを判断する。つまり、第３の比較器２０３は、座標（ｘ，ｙ）の輝度勾配が、４５〜１３５度の角度範囲内又は２２５〜３１５度の角度範囲内にあるか否かを判断する。第２の比較器２０２は、Ｘ方向勾配強度ｄｘ（ｘ，ｙ）の絶対値がＹ方向勾配強度ｄｙ（ｘ，ｙ）の絶対値未満である場合、例えば出力ビット［０］として“１”を出力する。一方、第２の比較器２０２は、Ｘ方向勾配強度ｄｘ（ｘ，ｙ）の絶対値がＹ方向勾配強度ｄｙ（ｘ，ｙ）の絶対値以上である場合、例えば出力ビット［１］として“０”を出力する。
【００３８】
出力部２０４は、第１の比較器２０１から供給される出力ビット［２］、第２の比較器２０２から供給される出力ビット［１］及び第３の比較器２０３から供給される出力ビット［０］を連結して、ビン番号ｂｉｎ（ｘ，ｙ）を生成して出力する。本実施形態において、出力部２０４は、出力ビット［２］を上位ビット、出力ビット［１］を中位ビット、出力ビット［０］を下位ビットとした３桁の２進数の値を、ビン番号ｂｉｎ（ｘ，ｙ）として出力する。
【００３９】
図２Ｂは、本発明の一実施形態に係るヒストグラム生成回路における座標（ｘ，ｙ）の画素の勾配方向と、各比較器の出力との関係を説明するためのテーブルである。
【００４０】
同図を参照して、例えば、座標（ｘ，ｙ）である画素の勾配方向が９０〜１３５度の角度範囲内にある場合、第１の比較器２０１は、Ｘ方向勾配強度ｄｘ（ｘ，ｙ）が０未満であることにより、出力ビット［２］として“１”を出力する。また、第２の比較器２０２は、Ｙ方向勾配強度ｄｙ（ｘ，ｙ）が０以上であることにより、出力ビット［１］として“０”を出力する。さらに、第３の比較器２０３は、Ｘ方向勾配強度ｄｘ（ｘ，ｙ）の絶対値がＹ方向勾配強度ｄｙ（ｘ，ｙ）の絶対値未満であることにより、出力ビット［０］として“１”を出力する。
【００４１】
以上により、勾配方向算出部２０は、座標（ｘ，ｙ）の画素の勾配方向が９０〜１３５度の角度範囲内にある場合、“１０１”の値を有するビン番号ｂｉｎ（ｘ，ｙ）を、出力部２０４から出力する。
【００４２】
図３は、本発明の一実施形態にかかる勾配ヒストグラム生成部の概略構成を説明するためのブロックダイアグラムである。同図に示すように、本実施形態にかかる勾配ヒストグラム生成部３０は、例えば、アドレスレジスタ３１０と、加算器３２０と、データレジスタ３３０とを含み構成される。
【００４３】
アドレスレジスタ３１０は、勾配方向算出部２０から供給されたビン番号ｂｉｎ（ｘ，ｙ）と、所定の図示しない供給源から供給されたオフセット値ｏｆｔとを記憶して、それらに基づくアドレス信号ａｄｄをメモリ４０に出力する。オフセット値ｏｆｔは、輝度勾配ヒストグラムを作成するセルごとに、メモリ４０におけるデータの記憶領域を分けるために設定される。また、アドレス信号ａｄｄは、メモリ４０のアドレスを指定する信号である。本実施形態において、アドレスレジスタ３１０は、オフセット値ｏｆｔを上位ビットとし、ビン番号ｂｉｎ（ｘ，ｙ）を下位ビットとした値を、アドレス信号ａｄｄとして、メモリ４０に出力する。これにより、ライトデータｗｄは、図４に示す制御部３４０の制御の下、アドレス信号ａｄｄにより指定されるメモリ４０のアドレスに記憶される一方、リードデータｒｄは、制御部３４０の制御の下、アドレス信号ａｄｄにより指定されるメモリ４０のアドレスから読み出される。
【００４４】
加算器３２０は、勾配強度算出部１０から供給された勾配強度ｍａｇ（ｘ，ｙ）と、アドレス信号ａｄｄにより指定されるメモリ４０のアドレスから読み出されたリードデータｒｄとを加算して、データレジスタ３３０に出力する。
【００４５】
上述したように、アドレス信号ａｄｄにより指定されるメモリ４０のアドレスは、ビン番号ｂｉｎ（ｘ，ｙ）に基づくものであるから、加算器３２０は、すでにメモリ４０に記憶されている同じビン番号であった他の画素の勾配強度に、座標（ｘ，ｙ）である画素の勾配強度ｍａｇ（ｘ，ｙ）を加算することとなる。
【００４６】
データレジスタ３３０は、加算器３２０から供給された勾配強度ｍａｇ（ｘ，ｙ）とリードデータｒｄとの加算値を記憶し、該加算値をライトデータｗｄとしてメモリ４０に出力する。ライトデータｗｄは、アドレス信号ａｄｄにより指定されるメモリ４０のアドレスに記憶される。上述のように、アドレス信号ａｄｄにより指定されるメモリ４０のアドレスは、ビン番号ｂｉｎ（ｘ，ｙ）に基づくものであるから、ライトデータｗｄは、座標（ｘ，ｙ）である画素のビン番号ｂｉｎ（ｘ，ｙ）に応じたメモリ４０のアドレスに記憶される。
【００４７】
図４は、本発明の一実施形態に係る勾配ヒストグラム生成部の構成をより具体的に説明するためのブロックダイアグラムである。同図では、本実施形態に係る勾配ヒストグラム生成部３０は、アドレスレジスタ３１０と、加算器３２０と、データレジスタ３３０とに加え、制御部３４０と、マルチプレクサ３５０とを含み構成される。
【００４８】
アドレスレジスタ３１０は、レジスタｒ＿ｏｆｆｓｅｔ、ｒ＿ｂｉｎ、ｒ＿ｂｉｎ＿ｓｈｔ１及びｒ＿ｂｉｎ_ｓｆｔ２を含む。レジスタｒ＿ｏｆｆｓｅｔは、図示しない供給源から供給されたオフセット値ｏｆｔを記憶し、レジスタｒ＿ｂｉｎは、勾配方向算出部２０から供給されたビン番号ｂｉｎ（ｘ，ｙ）を記憶する。レジスタｒ＿ｂｉｎ＿ｓｆｔ１は、レジスタｒ＿ｂｉｎが１サイクル前のクロックＣＬＫで記憶していたデータを記憶し、レジスタｒ＿ｂｉｎ＿ｓｆｔ２は、レジスタｒ＿ｂｉｎが２サイクル前のクロックＣＬＫで記憶していたデータを記憶する。
【００４９】
また、アドレスレジスタ３１０は、レジスタｒ＿ｏｆｆｓｅｔとレジスタｒ＿ｂｉｎとにそれぞれ記憶しているデータに基づくリードアドレス信号ｒ＿ａｄｄを、メモリ４０に出力する。本実施形態において、アドレスレジスタ３１０は、例えば、レジスタｒ＿ｏｆｆｓｅｔに記憶しているデータを上位ビットとし、レジスタｒ＿ｂｉｎに記憶しているデータを下位ビットとした値を、リードアドレス信号ｒ＿ａｄｄとしてメモリ４０に出力する。
【００５０】
さらに、アドレスレジスタ３１０は、レジスタｒ＿ｏｆｆｓｅｔとレジスタｒ＿ｂｉｎ＿ｓｆｔ２とにそれぞれ記憶しているデータに基づくライトアドレス信号ｗ＿ａｄｄを、メモリ４０に出力する。本実施形態において、アドレスレジスタ３１０は、例えば、レジスタｒ＿ｏｆｆｓｅｔに記憶しているデータを上位ビットとし、レジスタｒ＿ｂｉｎ＿ｓｆｔ２に記憶しているデータを下位ビットとした値を、ライトアドレス信号ｗ＿ａｄｄとしてメモリ４０に出力する。さらにまた、アドレスレジスタ３１０は、レジスタｒ＿ｂｉｎ、ｒ＿ｂｉｎ＿ｓｈｔ１及びｒ＿ｂｉｎ_ｓｆｔ２にそれぞれ記憶しているデータを制御部３４０に出力する。
【００５１】
加算器３２０は、勾配強度算出部１０から供給された勾配強度ｍａｇ（ｘ，ｙ）と、マルチプレクサ３５０から供給されるデータとを加算して、データレジスタ３３０に出力する。
【００５２】
データレジスタ３３０は、レジスタｒ＿ｄａｔａ及びｒ＿ｄａｔａ＿ｓｆｔを含む。レジスタｒ＿ｄａｔａは、加算器３２０から供給された勾配強度ｍａｇ（ｘ，ｙ）とマルチプレクサ３５０から供給されるデータとの加算値を記憶する。レジスタｒ＿ｄａｔａ＿ｓｆｔは、レジスタｒ＿ｄａｔａが１サイクル前のクロックＣＬＫで記憶していたデータを記憶する。
【００５３】
また、データレジスタ３３０は、レジスタｒ＿ｄａｔａに記憶しているデータを、ライトデータｗｄとしてメモリ４０に出力すると共に、マルチプレクサ３５０にも出力する。さらに、データレジスタ３３０は、レジスタｒ＿ｄａｔａ＿ｓｆｔに記憶しているデータを、マルチプレクサ３５０に出力する。
【００５４】
制御部３４０は、アドレスレジスタ３１０から供給されたレジスタｒ＿ｂｉｎ、ｒ＿ｂｉｎ＿ｓｆｔ１及びｒ＿ｂｉｎ＿ｓｆｔ２から供給されたデータに基づき、メモリ４０からのデータの読み出しを可能とするリードイネーブル信号ｒｅを生成し、メモリ４０に出力する。本実施形態において、制御部３４０は、レジスタｒ＿ｂｉｎから供給されるデータが、レジスタｒ＿ｂｉｎ＿ｓｆｔ１及びｒ＿ｂｉｎ＿ｓｆｔ２から供給されたデータのいずれとも等しくない場合に、“Ｅｎａｂｌｅ”であるリードイネーブル信号ｒｅを生成し、メモリ４０に出力する。一方、制御部３４０は、レジスタｒ＿ｂｉｎから供給されたデータが、レジスタｒ＿ｂｉｎ＿ｓｆｔ１及びｒ＿ｂｉｎ＿ｓｆｔ２から供給されたデータの少なくとも一方と等しい場合に、“Ｄｉｓａｂｌｅ”であるリードイネーブル信号ｒｅを生成し、メモリ４０に出力する。
【００５５】
また、制御部３４０は、アドレスレジスタ３１０から供給されたレジスタｒ＿ｂｉｎ、ｒ＿ｂｉｎ＿ｓｆｔ１及びｒ＿ｂｉｎ＿ｓｆｔ２から供給されたデータに基づき制御信号ＣＳを生成し、マルチプレクサ３５０に出力する。本実施形態において、制御部３４０は、レジスタｒ＿ｂｉｎから供給されたデータとレジスタｒ＿ｂｉｎ＿ｓｆｔ１から供給されたデータとが等しい場合、マルチプレクサ３５０に、レジスタｒ＿ｄａｔａから供給されたデータを選択させる制御信号ＣＳ（以下では、「制御信号ＣＳ“２”」と記載する。）を生成して出力する。また、制御部３４０は、レジスタｒ＿ｂｉｎから供給されたデータとレジスタｒ＿ｂｉｎ＿ｓｆｔ１から供給されたデータとが等しくなく、かつ、レジスタｒ＿ｂｉｎから供給されたデータとレジスタｒ＿ｂｉｎ＿ｓｆｔ２から供給されたデータとが等しい場合、マルチプレクサ３５０に、レジスタｒ＿ｄａｔａ＿ｓｆｔから供給されたデータを選択させる制御信号ＣＳ（以下では、「制御信号ＣＳ“１”」と記載する。）を生成し、マルチプレクサ３５０に出力する。さらに、制御部３４０は、レジスタｒ＿ｂｉｎから供給されたデータが、レジスタｒ＿ｂｉｎ＿ｓｆｔ１及びｒ＿ｂｉｎ＿ｓｆｔ２から供給されたデータのいずれとも等しくない場合、マルチプレクサ３５０に、メモリ４０から供給されるリードデータｒｄを選択させる制御信号ＣＳ（以下では、「制御信号ＣＳ“０”」と記載する。）を生成して出力する。なお、制御部３４０は、レジスタｒ＿ｂｉｎから供給されたデータと、レジスタｒ＿ｂｉｎ＿ｓｆｔ１から供給されたデータと、レジスタｒ＿ｂｉｎ＿ｓｆｔ２供給されたデータとがすべて等しい場合、マルチプレクサ３５０に、レジスタｒ＿ｄａｔａから供給されたデータを選択させる制御信号ＣＳ“２”を生成して出力する。
【００５６】
さらに、制御部３４０は、アドレスレジスタ３１０から供給されたレジスタｒ＿ｂｉｎ、ｒ＿ｂｉｎ＿ｓｆｔ１及びｒ＿ｂｉｎ＿ｓｆｔ２から供給されたデータに基づき、メモリ４０へのデータの書き込みを可能とするライトイネーブル信号ｗｅを生成し、メモリに出力する。本実施形態において、制御部３４０は、レジスタｒ＿ｂｉｎ＿ｓｆｔ２から供給されたデータが、レジスタｒ＿ｂｉｎ及びｒ＿ｂｉｎ＿ｓｆｔ１から供給されたデータのいずれとも等しくない場合に、“Ｅｎａｂｌｅ”であるライトイネーブル信号ｗｅを生成し、メモリ４０に出力する。一方、制御部３４０は、レジスタｒ＿ｂｉｎ＿ｓｆｔ２から供給されたデータが、レジスタｒ＿ｂｉｎ及びｒ＿ｂｉｎ＿ｓｆｔ１から供給されたデータの少なくとも一方と等しい場合に、“Ｄｉｓａｂｌｅ”であるライトイネーブル信号ｗｅを生成し、メモリ４０に出力する。
【００５７】
マルチプレクサ３５０は、データレジスタ３３０のレジスタｒ＿ｄａｔａ及びｒ＿ｄａｔａ＿ｓｆｔから供給されたデータ、並びに、メモリ４０から供給されたリードデータｒｄのうちのいずれかを、制御部３４０から供給される制御信号ＣＳに基づいて選択し、選択したデータを加算器３２０に出力する。
【００５８】
図５は、本発明の一実施形態に係るヒストグラム生成回路の各部の動きを示すタイミングチャートである。同図においては、勾配強度算出部１０及び勾配方向算出部２０は、クロックＣＬＫの１サイクル目で、画素ＡにおけるＸ方向勾配強度ｄｘ及びＹ方向勾配強度ｄｙの供給を受ける。以降も同様に、勾配強度算出部１０及び勾配方向算出部２０は、クロックＣＬＫの２サイクル目で画素Ｂ、クロックＣＬＫの３サイクル目で画素Ｃ、及びクロックＣＬＫの４サイクル目で画素ＤにおけるＸ方向勾配強度ｄｘ及びＹ方向勾配強度ｄｙの供給を受ける。また、同図においては、勾配方向算出部２０が算出する画素Ａ〜Ｄにそれぞれ対応する各ビン番号ｂｉｎがすべて異なる場合について説明する。
【００５９】
同図を参照して、勾配方向算出部２０は、クロックＣＬＫの１サイクル目で、画素Ａに対応するビン番号ｂｉｎ＿Ａとして“０００”を出力する。勾配方向算出部２０は、以降も同様に、クロックＣＬＫの２サイクル目で画素Ｂに対応するビン番号ｂｉｎ＿Ｂとして“００１”、クロックＣＬＫの３サイクル目で画素Ｃに対応するビン番号ｂｉｎ＿Ｃとして“０１０”、クロックＣＬＫの４サイクル目で画素Ｄに対応するビン番号ｂｉｎ＿Ｄとして“０１１”を出力する。
【００６０】
勾配強度算出部１０は、クロックＣＬＫの３サイクル目で、画素Ａにおける勾配強度ｍａｇ＿Ａを出力する。勾配強度算出部１０は、以降も同様に、クロックＣＬＫの４サイクル目で画素Ｂにおける勾配強度ｍａｇ＿Ｂ、クロックＣＬＫの５サイクル目で画素Ｃにおける勾配強度ｍａｇ＿Ｃ、クロックＣＬＫの６サイクル目で画素Ｄにおける勾配強度ｍａｇ＿Ｄを出力する。なお、本実施形態では、勾配強度算出部１０は、Ｘ方向勾配強度ｄｘ及びＹ方向勾配強度の入力から２サイクルのクロックＣＬＫで勾配強度ｍａｇの演算を完了するものとする。
【００６１】
アドレスレジスタ３１０のレジスタｒ＿ｂｉｎは、クロックＣＬＫの２サイクル目にビン番号ｂｉｎ＿Ａの値である“０００”、クロックＣＬＫの３サイクル目にビン番号ｂｉｎ＿Ｂの値である“００１”、クロックＣＬＫの４サイクル目にビン番号ｂｉｎ＿Ｃの値である“０１０”、クロックＣＬＫの５サイクル目にビン番号ｂｉｎ＿Ｄの値である“０１１”を記憶する。また、アドレスレジスタ３１０のレジスタｒ＿ｂｉｎ＿ｓｆｔ１は、１サイクル前のクロックＣＬＫにおいて、レジスタｒ＿ｂｉｎが記憶していたデータを記憶する。さらに、アドレスレジスタ３１０のレジスタｒ＿ｂｉｎ＿ｓｆｔ２は、２サイクル前のクロックＣＬＫにおいて、レジスタｒ＿ｂｉｎが記憶していたデータを記憶する。
【００６２】
データレジスタ３３０のレジスタｒ＿ｄａｔａは、クロックＣＬＫの４クロック目において、加算器３２０から供給されたデータを記憶する。具体的には、レジスタｒ＿ｄａｔａは、クロックＣＬＫの２クロック目において、レジスタｒ＿ｂｉｎに記憶されているデータが、レジスタｒ＿ｂｉｎ＿ｓｆｔ１及びｒ＿ｂｉｎ＿ｓｆｔ２にそれぞれ記憶されているデータと異なることに基づき、すなわち、マルチプレクサ３５０で“０”を選択することに基づき、勾配強度ｍａｇ＿Ａとリードデータｒｄとの加算値を記憶する。なお、リードデータｒｄは、レジスタｒ＿ｏｆｆｓｅｔとレジスタｒ＿ｂｉｎとにそれぞれ記憶しているデータに基づくメモリ４０のアドレスに記憶されているデータである。
【００６３】
クロックＣＬＫの５〜７サイクル目においても、レジスタｒ＿ｂｉｎに記憶されているデータが、ｒ＿ｂｉｎ＿ｓｆｔ１及びｒ＿ｂｉｎ＿ｓｆｔ２に記憶されているデータと異なることから、レジスタｒ＿ｄａｔａは、クロックＣＬＫの５クロック目において勾配強度ｍａｇ＿Ｂとリードデータｒｄとの加算値、クロックＣＬＫの６クロック目において勾配強度ｍａｇ＿Ｃとリードデータｒｄとの加算値、クロックＣＬＫの７クロック目において勾配強度ｍａｇ＿Ｄとリードデータｒｄとの加算値を記憶する。また、レジスタｒ＿ｄａｔａ＿ｓｆｔは、１サイクル前のクロックＣＬＫにおいて、レジスタｒ＿ｄａｔａが記憶していた値を記憶する。ここで、各々のリードデータｒｄは、レジスタｒ＿ｏｆｆｓｅｔとレジスタｒ＿ｂｉｎとにそれぞれ記憶しているデータに基づくメモリ４０のアドレスに、記憶されているデータである。
【００６４】
制御部３４０は、クロックＣＬＫの２サイクル目において、レジスタｒ＿ｂｉｎが記憶しているデータが、レジスタｒ＿ｂｉｎ＿ｓｆｔ１及びｒ＿ｂｉｎ＿ｓｆｔ２が記憶しているデータのいずれとも等しくないことに基づき、“Ｅｎａｂｌｅ”であるリードイネーブル信号ｒｅを生成してメモリ４０に出力する。
【００６５】
クロックＣＬＫの３〜５サイクル目も、レジスタｒ＿ｂｉｎに記憶されているデータが、レジスタｒ＿ｂｉｎ＿ｓｆｔ１及びｒ＿ｂｉｎ＿ｓｆｔ２に記憶されているデータのいずれとも等しくないため、制御部３４０は、“Ｅｎａｂｌｅ”であるリードイネーブル信号ｒｅを生成してメモリ４０に出力する。
【００６６】
アドレスレジスタ３１０は、クロックＣＬＫの２サイクル目において、レジスタｒ＿ｏｆｆｓｅｔに記憶しているデータを上位ビットとし、レジスタｒ＿ｂｉｎに記憶しているビン番号ｂｉｎ＿Ａの値である“０００”を下位ビットとした値を、リードアドレス信号ｒ＿ａｄｄとしてメモリ４０に出力する。以降も同様に、アドレスレジスタ３１０は、クロックの３サイクル目において、レジスタｒ＿ｏｆｆｓｅｔに記憶しているデータを上位ビットとし、レジスタｒ＿ｂｉｎに記憶しているビン番号ｂｉｎ＿Ｂの値である“００１”を下位ビットとした値、クロックの４サイクル目において、レジスタｒ＿ｏｆｆｓｅｔに記憶しているデータを上位ビットとし、レジスタｒ＿ｂｉｎに記憶しているビン番号ｂｉｎ＿Ｃの値である“０１０”を下位ビットとした値、クロックの５サイクル目において、レジスタｒ＿ｏｆｆｓｅｔに記憶しているデータを上位ビットとし、レジスタｒ＿ｂｉｎに記憶しているビン番号ｂｉｎ＿Ｄの値である“０１１”を下位ビットとした値を、それぞれリードアドレス信号ｒ＿ａｄｄとしてメモリ４０に出力する。
【００６７】
メモリ４０は、クロックＣＬＫの２サイクル目において、“Ｅｎａｂｌｅ”であるリードイネーブル信号ｒｅ及びリードアドレス信号ｒ＿ａｄｄの供給を受ける。これにより、メモリ４０は、クロックＣＬＫの３サイクル目において、リードアドレス信号ｒ＿ａｄｄにて指定されたアドレスに記憶しているデータを、リードデータｒｄとして出力する。メモリ４０は、クロックＣＬＫの４〜６サイクル目においても、同様に、リードアドレス信号ｒ＿ａｄｄにて指定されたアドレスに記憶しているデータを、リードデータｒｄとして出力する。
【００６８】
制御部３４０は、クロックＣＬＫの４サイクル目において、レジスタｒ＿ｂｉｎ＿ｓｆｔ２に記憶されているデータが、レジスタｒ＿ｂｉｎ及びｒ＿ｂｉｎ＿ｓｆｔ１に記憶されているデータのいずれとも等しくないことに基づき、“Ｅｎａｂｌｅ”であるライトイネーブル信号ｗｅを生成してメモリ４０に出力する。
【００６９】
クロックＣＬＫの５〜７サイクル目も、レジスタｒ＿ｂｉｎ＿ｓｆｔ２に記憶されているデータが、レジスタｒ＿ｂｉｎ及びｒ＿ｂｉｎ＿ｓｆｔ１に記憶されているデータのいずれとも等しくないため、制御部３４０は、“Ｅｎａｂｌｅ”であるライトイネーブル信号ｗｅを生成してメモリ４０に出力する。
【００７０】
アドレスレジスタ３１０は、クロックＣＬＫの４サイクル目において、レジスタｒ＿ｏｆｆｓｅｔに記憶しているデータを上位ビットとし、レジスタｒ＿ｂｉｎ＿ｓｆｔ２に記憶しているビン番号ｂｉｎ＿Ａの値である“０００”を下位ビットとした値を、ライトアドレス信号ｗ＿ａｄｄとしてメモリ４０に出力する。以降も同様に、アドレスレジスタ３１０は、クロックの５サイクル目において、レジスタｒ＿ｏｆｆｓｅｔに記憶しているデータを上位ビットとし、レジスタｒ＿ｂｉｎ＿ｓｆｔ２に記憶しているビン番号ｂｉｎ＿Ｂの値である“００１”を下位ビットとした値、クロックの６サイクル目において、レジスタｒ＿ｏｆｆｓｅｔに記憶しているデータを上位ビットとし、レジスタｒ＿ｂｉｎ＿ｓｆｔ２に記憶しているビン番号ｂｉｎ＿Ｃの値である“０１０”を下位ビットとした値、クロックの７サイクル目において、レジスタｒ＿ｏｆｆｓｅｔに記憶しているデータを上位ビットとし、レジスタｒ＿ｂｉｎ＿ｓｆｔ２に記憶しているビン番号ｂｉｎ＿Ｄの値である“０１１”を下位ビットとした値を、それぞれライトアドレス信号ｗ＿ａｄｄとしてメモリ４０に出力する。
【００７１】
メモリ４０は、クロックＣＬＫの４サイクル目において、“Ｅｎａｂｌｅ”であるライトイネーブル信号ｗｅ及びライトアドレス信号ｗ＿ａｄｄ及びライトデータｗｄの供給を受ける。これにより、メモリ４０は、ライトアドレス信号ｗ＿ａｄｄにて指定されたアドレスにライトデータｗｄを記憶する。メモリ４０は、クロックＣＬＫの５〜７サイクル目においても、同様に、ライトアドレス信号ｗ＿ａｄｄにて指定されたアドレスにライトデータｗｄを記憶する。
【００７２】
図６は、本発明の一実施形態に係るヒストグラム生成回路の各部の動きを示すタイミングチャートである。同図においては、図５に示す場合と同様に、勾配強度算出部１０及び勾配方向算出部２０は、画素Ａ〜ＤのＸ方向勾配強度ｄｘ及びＹ方向勾配強度ｄｙの供給をクロックＣＬＫごとに受ける。ただし、同図においては、勾配方向算出部２０が算出する画素Ａ〜Ｄにそれぞれ対応するビン番号ｂｉｎがすべて同じである点で、図５に示す場合と異なる。以下では、図５における場合と相違する点を中心に説明する。
【００７３】
同図に示すように、レジスタｒ＿ｄａｔａは、クロックの５サイクル目において、勾配強度ｍａｇ＿Ｂと、クロックＣＬＫの４サイクル目においてレジスタｒ＿ｄａｔａが記憶していたデータ、すなわち、４サイクル目で、ｍａｇ＿Ａと、ｒ＿ｄａｔａを加算した値との加算値を記憶する。これは、画素Ａに対応するビン番号ｂｉｎ＿Ａと画素Ｂに対応するビン番号ｂｉｎ＿Ｂとが共に“０００”であることに起因して、クロックＣＬＫの３サイクル目において、レジスタｒ＿ｂｉｎが記憶しているデータが、レジスタｒ＿ｂｉｎ＿ｓｆｔ１が記憶しているデータと等しく、制御部３４０が、制御信号ＣＳ“２”を生成するためである。以降も同様に、レジスタｒ＿ｄａｔａは、クロックの６サイクル目において、勾配強度ｍａｇ＿ＣとクロックＣＬＫの５サイクル目においてレジスタｒ＿ｄａｔａが記憶していたデータとの加算値、クロックの７サイクル目において、勾配強度ｍａｇ＿ＤとクロックＣＬＫの６サイクル目においてレジスタｒ＿ｄａｔａが記憶していたデータとの加算値を記憶する。
【００７４】
制御部３４０は、クロックＣＬＫの３〜５サイクル目において、“Ｄｉｓａｂｌｅ”であるリードイネーブル信号ｒｅを生成してメモリ４０に出力する。これは、レジスタｒ＿ｂｉｎが記憶しているデータが、レジスタｒ＿ｂｉｎ＿ｓｆｔ１又はｒ＿ｂｉｎ＿ｓｆｔ２が記憶しているデータの少なくとも１つと等しいためである。リードイネーブル信号ｒｅが、“Ｄｉｓａｂｌｅ”であることにより、メモリ４０は、ＣＬＫの４〜６サイクル目において、リードデータｒｄを出力しない。
【００７５】
制御部３４０は、クロックＣＬＫの４〜６サイクル目において、“Ｄｉｓａｂｌｅ”であるライトイネーブル信号ｗｅを生成してメモリ４０に出力する。これは、レジスタｒ＿ｂｉｎ＿ｓｆｔ２が記憶しているデータが、レジスタｒ＿ｂｉｎ又はｒ＿ｂｉｎ＿ｓｆｔ１が記憶しているデータの少なくとも１つと等しいためである。ライトイネーブル信号ｗｅが、“Ｄｉｓａｂｌｅ”であることにより、メモリ４０は、ＣＬＫの４〜６サイクル目において、レジスタｒ＿ｄａｔａから供給されたライトデータｗｄを記憶しない。
【００７６】
以上のように、ヒストグラム生成回路１では、各画素に対応するビン番号ｂｉｎがすべて等しい場合に、メモリ４０へのアクセスを削減することができる。
【００７７】
図７は、本発明の一実施形態に係るヒストグラム生成回路の各部の動きを示すタイミングチャートである。同図においては、図５に示す場合と同様に、勾配強度算出部１０及び勾配方向算出部２０は、画素Ａ〜ＤのＸ方向勾配強度ｄｘ及びＹ方向勾配強度ｄｙの供給をクロックＣＬＫごとに受ける。ただし、同図においては、勾配方向算出部２０により算出される画素Ａ及びＣに対応するビン番号ｂｉｎが同じであると共に、画素Ｂ及びＤに対応するビン番号ｂｉｎが同じである点で、図５に示す場合と異なる。以下では、図５における場合と相違する点を中心に説明する。
【００７８】
同図に示すように、レジスタｒ＿ｄａｔａは、クロックの６サイクル目において、画素Ｃの勾配強度ｍａｇ＿ＣとクロックＣＬＫの５サイクル目においてレジスタｒ＿ｄａｔａ＿ｓｆｔが記憶していたデータとの加算値を記憶する。これは、画素Ａに対応するビン番号ｂｉｎ＿Ａと画素Ｃに対応するビン番号ｂｉｎ＿Ｃとが共に“０１０”であることに起因して、クロックＣＬＫの４サイクル目において、レジスタｒ＿ｂｉｎが記憶しているデータが、レジスタｒ＿ｂｉｎ＿ｓｆｔ２が記憶しているデータと等しいためである。また、レジスタｒ＿ｄａｔａは、クロックの７サイクル目において、画素Ｄの勾配強度ｍａｇ＿ＤとクロックＣＬＫの６サイクル目においてレジスタｒ＿ｄａｔａ＿ｓｆｔが記憶していたデータとの加算値を記憶する。これは、画素Ｂに対応するビン番号ｂｉｎ＿Ｂと画素Ｄに対応するビン番号ｂｉｎ＿Ｄとが共に“１００”であることに起因して、クロックＣＬＫの５サイクル目において、レジスタｒ＿ｂｉｎが記憶しているデータが、レジスタｒ＿ｂｉｎ＿ｓｆｔ２が記憶しているデータと等しいためである。
【００７９】
制御部３４０は、クロックＣＬＫの４及び５サイクル目において、“Ｄｉｓａｂｌｅ”であるリードイネーブル信号ｒｅを生成してメモリ４０に出力する。これは、レジスタｒ＿ｂｉｎが記憶しているデータが、レジスタｒ＿ｂｉｎ＿ｓｆｔ１又はｒ＿ｂｉｎ＿ｓｆｔ２が記憶しているデータと等しいためである。リードイネーブル信号ｒｅが、“Ｄｉｓａｂｌｅ”であることにより、メモリ４０は、クロックＣＬＫの５及び６サイクル目において、リードデータｒｄを出力しない。
【００８０】
制御部３４０は、クロックＣＬＫの４及び５サイクル目において、“Ｄｉｓａｂｌｅ”であるライトイネーブル信号ｗｅを生成してメモリ４０に出力する。これは、レジスタｒ＿ｂｉｎ＿ｓｆｔ２が記憶しているデータが、レジスタｒ＿ｂｉｎ又はｒ＿ｂｉｎ＿ｓｆｔ１が記憶しているデータと等しいためである。ライトイネーブル信号ｗｅが、“Ｄｉｓａｂｌｅ”であることにより、メモリ４０は、ＣＬＫの４及び５サイクル目において、レジスタｒ＿ｄａｔａから供給されたライトデータｗｄを記憶しない。
【００８１】
以上のように、ヒストグラム生成回路１では、各画素に対応するビン番号ｂｉｎの一部が等しい場合にも、メモリ４０へのアクセスを削減することができる。
【００８２】
図８Ａ〜Ｄは、本発明の一実施形態に係るヒストグラム生成方法を示すフローチャートである。かかるヒストグラム生成方法は、ヒストグラム生成回路１において実行される。
【００８３】
図８Ａに示すように、勾配強度算出部１０は、対象となる画素における勾配強度ｍａｇを、Ｘ方向勾配強度ｄｘ及びＹ方向勾配強度ｄｙに基づき算出する（Ｓ８０１）。また、勾配方向算出部２０は、対象となる画素の勾配方向に対応するビン番号ｂｉｎを、Ｘ方向勾配強度ｄｘ及びＹ方向勾配強度ｄｙに基づき算出する（Ｓ８０２）。図５〜７に示すタイミングチャートでは、勾配強度算出部１０が、Ｘ方向勾配強度ｄｘ及びＹ方向勾配強度の入力から２サイクルのクロックＣＬＫで勾配強度ｍａｇの演算を完了するとしているが、ステップＳ８０１とステップＳ８０２とは、並列又は並行に実行されても良い。
【００８４】
続いて、ヒストグラム生成回路１では、５つの処理を並列又は並行して行う。１つ目として、レジスタｒ＿ｂｉｎは、勾配方向算出部２０から供給されたビン番号ｂｉｎを記憶し、レジスタｒ＿ｂｉｎ＿ｓｆｔ１は、１サイクル前のクロックＣＬＫにおいてレジスタｒ＿ｂｉｎが記憶していたデータを記憶し、レジスタｒ＿ｂｉｎ＿ｓｆｔ２は、２サイクル前のクロックＣＬＫにおいてレジスタｒ＿ｂｉｎが記憶していたデータを記憶する（Ｓ８０３）。
【００８５】
Ｓ８０３に並行して行う２つ目の処理として、リードデータｒｄに関する処理を行う（Ｓ８０４）。これは、図８Ｂに示すように、まず、制御部３４０は、レジスタｒ＿ｂｉｎから供給されたデータが、レジスタｒ＿ｂｉｎ＿ｓｆｔ１及びｒ＿ｂｉｎ＿ｓｆｔ２から供給されたデータのいずれとも等しくないか否かを判断する（Ｓ８０４１）。レジスタｒ＿ｂｉｎから供給されるデータが、レジスタｒ＿ｂｉｎ＿ｓｆｔ１及びｒ＿ｂｉｎ＿ｓｆｔ２から供給されたデータのいずれとも等しくない場合（Ｓ８０４１でＹｅｓ）、制御部３４０は、“Ｅｎａｂｌｅ”であるリードイネーブル信号ｒｅを生成してメモリ４０に出力する（Ｓ８０４２）。これにより、マルチプレクサ３５０は、制御部３４０の制御の下、リードアドレス信号ｒ＿ａｄｄにより指定されるメモリ４０から読み出されたリードデータｒｄの供給を受ける（Ｓ８０４３）。一方、レジスタｒ＿ｂｉｎから供給されるデータが、レジスタｒ＿ｂｉｎ＿ｓｆｔ１及びｒ＿ｂｉｎ＿ｓｆｔ２から供給されたデータの少なくとも一方と等しい場合、制御部３４０は、“Ｄｉｓａｂｌｅ”であるリードイネーブル信号ｒｅを生成し、メモリに出力する（Ｓ８０４４）。これにより、メモリ４０は、リードデータｒｄを出力しない。以上で、リードデータｒｄに関する処理が終了する。
【００８６】
図８Ａに戻り、Ｓ８０３に並行して行う３つ目の処理として、ヒストグラム生成回路１では、加算器３２０での加算に関する処理を行う（Ｓ８０５）。これは、図８Ｃに示すように、まず、制御部３４０は、レジスタｒ＿ｂｉｎから供給されたデータが、レジスタｒ＿ｂｉｎ＿ｓｆｔ１から供給されたデータと等しいか、レジスタｒ＿ｂｉｎ＿ｓｆｔ１から供給されたデータと等しくなくかつレジスタｒ＿ｂｉｎ＿ｓｆｔ２から供給されたデータと等しいか、又は、レジスタｒ＿ｂｉｎ＿ｓｆｔ１及びレジスタｒ＿ｂｉｎ＿ｓｆｔ２から供給されたデータのいずれとも等しくないかを判断する（Ｓ８０５１）。
【００８７】
レジスタｒ＿ｂｉｎから供給されたデータが、レジスタｒ＿ｂｉｎ＿ｓｆｔ１から供給されたデータと等しい場合（Ｓ８０５１で２）、制御部３４０は、マルチプレクサ３５０に、レジスタｒ＿ｄａｔａから供給されたデータを選択させる制御信号ＣＳ“２”を生成して出力する（Ｓ８０５２）。これにより、マルチプレクサ３５０は、レジスタｒ＿ｄａｔａから供給されたデータを選択して、加算器３２０に出力する（Ｓ８０５３）。また、レジスタｒ＿ｂｉｎから供給されたデータが、レジスタｒ＿ｂｉｎ＿ｓｆｔ１から供給されたデータと等しくなく、かつ、レジスタｒ＿ｂｉｎ＿ｓｆｔ２から供給されたデータと等しい場合（Ｓ８０５１で１）、制御部３４０は、マルチプレクサ３５０に、レジスタｒ＿ｄａｔａ＿ｓｆｔから供給されたデータを選択する制御信号ＣＳ“１”を生成して出力する（Ｓ８０５４）。これにより、マルチプレクサ３５０は、レジスタｒ＿ｄａｔａから供給されたデータを選択して、加算器３２０に出力する（Ｓ８０５５）。さらに、レジスタｒ＿ｂｉｎから供給されたデータが、レジスタｒ＿ｂｉｎ＿ｓｆｔ１及びレジスタｒ＿ｂｉｎ＿ｓｆｔ２から供給されたデータのいずれとも等しくない場合、（Ｓ８０５１で０）、制御部３４０は、マルチプレクサ３５０に、メモリ４０から供給されたリードデータｒｄを選択させる制御信号ＣＳ“０”を生成して出力する（Ｓ８０５６）。これにより、マルチプレクサ３５０はメモリ４０から供給されたリードデータｒｄを選択して、加算器３２０に出力する（Ｓ８０５７）。なお、制御部３４０は、レジスタｒ＿ｂｉｎから供給されたデータと、レジスタ＝ｒ＿ｂｉｎ＿ｓｆｔ１から供給されたデータと、レジスタｒ＿ｂｉｎ＿ｓｆｔ２供給されたデータとがすべて等しい場合、マルチプレクサ３５０に、レジスタｒ＿ｄａｔａから供給されたデータを選択させる制御信号ＣＳ“２”を生成して出力する。
【００８８】
続いて、加算器３２０は、勾配強度算出部１０から供給された勾配強度ｍａｇとマルチプレクサから供給されたデータとを加算して、レジスタｒ＿ｄａｔａに出力する（Ｓ８０５８）。以上で、加算器３２０での加算に関する処理が終了する。
【００８９】
図８Ａに戻り、Ｓ８０３に並行して行う４つ目の処理として、ヒストグラム生成回路１では、ライトデータｗｄに関する処理を行う（Ｓ８０６）。これは、図８Ｄに示すように、まず、制御部３４０は、レジスタｒ＿ｂｉｎ＿ｓｆｔ２から供給されたデータが、レジスタｒ＿ｂｉｎ及びｒ＿ｂｉｎ＿ｓｆｔ１から供給されたデータのいずれとも等しくないか否かを判断する（Ｓ８０６１）。レジスタｒ＿ｂｉｎ＿ｓｆｔ２から供給されるデータが、レジスタｒ＿ｂｉｎ及びｒ＿ｂｉｎ＿ｓｆｔ１から供給されたデータのいずれとも等しくない場合（Ｓ８０６１でＹｅｓ）、制御部３４０は、“Ｅｎａｂｌｅ”であるライトイネーブル信号ｗｅを生成し、メモリ４０に出力する（Ｓ８０６２）。これにより、レジスタｒ＿ｄａｔａから出力されるライトデータｗｄは、制御部３４０の制御の下、ライトアドレス信号ｗ＿ａｄｄにより指定されるメモリ４０のアドレスに記憶される（Ｓ８０６３）。一方、レジスタｒ＿ｂｉｎ＿ｓｆｔ２から供給されたデータが、レジスタｒ＿ｂｉｎ及びｒ＿ｂｉｎ＿ｓｆｔ１から供給されたデータの少なくとも一方と等しい場合、制御部３４０は、“Ｄｉｓａｂｌｅ”であるライトイネーブル信号ｗｅを生成し、メモリ４０に出力する（Ｓ８０６４）。これにより、メモリ４０は、ライトデータｗｄを記憶しない。以上のようにして、ライトデータｗｄに関する処理が終了する。なお、制御部３４０は、レジスタｒ＿ｂｉｎ＿ｓｆｔ２がブランクの状態の場合に、ライトイネーブル信号ｗｅを出力しない。
【００９０】
図８Ａに戻り、Ｓ８０３に並行して行う５つ目の処理として、レジスタｒ＿ｄａｔａは、加算器３２０より供給された、勾配強度算出部１０から供給された勾配強度ｍａｇとマルチプレクサ３５０から供給されたデータとの加算値を記憶し、レジスタｒ＿ｄａｔａ＿ｓｆｔは、１サイクル前のクロックＣＬＫにおいてレジスタｒ＿ｄａｔａが記憶していたデータを記憶する（Ｓ８０７）。
【００９１】
制御部３４０は、セルに含まれるすべての画素に関する処理が完了したか否か、すなわち、輝度勾配ヒストグラムの生成が完了したか否かを判断する（Ｓ８０８）。輝度勾配ヒストグラムの生成が完了した場合（Ｓ８０８でＹｅｓ）、ヒストグラム生成回路１は処理を終了する。一方、輝度勾配ヒストグラムの生成が完了していない場合（Ｓ８０８でＹｅｓ）、ヒストグラム生成回路１は、Ｓ８０１に戻り処理を続ける。
【００９２】
上記各実施形態は、本発明を説明するための例示であり、本発明をこれらの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱しない限り、さまざまな形態で実施することができる。
【００９３】
また、本明細書では、さまざまな実施形態が開示されているが、一の実施形態における特定のフィーチャ（技術的事項）を適宜改良しながら、他の実施形態に追加し、又は該他の実施形態における特定のフィーチャと置換することができ、そのような形態も本発明の要旨に含まれる。
【００９４】
例えば、本明細書に開示される方法においては、その結果に矛盾が生じない限り、ステップ、動作又は機能を並行して又は異なる順に実施しても良い。説明されたステップ、動作及び機能は、単なる例として提供されており、ステップ、動作及び機能のうちのいくつかは、発明の要旨を逸脱しない範囲で、省略でき、また、互いに結合させることで一つのものとしてもよく、また、他のステップ、動作又は機能を追加してもよい。
【００９５】
また、本発明は、ヒストグラム生成システムとして実施することも可能である。図９は、本発明の一実施形態におけるヒストグラム生成システムを説明するためのブロックダイアグラムである。同図に示すように、ヒストグラム生成システム９００は、ヒストグラム生成回路１に加えて、例えば、メモリ４０と、ＣＰＵ９０１と、エッジ検出フィルタ回路９０２と、バス９０３とを含み構成される。
【００９６】
ＣＰＵ９０１は、ヒストグラム生成システム９００全体の制御を行うコンポーネントである。本実施形態では、ＣＰＵ９０１は、例えば、バス９０３を介してヒストグラム生成回路１及びエッジ検出フィルタ回路９０２を制御する。
【００９７】
エッジ検出フィルタ回路９０２は、入力画像に対しエッジ検出フィルタを適用して、エッジ画像を生成する。本実施形態において、エッジ検出フィルタ回路９０２は、例えば、メモリ４０から読み出した入力画像に対しエッジ検出フィルタを適用して、Ｘ方向エッジ画像及びＹ方向エッジ画像を生成し、輝度勾配ヒストグラムを生成する対象であるセルに含まれる画素の画素値を、ヒストグラム生成回路１に出力する。これにより、ヒストグラム生成回路１は、上述したとおりの動作を行い、輝度勾配ヒストグラムを生成し、メモリ４０に出力する。
【００９８】
また、本発明は、ヒストグラム生成システム９００と異なるヒストグラム生成システムとして実施することも可能である。図１０は、本発明の一実施形態におけるヒストグラム生成システムを説明するためのブロックダイアグラムである。同図においては、ヒストグラム生成システム１０００は、例えば、ヒストグラム生成回路１［０］〜１［Ｍ］と、メモリ４０［０］〜４０［Ｍ］と、エッジ検出フィルタ１００１とを含み構成される。
【００９９】
エッジ検出フィルタ１００１は、入力画像に対しエッジ検出フィルタを適用して、エッジ画像を生成する。本実施形態において、エッジ検出フィルタ１００１は、例えば、図示しない供給源から供給された入力画像に対しエッジ検出フィルタを適用して、Ｘ方向エッジ画像及びＹ方向エッジ画像を生成し、当該Ｘ方向エッジ画像及びＹ方向エッジ画像をセル［０］〜［Ｍ］に分割する。そして、エッジ検出フィルタ１００１は、セル［０］〜［Ｍ］に係るＸ方向エッジ画像及びＹ方向エッジ画像を、それぞれに対応するヒストグラム生成回路１［０］〜１［Ｍ］に供給する。これにより、ヒストグラム生成回路１［０］〜１［Ｍ］は、上述したとおりの動作を行い、それぞれセル［０］〜［Ｍ］に係る輝度勾配ヒストグラムを生成し、メモリ４０［０］〜４０［Ｍ］に記憶する。
【産業上の利用可能性】
【０１００】
本発明は、画像認識技術の分野に広く利用することができる。
【符号の説明】
【０１０１】
１…ヒストグラム生成回路
１０…勾配強度算出部
２０…勾配方向算出部
２０１…第１の比較器
２０２…第２の比較器
２０３…第３の比較器
２０４…出力部
３０…勾配ヒストグラム生成部
３１０…アドレスレジスタ
３２０…加算器
３３０…データレジスタ
３４０…制御部
３５０…マルチプレクサ
４０…メモリ
９００…ヒストグラム生成システム
９０１…ＣＰＵ
９０２…エッジ検出フィルタ回路
９０３…バス
１０００…ヒストグラム生成システム
１００１…エッジ検出フィルタ
【図１】
2018147304.tif 000003
【図２Ａ】
2018147304.tif 000004
【図２Ｂ】
2018147304.tif 000005
【図３】
2018147304.tif 000006
【図４】
2018147304.tif 000007
【図５】
2018147304.tif 000008
【図６】
2018147304.tif 000009
【図７】
2018147304.tif 000010
【図８Ａ】
2018147304.tif 000011
【図８Ｂ】
2018147304.tif 000012
【図８Ｃ】
2018147304.tif 000013
【図８Ｄ】
2018147304.tif 000014
【図９】
2018147304.tif 000015
【図１０】
2018147304.tif 000016