JP2016129005A - ハッシュ値生成方法及び装置、並びにプログラム - Google Patents

ハッシュ値生成方法及び装置、並びにプログラム Download PDF

Info

Publication number
JP2016129005A
JP2016129005A JP2015118158A JP2015118158A JP2016129005A JP 2016129005 A JP2016129005 A JP 2016129005A JP 2015118158 A JP2015118158 A JP 2015118158A JP 2015118158 A JP2015118158 A JP 2015118158A JP 2016129005 A JP2016129005 A JP 2016129005A
Authority
JP
Japan
Prior art keywords
image
hash value
window
hash
value generation
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
JP2015118158A
Other languages
English (en)
Inventor
正志 藏之下
Masashi Kuranoshita
正志 藏之下
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.)
Fujifilm Corp
Original Assignee
Fujifilm 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 Fujifilm Corp filed Critical Fujifilm Corp
Publication of JP2016129005A publication Critical patent/JP2016129005A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Image Analysis (AREA)

Abstract

【課題】画像から特徴点を抽出する処理が不要であり、ノイズに対して耐性のある画像探索が可能となるハッシュ値生成方法及び装置、並びにプログラムを提供する。【解決手段】画像に対して特定の画素数の領域である窓の位置を決定する窓位置決定工程(S14)と、窓内に含まれる画素値からハッシュ値を生成するハッシュ値生成工程(S18)と、画像に対する窓の位置を移動させる工程であって、異なる位置の窓同士で窓の一部が重なり合う移動量によって窓の位置を順次に移動させる窓位置移動工程(S24)と、を含み、窓の位置を異ならせた複数の位置における各位置でハッシュ値の生成を行うことにより、画像から複数のハッシュ値を生成する。【選択図】図1

Description

本発明はハッシュ値生成方法及び装置、並びにプログラムに係り、特に、画像探索に用いるハッシュ値を生成する技術に関する。
画像探索の分野において、探索対象の画像が1枚与えられた場合に、登録済みの大量の画像の中から、探索対象の画像と似た画像を効率よく探し出すことが求められている。具体的な適用例として、例えば、特許文献1には、紙幣や有価証券に代表される各種の紙文書の真偽を判定する技術が記載されている。特許文献1によれば、紙を形成する繊維質材料の絡み具合のランダム性に起因して得られるランダム画像を用いることで、固体の真偽判定を行っている。特許文献1で提案されている真偽判定方法は、基準データとして登録された画像群の全てに対して、1枚ずつ、判定対象の画像との相関係数を求めることにより真偽判定を行う。
特許文献1に記載の紙文書の真偽判定を行う用途では、真性物の基準データである画像群の中から、判定対象の画像と似た画像を効率よく探し出すことが必要とされる。
画像を効率よく探索するために、ハッシュ値を用いる手法が提案されている(特許文献2参照)。特許文献2では、文書画像から単語領域の重心を示す特徴点を複数個抽出して、特徴点間の幾何的な関係からハッシュ値を求める手法が開示されている。
特許第4103826号明細書 特開2009−70066号公報
特許文献1に記載の発明によれば、簡単かつ高精度に真偽判定を行うことができる。しかし、特許文献1に記載の手法だけでは、登録する画像数に比例して照合時間がかかるという欠点がある。
その一方、効率のよい画像探索を行うために提案されている特許文献2に記載の手法は、1枚の文書画像から各単語領域の重心を示す多数の特徴点を抽出する処理が必要となる。画像内から特徴点を抽出する処理は、画像の位置ずれなどのノイズの影響を受けやすい。特許文献2に記載の手法は、抽出された特徴点からハッシュ値を求めるため、ノイズの影響でハッシュ値も変動しやすく、ノイズ耐性が低いという欠点がある。さらに、特許文献1の用途で想定しているランダム画像のように、際立った特徴の少ない画像は特徴点の抽出が困難であり、かかる画像に関して、特許文献2に記載の技術を適用することはできない。
本発明はこのような事情に鑑みてなされたもので、画像から特徴点を抽出する処理が不要であり、ノイズに対して耐性のある画像探索が可能となるハッシュ値生成方法及び装置、並びにプログラムを提供することを目的とする。
前記目的を達成するために、次の発明態様を提供する。
第1態様に係るハッシュ値生成方法は、画像に対して特定の画素数の領域である窓の位置を決定する窓位置決定工程と、画像の窓内に含まれる画素値からハッシュ値を生成するハッシュ値生成工程と、画像に対する窓の位置を移動させる工程であって、異なる位置の窓同士で窓の一部が重なり合う移動量によって窓の位置を順次に移動させる窓位置移動工程と、を含み、窓の位置を異ならせた複数の位置における各位置でハッシュ値生成工程によるハッシュ値の生成を行うことにより、画像から複数のハッシュ値を生成するハッシュ値生成方法である。
第1態様によれば、窓内に含まれる画素値を使ってハッシュ値を生成するため、画像から特徴点を抽出する処理が不要である。また、窓の一部が重なり合う移動量によって窓の位置を順次に移動させて画像を走査して、異なる窓位置でそれぞれハッシュ値を生成することにより1枚の画像から複数のハッシュ値を得るため、ノイズに対してロバスト性がある。
第2態様として、第1態様のハッシュ値生成方法において、ハッシュ値生成工程は、窓内の画素を全て使ってハッシュ値を生成する構成とすることができる。
第3態様として、第1態様又は第2態様のハッシュ値生成方法において、Nが3以上の整数である場合に、ハッシュ値生成工程は、窓内の各画素の画素値を2値化又はN値化した値を並べてハッシュ値を生成する構成とすることができる。
第4態様として、第1態様のハッシュ値生成方法において、ハッシュ値生成工程は、窓内の画素の一部である特定の画素を使ってハッシュ値を生成する構成とすることができる。
第5態様として、第4態様のハッシュ値生成方法において、特定の画素は、窓内に複数個定められており、複数個の特定の画素同士は、互いに規定の画素数以上離れて離散的に配置されている構成とすることができる。
第6態様として、第5態様のハッシュ値生成方法において、Nが3以上の整数である場合、ハッシュ値生成工程は、特定の画素の画素値を2値化又はN値化した値を並べてハッシュ値を生成する構成とすることができる。
第7態様として、第1態様から第6態様のいずれか一態様のハッシュ値生成方法において、窓に含まれる画素値の分布に基づき、ハッシュ値の生成の要否を判断する判断工程を含み、判断工程によりハッシュ値の生成が不要であると判断された場合に、不要であると判断された窓の位置でのハッシュ値生成工程によるハッシュ値の生成の処理を不実施とする構成とすることができる。
第8態様として、第7態様のハッシュ値生成方法において、判断工程は、窓に含まれる画素の全ての画素値が同じ値である場合に、ハッシュ値の生成が不要であると判断する構成とすることができる。
「同じ値」とは、完全に一致する場合のみならず、予め「同じ値」と見做す誤差の許容範囲を定めておき、許容範囲内の誤差がある場合についても「同じ値」として取り扱うことができる。
第9態様として、第1態様から第8態様のいずれか一態様のハッシュ値生成方法において、画像はカラー画像であり、カラー画像を表す複数の成分の成分ごとに値が定められた画素値を有する画像データとなっており、ハッシュ値生成工程は、窓に含まれる画素の成分ごとの値を基に、複数の成分を代表する一つの代表値を求め、代表値を使ってハッシュ値を生成する構成とすることができる。
第10態様として、第9態様のハッシュ値生成方法において、複数の成分は、赤の成分を示すR成分、緑の成分を示すG成分、及び青の成分を示すB成分の成分ごとに値が定められた画素値を有する画像のデータであり、R成分の値とG成分の値とB成分の値とを、予め定めた比率で混合加算して得られるグレイの値を代表値として用いる構成とすることができる。
第11態様として、第9態様のハッシュ値生成方法において、複数の成分のうち、いずれか一つの成分の値を代表値として用いる構成とすることができる。
第12態様に係るハッシュ値生成装置は、画像に対して特定の画素数の領域である窓の位置を決定する窓位置決定部と、画像の窓内に含まれる画素値からハッシュ値を生成するハッシュ値生成部と、画像に対する窓の位置を移動させる窓位置移動処理部であって、異なる位置の窓同士で窓の一部が重なり合う移動量によって窓の位置を順次に移動させる窓位置移動処理部と、を有し、窓の位置を異ならせた複数の位置における各位置でハッシュ値生成部によるハッシュ値の生成を行うことにより、画像から複数のハッシュ値を生成するハッシュ値生成装置である。
第12態様のハッシュ値生成装置において、第2態様から第11態様で特定したハッシュ値生成方法の特定事項と同様の事項を適宜組み合わせることができる。その場合、ハッシュ値生成方法において特定される処理や動作の工程(ステップ)は、これに対応する処理や動作を担う手段としての処理部や機能部の要素として把握することができる。
第13態様に係るプログラムは、コンピュータを、画像に対して特定の画素数の領域である窓の位置を決定する窓位置決定部と、画像の窓内に含まれる画素値からハッシュ値を生成するハッシュ値生成部と、画像に対する窓の位置を移動させる窓位置移動処理部であって、異なる位置の窓同士で窓の一部が重なり合う移動量によって窓の位置を順次に移動させる窓位置移動処理部として機能させ、窓の位置を異ならせた複数の位置における各位置でハッシュ値生成部によるハッシュ値の生成を行うことにより、画像から複数のハッシュ値を生成する装置として機能させるためのプログラムである。
第13態様のプログラムにおいて、第2態様から第11態様で特定したハッシュ値生成方法の特定事項と同様の事項を適宜組み合わせることができる。その場合、ハッシュ値生成方法において特定される処理や動作の工程(ステップ)は、これに対応する処理や動作を行うプログラムの「機能」の要素として把握することができる。
本発明によれば、画像内から特徴点の抽出が不要である。したがって、画像の種類によらず、ハッシュ値を効率よく生成することができる。また、本発明によれば、画像内を窓で走査しながら各窓位置でハッシュ値を求め、一つの画像から複数のハッシュ値を求めるため、ノイズに対して耐性がある。
図1は本発明の実施形態に係るハッシュ値生成方法が採用されたハッシュ登録処理の手順を示すフローチャートである。 図2は画像と窓の関係を示す説明図である。 図3は画素値からハッシュ値を生成する方法の一例を示す説明図である。 図4(A)は窓における画素の配列順番の定め方の例を示す図であり、図4(B)は窓内における各画素の{0,1}に正規化された画素値の例を示す図である。 図5(A)〜(C)は画像における窓の移動例を模式的に示した説明図である。 図6は一つの画像30から784個のハッシュ値が生成されることを模式的に示した説明図である。 図7はハッシュ表に画像ID(Identification)を登録する処理の説明図である。 図8は登録対象の画像群の例を示す図である。 図9はハッシュ表に複数の画像IDを登録する処理を模式的に示した説明図である。 図10はハッシュ登録処理によって得られるハッシュ表の概念図である。 図11は画像探索処理のフローチャートである。 図12は探索対象画像から求めた複数のハッシュ値とハッシュ表とを比較する処理の概念図である。 図13は本実施形態によるハッシュを用いた探索結果の例である。 図14(A)は窓内の2値化された画素値をすべて使ってハッシュ値を生成する例を示す模式図であり、図14(B)は窓内の4値化された画素値をすべて使ってハッシュ値を生成する例を示す模式図である。 図15は窓内における特定の画素の画素値を使用してハッシュ値を生成する例を示す説明図である。 図16は画像を縮小する処理の説明図である。 図17はハッシュ値を生成しない画素の集まりを含む画像の例を示す図である。 図18は図17に示す画像においてハッシュ値を生成しない窓位置とハッシュ値を生成する窓位置の例を示す説明図である。 図19はハッシュ値の生成の要否判断を含んだハッシュ登録処理のフローチャートである。 図20は第一実施形態に係るハッシュ値生成装置の構成を示すブロック図である。 図21は第二実施形態に係るハッシュ値生成装置の構成を示すブロック図である。 図22は第三実施形態に係るハッシュ値生成装置の構成を示すブロック図である。 図23は画像探索サービスを提供するシステムの構成例を示すブロック図である。 図24は画像探索サービスを提供するシステムの他の構成例を示すブロック図である。 図25は画像の特徴点を利用したパノラマ合成の処理の概念図である。 図26は本発明の他の実施形態による画像間の対応付けの処理の説明図である。
以下、添付図面にしたがって本発明を実施するための形態について詳説する。
<ハッシュ値生成方法の概要>
本発明の実施形態に係るハッシュ値生成方法が適用される画像探索方法は、登録画像のハッシュ値と画像ID(identification)をハッシュ表に登録するハッシュ登録処理のステップと、探索対象画像からハッシュ値を求めて、ハッシュ表を利用して画像の探索を行う画像探索処理のステップと、に分けることができる。
ハッシュ登録処理は、登録画像を取得し、取得した登録画像から複数のハッシュ値を生成して、ハッシュ表に画像IDを登録する処理である。画像IDは、複数の画像を識別するために画像ごとに定義される識別符号である。「ID」はidentificationの略語表記である。画像探索処理に先行して、ハッシュ登録処理を行い、ハッシュ表に登録画像の画像IDを登録しておく。そして、画像探索処理の際には、探索対象画像から複数のハッシュ値を生成した後、ハッシュ表と比較を行い、ハッシュ値の合致数が最も多い画像IDを、探索対象画像に似た画像として判定する。
ハッシュ登録処理及び画像探索処理のそれぞれにおいて、本発明の実施形態に係るハッシュ値生成方法が用いられる。ここでは、登録画像のハッシュ値をハッシュ表に登録するハッシュ登録処理と、ハッシュ表を利用して画像の探索を行う画像探索処理とに分けて説明する。
[ハッシュ登録処理について]
図1は本発明の実施形態に係るハッシュ値生成方法が採用されたハッシュ登録処理の手順を示すフローチャートである。図1に示すフローチャートの各工程の処理は、コンピュータのハードウエアとソフトウエアの組み合わせによって実現することができる。ソフトウエアは、プログラムと同義である。
ハッシュ登録処理は、まず、画像取得工程(ステップS12)にて画像を取得する。ここで取得される画像が登録画像である。画像のサイズやデータ形式については、特に制限はない。画像のサイズの一例として、32×32画素のサイズとすることができる。画像のデータ形式の一例として、8ビットの階調で表される白黒画像とすることができる。他の例として、画像は、RGBの各色8ビットの階調で表されるカラー画像とすることができる。RGBのRはRed(赤)を表し、GはGreen(緑)を表し、BはBlue(青)を表している。
また、画像は、連続調画像に限らず、連続調画像をハーフトーン処理して得られるドット配置画像とすることができる。ドット配置画像は、ドット画像、ハーフトーン画像、又は、ドットデータなどの用語と同義である。ドット配置画像は、ドットのオンオフを示す二値の量子化による画像データである二値画像、又は、ドットサイズの種類に対応した多値の量子化による画像データである多値画像を用いてもよい。例えば、ドットサイズの種類として、大ドット、中ドット、及び小ドットの3種類のドットサイズを制御できる場合には、これら3種類のドット種とドットオフ(ドット無し)の区別を含む4値のドット配置画像となる。
画像取得工程(ステップS12)により取得される画像には、固有の識別符号である画像IDが定められ、画像IDによって各画像を他の画像と区別して管理することができる。画像IDの簡単な例として、本実施形態では、登録される画像に整数による番号を付与する。ただし、画像IDの定め方はこの例に限らず、特に制限はない。
次いで、取得した画像における窓の位置を決定する(ステップS14)。「窓」は、画像内における演算処理の対象として注目する特定の画素数の領域を規定する窓関数に相当するものである。演算処理の対象として着目する画像領域を「着目領域」という。窓は画像のサイズよりも小さな画像領域を規定する。
M、N、m及びnがいずれも自然数であって、m<M、かつ、n<Nを満たす場合に、画像のサイズをM行N列の画素配列によるM×N画素とし、窓のサイズはm行n列の画素内列によるm×n画素とすることができる。ここでは、簡単な例として、画像のサイズが32×32画素であり(M=N=32)、窓のサイズが5×5画素(m=n=5)である場合を例示する。画像に対して窓の位置を変えることで、画像から切り取られる画像範囲が変わる。画像における窓の位置を「窓位置」という。画像から窓によって切り取って得られる画像の一部を「部分画像」という。画像内で窓を移動させ、それぞれの窓位置で得られる部分画像の処理を行うことを「走査」と表現する。
図2は画像と窓の関係を示す説明図である。図2では画像のサイズが32×32画素である画像30の例が示されており、この画像30に対して、窓のサイズが5×5画素である窓32を移動させて画像30の全体を走査する様子が示されている。
本実施形態では、画像30全体から一つの(単一の)ハッシュ値を生成するのではく、画像30から窓32によって切り取られる部分画像から一つのハッシュ値を得る。そして、画像30に対して窓32の位置を少しずつ移動させ、各窓位置で切り取られる部分画像の各々からハッシュ値を生成することにより、最終的には一つの画像30から複数のハッシュ値が得られる。
以下、具体例を用いて詳細に説明する。
図2に示した画像30は、8ビット(256階調)のグレイ画像であり、画像内容は際立った特徴のないランダム画像となっている。グレイ画像は白黒画像と同義である。本例では、窓32の初期位置として、画像30の左上隅の位置に定める。ただし、窓32の初期位置は、この例に限らず、適宜設定することが可能である。
次いで、窓32に含まれる画素値を取得する(図1のステップS16)。窓32によって切り取られる画像領域のすべての画素から画素値を取得してもよいし、一部の画素から画素値を取得してもよい。ここでは、5×5画素の窓32内に含まれる全25画素の各画素の画素値を取得する例を説明する。
次いで、ステップS16で取得した画素値からハッシュ値を生成する(ステップS18)。窓32によって規定される画像領域の画素値からハッシュ値を生成する方法としては様々な方法があり得る。
図3は画素値からハッシュ値を生成する方法の一例を示す説明図である。この例では、窓32によって切り取られた5×5画素の画像からハッシュ値を生成するために、画像を正規化する。画素値の取り得る値の範囲が0から255である場合を[0,255]と記載する。[0,255]の画素値を簡単に正規化するために、0から127の値は「0」とし、128から255の値は「1」とする。このような二値化の処理により、256階調で表されていた各画素値は、「0」又は「1」に正規化される。画素値を「0」又は「1」に正規化することを、{0,1}に正規化すると記載する。
窓32内には全部で25画素が含まれており、各画素が{0,1}に正規化されることになる。そして、{0,1}に正規化された25次元の点からハッシュ値を求める。
具体的には、図3に示すように、{0,1}に正規化された各画素値の並びをそのままハッシュ値の生成に利用することができる。図3の例では、窓32内における5×5画素のそれぞれ正規化された画素値を画素の配列順に並べて5×5桁(=25桁)の2進数とし、得られた値を10進数に直してハッシュ値としている。
図4(A)は窓32における画素の配列順番の定め方の例を示す図であり、図4(B)は、窓32内における各画素の{0,1}に正規化された画素値の例を示す図である。なお、図4(B)は、図3に示した窓32の位置における部分画像に正規化された画素値の例である。本例では図4(A)に示すように、窓32内における画素の配列順に1から25までの並び順番が定められている。図4(B)に示された画像の画素値を図4(A)の並び順に沿って並べて、ハッシュ値を生成すると、図3に例示したものとなる。ただし、画素値の並べ方については、図4(A)に例示した配列順番に限定されず、様々な配列順番のルールを定めることができる。
窓のサイズがm×n画素の場合、{0,1}に正規化された画素値から作られるハッシュ値のバリエーションは、2の(m×n)乗となる。したがって、m×n≦16の場合、ハッシュキーは16bit=2byte(unsigned short int)で表現できる。16<m×n≦32の場合、ハッシュキーは32bit=4byte(unsigned int)で表現できる。この値は、メモリの使用量に効いてくる。
上述のようにして、窓32に含まれる画素値からハッシュ値を生成し(図1のステップS18)、ハッシュ表にハッシュ値と関連付けて画像IDを登録する(ステップS20)。ハッシュ表の具体例は後述するが、ハッシュ表におけるキー(Key)はハッシュ値、バリュー(Value)は画像IDである。
次いで、画像30の全面の走査を完了したか否かの判定を行う(ステップS22)。画像30内に、窓32による走査が行われていない未走査の領域が存在する場合には、ステップS22でNo判定となる。ステップS22でNo判定となった場合は、窓32の位置を移動し(ステップS24)、ステップS14に戻る。
窓32の位置を変えて、ステップS14からステップS24の処理を繰り返すことにより、各窓位置で切り取られた部分画像から、それぞれハッシュ値が生成され、ハッシュ表に画像IDが登録される。
図5(A)〜(C)は、画像30における窓32の移動例を模式的に示した説明図である。図5(A)において画像30の左上隅に設定された窓32の初期位置から、窓32の位置を順次移動させ、画像30の全面を走査する。
説明の便宜上、画像30の横方向をx方向とし、画像の縦方向をy方向とする。画像30の横方向とは、M行N列の画素配列における行方向であり、画像の水平方向、又は、画像の幅方向と同義である。画像の縦方向とは、M行N列の画素配列における列方向であり、画像の垂直方向、又は、画像の高さ方向と同義である。
一般にM×N画素の画像の上を、m×n画素の窓を1画素ずつずらして画像全面を走査した場合の窓位置の総数は、(画像幅−窓幅+1)×(画像高−窓高+1)で表される。画像幅は画像のx方向の長さである。画像高は画像のy方向の長さである。窓幅は窓のx方向の長さである。窓高は窓のy方向の長さである。画像幅、画像高、窓幅及び窓高はいずれも、画素を単位として表すことができ、画素の数で表される。すなわち、画像幅はNであり、画像高はMである。窓幅はnであり、窓高はmである。
32×32画素の画像30上を、5×5画素の窓32を1画素ずつ窓位置をずらして画像全面を走査すると、28×28箇所の窓位置が考えられる。つまり、一つの画像30から28×28=784個のハッシュ値が生成される。
ただし、一つの画像30から生成するハッシュ値の個数を減らすために、窓32の位置を複数画素ずつずらすという工夫をしてもよい。すなわち、SxとSyが自然数を表し、窓32をx方向に移動させる際の窓32の移動量の単位をSx画素とし、窓32をy方向に移動させる際の窓32の移動量の単位をSy画素とする場合に、Sxは1≦Sx<nを満たし、かつ、Syは1≦Sy<mを満たすことを条件に、SxとSyを定めることができる。このような窓32の移動量の制約条件は、異なる位置の窓同士で窓32の一部が重なり合う移動量によって、窓32の位置を順次に移動させて走査を行うことを意味している。
図6は一つの画像30から784個のハッシュ値が生成されることを模式的に示した説明図である。32×32画素の画像30上を、5×5画素の窓32を1画素ずつ位置をずらして画像全面を走査し、各窓位置でハッシュ値を生成することにより、一つの画像30から28×28=784個のハッシュ値が生成される。
図7は、ハッシュ表に画像IDを登録する処理の説明図である。図7における左側がキーとなるハッシュ値、右側がバリューの画像IDを示している。ここでは、画像ID=1の画像から生成したハッシュ値と、画像ID=1を関連付けて登録する様子が示されている。
窓位置を移動させて各窓位置でハッシュ値が生成される都度、図7に示すように、ハッシュ値に紐付けされる画像IDを登録していく。
図1のステップS14からステップS24で説明したループを繰り返して画像30に対して窓32の位置を順次移動させ、画像30の全面の走査が完了すると、図1のステップS22でYes判定となり、ステップS26に進む。
ステップS26では、登録対象の全ての画像について、ハッシュ表への登録処理が完了したか否かの判定を行う。未処理の画像が存在する場合には、ステップS26でNo判定となり、ステップS12に戻り、次の画像のハッシュ登録処理を行う。
図8は登録対象の画像群の例を示している。ここでは、画像ID=1から16の画像例を示しているが、登録対象の画像の枚数については、特に制限はない。
図9は画像ID=1から順番に、各画像について図1のフローチャートによるハッシュ登録処理が行われることを模式的に示した説明図である。
図6及び図7で説明した画像ID=1の画像の登録処理と同様の処理が、画像ID=2、画像ID=3・・・について実施される。最終的には、登録対象である全ての画像の画像IDがハッシュ表に登録される。登録対象の全画像分について、ハッシュ表への登録処理が完了すると、図1のステップS26でYes判定となり、ハッシュ登録処理を終了する。
図1におけるステップS14が「窓位置決定工程」の一形態に相当し、ステップS18が「ハッシュ値生成工程」の一形態に相当する。ステップS24が「窓位置移動工程」の一形態に相当する。図1におけるステップS14からステップS24の一連の処理を、ハッシュ登録処理におけるハッシュの生成アルゴリズムとして把握することができる。
図10はハッシュ登録処理によって得られるハッシュ表の概念図である。図10において「*」は、画像IDを示す番号の記載を省略表記したものであり、実際のハッシュ表では該当する画像IDが記録される。
窓32のサイズが小さい方が、ハッシュ表のメモリ使用量が少ない。メモリ使用量を抑えるためには窓32のサイズをm×n≦16とすることが好ましい。
その一方で、窓32のサイズが大きいほど、ハッシュ値の衝突が少なくなる。「衝突」とは、同じハッシュ値に対して、複数の画像IDが対応付けられることをいう。衝突が少ないとは、同じハッシュ値に対応する画像IDの数が少ないことを意味する。
また、窓32のサイズが大きくなるほど、一つの画像から生成されるハッシュ値の個数が少なくなる。
本実施形態によれば、窓32内の画素の並びをそのまま、ハッシュ値に変換できるため、計算コストが少ないという利点がある。
[画像探索処理について]
次に画像探索処理を説明する。ハッシュ表が得られていることを前提に、画像探索が行われる。
図11は画像探索処理のフローチャートである。まず、探索対象とする画像を取得する(ステップS32)。ステップS32の画像取得処理にて取得される画像を「探索対象画像」と呼ぶ。探索対象画像を「画像X」と表す。
ステップS34からステップS38の各工程は、図1のステップS14からステップS18の各工程と同様である。取得した画像における窓の位置を決定し(ステップS34)、決定した窓位置の窓に含まれる画素値を取得する(ステップS36)。窓のサイズは、ハッシュ登録処理(図1参照)で用いた窓のサイズと同等のものとする。そして、ステップS36で取得された画素値からハッシュ値を生成する(ステップS38)。ステップS38のハッシュ値の生成方法については、図1のステップS18で用いるハッシュ値の生成方法と同等の処理アルゴリズムが適用される。
図11のステップS38で生成されたハッシュ値をメモリに記録し(ステップS40)、ステップS42に進む。ステップS42では、画像Xの全面の走査を完了したか否かの判定を行う(ステップS42)。画像X内に、窓32による走査が行われていない未走査の領域が存在する場合には、ステップS42でNo判定となる。ステップS42でNo判定となった場合は、窓32の位置を移動し(ステップS44)、ステップS34に戻る。
窓32の位置を変えて、ステップS34からステップS44の処理を繰り返すことにより、各窓位置で切り取られた部分画像から、それぞれハッシュ値が生成され、ハッシュ値が記録される。
図11のステップS34からステップS44で説明したループを繰り返して画像Xに対して窓32の位置を順次移動させ、画像Xの全面の走査が完了すると、図11のステップS42でYes判定となり、ステップS46に進む。
ステップS46では、ハッシュ表とハッシュ値の比較が行われる。
図12は画像Xから求めた複数のハッシュ値とハッシュ表とを比較する処理の概念図である。画像Xから複数個のハッシュ値が得られる。画像Xから得られる複数のハッシュ値のそれぞれについて、ハッシュ表のハッシュ値を参照し、ハッシュ表における同じハッシュ値に投票する。「投票」とは、ハッシュ表の中の該当するハッシュ値に、画像Xから生成したハッシュ値と同じハッシュ値であることを示す情報を付する処理である。
図12において画像Xを表す「X」のセルが付加されたハッシュ値が、画像Xから生成されたハッシュ値であることを示している。つまり、「X」のセルが付されたハッシュ値が「投票されたハッシュ値」である。
ハッシュ表の中で投票されたハッシュ値の各ハッシュ値に対応する画像ID群をすべて集め、出現数が最も多い画像IDの画像を探索対象画像に似た画像として扱う。
すなわち、ハッシュ表には、画像Xのハッシュ値と一致するハッシュ値が存在する。その一致するハッシュ値の出現数が最も多い画像IDの画像を、画像Xに最も似た画像であると判断する。画像Xから生成されるハッシュ値の出現数が最も多い画像IDを探索解とする場合に限らず、ロバスト性を高めるために、出現数が多い画像IDのうち上位の複数の画像IDを提示するという形態もあり得る。
すなわち、出現数が最も多い、第1位だけを探索解とすることもできるが、上位のk位の結果を返し、探索範囲をk個に絞って、絞られたk個に対してさらに精密にチェックするという使い方もできる。kは2以上の整数を表す。
図13は本実施形態によるハッシュを用いた探索結果の例である。図13は探索画像のハッシュ値と同じハッシュ値を持つ画像IDを抽出して、出現数で画像IDをソートしたものである。出現数の多い順に上位10位まで示したものとなっている。
こうして、得られた探索結果が出力される(図11のステップS48)。探索結果の出力方法として、例えば、ディスプレイに結果を表示させる態様がある。また、探索結果の情報を他の信号処理部に提供する態様がある。
図11におけるステップS34が「窓位置決定工程」の一形態に相当し、ステップS48が「ハッシュ値生成工程」の一形態に相当する。ステップS44が「窓位置移動工程」の一形態に相当する。図11におけるステップS34からステップS44の一連の処理を、画像探索処理におけるハッシュの生成アルゴリズムとして把握することができる。
本実施形態によれば、窓32の位置を少しずつずらしながら、画像全面を走査して複数のハッシュ値を生成するため、登録画像と探索対象画像の位置が多少ずれていても、画像探索が可能である。
本実施形態では、1枚の画像から生成される複数個のハッシュ値が、登録画像のハッシュ値とすべて一致していなくても、合致するハッシュ値の個数に注目して、近い画像を探索するため、ノイズに対する耐性がある、つまり、ノイズに対してロバスト性がある。
<ハッシュ値生成方法に関する具体的態様のバリエーション>
ハッシュ値を生成する具体的な手法の例を図3で説明したが、ここでは他の手法を含めて整理する。
(1)窓内の画素をすべて使う場合
[例1−A]m×n画素の窓に含まれるすべての画素の各画素値を、順に2値化して、画素の配列順に並べてハッシュ値を求める。この例1−Aに示した方法は、図3で説明した方法である。図14(A)に示すように、m×n桁の二進数で表されるハッシュ値が得られる。この場合、ハッシュ値は2(n×m)ビットのデータで表される。
[例1−B]m×n画素の窓に含まれるすべての画素の各画素値を、順にN値化して、画素の配列順に並べてハッシュ値を求める。ここでのNは3以上の整数を表す。N値化とは、最大階調を100%とする場合に、(100/N)%刻みで画素値を正規化することである。一例として、8ビット(0〜255)階調の画素値について、4値化する場合は、0以上64未満の値を0に、64以上128未満の値を1に、128以上192未満の値を2に、129以上の値を3にそれぞれ正規化する。
図14(B)に示した例は、窓のサイズを2×2画素とした例である。各画素の位置を行番号iと列番号jを用いて(i,j)で表し、各画素の画素値をB(i,j)で表すことにする。ここでは、iは1又は2であり、jは1又は2である。図14(B)においてB(1,1)=255、B(1,2)=0、B(2,1)=180、及びB(2,2)=50であるとする。この場合、各画素値を4値に正規化すると、(255,0,180,50)の各値は(3,0,2,1)に変換される。
こうしてN値(ここではN=4)に正規化した画素値を並べて、N進法として扱い、N進法の値を10進法の表記にすることができる。
なお、Nを2以上の整数とし、iが1≦i≦nを満たす整数(i=1,2,…n)であり、jが1≦j≦mを満たす整数(j=1,2…m)であるとして取り扱うことにより、例1−Aの手法についても、例1−Bと同様に、N値化という取り扱いで把握することができる。
(2)窓内の特定の画素を使う場合
[例2]m×n画素の窓に含まれる画素の一部の画素値を、順に2値化して、これらを並べてハッシュ値を求める。2値化のルールについては、図3で説明した方法を採用することができる。図15は16×16画素の窓を用意して、x方向及びy方向のそれぞれの方向について4画素ごとに画素値を取得する例を示している。画素値を取得する画素が「特定の画素」に該当する。
窓内から画素値を取得する「特定の画素」の定め方については、図15の例に限らない。txを2以上(n−1)以下の整数とし、tyを2以上(m−1)以下の整数とする場合、x方向についてtx画素ごとに、かつ、y方向についてty画素ごとに、画素値を取得する構成とすることができる。
すなわち、複数個の特定の画素同士は、互いに規定の画素数以上離れて離散的に配置されている構成とすることができる。txとtyは「規定の画素数」に相当する。
例2の方法は、例1−A及び例1−Bで説明した方法と異なり、窓内の近傍の画素に依存したハッシュ値ではなく、離れた画素同士の関係が反映されることになる。
例2の方法に関して、画素値を2値化した値を利用する構成に代えて、例1−Bで説明した例と同様に、画素値をN値化したものを用いてハッシュ値を生成することができる。
(3)画像を縮小して縮小画像に対して、上記の(1)又は(2)の手法を適用する。
図16は画像を縮小する処理の説明図である。ここでは説明を簡単にするために8×8画素の画像から4×4画素の画像に縮小する例が示されている。
8×8画素の元画像40を2×2画素のブロックで格子状に分割し、ブロック内の画素値の平均値又は代表値を求めて、ブロック位置に対応する画素の画素値とする。これにより、各ブロックを一つ画素とする縮小画像44が得られる。代表値の定め方には、各種の方法があり得る。ブロック内における画素値の中央値を代表値としてもよいし、ブロック内における特定の画素位置の画素値を代表値としてもよい。画像を縮小する縮小処理のアルゴリズムについては、公知の方法を採用することができる。
この手法を用いることで、元画像40のサイズが大きい場合でも、使用するメモリの容量を抑え、発明の実施形態に係るハッシュ値生成方法を適用することができる。
縮小画像を利用することにより、大量の写真画像の中から、探索対象の似た写真画像を効率よく見つけ出すということも可能である。
画像を縮小する処理は、図1のステップS12で説明した画像取得工程の前に実施してもよいし、ステップS12による画像取得工程の後であって、ステップS14の前に実施してもよい。
(4)窓の形状について
窓の形状は、四角形に限らず、円や多角形など、各種の形状の窓を用いることができる。
<ハッシュ値生成の更なる効率化について>
ハッシュ値の生成をより一層効率化する方法の例について説明する。
[1]ハッシュ値を生成しない画素の集まりについて
図17は画像の中央部分に画像要素である文字の絵柄が集中して配置され、文字の周囲は広い範囲で同じ色の均一な背景となっている。ここでは背景の色として白色を例示している。例えば、図17に示すように、画像内の広範囲で同じ色又は似た色が塗られているような画像における画素の集まりからハッシュ値を得ることは、効率的とは言えない場合がある。そこで、窓に含まれる画素値の分布によってハッシュ値を生成するか否かの判断を行う態様が好ましい。
例えば、窓内のすべての画素の画素値が同じ値である場合には、ハッシュ値を生成しないようにする。図18に示すように、背景が白色の均一な画像領域における窓32Aは、ハッシュ値を非生成とする。一方、文字その他の絵柄を含んだ画像領域における窓32Bはハッシュ値を生成する。こうすることで、背景が白の部分のハッシュ値が無駄に生成されることを回避することができる。
窓に含まれる画素値の分布によってハッシュ値の生成の要否を判断する際の判断基準として、ハッシュ値の生成を不実施とする条件は、窓内から得られる各画素の画素値の差が閾値以下であることとして定めることができる。画素値の差が閾値以下であるとは、画素値の差が許容範囲として規定された閾値以下であることに相当する。
窓内における画素値の差が閾値以下となる「一様な領域」を抽出するための条件である。「一様な領域」とは、領域内の色が一様である領域を意味している。「一様」という用語は、厳密に一定である場合に限らず、許容できるばらつきや誤差を含む意味で用いる。
窓内における色の差についての許容範囲として定める閾値は、例えば、CMYK値のばらつきの許容範囲としてΔCMYK値の値を定めておくことができる。また、第1の抽出用閾値は、C、M、Y、Kの色毎に、ばらつきの許容範囲としてΔC値、ΔM値、ΔY値、ΔK値の各値を定めておくことも可能である。
例えば、C,M,Y,Kの各色8ビット(0〜255)で表されるCMYK画像について、C,M,Y,Kの各色成分において、各画素値の差が「5」以下であれば、「同じ値」の範囲として取り扱う。5/255が約0.02であるから、目安の一例として、画素値の差が2%以内である場合に「同じ値」の範囲として取り扱うように定めることができる。
図19はハッシュ値の生成の要否判断を含んだハッシュ登録処理のフローチャートである。図19において図1で説明したフローチャートと同一の工程には同一のステップ番号を付し、その説明は省略する。図19のフローチャートでは、図1で説明したフローチャートのステップS16とステップS18の間に、ハッシュ値の生成の要否を判断する判断工程(ステップS17)が追加されている。
ステップS17では、ステップS16で得た画素値の分布を基に、ハッシュ値の生成の要否を判断する。ハッシュ値を生成しないと判断する判断基準の例として、例えば、窓内の画素値がすべて同じ値であること、又は、窓内の画素値のばらつきが予め定めた許容範囲内であること、とすることができる。
ステップS17にて、ハッシュ値を生成する判断した場合はステップS18に進み、画素値からハッシュ値を生成する。その一方、ステップS17にて、ハッシュ値を生成しないと判断した場合は、ハッシュ値を生成する演算処理を省略して、ステップS24に進む。
これにより、無駄なハッシュ値の生成が回避され、演算時間を短縮することができ、効率のよいハッシュ値の生成が可能である。図19のステップS17が「判断工程」の一形態に相当する。図19のステップS14からステップS24の一連の工程がハッシュ登録処理におけるハッシュの生成アルゴリズムとして把握することができる。
図19はハッシュ登録処理のフローチャートであるが、図11で説明した画像探索処理のフローチャートについても、図19と同様にハッシュ値の生成要否の判断を加える構成とすることができる。
[2]カラー画像からハッシュ値を生成する場合について
例えば、RGB画素の並びからハッシュ値を生成する場合、R値、G値及びB値のそれぞれからハッシュ値を生成してもよいが、グレイ画像と比較するとデータ量が3倍になってしまう。そこで、データ量を削減する観点から、R,G,Bそれぞれの画素に対して、予め定めた計算式にしたがって計算を行った結果としての信号値に対してハッシュ値を生成させる。
計算式の一例として、例えば、gray=0.3×R+0.59×G+0.11×Bといった計算式がNTSC規格に存在する。NTSCはNational Television System Committeeの略語表記である。このような簡単な計算式を利用するなどして、RGBの3種類の値で表されるカラー画像を1種類の値に変換することで、効率よくハッシュ値を生成することができる。
NTSC規格による上記の計算式に限らず、R成分の値とG成分の値とB成分の値とを、予め定めた比率で混合加算して得られるグレイの値を代表値として用いることができる。
カラー画像からデータ量を削減してハッシュ値を生成する方法は、上記の例の他に、CMYK画像のK値のみを利用する態様、Lab画像のL値のみを利用する態様、又は、RGB画像のG値のみを利用する態様など、ハッシュ値の生成に利用する信号の成分を、カラー画像における一部の信号の成分に制限することもできる。Lab画像とは、各画素の信号値がL表色系の色空間の座標値で記述される画像データを意味する。Lab画像におけるLの値をL値と表記している。RGB画像においてG値のみを利用するという態様は、人間の視覚が緑色(green)に対して感度が強いことを考慮したものであ
る。
[3]画像にディザリングをかけることで画像のデータを2値化する例について
図3の説明では、画素値の2値化に際して、[0,255]の値を、0から127は「0」に、128から255は「1」に変換したが、2値化の方法はこの例に限らない。2値化の処理方法については、誤差拡散ディザリングという手法を利用することができる。「誤差拡散ディザリング」は、ハーフトーン処理の手法の一つである誤差拡散法を利用して画像データを2値化する方法である。この方法は、画素の値を2値化した際に発生する量子化誤差を周囲の未量子化画素に配分する。つまり、誤差拡散ディザリングは、画素の近傍の関係も考慮して0又は1に変換する手法である。
このような手法を使用して、画像の2値化を行い、得られた2値画像を窓で走査することにより、各窓位置からハッシュ値を生成する構成とすることができる。
画像の2値化処理(すなわち、正規化の処理)は、ステップS12の前に実施してもよいし、ステップS12の後であってステップS14の前に実施してもよい。
[4]画像に平滑化フィルタをかける例について
与えられた画像に対して、画像の鮮鋭度を低下させる画像処理フィルタをかけることで、ノイズ耐性を向上させることができる。「画像の鮮鋭度を低下させる」とは、画像を平滑化することを意味し、いわゆる、画像をぼかすような処理を行うことを意味する。かかる機能を有する画像処理フィルタを平滑化フィルタという。平滑化フィルタとして、例えば、ガウシアン関数のフィルタや、視覚特性関数のフィルタなどを用いることができる。
このような画像処理フィルタをかけることにより、画素値の変化が少なくなる。したがって、上記の[1]で説明したハッシュ値を生成しない工夫と組み合わせることで、ハッシュ値生成時間の短縮を図ることができる。
画像ぼかし、すなわち、画像の平滑化を行うフィルタのサイズによって、ハッシュ値を計算する窓の最適なサイズを選択するように、フィルタのサイズと窓のサイズを連動させることもできる。
なお、上述の[1]から[4]に例示した更なる効率化の工夫と、「ハッシュ値生成方法に関する具体的態様のバリエーション」として説明した(1)から(4)の内容は、適宜組み合わせることができる。
<ハッシュ値生成装置の構成例>
次に、ハッシュ値生成装置の構成例について説明する。
図20は第一実施形態に係るハッシュ値生成装置100の構成を示すブロック図である。図20に示すハッシュ値生成装置100は、ハッシュ登録処理に用いられる装置である。ハッシュ値生成装置100は、画像取得部102と、窓位置決定部104と、窓位置移動処理部106と、ハッシュ値生成部108を備える。また、ハッシュ値生成装置100は、ハッシュ表記憶部110を備える構成とすることができる。ハッシュ値生成装置100は、1台のコンピュータ、又は複数台のコンピュータの組み合わせによって実現することができ、各部(符号102〜110)の機能はコンピュータのハードウエアとソフトウエアの組み合わせによって実現することができる。
画像取得部102は、画像データを取り込むインターフェース部である。画像取得部102は、外部又は装置内の他の信号処理部から画像を取り込むデータ入力端子で構成することができる。画像取得部102として、有線又は無線の通信インターフェース部を採用してもよいし、メモリカードなどの可搬型の外部記憶媒体の読み書きを行うメディアインターフェース部を採用してもよく、若しくは、これら態様の適宜の組み合わせであってもよい。
図20の窓位置決定部104は、画像における窓32の位置を決定する。窓位置移動処理部106は、画像内で窓32を重複させて少しずつ窓位置を移動させる処理を行う。窓位置移動処理部106は窓位置決定部104と連携して、窓32の位置を制御し、画像全面の走査を行う。
ハッシュ値生成部108は、窓32の位置ごとに、窓内の画素の画素値からハッシュ値の生成を行う。また、ハッシュ値生成部108は、生成したハッシュ値と画像IDをハッシュ表に記録する処理を行う。ハッシュ表記憶部110は、ハッシュ値生成部108で生成されたハッシュ値と、対応する画像IDとの関係が記述したハッシュ表を記憶する記憶部である。
画像取得部102は、図1で説明したステップS12の処理を行う。窓位置決定部144は、図1で説明したステップS14の処理を行う。ハッシュ値生成部108は、図1で説明したステップS16及びステップS18の処理を行う。また、ハッシュ値生成部108とハッシュ表記憶部110は、図1で説明したステップS20の処理を行う。窓位置移動処理部106は、図1で説明したステップS22の判断とステップS24の処理を行う。
図21は第二実施形態に係るハッシュ値生成装置150の構成を示すブロック図である。図21において図20で説明した構成と同一又は類似する要素には同一の符号を付しその説明は省略する。図21に示したハッシュ値生成装置150は、図18で説明したように、窓内の画素値の分布を基にハッシュ値の生成の要否を判断する機能を備える。ハッシュ値生成装置150は、図20で説明した構成に加えて、画素値分布検出部152と、ハッシュ値生成要否判断部154とを備える。
画素値分布検出部152は、窓位置決定部104により決定された窓位置の窓に含まれている画素値の分布を検出する。ハッシュ値生成要否判断部154は、画素値分布検出部152による検出結果を、予め定められている判断基準に照らして、ハッシュ値を生成するか否かを判断する。ハッシュ値生成要否判断部154がハッシュ値を生成すると判断した場合には、その判断結果がハッシュ値生成部108に通知され、ハッシュ値生成部108によるハッシュ値の生成が行われる。
その一方、ハッシュ値生成要否判断部154がハッシュ値を生成しないと判断した場合には、その判断結果が窓位置移動処理部106に通知され、ハッシュ値生成部108によるハッシュ値の生成を実施することなく、次の窓位置への移動が行われる。
画素値分布検出部152は、図19で説明したステップS16の処理を行う。ハッシュ値生成要否判断部154は、図19で説明したステップS17の判断を行う。
図22は、第三実施形態に係るハッシュ値生成装置200の構成を示すブロック図である。図22に示すハッシュ値生成装置200は、画像探索処理に用いられる装置である。ハッシュ値生成装置200は、画像取得部202と、窓位置決定部204と、窓位置移動処理部206と、ハッシュ値生成部208と、ハッシュ値記憶部210と、画像探索処理部212と、探索結果出力部214とを備える。また、ハッシュ値生成装置200は、ハッシュ表記憶部110を備える構成とすることができる。
ハッシュ値生成装置200は、1台のコンピュータ、又は複数台のコンピュータの組み合わせによって実現することができ、各部(符号202〜214、及び110)の機能はコンピュータのハードウエアとソフトウエアの組み合わせによって実現することができる。
画像取得部202は、探索対象の画像を取り込むインターフェース部である。画像取得部202は、外部又は装置内の他の信号処理部から画像を取り込むデータ入力端子で構成することができる。画像取得部202として、有線又は無線の通信インターフェース部を採用してもよいし、メモリカードなどの可搬型の外部記憶媒体の読み書きを行うメディアインターフェース部を採用してもよく、若しくは、これら態様の適宜の組み合わせであってもよい。
窓位置決定部204は、探索対象画像における窓32の位置を決定する。窓位置移動処理部206は、画像内で窓32を重複させて少しずつ窓位置を移動させる処理を行う。窓位置移動処理部206は窓位置決定部204と連携して、窓32の位置を制御し、画像全面の走査を行う。
ハッシュ値生成部208は、窓32の位置ごとに、窓内の画素の画素値からハッシュ値の生成を行う。また、ハッシュ値生成部208は、生成したハッシュ値をハッシュ値記憶部210に記憶する。ハッシュ値記憶部210は、ハッシュ値生成部208で生成されたハッシュ値を記憶する記憶部である。
画像探索処理部212は、ハッシュ値記憶部210に記憶されたハッシュ値の情報と、ハッシュ表記憶部110に記憶されたハッシュ表の情報とを用いて画像の探索処理を行う。
ハッシュ表記憶部110は、図20又は図21で説明したハッシュ表記憶部110と同等のものであってもよいし、図20又は図21で説明したハッシュ表記憶部110に記憶されているハッシュ表と同じデータが格納された別の記憶部であってもよい。
探索結果出力部214は、画像探索処理部212による探索結果を出力する処理を行う。探索結果出力部214は、探索結果を表示する表示装置を含む構成とすることができる。また、探索結果出力部214は、探索結果の情報を装置の外部又は装置内の他の信号処理部に提供する信号出力端子とすることができる。
画像取得部202は、図11で説明したステップS32の処理を行う。窓位置決定部244は図11で説明したステップS34の処理を行う。ハッシュ値生成部208は、図11で説明したステップS36及びステップS38の処理を行う。また、ハッシュ値生成部208とハッシュ値記憶部210は、図11で説明したステップS40の処理を行う。窓位置移動処理部206は、図11で説明したステップS42の判断とステップS44の処理を行う。画像探索処理部212は、図11で説明したステップS46の処理を行う。探索結果出力部214は、図11で説明したステップS48の処理を行う。
なお、図22に示したハッシュ値生成装置200において、さらに、図21で説明した例と同様に、画素値分布検出部152とハッシュ値生成要否判断部154とを付加する構成も可能である。
図20又は図21で説明したハッシュ登録処理の機能と、図22で説明した画像探索処理の機能をそれぞれ、別々の装置構成とすることも可能であるし、ハッシュ登録処理の機能と画像探索処理の機能とを一つの装置に両方搭載することも可能である。
<システム構成例>
図23は画像探索サービスを提供するシステムの構成例を示すブロック図である。図23に示した画像探索システム300は、画像登録サーバ302と画像探索処理サーバ304とが電気通信回線306に接続されている。画像登録サーバ302は画像データベース312と、ハッシュ値生成装置314とハッシュ表記憶部316とを備える。画像データベース312には、登録された画像のデータが蓄積される。ハッシュ値生成装置314は、図20で説明したハッシュ値生成装置100又は図21で説明したハッシュ値生成装置150と同様のハッシュ値生成機能を有する。ハッシュ表記憶部316には、ハッシュ値生成装置314で生成されたハッシュ表が記憶される。
画像探索処理サーバ304はハッシュ値生成装置324を備えている。ハッシュ値生成装置324は、図22で説明したハッシュ値生成装置200と同様のハッシュ値生成機能を有する。
端末装置330は、電気通信回線306を介して画像探索処理サーバ304に画像の探索要求を送信し、画像探索サーバ304から探索結果の回答を受け取る。端末装置330は通信部332と、入力部334と、制御部336と、表示部338とを備える。通信部332は電気通信回線306に接続して情報の受け渡しを行うための通信インターフェース部である。入力部334は、探索対象画像340のデータを取り込む入力インターフェース部である。制御部336は端末装置330の動作を制御する。表示部338は、画像探索サーバ304から受信した探索結果の情報を表示する。
端末装置330としては、例えば、パーソナルコンピュータ、タブレット端末、携帯電話、スマートフォン、又は、通信機能付きのデジタルカメラなど、各種の形態があり得る。
端末装置330から、探索対象画像340のデータと、探索要求のリクエストが電気通信回線306を通じて画像探索処理サーバ304に送られる。画像探索処理サーバ304は、端末装置330から受け取った探索対象画像340について、ハッシュ値生成装置324と協働して、図19で説明したフローチャートにしたがってハッシュ値の生成を行い、ハッシュ表記憶部316のハッシュ表を参照して画像探索を行う。そして、探索結果を端末装置330に返す。探索結果は端末装置330の表示部338に表示される。
図24は画像探索サービスを提供するシステムの他の構成例を示すブロック図である。図24に示した画像探索システム350において、図23で説明した構成と同一又は類似する要素には同一の符号を付し、その説明は省略する。
図24に示した画像探索システム350は、ハッシュ登録処理と画像探索処理の両方の処理についてハッシュ値の生成処理を行うハッシュ値生成装置354を備えている。
ハッシュ値生成装置354は、画像登録サーバ302と連携して、登録画像からハッシュ値を生成し、ハッシュ表をハッシュ表記憶部316に登録する。また、ハッシュ値生成装置354は、画像探索処理サーバ304と連携し、端末装置330から受け取った探索対象画像340からハッシュ値を生成し、ハッシュ表を参照して投票を行う。
システムのバリエーションは様々な構成が可能であり、図23及び図24で説明した例に限らない。
図23及び図24で説明した画像探索システムの機能は、クラウドコンピューティングシステムによって実現することも可能である。
<窓のサイズについて>
窓のサイズを例えば8×4画素のように大きくした場合、ハッシュ表が長くなるため、ハッシュの衝突は極めて少なくなる。ただし、その分、必要なハッシュキーのバリエーションも多くなることとなり、ハッシュキーを定義する分、大量のメモリ容量が必要となる。
窓のサイズを大きくしすぎると、例えばノイズを含む画像を対象にする場合に、窓に含まれるノイズを含んだ画像が、元の画像の画素値とすべて一致する可能性が下がるため、誤検出が発生しやすくなると考えられる。
実験により探索精度とメモリ使用量を考慮すると4×4画素の窓のサイズで十分ではあるが、もし、大容量のメモリを使うことが可能であるならば、5×5画素の窓のサイズが好適であると考えられる。
<画像の種類について>
上述した実施形態では、ランダム画像を例に説明したが、発明が適用される画像の種類は、特に限定されない。特許文献1の用途で想定されるようなランダム性を有する画像に限らず、文書画像、若しくは、写真画像、又はこれらの組み合わせなど、様々な画像について、本発明を適用することができる。
<他の応用例について>
近年、SIFT(Scale-Invariant Feature Transform)やSURF(Speeded Up Robust Features)に代表される特徴点検出の技術が進歩しており、検出された特徴点を使った研究が進んでいる。例えば、パノラマ合成などはその技術の一つと言える。パノラマ合成は、2枚の画像に対し、それぞれの画像から特徴点を見つけた後、各特徴点同士の対応をとることで、画像と画像をどうつなぐかを決めている。なお、特徴点の検出は、特徴点の抽出と同義である。
図25は画像の特徴点を利用したパノラマ合成の処理の概念図である。2枚の画像のうちの一つである画像Aについて特徴点検出の処理が行われ、画像Aから複数の特徴点Pが検出される。同様に、2枚の画像のうちの他の一つである画像Bについて特徴点検出の処理が行われ、画像Bから複数の特徴点Pが検出される。そして、画像Aから検出された特徴点Pと、画像Bから検出された特徴点Pの特徴点同士の対応付けが行われる。画像Aの特徴点Pに対応する画像Bの特徴点Pを見つけ出す処理を、特徴点の対応点探索処理という。
対応する特徴点同士を破線で結んで図示した。画像Aと画像Bの画像間で対応付けられた特徴点同士を重ね合わせて画像Aと画像Bとを繋ぎ合わせることにより、パノラマ合成画像が得られる。
図25に示したようなパノラマ合成の処理の場合、特徴点の対応点探索処理において、特徴点の持つ特徴量同士を比較することで、似た特徴点を探す手法が従来採用されてきた。しかし、特徴点の数が多いと、その分、計算時間が増大してしまう。
そこで、本発明で提案する画像ハッシュの処理を使うことで、画像間の対応付けの処理時間を削減することができる。
図26は本発明の他の実施形態による画像間の対応付け処理の説明図である。図26に示すように、画像Aに対して、窓32の位置を順次に移動させる走査を行い、各位置で窓32内に含まれる画素値からハッシュ値を生成する処理が行われる。画像Aに対して窓32の位置を少しずつ変えながら、各窓位置でハッシュ値を生成する方法については、図2で説明した例と同様である。
画像Aにおける窓32の位置を表すインデックスをkとし、位置kにおける窓32内の画素値から生成されるハッシュ値をH(k)とする。kは、例えば、0以上の整数とすることができる。画像Aに対して窓32の位置kごとにハッシュ値H(k)が算出される。
同様に、画像Bに対して、窓32の位置を順次に移動させる走査を行い、各位置で窓32内に含まれる画素値からハッシュ値を生成する処理が行われる。画像Bにおける窓32の位置を表すインデックスをkとし、位置kにおける窓32内の画素値から生成されるハッシュ値をH(k)とする。kは、例えば、0以上の整数とすることができる。画像Bに対して窓32の位置kごとにハッシュ値H(k)が算出される。
こうして、画像Aと画像Bのそれぞれの画像全体に対して、ハッシュ値H(k)とH(k)を求め、ハッシュ値H(k)とH(k)を基に、画像Aと画像Bの画像間で対応する窓32の位置関係を把握する。
図26では、画像AについてWの符号を付した窓と、画像BについてWの符号を付した窓とが対応しており、対応する窓同士を破線で結んで図示した。画像Aと画像Bの画像間で対応付けられた窓Wと窓Wを重ね合わせて画像Aと画像Bとを繋ぎ合わせることにより、パノラマ合成画像が得られる。
この実施形態によれば、特徴点検出の処理などを実施することなく、ハッシュ値を利用して対応窓のマッチングを行う。これにより、図25で説明した手法に比べて、マッチングの処理を高速化することができ、処理時間の短縮化が可能である。
<コンピュータをハッシュ値生成装置として機能させるプログラムについて>
上述の各実施形態で説明したハッシュ値の生成機能をコンピュータに実現させるためのプログラムをCD−ROM(Compact Disc read-only memory)や磁気ディスクその他のコンピュータ可読媒体(有体物たる非一時的な情報記憶媒体)に記録し、情報記憶媒体を通じてプログラムを提供することが可能である。このような情報記憶媒体にプログラムを記憶させて提供する態様に代えて、インターネットなどの通信ネットワークを利用してプログラム信号をダウンロードサービスとして提供することも可能である。
また、上述の実施形態で説明したハッシュ値生成機能及び画像探索処理機能の一部又は全部をアプリケーションサーバやクラウドコンピューティングによって実現し、通信ネットワークを通じて処理機能を提供するサービスを行うことも可能である。
さらに、このプログラムをコンピュータに組み込むことにより、コンピュータにハッシュ値生成装置の各機能を実現させることができ、上述の実施形態で説明したハッシュ値生成機能を含むハッシュ登録機能及び/又は画像探索機能を実現することができる。
<実施形態の利点>
(1)本発明の実施形態によれば、画像から特徴点を抽出する処理が不要である。したがって、ランダム画像のように際立った特徴の少ない画像についてもハッシュ値を生成することができ、画像の種類によらず、ハッシュ値の生成が可能である。
(2)本実施形態によれば、画像内を窓で走査しながら各窓位置でハッシュ値を求め、一つの画像から複数のハッシュ値を求めるため、ノイズに対して耐性がある。探索対象画像と、登録画像の位置関係が多少ずれていても、探索対象画像に近い登録画像を探し出すことができる。
(3)本実施形態によれば、窓内の画素値からハッシュ値を生成するため、従来方法に比べて、ハッシュ値計算の演算コストが少ないという利点がある。
(4)本実施形態によれば、特徴点を抽出することなく、短時間で画像のマッチングを行うことができる。
以上説明した本発明の実施形態は、本発明の趣旨を逸脱しない範囲で、適宜構成要件を変更、追加、削除することが可能である。本発明は以上説明した実施形態に限定されるものでは無く、本発明の技術的思想内で当該分野の通常の知識を有するものにより、多くの変形が可能である。
30…画像、32…窓、100…ハッシュ値生成装置、104…窓位置決定部、106…窓位置移動処理部、108…ハッシュ値生成部、110…ハッシュ表記憶部、150…ハッシュ値生成装置、152…画素値分布検出部、154…ハッシュ値生成要否判断部、200…ハッシュ値生成装置、212…画像探索処理部、214…探索結果出力部、300…画像探索システム、340…探索対象画像

Claims (13)

  1. 画像に対して特定の画素数の領域である窓の位置を決定する窓位置決定工程と、
    前記画像の前記窓内に含まれる画素値からハッシュ値を生成するハッシュ値生成工程と、
    前記画像に対する前記窓の位置を移動させる工程であって、異なる位置の前記窓同士で前記窓の一部が重なり合う移動量によって前記窓の位置を順次に移動させる窓位置移動工程と、を含み、
    前記窓の位置を異ならせた複数の位置における各位置で前記ハッシュ値生成工程による前記ハッシュ値の生成を行うことにより、前記画像から複数の前記ハッシュ値を生成するハッシュ値生成方法。
  2. 前記ハッシュ値生成工程は、前記窓内の画素を全て使って前記ハッシュ値を生成する請求項1に記載のハッシュ値生成方法。
  3. Nが3以上の整数である場合に、
    前記ハッシュ値生成工程は、前記窓内の各画素の画素値を2値化又はN値化した値を並べて前記ハッシュ値を生成する請求項1又は2に記載のハッシュ値生成方法。
  4. 前記ハッシュ値生成工程は、前記窓内の画素の一部である特定の画素を使って前記ハッシュ値を生成する請求項1に記載のハッシュ値生成方法。
  5. 前記特定の画素は、前記窓内に複数個定められており、
    前記複数個の前記特定の画素同士は、互いに規定の画素数以上離れて離散的に配置されている請求項4に記載のハッシュ値生成方法。
  6. Nが3以上の整数である場合、
    前記ハッシュ値生成工程は、前記特定の画素の画素値を2値化又はN値化した値を並べて前記ハッシュ値を生成する請求項5に記載のハッシュ値生成方法。
  7. 前記窓に含まれる画素値の分布に基づき、前記ハッシュ値の生成の要否を判断する判断工程を含み、
    前記判断工程により前記ハッシュ値の生成が不要であると判断された場合に、前記不要であると判断された前記窓の位置での前記ハッシュ値生成工程による前記ハッシュ値の生成の処理を不実施とする請求項1から6のいずれか一項に記載のハッシュ値生成方法。
  8. 前記判断工程は、前記窓に含まれる画素の全ての画素値が同じ値である場合に、前記ハッシュ値の生成が不要であると判断する請求項7に記載のハッシュ値生成方法。
  9. 前記画像はカラー画像であり、前記カラー画像を表す複数の成分の成分ごとに値が定められた画素値を有する画像データとなっており、
    前記ハッシュ値生成工程は、前記窓に含まれる画素の前記成分ごとの値を基に、前記複数の成分を代表する一つの代表値を求め、前記代表値を使って前記ハッシュ値を生成する請求項1から8のいずれか一項に記載のハッシュ値生成方法。
  10. 前記複数の成分は、赤の成分を示すR成分、緑の成分を示すG成分、及び青の成分を示すB成分の成分ごとに値が定められた画素値を有する画像のデータであり、
    R成分の値とG成分の値とB成分の値とを、予め定めた比率で混合加算して得られるグレイの値を前記代表値として用いる請求項9に記載のハッシュ値生成方法。
  11. 前記複数の成分のうち、いずれか一つの成分の値を前記代表値として用いる請求項9に記載のハッシュ値生成方法。
  12. 画像に対して特定の画素数の領域である窓の位置を決定する窓位置決定部と、
    前記画像の前記窓内に含まれる画素値からハッシュ値を生成するハッシュ値生成部と、
    前記画像に対する前記窓の位置を移動させる窓位置移動処理部であって、異なる位置の前記窓同士で前記窓の一部が重なり合う移動量によって前記窓の位置を順次に移動させる窓位置移動処理部と、を有し、
    前記窓の位置を異ならせた複数の位置における各位置で前記ハッシュ値生成部による前記ハッシュ値の生成を行うことにより、前記画像から複数の前記ハッシュ値を生成するハッシュ値生成装置。
  13. コンピュータを、
    画像に対して特定の画素数の領域である窓の位置を決定する窓位置決定部と、
    前記画像の前記窓内に含まれる画素値からハッシュ値を生成するハッシュ値生成部と、
    前記画像に対する前記窓の位置を移動させる窓位置移動処理部であって、異なる位置の前記窓同士で前記窓の一部が重なり合う移動量によって前記窓の位置を順次に移動させる窓位置移動処理部として機能させ、
    前記窓の位置を異ならせた複数の位置における各位置で前記ハッシュ値生成部による前記ハッシュ値の生成を行うことにより、前記画像から複数の前記ハッシュ値を生成する装置として機能させるためのプログラム。
JP2015118158A 2015-01-05 2015-06-11 ハッシュ値生成方法及び装置、並びにプログラム Pending JP2016129005A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2015000525 2015-01-05
JP2015000525 2015-01-05

Publications (1)

Publication Number Publication Date
JP2016129005A true JP2016129005A (ja) 2016-07-14

Family

ID=56384366

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015118158A Pending JP2016129005A (ja) 2015-01-05 2015-06-11 ハッシュ値生成方法及び装置、並びにプログラム

Country Status (1)

Country Link
JP (1) JP2016129005A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109598726A (zh) * 2018-10-26 2019-04-09 哈尔滨理工大学 一种基于slic的自适应图像目标区域分割方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109598726A (zh) * 2018-10-26 2019-04-09 哈尔滨理工大学 一种基于slic的自适应图像目标区域分割方法

Similar Documents

Publication Publication Date Title
US11720776B2 (en) System and method using a histogram and colorspaces to create a matrix barcode having a plurality of colors, an infrared layer, and an ultraviolet layer
US11954545B2 (en) System and method using a histogram and colorspaces to create a matrix barcode
US11799484B2 (en) System and method using a histogram and colorspaces to generate a matrix barcode having a plurality of colors and an ultraviolet layer
US11798194B2 (en) System and method using a histogram and colorspaces to generate a matrix barcode having a plurality of colors and an infrared layer
US11024256B2 (en) Adaptive image display based on colorspace conversions
US11003968B2 (en) Colorspace encoding multimedia data on a physical page
US11417075B2 (en) Object detection techniques using colorspace conversions
US9875523B2 (en) Image processing apparatus and image processing method
CN110807110B (zh) 结合局部和全局特征的图片搜索方法、装置及电子设备
US8705134B2 (en) Method of processing an image to clarify text in the image
JP2016129005A (ja) ハッシュ値生成方法及び装置、並びにプログラム
JP2015191308A (ja) 文書画像の照合装置及び照合プログラム並びに文書画像検索装置
JP4829757B2 (ja) 罫線抽出装置および方法