JP6442152B2 - 画像処理装置、画像処理方法 - Google Patents

画像処理装置、画像処理方法 Download PDF

Info

Publication number
JP6442152B2
JP6442152B2 JP2014077247A JP2014077247A JP6442152B2 JP 6442152 B2 JP6442152 B2 JP 6442152B2 JP 2014077247 A JP2014077247 A JP 2014077247A JP 2014077247 A JP2014077247 A JP 2014077247A JP 6442152 B2 JP6442152 B2 JP 6442152B2
Authority
JP
Japan
Prior art keywords
bit
value
pixel
histogram
bit string
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.)
Active
Application number
JP2014077247A
Other languages
English (en)
Other versions
JP2015197897A (ja
JP2015197897A5 (ja
Inventor
英 大野
英 大野
伊藤 嘉則
嘉則 伊藤
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2014077247A priority Critical patent/JP6442152B2/ja
Priority to US14/669,456 priority patent/US9858293B2/en
Publication of JP2015197897A publication Critical patent/JP2015197897A/ja
Publication of JP2015197897A5 publication Critical patent/JP2015197897A5/ja
Application granted granted Critical
Publication of JP6442152B2 publication Critical patent/JP6442152B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/50Extraction of image or video features by performing operations within image blocks; by using histograms, e.g. histogram of oriented gradients [HoG]; by summing image-intensity values; Projection analysis
    • G06V10/507Summing image-intensity values; Histogram projection analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/58Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/583Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/40Image enhancement or restoration using histogram techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/46Descriptors for shape, contour or point-related descriptors, e.g. scale invariant feature transform [SIFT] or bags of words [BoW]; Salient regional features
    • G06V10/467Encoded features or binary features, e.g. local binary patterns [LBP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Library & Information Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)

Description

本発明は、ヒストグラム作成技術に関するものである。
入力データに対して、そのヒストグラムを作成することは、入力データの統計情報(例えば最大出現頻度をとる入力データ値の特定等)を取得するための有効な手段である。一般的に、ヒストグラムはメモリやカウンタ等の記憶素子を用いて作成される。例えばメモリを用いる場合には、データ値に対応したメモリアドレスに、そのデータ値の数(頻度値)を格納することによって、ヒストグラムを作成する。その際、データ値に対応する値を低速なメモリ(例えばDRAM等)から、CPU等の処理プロセッサが高速にアクセス可能なメモリ(例えばキャッシュメモリ等)に読み出し、読み出した値に対してデータ値を加算し、再度、DRAM等の低速なメモリに書きだす。以上の手順でヒストグラムを作成する。このようなヒストグラムを生成する場合にメモリアクセス時間を短縮する手法として以下のような手法が提案されている。
特許文献1では、階層構造のメモリを用いて、速度の速いメモリにデータ領域を読みだして加算する。入力データを加算したのち、速度の速いメモリ上にデータ領域を保持しておく。そして、次の入力データが入力された際に、投票したい領域が速度の速いメモリにあるかを判断し、作業メモリ上にある場合には、続けて投票し、無い場合は入れ替えることで高速化を実現している。
特許文献2では、入力データのデータを1つ保持しておき、次の入力データが保持していたデータと一致する場合に、ビンの値に2を加算する。これにより、メモリへのアクセス回数を減らすことで高速化を実現する。
特許文献3では、複数ある入力データの一部にマスクをかけて、アドレスデータを生成し、生成されたアドレスに従ってヒストグラム生成用のメモリにアクセスし、そのアドレスで特定される個数情報に1を加算することでヒストグラムを生成する。この方法により、複数のヒストグラムへのアクセスを1つのヒストグラムへのアクセスにすることができ、結果としてメモリへのアクセス回数を減らすことが可能となり、高速化を実現できる。
高速なヒストグラム作成の1つの応用先として、信号処理技術分野におけるパターン認識が挙げられる。従来、2つの画像間の類似度を算出するのによく用いられる手法として、類似度を算出したい2つの画像の輝度ヒストグラム、或いはカラーヒストグラムを求め、カラーヒストグラム間の類似度を算出することで、2つの画像の類似判別を行う手法が知られている。
非特許文献1には、周辺隣接画素の輝度値との大小関係をコード化したLBP(Local Binary Pattern)値に対してヒストグラムを算出して、類似判別する手法も提案されている。位置(xc, yc)の画素(注目画素)に対するLBPオペレータとは、以下の式のように定義される。ここで、icは位置(xc, yc)の画素の輝度値、inは近傍8画素のうちインデックス=nの画素の輝度値を示す。nは近傍画素のインデックスを示し、位置(xc, yc)に対して左上画素をn=7として、時計回りに1ずつ減少していく。また、以下の(式1)、(式2)はLBPオペレータ算出の1例であり、半径(注目画素と近傍画素との距離)とその半径の円周の分割数とをパラメータとして拡張したものも知られている。
Figure 0006442152
Figure 0006442152
(式1)及び(式2)に基づく演算の具体例を図2を用いて説明する。図2の左図に示すように中心位置(xc, yc)にある注目画素(ic=96)と周囲の8画素とが配置されていた場合、その大小関係に基づき1或いは0を割り当てる(図2右図)。この与えられた1或いは0を、差分値に対し2値の量子化を行ったという意味で量子化値と呼ぶことにする。またこの量子化値を並べたビット列を2値コードと呼ぶ。さらに、この量子化値に対して、それぞれに2のべき乗の重みを与えて加算することでLBP値を得る。非特許文献1では、このようにして得たLBP値をビンのインデクスとしたヒストグラムを算出して、顔認識処理を行っている。LBP値は、輝度値の大小関係に基づいて算出されるので、単純な輝度値よりも照明変動に頑健であることが期待されている。
特開2009-86761号公報 特開平6-36028号公報 特開2008-242733号公報
Timo Ahonen, Abdenour Hadid, and Matti Pietikainen "Face recognition with local binary patterns, Computer Vision, " ECCV 2004 Proceedings, Lecture Notes in Computer Science 3021, Springer, 469-481. N. Dalal and B. Triggs,「Histograms of Oriented Gradients for Human Detection」, IEEE Computer Vision and Pattern Recognition, pp. 886-893,2005.
上記のように、ヒストグラム作成時にメモリアクセス時間を短縮する手法として、背景技術に示したような様々な手法が提案されているが、それぞれの手法には以下のような問題点がある。
特許文献1の手法では、高速化を実現できる場合は、各入力データ値が緩やかに変化するようなデータに限られており、連続する入力データが同一領域に存在しない場合、低速なメモリへのアクセスが行われるため、高速化できない。
特許文献2の手法では、高速化を実現できる場合は、連続する入力データが一致している場合に限られており、前後の入力データが異なれば、高速化できない。
特許文献3の手法では、画像処理などで、正確に投票する必要がない場合に入力データの一部にマスクをかける。これにより入力データのビット情報を削減することで、高速にヒストグラムを作成するが、ビット情報を減らす結果となるため、情報を保持したい場合には使用できない。
本発明は、このような問題に鑑みてなされたものであり、メモリアクセスを介してヒストグラムを作成する場合に要する時間を短縮化するための技術を提供する。
本発明の一様態は、画像中の画素ごとの特徴量を受け取り、第1のメモリよりも高速にアクセス可能な第2のメモリに該特徴量の頻度値が登録されていれば、該頻度値を増加させ、登録されていなければ、該第2のメモリの内容を該第1のメモリに移動させた後で該頻度値を該第1のメモリから該第2のメモリに読み出して増加させることで、画像中の各画素の特徴量のヒストグラムを作成する作成手段と、
前記ヒストグラムにおいて頻度値が高いビンが近接するビンとなるように該ヒストグラムにおけるビンの並び替えを行う並び替え手段と
を備え
前記作成手段は、
画像中のそれぞれの画素について、該画素の画素値と該画素の周辺画素の画素値との大小関係を表すビット列を前記特徴量として生成し、
前記並び替え手段は、
並び替え順毎及びビットパターン毎に、該並び替え順に従ってビット値の並び替えを行うことで該ビットパターンを含むビット列となる複数種類のビット列のそれぞれの頻度値の合計値を求め、該合計値が最大となる並び替え順及びビットパターンの組み合わせを特定する特定手段と、
前記ヒストグラムのビンとしてのそれぞれのビット列について、該ビット列を構成する各ビット値を前記特定手段が特定した並び替え順に従って並び替えたビット列を生成し、該生成したビット列に対して、前記特定手段が特定したビットパターンを構成するそれぞれのビット値を同値にするための変換と同じ変換を施すことで、該生成したビット列を変換する変換手段と、
前記変換手段が変換したそれぞれのビット列に対応する、該ビット列と、前記ヒストグラムにおいて該ビット列の作成元であるビンに対応する頻度値と、を含むデータセットを、該ビット列の値が小さい順に並び替える手段と
を備えることを特徴とする。
本発明の構成によれば、メモリアクセスを介してヒストグラムを作成する場合に要する時間を短縮化することができる。
画像処理装置の機能構成例を示すブロック図。 LBPを求めるための処理を説明する図。 顔画像の各画素位置に規定サイズのウィンドウを配置する処理を模式的に示した図。 ヒストグラム算出部105の構成例を示すブロック図。 第1のモードが設定された場合に画像処理装置が行う処理のフローチャート。 選択順及びLBPについて説明する図。 ステップS507における処理の詳細を示すフローチャート。 合計値の一例を示す図。 ビンと頻度値との関係を説明する図。 第2のモードが設定された場合にヒストグラム作成部103が行う処理のフローチャート。 ステップS507の処理の前後のヒストグラムを説明する図。 ステップS507における処理の詳細を示すフローチャート。 ステップS1201で作成するテーブルの一例を示す図。 第2のモードが設定された場合にヒストグラム作成部103が行う処理のフローチャート。 マルチコアのプロセッサの構成例を示す図。 ステップS507における処理の詳細を示すフローチャート。 第2のモードが設定された場合にヒストグラム作成部103が行う処理のフローチャート。
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施例の1つである。
[第1の実施形態]
本実施形態では、ヒストグラムを作成し、該ヒストグラムにおいて登場頻度が高いビン(ヒストグラム値が高いビン)がまとまった位置にあるビンとして扱われるように該ヒストグラムのビンを変換する技術の一例について説明する。以下ではその一例として、顔認識に用いるヒストグラムを作成し、該ヒストグラムにおけるビンを上記の目的で変換する技術について説明する。また、以下では説明を簡単にするために、取り扱う画像は何れも、グレースケール画像、いわゆる輝度画像であるとする。
先ず、顔認識用のヒストグラムを作成し、該ヒストグラムにおけるビンを上記の目的で変換する画像処理装置の機能構成例について、図1のブロック図を用いて説明する。図1の画像処理装置100は、顔認識用のヒストグラムを作成し、該ヒストグラムにおけるビンを上記の目的で変換するモード(第1のモード)と、該ヒストグラムを用いて入力画像に対する顔認識処理を行うモード(第2のモード)と、を有しており、設定されたモードに応じた処理を実行する。
顔検出部101は、入力された画像から、該画像中における顔の位置、サイズ、方向等を特定し、特定したこれらの情報を用いて、該画像中における顔の領域のサイズを正規化し、予め定められた方向に顔が傾く(例えば顔を正立させる)ように、該領域内の画像、即ち顔画像を切り出して出力する。なお、画像から、該画像中に写っている顔の領域を検出し、該検出した領域内の画像を顔画像として出力する処理には様々なものがあり、これについては周知の技術であるため、これに係る説明は省略する。
なお、本実施形態では、入力画像中における顔画像を対象とするが、これに限るものではなく、入力画像全体を対象としても良いし、入力画像の代わりに顔画像を入力するようにしても構わない。
スキャンウィンドウ処理部102は、顔画像内における各画素位置に規定サイズのウィンドウを配置し、配置したウィンドウ内の各画素の画素値を、後段のヒストグラム作成部103に対して送出する。図3は、顔画像内の各画素位置に規定サイズのウィンドウを配置する処理を模式的に示した図である。図3では、顔画像300において左上隅の画素位置から右下隅の画素位置までの各画素位置に、ラスタスキャン順に3画素×3画素のサイズのウィンドウ301を配置している。以下では、ウィンドウのサイズを図3に示す如く3画素×3画素のサイズとして説明するが、M画素×N画素(M,Nは3以上の整数)のサイズであっても以下の説明の本質は変わらない。
ヒストグラム作成部103は、スキャンウィンドウ処理部102から、ウィンドウ内の各画素位置における画素値を受けると、ウィンドウの中心画素位置(図3では斜線で示した画素位置)における画素値と該画素位置の周辺画素位置における画素値との大小関係を表すビット列を作成する。ウィンドウは、顔画像内の各画素位置に配置することになるため、ビット列は、顔画像内の各画素位置について求めることになる。そしてヒストグラム作成部103は、作成したそれぞれのビット列に対応するLBPを求め、LBPをビンとし、該LBPに対応するビット列の顔画像内における登場頻度をヒストグラム値とするヒストグラムを作成する。そしてヒストグラム作成部103は、このヒストグラムにおいて登場頻度が高いビン(ヒストグラム値が高いビン)がまとまった位置にあるビンとして扱われるように該ヒストグラムのビンを変換する。そしてヒストグラム作成部103は、このようにしてビンを変換したヒストグラムを、現在設定されているモードに応じて、登録ヒストグラム格納部107若しくは相関値算出部108に対して出力する。
以下では、このヒストグラム作成部103の動作について、より詳細に説明する。図1に示す如く、ヒストグラム作成部103は、入力データ作成部104、ヒストグラム算出部105、再配置処理部106、を有する。
入力データ作成部104は、スキャンウィンドウ処理部102から、ウィンドウ内の各画素位置における画素値を受けると、ウィンドウの中心画素位置における画素値と該画素位置の周辺画素位置における画素値との大小関係を表すビット列を作成する。
ここで、ウィンドウ内の各画素における画素値が図2の左側に示すような状態であったとする。この場合、先ず、中心画素位置に対して左に隣接する画素位置における画素(画素0と呼称する)の画素値i0と中心画素位置における画素の画素値icとの大小関係を比較する。図2の場合は、i0>icであるため、画素0にはビット値「1」を割り当てる。次に、中心画素位置に対して左下の画素位置における画素(画素1と呼称する)の画素値i1と画素値icとの大小関係を比較する。図2の場合は、i1<icであるため、画素1にはビット値「0」を割り当てる。次に、中心画素位置に対して直下の画素位置における画素(画素2と呼称する)の画素値i2と画素値icとの大小関係を比較する。図2の場合は、i2<icであるため、画素2にはビット値「0」を割り当てる。次に、中心画素位置に対して右下の画素位置における画素(画素3と呼称する)の画素値i3と画素値icとの大小関係を比較する。図2の場合は、i3>icであるため、画素3にはビット値「1」を割り当てる。次に、中心画素位置に対して右に隣接する画素位置における画素(画素4と呼称する)の画素値i4と画素値icとの大小関係を比較する。図2の場合は、i4>icであるため、画素4にはビット値「1」を割り当てる。次に、中心画素位置に対して右上の画素位置における画素(画素5と呼称する)の画素値i5と画素値icとの大小関係を比較する。図2の場合は、i5>icであるため、画素5にはビット値「1」を割り当てる。次に、中心画素位置に対して直上の画素位置における画素(画素6と呼称する)の画素値i6と画素値icとの大小関係を比較する。図2の場合は、i6<icであるため、画素6にはビット値「0」を割り当てる。次に、中心画素位置に対して左上の画素位置における画素(画素7と呼称する)の画素値i7と画素値icとの大小関係を比較する。図2の場合は、i7<icであるため、画素7にはビット値「0」を割り当てる。
このような処理により、図2の右側に示す如く、画素0〜画素7に対してビット値「1」若しくはビット値「0」の何れかを割り当てることができる。然るに、画素0のビット値、画素1のビット値、…、画素7のビット値、の順にビット値を並べることで形成される8ビットのビット列「00111001」が、図2の場合において入力データ作成部104が作成するビット列、となる。
そして入力データ作成部104は、作成したビット列を10進数で表した値(このビット列を用いて上記の(式1)、(式2)を計算した結果)を、ウィンドウの中心画素位置における画素値と該画素位置の周辺画素位置における画素値との大小関係を表すビット列に対するLBPとして求める。図2の場合、ビット列「00111001」を10進数で表すと(このビット列を用いて上記の(式1)、(式2)を計算すると)、値「156」が得られ、この「156」が、図2の場合において入力データ作成部104が求めるLBPとなる。
上記の通り、ビット列は、顔画像内の各画素位置について得られるので、該ビット列に対するLBPを求めることで、顔画像内の各画素位置に対するLBPを求めることになる。
ヒストグラム算出部105は、入力データ作成部104が求めた、顔画像内の各画素位置に対するLBPを用いて、LBPをビンとし、該ビンに対する頻度値(登場頻度)をヒストグラム値とするヒストグラムを作成する。これにより、顔画像内にどのLBPがどの程度の登場頻度で登場するのかを表すヒストグラムを作成することができる。
ヒストグラム算出部105の構成例について、図4のブロック図を用いて説明する。第1のメモリ部401は、現段階で求まっている全てのビンの頻度値を格納するためのメモリであり、第2のメモリ部402は、第1のメモリ部401に格納されている頻度値のうち一部のビンの頻度値を格納するためのメモリである。制御部400は、ヒストグラムの作成時には、第1のメモリ部401に格納されている頻度値のうち、必要となる頻度値を第1のメモリ部401から読み出して第2のメモリ部402に格納する。
ここで、第1のメモリ部401は、第2のメモリ部402と比して相対的にデータ容量が大きく且つメモリアクセス速度が遅いメモリであり、例えば、DRAMで構成される。また、第2のメモリ部402は、第1のメモリ部401と比して相対的にデータ容量が小さく且つメモリアクセス速度が速いメモリであり、例えば、CPU(例えば制御部400)内部のキャッシュメモリで構成される。
ここで、第1のメモリ部401内のメモリ領域におけるデータを第2のメモリ部402に読み出す場合、読み出すデータに加えて、該データに関する、第1のメモリ部401上のアドレス情報のタグを付加する。具体的には、データ領域(ビンや頻度値などの実際の処理対象となるデータ)のサイズが32バイトで、32ビットアドレスの場合、タグのアドレス部として、個々のデータの共通ビットとなる27ビットを格納する。このタグとデータ領域の組み合わせをキャッシュラインと呼び、第1のメモリ部401と第2のメモリ部402とはキャッシュライン単位でデータの転送を行う。なお、この説明におけるデータ領域のサイズやビット数等はあくまでも説明上のものであり、以下の説明がこれらの具体的な数値に限定されるものではない。
ここで、第2のメモリ部402には、入力データ作成部104から送出されたLBPが入力される。頻度加算部403は、この入力されたLBPの頻度値が第2のメモリ部402に格納されている場合には、この頻度値に1を加えて更新する。もし、この入力されたLBPの頻度値が第2のメモリ部402に格納されていない場合には、制御部400は、第2のメモリ部402に格納されている内容を第1のメモリ部401に移動させると共に、この入力されたLBPの頻度値を第1のメモリ部401から第2のメモリ部402に読み出す。そして、頻度加算部403は、この読み出した頻度値に1を加えて更新する。第1のメモリ部401、第2のメモリ部402へのアクセスには、上記のアドレス情報を用いる。
ヒストグラム算出部105は、第1のモードが設定されてる場合には、作成したヒストグラムを再配置処理部106に対して送出し、第2のモードが設定されている場合には、作成したヒストグラムを相関値算出部108に対して送出する。
図1に戻って、再配置処理部106は、ヒストグラム算出部105が作成したヒストグラムにおいて、登場頻度が高いビンがまとまった位置にあるビンとして扱われるように該ヒストグラムのビンを変換する。そして再配置処理部106は、このようにしてビンを変換したヒストグラムを、登録ヒストグラム格納部107に格納する。
相関値算出部108は、登録ヒストグラム格納部107に格納されているそれぞれのヒストグラム(第2のヒストグラム:顔毎のヒストグラム)について、検査画像(認識したい顔が映っているか否かを調べたい画像)についてヒストグラム算出部105が作成したヒストグラム(第1のヒストグラム)と、該第2のヒストグラムと、を用いて、検査画像中における顔を認識する。具体的には、ビン毎に、第1のヒストグラムにおける該ビンの頻度値と、第2のヒストグラムにおける該ビンの頻度値と、の差分値を計算し、それぞれのビンについて求めた差分値の合計値を、第1のヒストグラム及び第2のヒストグラムの相関値として求める。
統合判断部109は、相関値算出部108がそれぞれの第2のヒストグラムについて求めた相関値と閾値との大小比較を行い、閾値以下となる相関値があれば、検査画像から検出した顔画像は、閾値以下となる相関値を求めた第2のヒストグラムに対応する人物の顔の画像であると判断し、その旨を出力する。一方、統合判断部109は、閾値以下となる相関値が1つもなければ、検査画像から検出した顔画像は、登録ヒストグラム格納部107に格納されたヒストグラムに対応する顔の何れでもないと判断し、その旨を出力する。もちろん、ヒストグラムを用いて顔認識を行う方法については様々な方法が考えられ、上記の方法に限るものではない。また、統合判断部109による出力先や出力形態については特定の出力先、特定の出力形態に限るものではない。
次に、第1のモードが設定された場合に、本実施形態に係る画像処理装置100が行う処理について、同処理のフローチャートを示す図5を用いて説明する。なお、図5のフローチャートに従った処理を開始する段階では、顔検出部101はすでに、入力画像から顔画像を抽出し、該抽出した顔画像をスキャンウィンドウ処理部102に対して送出しているものとする。
<ステップS500>
スキャンウィンドウ処理部102は、顔画像上の画素位置(x、y)(初期値はx=2,y=2)にウィンドウを配置する。そしてスキャンウィンドウ処理部102は、ウィンドウ内の各画素の画素値を、入力データ作成部104に対して送出するので、入力データ作成部104は、ウィンドウの中心画素位置における画素値と該画素位置の周辺画素位置における画素値との大小関係を表すビット列を作成する。そして入力データ作成部104は、この作成したビット列を用いて上記の(式1)、(式2)を計算することで、対応するLBPを特徴量として計算し、計算したLBPをヒストグラム算出部105に対して送出する。
<ステップS501>
ヒストグラム算出部105内の頻度加算部403は、入力データ作成部104から送出されたLBPの頻度値が第2のメモリ部402に格納されているか否かを判断する。この判断の結果、格納されている場合には、処理はステップS504に進み、格納されていない場合には、処理はステップS502に進む。
<ステップS502>
制御部400は、第2のメモリ部402に格納されている全てのデータを第1のメモリ部401に移動させる(書き戻す)。第2のメモリ部402上には、特徴量をインデックスとするビンのデータと、第1のメモリ部401上のアドレス情報などを含むタグが保持されているため、タグに含まれるアドレス情報をもとに第1のメモリ部401に書き戻す。
<ステップS503>
制御部400は、第1のメモリ部401から、入力データ作成部104から送出されたLBPの頻度値を読み出して第2のメモリ部402に格納する(実際には、頻度値だけでなく、アドレス情報などの上記の付帯データも読み出される)。
<ステップS504>
頻度加算部403は、第2のメモリ部402に格納されている「入力データ作成部104から送出されたLBPの頻度値」に1を加算して更新する。
<ステップS505>
スキャンウィンドウ処理部102は、顔画像上を移動させたウィンドウの現在位置(x、y)が最終画素位置(顔画像が縦P画素×横Q画素のサイズを有する場合、x=Q−2、y=P−2)に達したか否かを判断する。この判断の結果、達した場合には、処理はステップS506に進み、未だ達していない場合には、xに1を加算する、若しくはx=Q−2の場合にはx=0にセットすると共にyに1を加算することでウィンドウの位置を変更し、処理はステップS500に戻る。
<ステップS506>
制御部400は、上記のステップS502と同様にして、第2のメモリ部402に格納されている全てのデータを第1のメモリ部401に移動させる。この時点で、第1のメモリ部401には、顔画像について作成した、「LBPをビンのインデックスとし、該ビンに対する頻度値をヒストグラム値とするヒストグラム」が格納されていることになる。
<ステップS507>
再配置処理部106は、ヒストグラム算出部105が作成したヒストグラムにおいて、登場頻度が高いビンがまとまった位置にあるビンとして扱われるように該ヒストグラムのビンを変換する。登場頻度が高いビンがまとまった位置にあるビンとして扱われるように該ヒストグラムのビンを変換する処理は、メモリアクセスを効率化し、ヒストグラム作成を高速化することを目的とする処理である。メモリアクセスを効率化し、高速化を実現する並べ替え処理であればどのような処理でも良いが、本実施形態では、頻度値が高いビンを1つのキャッシュラインにまとめることで、キャッシュラインの入れ替え処理の頻度を減らし、第1のメモリ部401へのアクセス回数を少なくし、メモリアクセスの効率化を実現する。次に、ステップS507における処理の詳細について、同処理のフローチャートを示す図7を用いて説明する。
<ステップS700>
先ず、中心画素を囲む8画素におけるそれぞれの画素(画素位置)の選択順を1つ選択する。以下では、中心画素位置に対して、左に隣接する画素(位置)をP0、左下の画素をP1、直下の画素をP2、右下の画素をP3、右に隣接する画素をP4、右上の画素をP5、直上の画素をP6、左上の画素をP7とする。このとき、ステップS700では、例えば、P7,P6,P5,P1,P2,P3,P0,P4という選択順を決定する(図6)。
<ステップS701>
6ビットのビット列「000000」〜「111111」のそれぞれについて、該ビット列を上位ビット列とし且つ下位ビットが「00」である8ビットのビット列、下位ビットが「01」である8ビットのビット列、下位ビットが「10」である8ビットのビット列、下位ビットが「11」である8ビットのビット列、の4つのビット列を生成する。このようにして、6ビットのビット列「000000」〜「111111」のそれぞれについて、下位ビットが4種類のビット列(4つのビット列(8ビット))を生成する。
そして、6ビットのビット列「000000」〜「111111」のそれぞれについて、該ビット列を上位ビット列とし且つ下位ビットが「00」である8ビットのビット列に対する頻度値、下位ビットが「01」である8ビットのビット列に対する頻度値、下位ビットが「10」である8ビットのビット列に対する頻度値、下位ビットが「11」である8ビットのビット列に対する頻度値、の合計値を計算する。
そのために先ず、生成したそれぞれの8ビットのビット列が、「中心画素を囲む8画素のそれぞれを上記選択順で選択し、該選択した画素に対するビット値を該選択順で並べたビット列(上記の例では、1ビット目〜8ビット目のそれぞれは、画素位置P7,P6,P5,P1,P2,P3,P0,P4のそれぞれにおけるビット値を表している)」であると見なす。このとき、それぞれの8ビットのビット列について、P0に対応するビット位置のビット値(7ビット目のビット値)を1ビット目に配置し、P1に対応するビット位置のビット値(4ビット目のビット値)を2ビット目に配置し、P2に対応するビット位置のビット値(5ビット目のビット値)を3ビット目に配置し、P3に対応するビット位置のビット値(6ビット目のビット値)を4ビット目に配置し、P4に対応するビット位置のビット値(8ビット目のビット値)を5ビット目に配置し、P5に対応するビット位置のビット値(3ビット目のビット値)を6ビット目に配置し、P6に対応するビット位置のビット値(2ビット目のビット値)を7ビット目に配置し、P7に対応するビット位置のビット値(1ビット目のビット値)を8ビット目に配置する、というビット並び替えを行うことで、新たな8ビットのビット列を生成する。この新たなビット列は、ヒストグラムにおける何れかのビン(LBP)に対応するものであるから、上記のように4つのビット列に対する頻度値の合計値を計算する場合には、この4つのビット列のそれぞれについて上記のビット並び替えを行って生成した新たなビット列に対する頻度値を合計することで計算することができる。
然るに、このような処理により、6ビットのビット列「000000」〜「111111」のそれぞれについて、該ビット列を上位ビットとし且つ下位ビットが「00」である8ビットのビット列、下位ビットが「01」である8ビットのビット列、下位ビットが「10」である8ビットのビット列、下位ビットが「11」である8ビットのビット列、の4つのビット列に対する頻度値の合計値を求める。
6ビットのビット列「000000」〜「111111」のそれぞれについて求めた合計値の一例を図8に示す。図8において「**」は「00」、「01」、「10」、「11」を表しており、例えば最上段の場合、「00000000」、「00000001」、「00000010」、「00000011」のそれぞれについて上記の処理により求めた頻度値の合計が「48」となっている。
<ステップS702>
中心画素を囲む8画素の選択順には複数通りあるが、それら全ての選択順を選択したか否かを判断する。この判断の結果、全ての選択順を選択した場合には、処理はステップS703に進み、まだ選択していない選択順が残っている場合には、処理はステップS700に戻り、未選択の選択順を選択することになる。
<ステップS703>
最大の合計値を計算したときに用いた「選択順」及びそのときの6ビットのビット列(上記の例では上位ビット列として用いた6ビットのビット列)を不図示のメモリに登録する。
<ステップS704>
ステップS703でメモリに格納した6ビットにおける各ビット位置のビット値が同値となるような変換方法(LBP値の作成方法)を設定する。本実施形態では、ステップS703でメモリに格納した6ビットにおける各ビット位置のビット値が「0」となるような変換方法を設定する。例えば、6ビット「001001」の場合、3ビット目と6ビット目のビット値「1」を反転させて「0」とすればよいので、この場合、変換方法は「3ビット目と6ビット目のビット値を反転させる」となる。i0〜i7を、中心画素を囲む8画素を上記選択順で選択した場合の1番目の画素の画素値〜8番目の画素の画素値、を表すものとすると、6ビット「001001」の場合における変換方法とは、以下の(式3)、(式4)に示したものとなる。
Figure 0006442152
Figure 0006442152
<ステップS705>
ヒストグラムにおけるそれぞれのビン、即ちLBPを読み出し、該読み出したLBPが表す8ビットのビット列が、「中心画素を囲む8画素のそれぞれを上記選択順(ステップS703でメモリに格納した選択順)で選択し、該選択した画素に対するビット値を該選択順で並べたビット列(上記の例では、1ビット目〜8ビット目のそれぞれは、画素位置P7,P6,P5,P1,P2,P3,P0,P4のそれぞれにおけるビット値を表している)」と見なす。このとき、それぞれの8ビットのビット列について、P0に対応するビット位置のビット値(7ビット目のビット値)を1ビット目に配置し、P1に対応するビット位置のビット値(4ビット目のビット値)を2ビット目に配置し、P2に対応するビット位置のビット値(5ビット目のビット値)を3ビット目に配置し、P3に対応するビット位置のビット値(6ビット目のビット値)を4ビット目に配置し、P4に対応するビット位置のビット値(8ビット目のビット値)を5ビット目に配置し、P5に対応するビット位置のビット値(3ビット目のビット値)を6ビット目に配置し、P6に対応するビット位置のビット値(2ビット目のビット値)を7ビット目に配置し、P7に対応するビット位置のビット値(1ビット目のビット値)を8ビット目に配置する、ことで、新たな8ビットのビット列を生成する。そして、この生成したビット列に対して上記の変換方法を適用することで、変換済みビット列(8ビット)を求め、該変換済みビット列から対応するLBP(変換済みLBP)を求める。上記の例の場合、新たな8ビットのビット列において、3ビット目と6ビット目のビット値を反転させることで変換済みビット列を求める。
本ステップにおける処理について、図9(a)を用いて説明する。00000000〜11111111の各ビン(元のインデックス)の1ビット目〜8ビット目のそれぞれが画素位置P7,P6,P5,P1,P2,P3,P0,P4のそれぞれにおけるビット値を表しているとする。このとき、各ビンについて、該ビンのP0〜P7に対応するビットを1ビット目〜8ビット目に再配置したものが「再配置インデックス」である。そしてこの「再配置インデックス」において、3ビット目と6ビット目とを反転させたものが「変換後インデックス」である。このようにして、本ステップでは、ヒストグラムにおける各ビンのLBPを変換する。
<ステップS706>
ステップS705における処理により、ヒストグラムの各ビンの値(旧LBP)は、変換済みLBPに変わってしまったので、変換済みLBPと該変換済みLBPに対応する旧LBPの頻度値とのセットを、変換済みLBPが小さい順にソートする(換言すれば、頻度値が大きい順にソートする)ことで、ヒストグラムにおける各ビン(及び対応する頻度値)を並び替える。
このような処理により、第2のモード時に頻度値が高くなると予測されるビンが先頭のキャッシュラインにまとまるようにヒストグラムが作成される。なお、第2のモード時に頻度値が高くなると予測されるビンを先頭のキャッシュラインにまとめることに限るものではなく、最後尾のキャッシュラインにまとめるようにしても構わないし、指定アドレスのキャッシュラインにまとめるようにしても構わない。
図9(a)の「変換後インデックス」と対応する「頻度値」とのセットを、「変換後インデックス」が表すLBPが小さい順にソートする(換言すれば、頻度値が大きい順にソートする)ことで、図9(b)に示す如く、ヒストグラムにおける各ビンを並び替える。あるヒストグラムについて、ステップS507における処理を開始する前の状態の一例を図11(a)に示すと共に、ステップS507における処理を行った後の状態の一例を図11(b)に示す。
ここで、顔画像のサイズが320画素×240画素である場合、最大頻度値は76800である。よって、必要なこのためにメモリ量は、頻度値が整数型であれば、4Byteであるので、4ビンをまとめるために必要なメモリ量は16Byteである。したがって、キャッシュラインサイズはタグ情報等を含め、17Byte程度あれば良い。ただし、キャッシュラインサイズが大きければ、4つ以上のビンを1つのキャッシュラインにまとめられるように再配置してもよい。
そして、このようにして生成したヒストグラムのデータを登録ヒストグラム格納部107に格納する。
<ステップS707>
ステップS703でメモリに格納した「選択順」及びステップS704で設定した「変換方法」を、入力データ作成部104に通知する。
なお、本実施形態では、第1のモードで頻度値が高いビンを先頭のキャッシュラインにまとめるように記述したが、あらかじめ頻度が高くなるビンが分かっているのであれば、第1のモードで計算するのではなく、あらかじめ手動で決定してしまってもよい。
次に、第2のモードが設定された場合に、ヒストグラム作成部103が行う処理について、同処理のフローチャートを示す図10を用いて説明する。なお、図10において、図5に示した処理ステップと同じ処理ステップには同じステップ番号を付しており、該処理ステップに係る説明は省略する。
<ステップS1000>
スキャンウィンドウ処理部102は、検査画像からの顔画像上の画素位置(x、y)(初期値はx=2,y=2)にウィンドウを配置する。そしてスキャンウィンドウ処理部102は、ウィンドウ内の各画素の画素値を、入力データ作成部104に対して送出するので、入力データ作成部104は、ウィンドウの中心画素位置における画素値と該画素位置の周辺画素位置における画素値との大小関係を表すビット列を作成する。そして入力データ作成部104は、上記のステップS705と同様にして、この作成したビット列を構成する各ビットの並びを、上記のステップS707で再配置処理部106から通知された「選択順」を用いて並び替えて該ビット列を再構成する。そして入力データ作成部104は、この再構成したビット列を、上記のステップS707で再配置処理部106から通知された「変換方法」を用いて変換(変換方法が示すビット位置におけるビット値を反転させる)する。そして入力データ作成部104は、これらの処理を経て得たビット列を用いて、対応するLBPを特徴量として計算し、計算したLBPをヒストグラム算出部105に対して送出する。
第1のモード時に頻度値が高くなったビンが先頭のキャッシュラインにまとまっているため、第2のモード時にも頻度値が高くなると予測されるビンが先頭のキャッシュラインにまとまっている。したがって、ステップS501の処理で第2のメモリ部402に所望の頻度値が保持されている可能性が高くなり、低速な第1のメモリ部401へのアクセス頻度を減らすことができる。
このように、もともと、異なるメモリ領域に作成していた頻度値の高いビンを同メモリ領域に保持、つまり連続したデータとして扱うことで、低速なメモリへのアクセス回数を大幅に減らすことが可能となる。
なお、本実施形態では、LBPのヒストグラム作成について説明したが、LBPのヒストグラム作成に限られず、非特許文献2で述べられている、画素のエッジ勾配方向のヒストグラム作成などに適用することも可能である。
このように、本実施形態では、画像中の画素ごとの特徴量を受けるたびに、第1のメモリよりも高速にアクセス可能な第2のメモリに該特徴量の頻度値が登録されていれば、該頻度値を増加させ、登録されていなければ、該第2のメモリの内容を該第1のメモリに移動させた後で該頻度値を該第1のメモリから該第2のメモリに読み出して増加させることで、画像中の各画素の特徴量のヒストグラムを作成し、ヒストグラムにおいて比較的頻度値が高いビンが近接するビンとなるように該ヒストグラムにおけるビンの並び替えを行う技術の一例について説明した。
そしてその具体例として、画像中のそれぞれの画素について、該画素の画素値と該画素の周辺画素の画素値との大小関係を表すビット列を前記特徴量として生成し、並び替え順毎及びビットパターン毎に、該並び替え順に従ってビット値の並び替えを行うことで該ビットパターンを含むビット列となる複数種類のビット列のそれぞれの頻度値の合計値を求め、該合計値が最大となる並び替え順及びビットパターンの組み合わせを特定した。そして、ヒストグラムのビンとしてのそれぞれのビット列について、該ビット列を構成する各ビット値を上記特定した並び替え順に従って並び替えたビット列を生成し、該生成したビット列に対して、上記特定したビットパターンを構成するそれぞれのビット値を同値にするための変換と同じ変換を施すことで、該生成したビット列を変換した。そして、変換したそれぞれのビット列に対応する、該ビット列と、ヒストグラムにおいて該ビット列の作成元であるビンに対応する頻度値と、を含むデータセットを、該ビット列の値が小さい順に並び替えた。
[第2の実施形態]
第1の実施形態では、ヒストグラムにおいて登場頻度が高いビン(ヒストグラム値が高いビン)が先頭にまとまったビンとして扱われるように、該ヒストグラムのビンを変換した。本実施形態では、同様の目的を達成するために、インデックスとしてのLBPをキーとしてアドレスを指定するテーブルを用いる技術の一例について説明する。
本実施形態に係る画像処理装置は、第1の実施形態に係る画像処理装置(図1)と同じものである。また、本実施形態において第1のモードで画像処理装置が行う処理は、図5のフローチャートに従ったものとなるが、ステップS501〜S506における処理は第1の実施形態と同様で、ステップS507における処理のみが第1の実施形態と異なる。また、第2のモードでヒストグラム作成部103が行う処理は、図10のフローチャートにおいて、ステップS502,S503,S505,S506における処理は第1の実施形態と同様であるが、ステップS1000,S501,S504における処理のみが第1の実施形態と異なる。以下では、第1の実施形態との差分について重点的に説明し、以下で特に触れない限りは、第1の実施形態と同様であるものとする。
先ず、本実施形態においてステップS507において行われる処理について、同処理のフローチャートを示す図12を用いて説明する。
<ステップS1200>
再配置処理部106は、ヒストグラム算出部105が作成して第1のメモリ部401に格納したヒストグラムにおけるLBPと頻度値とを含むデータセットを、頻度値が高い順にソートすることで、第1のメモリ部401内に格納されているヒストグラムを更新する。
<ステップS1201>
再配置処理部106は、第1のメモリ部401におけるそれぞれのデータセットを登録したテーブルを作成する。作成したテーブルの一例を図13に示す。図13では、データセット中のLBP(ビット列で表している)と、対応するアドレス(第1のメモリ部401におけるアドレス)と、の対応関係を示している。この「アドレス」は、上記の通り、データセットに含められているものである。
<ステップS1202>
再配置処理部106は、第1のメモリ部401に格納されているヒストグラムを、登録ヒストグラム格納部107に登録する。
<ステップS1203>
再配置処理部106は、ステップS1201で作成したテーブルを、ヒストグラム算出部105に対して送出する。
次に、第2のモードでヒストグラム作成部103が行う処理について、同処理のフローチャートを示す図14を用いて説明する。
<ステップS1400>
スキャンウィンドウ処理部102は、検査画像からの顔画像上の画素位置(x、y)(初期値はx=2,y=2)にウィンドウを配置する。そしてスキャンウィンドウ処理部102は、ウィンドウ内の各画素の画素値を、入力データ作成部104に対して送出するので、入力データ作成部104は、ウィンドウの中心画素位置における画素値と該画素位置の周辺画素位置における画素値との大小関係を表すビット列を作成する。そして入力データ作成部104は、このビット列を用いて、対応するLBPを特徴量として計算し、計算したLBPをヒストグラム算出部105に対して送出するので、ヒストグラム算出部105は、このLBPを受け取る。
<ステップS1401>
ヒストグラム算出部105は、再配置処理部106から受けたテーブルを参照して、入力データ作成部104から受けたLBPに対応するアドレスを、該テーブルから取得する。
<ステップS1402>
ヒストグラム算出部105は、ステップS1401でテーブルから取得したアドレスを含むデータセットが第2のメモリ部402に格納されているか否かを判断する。この判断の結果、格納されている場合には、処理はステップS1403に進み、格納されていない場合には、処理はステップS502に進む。
<ステップS1403>
ヒストグラム算出部105は、入力データ作成部104から受けたLBPに対応するアドレスに対応する(該アドレスと同じデータセット中の)頻度値に1を加算して該頻度値を更新する。
このように、検査画像から取得したヒストグラムにおけるビンの並びを、登録ヒストグラム格納部107に格納したヒストグラムにおけるビンの並び(各ビンが頻度値が高いビンから降順に並んでいる)に合わせる。然るに同様の目的を達成することができるのであれば、他の方法を用いても構わない。
[第3の実施形態]
本実施形態では、第2の実施形態に係る技術を、マルチコアのプロセッサを用いて実施した場合について説明する。もちろん、以下の説明の本質は、コア数が2の場合に限ったものではなく、コア数が3以上であっても構わない。
本実施形態に適用可能なマルチコアのプロセッサの構成例を図15に示す。本実施形態では、ヒストグラム算出部105が図15の構成を有するものとして説明する。図15に例示したGPUやCPUといったプロセッサ1500は、演算処理を行う2つのプロセッサエレメント1501と、2つのキャッシュメモリ1502と、ローカルメモリ1503と、を有する。キャッシュメモリ1502のそれぞれは、対応する1つのプロセッサエレメントからのみアクセス可能であり、図15の場合、左側のキャッシュメモリ1502には左側のプロセッサエレメント1501のみがアクセス可能であり、右側のキャッシュメモリ1502には右側のプロセッサエレメント1501のみがアクセス可能である。キャッシュメモリ1502、ローカルメモリ1503のそれぞれは、図4に示した第2のメモリ部402、第1のメモリ部401の一例であり、然るにキャッシュメモリ1502は第1,2の実施形態と同様に、キャッシュライン単位、つまり一定のメモリ領域で、ローカルメモリ1503との間でデータ転送を行う。また、キャッシュメモリ1502はローカルメモリ1503上のアドレス情報をタグとして保持する。
本実施形態において第1のモードで画像処理装置が行う処理は、図5のフローチャートに従ったものとなるが、ステップS501〜S506における処理は第1の実施形態と同様で、ステップS507における処理のみが第1の実施形態と異なる。また、第2のモードでヒストグラム作成部103が行う処理は、図10のフローチャートにおいて、ステップS502,S503,S505,S506における処理は第1の実施形態と同様であるが、ステップS1000,S501,S504における処理のみが第1の実施形態と異なる。以下では、第1の実施形態との差分について重点的に説明し、以下で特に触れない限りは、第1の実施形態と同様であるものとする。
先ず、本実施形態においてステップS507において行われる処理について、同処理のフローチャートを示す図16を用いて説明する。
<ステップS1600>
再配置処理部106は、ヒストグラム算出部105が作成して第1のメモリ部401に格納したヒストグラムにおけるLBPと頻度値とを含むデータセットを、頻度値が高い順にソートすることで、第1のメモリ部401内に格納されているヒストグラムを更新する。なお、ヒストグラム算出部105は、2つのプロセッサエレメントを用いてヒストグラムを作成しても構わないし、何れか一方のみのプロセッサエレメントを用いてヒストグラムを作成しても構わない。
<ステップS1601>
再配置処理部106は、ステップS1600で更新したヒストグラムにおいて、先頭のビンから(例えば図13の最上段から)終端のビン(例えば図13の最下段まで)までの各ビンのうち、一方のプロセッサエレメント1501に割り当てるビンを決定し、該決定したビンを表す情報と、該決定したビンのローカルメモリ1503におけるアドレスと、該一方のプロセッサエレメント1501を表す情報(ここでは一例として該一方のプロセッサエレメント1501のコア番号とする)と、を関連づけてテーブル(対応情報)に登録する。
なお、一方のプロセッサエレメント1501には、該一方のプロセッサエレメント1501に対応するキャッシュメモリ1502に保持可能なビン数を割り当てる。例えば、1つのビンに必要なメモリ量が第1,2の実施形態と同様に4Byteであった場合、キャッシュメモリサイズが32Byteならば、タグのメモリ領域が必要なため、一方のプロセッサエレメント1501が担当するビンの数は7つである。
<ステップS1602>
再配置処理部106は、ステップS1600で更新したヒストグラムにおける各ビンのうち一方のプロセッサエレメント1501に割り当てられなかった残りのビンを表す情報と、該残りのビンのローカルメモリ1503におけるアドレスと、該他方のプロセッサエレメント1501を表す情報(ここでは一例として該他方のプロセッサエレメント1501のコア番号とする)と、を関連づけてテーブル(対応情報)に登録する。
<ステップS1603>
再配置処理部106は、第1のメモリ部401に格納されているヒストグラムを、登録ヒストグラム格納部107に登録する。
<ステップS1604>
再配置処理部106は、ステップS1601及びステップS1602で作成したテーブル(対応情報)を、ヒストグラム算出部105に対して送出する。
次に、第2のモードでヒストグラム作成部103が行う処理について、同処理のフローチャートを示す図17を用いて説明する。
<ステップS1700>
スキャンウィンドウ処理部102は、検査画像からの顔画像上の画素位置(x、y)(初期値はx=2,y=2)にウィンドウを配置する。そしてスキャンウィンドウ処理部102は、ウィンドウ内の各画素の画素値を、入力データ作成部104に対して送出するので、入力データ作成部104は、ウィンドウの中心画素位置における画素値と該画素位置の周辺画素位置における画素値との大小関係を表すビット列を作成する。そして入力データ作成部104は、このビット列を用いて、対応するLBPを特徴量として計算し、計算したLBPをヒストグラム算出部105に対して送出するので、ヒストグラム算出部105における2つのプロセッサエレメント1501は、このLBPを受け取る。
<ステップS1701>
一方のプロセッサエレメント1501は、ステップS1601で作成したテーブルに、ビンを表す情報として、入力データ作成部104から受けたLBPを表す情報が登録されているか否かを判断する。一方、他方のプロセッサエレメント1501は、ステップS1602で作成したテーブルに、ビンを表す情報として、入力データ作成部104から受けたLBPを表す情報が登録されているか否かを判断する。
それぞれのプロセッサエレメント1501による判断により、入力データ作成部104から受けたLBPを表す情報が、ステップS1601で作成したテーブルに登録されているのか、それともステップS1602で作成したテーブルに登録されているのかを判断することができる。
そして、入力データ作成部104から受けたLBPを表す情報が、ステップS1601で作成したテーブルに登録されている場合には、一方のプロセッサエレメント1501は、該テーブルから、該LBPに対応するアドレス及びコア番号を取得する。また、入力データ作成部104から受けたLBPを表す情報が、ステップS1602で作成したテーブルに登録されている場合には、他方のプロセッサエレメント1501は、該テーブルから、該LBPに対応するアドレス及びコア番号を取得する。
以下では、一方のプロセッサエレメント1501及び他方のプロセッサエレメント1501のうち、対応するアドレス及びコア番号を取得したプロセッサエレメントを着目プロセッサエレメント1501と呼称する。
<ステップS1702>
着目プロセッサエレメント1501は、ステップS1701でテーブルから取得したアドレスを含むデータセットが、ステップS1701でテーブルから取得したコア番号に対応するキャッシュメモリ1502(着目プロセッサエレメント1501に対応するキャッシュメモリ1502)に格納されているか否かを判断する。この判断の結果、格納されている場合には、処理はステップS1703に進み、格納されていない場合には、処理はステップS502に進む。
なお、ステップS502,S503では、ステップS1701でテーブルから取得したコア番号に対応するキャッシュメモリ1502を第2のメモリ部402として用いるものとする。
<ステップS1703>
着目プロセッサエレメント1501は、入力データ作成部104から受けたLBPに対応するアドレスに対応する(該アドレスと同じデータセット中の)頻度値に1を加算して該頻度値を更新する。
このように、本実施形態によれば、算出するヒストグラムにおいて、頻度の高いビンは1つ目のプロセッサエレメントで処理され、頻度の低い残りのビンは2つ目のプロセッサエレメントで処理されることとなる。ここで、1つ目のプロセッサエレメントに注目すると、メモリアクセス回数が多い、すなわち頻度値の高いビンはキャッシュメモリとローカルメモリとの間のデータ転送は、読み書き各一回のみ行われるだけであり、ステップS502、S503の処理は行われない。また、2つ目のプロセッサエレメントに注目すると、キャッシュメモリとローカルメモリとの間のデータ転送は行われるものの、ビンへのアクセス頻度が少ないため、影響が少ないと言える。よって、本実施形態によれば、低速なメモリへのアクセス回数を減らし、アクセス時間の短縮が可能となる。
また、コア数が3以上である場合におけるそれぞれのプロセッサエレメント1501へのビンの割り当て方法については様々な方法が考えられ、特定の方法に限るものではない。
[第4の実施形態]
第1の実施形態では、ステップS700〜S702の処理によって、6ビットのビット列「000000」〜「111111」のそれぞれについて、該ビット列を上位ビットとし且つ下位ビットが「00」である8ビットのビット列、下位ビットが「01」である8ビットのビット列、下位ビットが「10」である8ビットのビット列、下位ビットが「11」である8ビットのビット列、の4つのビット列に対する頻度値の合計値を求めていた。
本実施形態では、最大頻度のビンが先頭キャッシュラインに必ず含まれるようにする。そのために本実施形態では、ステップS700〜S702では、ビット列00000000〜11111111の代わりに、ヒストグラムにおいて最大の頻度値に対応するビンにおけるビット列(最大頻度値ビット列)を使用する。具体的には、最大頻度値ビット列から上位6ビットを抽出し、該抽出した6ビットを上位ビットとし且つ下位ビットが「00」である8ビットのビット列に対する頻度値、下位ビットが「01」である8ビットのビット列に対する頻度値、下位ビットが「10」である8ビットのビット列に対する頻度値、下位ビットが「11」である8ビットのビット列に対する頻度値、の合計値を、P0〜P7の全ての選択順について計算する。そしてステップS703では、最大の合計値を計算したときに用いた「選択順」及びこの6ビットのビット列を不図示のメモリに登録する。
すなわち、画像中のそれぞれの画素について、該画素の画素値と該画素の周辺画素の画素値との大小関係を表すビット列を前記特徴量として生成し、ヒストグラムにおいて最大の頻度値に対応するビット列中のビットパターンを対象ビットパターンとし、並び替え順毎に、該並び替え順に従ってビット値の並び替えを行うことで該対象ビットパターンを含むビット列となる複数種類のビット列のそれぞれの頻度値の合計値を求め、該合計値が最大となる並び替え順を特定する。そして、ヒストグラムのビンとしてのそれぞれのビット列について、該ビット列を構成する各ビット値を上記特定した並び替え順に従って並び替えたビット列を生成し、該生成したビット列に対して、対象ビットパターンを構成するそれぞれのビット値を同値にするための変換と同じ変換を施すことで、該生成したビット列を変換する。そして、変換したそれぞれのビット列に対応する、該ビット列と、ヒストグラムにおいて該ビット列の作成元であるビンに対応する頻度値と、を含むデータセットを、該ビット列の値が小さい順に並び替える。
また、第2の実施形態では、ステップS1200において頻度値をキーとしてデータセットをソートしていたが、ヒストグラムにおいて閾値を超えたビンから順にアドレスを割り当てるようにしても構わない。
また、図1に示した各機能部は全てをハードウェアで構成しても良いが、メモリとして動作する機能部をハードディスクやRAMで構成し、それ以外の機能部をソフトウェア(コンピュータプログラム)で実装しても良い。その場合、このハードディスクやRAMを有し、且つこのコンピュータプログラムを実行可能なプロセッサを有するコンピュータであれば、上記の画像処理装置に適用することができる。
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
105:ヒストグラム算出部 106:再配置処理部

Claims (7)

  1. 画像中の画素ごとの特徴量を受け取り、第1のメモリよりも高速にアクセス可能な第2のメモリに該特徴量の頻度値が登録されていれば、該頻度値を増加させ、登録されていなければ、該第2のメモリの内容を該第1のメモリに移動させた後で該頻度値を該第1のメモリから該第2のメモリに読み出して増加させることで、画像中の各画素の特徴量のヒストグラムを作成する作成手段と、
    前記ヒストグラムにおいて頻度値が高いビンが近接するビンとなるように該ヒストグラムにおけるビンの並び替えを行う並び替え手段と
    を備え
    前記作成手段は、
    画像中のそれぞれの画素について、該画素の画素値と該画素の周辺画素の画素値との大小関係を表すビット列を前記特徴量として生成し、
    前記並び替え手段は、
    並び替え順毎及びビットパターン毎に、該並び替え順に従ってビット値の並び替えを行うことで該ビットパターンを含むビット列となる複数種類のビット列のそれぞれの頻度値の合計値を求め、該合計値が最大となる並び替え順及びビットパターンの組み合わせを特定する特定手段と、
    前記ヒストグラムのビンとしてのそれぞれのビット列について、該ビット列を構成する各ビット値を前記特定手段が特定した並び替え順に従って並び替えたビット列を生成し、該生成したビット列に対して、前記特定手段が特定したビットパターンを構成するそれぞれのビット値を同値にするための変換と同じ変換を施すことで、該生成したビット列を変換する変換手段と、
    前記変換手段が変換したそれぞれのビット列に対応する、該ビット列と、前記ヒストグラムにおいて該ビット列の作成元であるビンに対応する頻度値と、を含むデータセットを、該ビット列の値が小さい順に並び替える手段と
    を備えることを特徴とする画像処理装置。
  2. 前記並び替え手段は、
    前記ヒストグラムにおいて、頻度値が高いビンから順に並び替えることを特徴とする請求項1に記載の画像処理装置。
  3. 画像中の画素ごとの特徴量を受け取り、第1のメモリよりも高速にアクセス可能な第2のメモリに該特徴量の頻度値が登録されていれば、該頻度値を増加させ、登録されていなければ、該第2のメモリの内容を該第1のメモリに移動させた後で該頻度値を該第1のメモリから該第2のメモリに読み出して増加させることで、画像中の各画素の特徴量のヒストグラムを作成する作成手段と、
    前記ヒストグラムにおいて頻度値が高いビンが近接するビンとなるように該ヒストグラムにおけるビンの並び替えを行う並び替え手段と
    を備え、
    前記作成手段は、
    画像中のそれぞれの画素について、該画素の画素値と該画素の周辺画素の画素値との大小関係を表すビット列を前記特徴量として生成し、
    前記並び替え手段は、
    前記ヒストグラムにおいて最大の頻度値に対応するビット列中のビットパターンを対象ビットパターンとし、並び替え順毎に、該並び替え順に従ってビット値の並び替えを行うことで該対象ビットパターンを含むビット列となる複数種類のビット列のそれぞれの頻度値の合計値を求め、該合計値が最大となる並び替え順を特定する特定手段と、
    前記ヒストグラムのビンとしてのそれぞれのビット列について、該ビット列を構成する各ビット値を前記特定手段が特定した並び替え順に従って並び替えたビット列を生成し、該生成したビット列に対して、前記対象ビットパターンを構成するそれぞれのビット値を同値にするための変換と同じ変換を施すことで、該生成したビット列を変換する変換手段と、
    前記変換手段が変換したそれぞれのビット列に対応する、該ビット列と、前記ヒストグラムにおいて該ビット列の作成元であるビンに対応する頻度値と、を含むデータセットを、該ビット列の値が小さい順に並び替える手段と
    を備えることを特徴とする画像処理装置。
  4. 更に、前記並び替え手段が作成したヒストグラムと、前記画像とは別の画像に対して前記作成手段及び前記並び替え手段により作成したヒストグラムと、を用いて、該別の画像に対する認識処理を行う手段を備えることを特徴とする請求項1乃至の何れか1項に記載の画像処理装置。
  5. 画像処理装置が行う画像処理方法であって、
    前記画像処理装置の作成手段が、画像中の画素ごとの特徴量を受け取り、第1のメモリよりも高速にアクセス可能な第2のメモリに該特徴量の頻度値が登録されていれば、該頻度値を増加させ、登録されていなければ、該第2のメモリの内容を該第1のメモリに移動させた後で該頻度値を該第1のメモリから該第2のメモリに読み出して増加させることで、画像中の各画素の特徴量のヒストグラムを作成する作成工程と、
    前記画像処理装置の並び替え手段が、前記ヒストグラムにおいて頻度値が高いビンが近接するビンとなるように該ヒストグラムにおけるビンの並び替えを行う並び替え工程と
    を備え
    前記作成工程では、
    画像中のそれぞれの画素について、該画素の画素値と該画素の周辺画素の画素値との大小関係を表すビット列を前記特徴量として生成し、
    前記並び替え工程は、
    前記画像処理装置の特定手段が、並び替え順毎及びビットパターン毎に、該並び替え順に従ってビット値の並び替えを行うことで該ビットパターンを含むビット列となる複数種類のビット列のそれぞれの頻度値の合計値を求め、該合計値が最大となる並び替え順及びビットパターンの組み合わせを特定する特定工程と、
    前記画像処理装置の変換手段が、前記ヒストグラムのビンとしてのそれぞれのビット列について、該ビット列を構成する各ビット値を前記特定工程で特定した並び替え順に従って並び替えたビット列を生成し、該生成したビット列に対して、前記特定工程で特定したビットパターンを構成するそれぞれのビット値を同値にするための変換と同じ変換を施すことで、該生成したビット列を変換する変換工程と、
    前記画像処理装置の第2の並び替え手段が、前記変換工程で変換したそれぞれのビット列に対応する、該ビット列と、前記ヒストグラムにおいて該ビット列の作成元であるビンに対応する頻度値と、を含むデータセットを、該ビット列の値が小さい順に並び替える工程と
    を備えることを特徴とする画像処理方法。
  6. 画像処理装置が行う画像処理方法であって、
    前記画像処理装置の作成手段が、画像中の画素ごとの特徴量を受け取り、第1のメモリよりも高速にアクセス可能な第2のメモリに該特徴量の頻度値が登録されていれば、該頻度値を増加させ、登録されていなければ、該第2のメモリの内容を該第1のメモリに移動させた後で該頻度値を該第1のメモリから該第2のメモリに読み出して増加させることで、画像中の各画素の特徴量のヒストグラムを作成する作成工程と、
    前記画像処理装置の並び替え手段が、前記ヒストグラムにおいて頻度値が高いビンが近接するビンとなるように該ヒストグラムにおけるビンの並び替えを行う並び替え工程と
    を備え、
    前記作成工程では、
    画像中のそれぞれの画素について、該画素の画素値と該画素の周辺画素の画素値との大小関係を表すビット列を前記特徴量として生成し、
    前記並び替え工程は、
    前記画像処理装置の特定手段が、前記ヒストグラムにおいて最大の頻度値に対応するビット列中のビットパターンを対象ビットパターンとし、並び替え順毎に、該並び替え順に従ってビット値の並び替えを行うことで該対象ビットパターンを含むビット列となる複数種類のビット列のそれぞれの頻度値の合計値を求め、該合計値が最大となる並び替え順を特定する特定工程と、
    前記画像処理装置の変換手段が、前記ヒストグラムのビンとしてのそれぞれのビット列について、該ビット列を構成する各ビット値を前記特定工程で特定した並び替え順に従って並び替えたビット列を生成し、該生成したビット列に対して、前記対象ビットパターンを構成するそれぞれのビット値を同値にするための変換と同じ変換を施すことで、該生成したビット列を変換する変換工程と、
    前記画像処理装置の第2の並び替え手段が、前記変換工程で変換したそれぞれのビット列に対応する、該ビット列と、前記ヒストグラムにおいて該ビット列の作成元であるビンに対応する頻度値と、を含むデータセットを、該ビット列の値が小さい順に並び替える工程と
    を備えることを特徴とする画像処理方法。
  7. コンピュータを、請求項1乃至の何れか1項に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。
JP2014077247A 2014-04-03 2014-04-03 画像処理装置、画像処理方法 Active JP6442152B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014077247A JP6442152B2 (ja) 2014-04-03 2014-04-03 画像処理装置、画像処理方法
US14/669,456 US9858293B2 (en) 2014-04-03 2015-03-26 Image processing apparatus and image processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014077247A JP6442152B2 (ja) 2014-04-03 2014-04-03 画像処理装置、画像処理方法

Publications (3)

Publication Number Publication Date
JP2015197897A JP2015197897A (ja) 2015-11-09
JP2015197897A5 JP2015197897A5 (ja) 2017-05-25
JP6442152B2 true JP6442152B2 (ja) 2018-12-19

Family

ID=54210043

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014077247A Active JP6442152B2 (ja) 2014-04-03 2014-04-03 画像処理装置、画像処理方法

Country Status (2)

Country Link
US (1) US9858293B2 (ja)
JP (1) JP6442152B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6700712B2 (ja) 2015-10-21 2020-05-27 キヤノン株式会社 畳み込み演算装置
US10262187B1 (en) * 2016-11-10 2019-04-16 Synaptics Incorporated Systems and methods for spoof detection based on local binary patterns
JP6860787B2 (ja) * 2017-07-25 2021-04-21 富士通株式会社 メモリ制御回路、メモリ、及びメモリ制御方法
CN110222749B (zh) * 2019-05-27 2022-06-07 成都信息工程大学 一种可见光图像与红外图像匹配方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0636028A (ja) 1992-07-17 1994-02-10 Advantest Corp ヒストグラム作成装置
JP2008242733A (ja) 2007-03-27 2008-10-09 Seiko Epson Corp 画像処理装置
JP2009086761A (ja) * 2007-09-27 2009-04-23 Fuji Xerox Co Ltd データ処理装置、及びデータ処理プログラム
JP2010081429A (ja) * 2008-09-26 2010-04-08 Canon Inc 画像処理装置及びその制御方法

Also Published As

Publication number Publication date
JP2015197897A (ja) 2015-11-09
US20150286892A1 (en) 2015-10-08
US9858293B2 (en) 2018-01-02

Similar Documents

Publication Publication Date Title
JP6402265B2 (ja) 意思決定モデルを構築する方法、コンピュータデバイス及び記憶デバイス
CN105144239B (zh) 图像处理装置、图像处理方法
JP7242975B2 (ja) ディシジョンツリーベースの適応ブースティング分類器におけるオブジェクト分類のための方法、デジタルシステム、並びに非一時的コンピュータ可読記憶媒体
CN108875537B (zh) 对象检测方法、装置和系统及存储介质
JP7087825B2 (ja) 学習装置および学習方法
JP7035827B2 (ja) 学習識別装置および学習識別方法
US9619501B2 (en) Index scan device and index scan method
TW201447776A (zh) 透過圖形處理單元執行物件偵測運算
JP6442152B2 (ja) 画像処理装置、画像処理方法
JP5388835B2 (ja) 情報処理装置及び情報処理方法
JP7087695B2 (ja) 学習装置および学習方法
US11080812B2 (en) Image recognition apparatus and image recognition method for sorting candidate regions detected in image
US20140147034A1 (en) Information processing apparatus, control method therefor, and electronic device
US20180260376A1 (en) System and method to create searchable electronic documents
JP7196542B2 (ja) 学習装置および学習方法
JP2020027436A (ja) 学習装置および学習方法
WO2022007596A1 (zh) 图像检索系统、方法和装置
US10817567B2 (en) Techniques for information graph compression
JP7095479B2 (ja) 学習装置および学習方法
JP7211020B2 (ja) 学習装置および学習方法
KR102006283B1 (ko) 패스트맵을 이용한 데이터셋의 m-트리 적재방법
JP7167544B2 (ja) 学習装置および学習方法
JP7069897B2 (ja) 学習識別装置および学習識別方法
JP7069898B2 (ja) 学習識別装置および学習識別方法
US8428353B2 (en) Calculation apparatus for amount of characteristic and discrimination apparatus

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170403

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170403

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180316

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180514

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181026

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181126

R151 Written notification of patent or utility model registration

Ref document number: 6442152

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151