本実施形態に係る色判定装置は、見本となる第1画像データ(以下、「見本画像データ」という)から解析情報を生成し、生成した解析情報を用いて、第2画像データ(以下、「検査画像データ」という)が示す画像の合否判定を行う。見本画像データ、及び検査画像データは、スキャナ、デジタルマイクロスコープ、及びカメラ等によって得られた画像データである。なお、見本画像データは、統一された条件で取得することが望ましい。具体的には、スキャナで見本画像データを取得する場合には、解像度などの読み取り条件等を統一させる。デジタルマイクロスコープ、及びカメラで見本画像を取得する場合には、被写体への光の当たり具合や強度等を統一させる。以下、本実施形態に係る色判定装置を図面を用いて説明する。
図1は、本実施形態に係る色判定装置100のハードウェア構成を示す図である。色判定装置100は、CPU(Central Proccessing Unit)10、ROM(Read Only Memory)11、RAM(Random Access Memory)12、HDD(Hard Disk Drive)13、表示装置14、及び入力装置15で構成され、それらはバス16で接続されている。
CPU10は、色判定装置100全体を制御し、後述するフローチャートに示される処理は、CPU10により実行される。ROM11には、色判定装置100を起動したり制御するためのプログラムなどが記憶される。RAM12には、各種プログラムや、画像データなどのデータが記憶される。また、RAM12は、CPU10のワーク領域として用いられる。HDD13には、後述するフローチャートに示される処理を実行するためのプログラムや画像データなどが記憶される。なお、HDD13に代えて、SSD(Solid State Drive)であってもよい。以下の説明では、RAM12、HDD13をまとめて記憶部と表現する。表示装置14は、各種情報を表示する。表示装置14は、例えば液晶ディスプレイである。入力装置15は、各種情報が入力される。入力装置15は、例えばキーボード、マウス、またはタッチパネルである。
図2は、本実施形態に係る色判定装置100のソフトウェア構成を示す図である。色判定装置100は、見本画像データ処理部200、及び検査画像データ処理部500で構成される。見本画像データ処理部200は、初期情報300を用いて見本画像データに対する処理を実行し、解析情報400を生成する。検査画像データ処理部500は、解析情報400を用いて検査画像データに対する処理を実行する。
見本画像データ処理部200は、見本画像データ取得部210、無彩色判定部220、色相範囲設定部230、及び輝度範囲設定部240で構成される。
見本画像データ処理部200は、初期情報を用いて解析情報を生成するので、まず初期情報と解析情報について説明する。初期情報は、無彩色判定値、ピーク最大数、色相範囲情報、及び複数の輝度範囲情報で構成される。初期情報は、記憶部に記憶されている。初期情報のうち、ピーク最大数とは、色判定装置100が判定対象とする色の数の最大値である。その他の初期情報の詳細については後述する。
解析情報は、色相範囲と輝度範囲の2つで1組のデータで構成される。このデータは、見本画像データから検出された色相ピーク値の数Tだけ設けられる。解析情報は、記憶部に記憶されている。解析情報の詳細については後述する。なお、色相ピーク値とは、画素の数が極大となる色相値である。
見本画像データ取得部210は、見本画像データを取得する。例えば、ユーザにより指定された見本画像データを記憶部から取得する。見本画像データ取得部210が取得する画像データの形式は、本実施形態では1画素あたり24ビットのビットマップ形式である。従って、各画素の画素値には、赤の画素値R、緑の画素値G、青の画素値Bが存在し、それぞれ8ビットである。画素値RGBは、それぞれ0〜255の値をとり得る。見本画像データ取得部210は、取得した画像データを処理用の画像データとして記憶部に記憶する。
無彩色判定部220は、色判定の対象とする画素を選別する処理を実行する。無彩色判定部220は、まず記憶部から初期情報の1つである無彩色判定値を取得する。この無彩色判定値は、色判定対象とする画素を選別するための値であり、初期値が用意されているが、色判定装置100のユーザによっても設定可能である。
無彩色判定部220は、無彩色判定値に基づき、見本画像データの画素のうち、色判定対象とする画素を選別する。具体的には、無彩色判定値をaとし、画素値RGBの平均をAとしたとき、以下の式1を満たす画素を色判定の対象外とする。
A−a≦min(R,G,B)、かつ、max(R,G,B)≦A+a…(式1)
式1を満たす画素は、画素値RGBのばらつきが小さいため、無彩色または無彩色に近い画素である。また、式1は、RGBの3種類の画素値の最大値と最小値との差が予め定められた基準以下か否かを判定するものである。具体的には、min(R,G,B)=αとし、max(R,G,B)=α+βとすると、βは最大値と最小値との差である。
α、βを式1に代入すると、A−a≦α、α+β≦A+aが得られ、これらからβ≦2aとなる。従って、予め定められた基準を2aとすると、最大値と最小値との差βは、予め定められた基準2a以下となる。無彩色判定値の一例として、経験的に30〜35が挙げられる。
色判定対象と判定されなかった画素は、画素値RGBから、以下の式2により輝度値iが算出される。
i=0.299R+0.587G+0.114B…(式2)
算出された輝度値が所定の値(例えば、0〜255の中間値である127等)より小さいときの画素の画素値RGBは、R=0、G=0、B=0に変換される。一方、画素の輝度値が所定の値以上のときの画素の画素値RGBは、R=255、G=255、B=255に変換される。このように、3種類の画素値の最大値と最小値との差が予め定められた基準以下と判定された画素は、白または黒を示す画素に変換される。
このように、無彩色または無彩色に近い色を色判定の対象外とすることにより、判定対象となる画素が限定されるため、色判定装置100の処理負荷を大幅に低下させることができる。また、使用するメモリ量も大幅に削減できる。そのため、従来技術と比較して、より高速で、より安価に色判定装置を提供することができる。また、パソコンや携帯機器等のコンピュータを色判定装置として動作させるためのプログラムを提供する場合、コンピュータの要求または推奨スペックを大幅に低下させることができる。
なお、無彩色判定値を小さくすると、無彩色または無彩色に近い画素も色判定対象とすることができるが、この場合は色相環に無彩色が存在しないことから、正確な色判定が困難となる。そこで、例えば、グレースケール画像のような無彩色に近い色で構成された画像データを色判定対象とする場合には、ピーク最大数を1とする。
色相範囲設定部230は、解析情報の1つである色相範囲を設定する。色相範囲設定部230は、無彩色判定部220により色判定対象とされた画素の画素値RGBから、以下の式3を用いて、色相値Hを算出する。
tanH=31/2×(G−B)/(2R−G−B)…(式3)
色相値は、0°〜360°の値となる。以下の説明では、色相値を単位を省略して記載する。例えば、105°を105と記載する。
色相範囲設定部230は、算出された色相値から色相ヒストグラムを作成する。図3は、色相ヒストグラムの一例を示す図である。図3に示されるように、色相ヒストグラムは、横軸が色相値を示し、縦軸が画素数を示す。従って、色相ヒストグラムは、各色相値の画素数を示すグラフである。
次いで、色相範囲設定部230は、記憶部から初期情報の1つであるピーク最大数を取得する。ピーク最大数は、初期値が用意されているが、色判定装置100のユーザによっても設定可能である。色相範囲設定部230は、色相ヒストグラムから、画素の数が極大となる色相値である色相ピーク値を検出する。図3には、4つの色相ピーク値P1、P2、P3、P4が示されている。
色相範囲設定部230は、色相ピーク値のうち、画素が多い順に上記ピーク最大数だけ色相ピーク値を検出する。例えば、ピーク最大数が2の場合には、色相範囲設定部230は、図3において、P2、P4を色相ピーク値として検出する。なお、色相ピーク値が比較的範囲の狭い所定の範囲内に複数存在する場合には、所定範囲内の色相ピーク値のうち、画素の数が最大値となっている色相ピーク値のみを色相ピーク値として検出するようにしてもよい。
色相範囲設定部230は、初期情報の1つである色相範囲情報を取得する。色相範囲情報とは、色相範囲を定める値である。例えば、図3において、色相ピーク値をP3とし、色相範囲情報をaとしたとき、色相範囲は、P3−aからP3+aとなる。色相範囲情報は、初期値が用意されているが、色判定装置100のユーザによっても設定可能である。なお、Pを色相ピーク値としたとき、P−aが0未満の場合には、P−a+360とし、P+aが360を超過する場合には、P+a−360とする。こうして定まった色相範囲は、記憶部に記憶される。
色相範囲設定部230は、色相ピーク値を含む色相範囲に含まれる色相値を持つ全画素の画素値RBGから、Rの平均値、Bの平均値、Gの平均値(以下、「RGB平均値」という)を算出する。算出されたRGB平均値は、記憶部に記憶される。
色相範囲に他の色の色相ピーク値が含まれる場合、色相範囲設定部230は、上記色相範囲を調整する。この色相範囲の調整は、ユーザによって行うこともできる。算出されたRGB平均値は、当然に他の色相ピーク値を持つ画素の色相値の影響を受ける。色相ピーク値は、見本画像データの特徴を示す情報であるため、他の色相ピーク値の影響を受けることは好ましくない。そこで、色相範囲設定部230は、色相範囲を狭くすることで、他の色相ピーク値が色相範囲に含まれないようにする。
具体的に、図3を用いて説明する。図3に示される色相ヒストグラムにおいて、色相ピーク値として、P1〜P4の4つが示されている。ここで、P2についての色相範囲がH1の場合には、色相範囲に他の色相ピーク値P1が含まれることとなる。そこで、色相範囲調整部135によって、色相範囲をH2とすることで、他の色相ピーク値P1を含まないようにする。
なお、他の色相ピーク値が色相範囲に含まれないようにすることが困難な場合がある。例えば色相ピーク値が近接している場合である。この場合は、色相範囲の最小幅を予め定めておき、その最小幅まで狭めるようにしてもよい。
色相範囲設定部230は、各色相ピーク値ごとに、他の色相ピーク値が含まれないように色相範囲を調整したのち、色相範囲に含まれる色相値を持つ画素のRGB平均値を算出する。調整された色相範囲、及び算出されたRGB平均値は、記憶部に記憶される。こうして算出されたRGB平均値は、他の色相ピーク値による影響をほとんどまたは全く受けていない値となる。これにより、色相を正確に判定可能となる。
なお、他の色相ピーク値を含む色相範囲が1つも存在しない場合には、調整を実行しなくてもよいし、より精度を高めるために、色相範囲の調整を実行するようにしてもよい。
以上により、色相範囲設定部230の処理によって、色相ピーク値ごとに色相範囲が設定される。
輝度範囲設定部240は、解析情報の1つである輝度範囲を設定する。輝度範囲設定部240は、色相範囲設定部230によって各色相ピーク値ごとに算出されたRGB平均値から式2を用いて、各色相ピーク値ごとに輝度値iを算出する。
輝度範囲設定部240は、初期情報の1つである複数の輝度範囲情報を取得する。輝度範囲情報とは、輝度範囲(許容値±)を定める値である。上述したように、輝度範囲情報は複数設けられている。図4は、輝度範囲情報の一例を示す図である。図4に示されるグラフは、横軸が輝度値を示し、縦軸が輝度範囲情報を示す。輝度範囲設定部240は、上記輝度値iに対応する輝度範囲情報を取得する。
図4に示されるグラフには、実線で示されるグラフと、破線で示されるグラフの2種類のグラフが示されている。いずれのグラフも、輝度値が定まると、輝度範囲情報が一意に定まる。そして、輝度範囲情報に示されるように、輝度範囲情報には複数の値が設けられている。
実線で示されるグラフは、階段関数である。実線で示されるグラフの場合は、階段が5段であるため、5つの輝度範囲情報が設けられている。一方、破線で示されるグラフは、単調減少関数である。破線で示されるグラフの場合は、狭義単調減少であるため、輝度値ごとに異なる輝度範囲情報が設けられている。
いずれのグラフにおいても、輝度範囲は輝度値が大きいほど狭い範囲となるようにしている。この理由は、人間の目は、輝度値が大きいほど感度が高くなるためである。従って本実施形態に係る色判定では、より人間の目に即した色判定を行うことが可能となる。なお、図4に示されるように、輝度値が0のときの輝度範囲情報を30程度とし、輝度値が増加するほど輝度範囲情報を減少させるようにしてもよい。また、色判定装置100で用いる画像データが、どのような配色がされた画像を示す画像データかが不明な場合には、全ての輝度値において、同一の輝度範囲情報としてもよい。この場合の輝度範囲情報は、例えば、10〜30のような広い範囲であることが好ましい。
輝度範囲設定部240は、輝度範囲情報bを取得すると、上記輝度値iを用いて、輝度範囲をi−bからi+bとする。このようにして、各色相ピーク値ごとに、輝度範囲が設定される。設定された輝度範囲は、記憶部に記憶される。
以上説明した見本画像データ処理部200による処理によって、色相範囲、色相ピーク値、RGB平均値、及び輝度範囲からなる見本画像情報が得られる。図5は、見本画像情報を表示装置14に表示した見本画像情報一覧の一例を示す図である。
見本画像情報一覧は、色、色相範囲、色相ピーク値、RGB平均値、及び輝度範囲で構成される。このうち、「色」には、表示装置14において色が表示されるが、白黒画像では表現できないため、便宜的にアルファベットで示している。「色相範囲」、「色相ピーク値」、及び「RGB平均値」は、色相範囲設定部230により得られた情報である。「輝度範囲」は、輝度範囲設定部240により得られた情報である。上述したように、色相範囲及び輝度範囲が解析情報400として生成される。なお、図5に示される色Aの輝度範囲は、RGB平均値により算出された輝度値が約150であり、輝度範囲情報が30のため、150−30から150+30となっている。他の色の輝度範囲も同様に算出されている。このように、本実施形態では、色相ピーク値ごとに、色相範囲及び輝度範囲が設定される。
図2に戻り、検査画像データ処理部500について説明する。検査画像データ処理部500は、検査画像データ取得部510、輝度範囲調整部520、及び判定部530で構成される。
検査画像データ取得部510は、検査画像データを取得する。検査画像データ取得部510が取得する画像データの形式は、見本画像データの形式と同じく、1画素あたり24ビットのビットマップ形式である。検査画像データ取得部510は、取得した画像データを記憶部に記憶する。
輝度範囲調整部520は、解析情報400の輝度範囲を調整する。この輝度範囲の調整は、色判定装置100のユーザによって行うこともできる。輝度範囲の調整例について説明する。まず、調整前の輝度範囲をL1、調整後の輝度範囲をL2とする。このとき、輝度範囲L2に含まれる画素数が、輝度範囲L1に含まれる画素数の80〜95%となることが好ましい。
輝度範囲L2に含まれる画素数が輝度範囲L1に含まれる画素数の80%未満の場合には、画素数が少なくなるため、色判定の精度が低下する場合がある。一方、輝度範囲L2に含まれる画素数が輝度範囲L1に含まれる画素数の95%を超過する場合には、範囲が広すぎることから、他の色相値の輝度値が含まれる可能性が高くなるため、色判定の精度が低下する場合がある。
なお、輝度範囲調整部520による調整を実行してもよいし、実行しなくてもよい。例えば、設定された輝度範囲が適切であれば、調整を実行しなくてもよい。輝度範囲の調整が実行された場合には、解析情報400の輝度範囲が調整された輝度範囲に更新される。
判定部530は、検査画像データが示す画像の合否を判定する。判定部530は、色相範囲に含まれる全ての画素のRGB平均値から輝度値を算出し、算出された輝度値が輝度範囲に含まれる場合に、当該色相範囲に対応する色については合格と判定する。判定部530は、全ての色相範囲について判定を行った結果を判定結果600として生成する。判定部530が判定で用いた色相範囲は、見本画像データから得られたものである。従って、例えば赤なら245〜15というように固定で色相範囲を定めて判定する場合と比較して、より精度よく色判定を行うことができる。
なお、検査画像データに色相範囲に含まれる画素がわずか1つでもあって、さらにその画素の輝度値が輝度範囲に含まれる場合には、合格と判定されることとなる。例えば、検査画像データにノイズがあったり、検査画像データが画像をスキャンしたもので画像にシミなどがあった場合に、たまたまノイズやシミの色が色相範囲に含まれ、輝度範囲にも含まれることがある。
こうした合格判定を排除するため、本実施形態では、色相範囲内に存在する画素が、あまりにも少ない場合には、それらの画素を判定対象から外す。具体的には、色相範囲に含まれる画素が、全画素数の所定割合(例えば1%)以上検出されることを合格の必要条件とする。従って、色相範囲に含まれる画素が、所定割合(例えば1%)未満しか検出されなかった場合には、不合格と判定する。合格の必要条件である全画素数の割合以上とする条件を合格判定割合条件と表現する。なお、所定割合としては、5%以下が実用的であり、経験的に3%が好ましく、さらに1%がより好ましい。
以上説明した色判定装置100の処理を、フローチャートを用いて説明する。以下に説明される処理は、CPU10により実行される。
図6は、見本画像データ処理の流れを示すフローチャートである。まず、CPU10は、見本画像データを取得する(ステップS101)。取得された見本画像データは、記憶部に記憶される。CPU10は、無彩色判定処理を実行する(ステップS102)。CPU10は、色相範囲設定処理を実行する(ステップS103)。CPU10は、輝度範囲設定処理を実行し(ステップS104)、本処理を終了する。
次に、図6の無彩色判定処理、色相範囲設定処理、及び輝度範囲設定処理の各処理について説明する。図7は、無彩色判定処理の流れを示すフローチャートである。CPU10は、ループカウンタkを1で初期化する(ステップS201)。CPU10は、上述した式1を用いて、k番目の画素の無彩色判定を実行する(ステップS202)。
CPU10は、k番目の画素が無彩色と判定されなかった場合には(ステップS203:NO)、k番目の画素を色判定対象とする(ステップS204)。CPU10は、kを1増分する(ステップS205)。CPU10は、kが画素総数より大きいか否かを判定する(ステップS206)。CPU10は、kが画素総数以下の場合には(ステップS206:NO)、ステップS202に戻る。CPU10は、kが画素総数より大きい場合には(ステップS206:YES)、本処理を終了する。
ステップS203において、k番目の画素が無彩色と判定された場合には(ステップS203:YES)、CPU10は、式2を用いて輝度値を算出する(ステップS207)。CPU10は、算出された輝度値が127より大きいか否かを判定する(ステップS208)。算出された輝度値が127より大きい場合には(ステップS208:YES)、CPU10は、k番目の画素値RGBを、それぞれ255とし(ステップS210)、ステップS205に進む。算出された輝度値が127以下の場合には(ステップS208:NO)、CPU10は、k番目の画素値RGBを、それぞれ0とし(ステップS209)、ステップS205に進む。
図8は、色相範囲設定処理の流れを示すフローチャートである。CPU10は、色判定対象とされた全画素の色相値を式3を用いて算出し(ステップS301)、図3に示したような色相値のヒストグラムを生成する(ステップS302)。
CPU10は、色相ピーク値を最大でピーク最大数Nだけ検出し(ステップS303)、検出数をMとしてセットする(ステップS304)。CPU10は、検出した色相ピーク値を配列Pk(1)〜Pk(M)にセットする(ステップS305)。
CPU10は、ループカウンタjを1で初期化する(ステップS306)。CPU10は、色相範囲[Pk(j)−a,Pk(j)+a]を、色相範囲を保持する配列H(j)にセットする(ステップS307)。ここでのaは、色相範囲情報である。なお、記号[Pk(j)−a,Pk(j)+a]は、Pk(j)−aからPk(j)+aまでの閉区間を示す。CPU10は、jを1だけ増分し(ステップS308)、jがMより大きいか否かを判定する(ステップS309)。jがM以下の場合には(ステップS309:NO)、CPU10は、ステップS307に戻る。jがMより大きい場合には(ステップS309:YES)、CPU10は、複数の色相ピーク値を含む色相範囲があるか否かを判定する(ステップS310)。
複数の色相ピーク値を含む色相範囲がない場合には(ステップS310:NO)、CPU10は、色相範囲Hを記憶して(ステップS313)、本処理を終了する。複数の色相ピーク値を含む色相範囲がある場合には(ステップS310:YES)、CPU10は、色相範囲を調整するか否かを判定する(ステップS311)。色相範囲を調整しない場合には(ステップS311:NO)、CPU10は、ステップS313に進む。色相範囲を調整する場合には(ステップS311:YES)、CPU10は、色相範囲の調整を実行し(ステップS312)、ステップS310に戻る。
図9は、輝度範囲設定処理の流れを示すフローチャートである。CPU10は、ループカウンタkを1で初期化する(ステップS401)。CPU10は、色相範囲H(k)内の画素のRGB平均値を算出する(ステップS402)。CPU10は、RGB平均値から式2を用いて、輝度値iを算出する(ステップS403)。
CPU10は、輝度値iから、輝度範囲情報R(i)を取得する(ステップS404)。輝度範囲情報R(i)は、iに依存するため、関数Rを用いて表現している。関数Rは、例えば、図4で説明した階段関数や単調減少関数である。CPU10は、輝度範囲[i−R(i),i+R(i)]を、輝度範囲を保持する配列L(k)にセットする(ステップS405)。
CPU10は、kを1だけ増分し(ステップS406)、kが色相ピーク値の検出数Mより大きいか否かを判定する(ステップS407)。kがM以下の場合には(ステップS407:NO)、CPU10は、ステップS402に戻る。kがMより大きい場合には(ステップS407:YES)、CPU10は、輝度範囲Lを記憶して(ステップS408)、本処理を終了する。
以上説明した見本画像データ処理により、解析情報400が生成される。次に、検査画像データ処理について説明する。
図10は、検査画像データ処理の流れを示すフローチャートである。CPU10は、検査画像データを取得する(ステップS501)。取得された検査画像データは、記憶部に記憶される。CPU10は、解析情報400を取得する(ステップS502)。CPU10は、輝度範囲Lを調整する(ステップS503)。輝度範囲を調整しない場合には、このステップS503は実行されない。輝度範囲の調整が実行された場合には、輝度範囲Lが調整された輝度範囲に更新される。
CPU10は、ループカウンタkを1で初期化する(ステップS504)。このループカウンタkは、検査画像データの画素を順にカウントするためのカウンタである。CPU10は、k番目の画素の色相値を式3を用いて算出し、算出された色相値を変数HVにセットする(ステップS505)。CPU10は、HVを引数として、色相範囲情報取得処理を実行する(ステップS506)。
CPU10は、kを1増分する(ステップS507)。CPU10は、kが画素総数より大きいか否かを判定する(ステップS508)。CPU10は、kが画素総数以下と判定した場合には(ステップS508:NO)、ステップS505に戻る。CPU10は、kが画素総数より大きいと判定した場合には(ステップS508:YES)、合格判定処理を実行し(ステップS509)、本処理を終了する。
図11は、色相範囲情報取得処理の流れを示すフローチャートである。CPU10は、ループカウンタjを1で初期化する(ステップS601)。このループカウンタjは、M個ある色相範囲を順にカウントするためのカウンタである。CPU10は、HVが示す色相値が色相範囲H(j)に含まれるか否かを判定する(ステップS602)。
HVが示す色相値が色相範囲H(j)に含まれない場合には(ステップS602:NO)、次の色相範囲に含まれるか否かを判定するために、CPU10は、jを1だけ増分する(ステップS603)。CPU10は、jが色相範囲の個数Mより大きいか否かを判定する(ステップS604)。CPU10は、jが個数M以下の場合には(ステップS604:NO)、ステップS602に戻る。CPU10は、jが個数Mより大きい場合には(ステップS604:YES)、本処理を終了する。
ステップS602において、HVが示す色相値が色相範囲H(j)に含まれる場合には(ステップS602:YES)、CPU10は、ステップS605を実行し、本処理を終了する。まず、ステップS605で用いられている変数について説明する。配列HR(j)は、j番目の色相範囲の画素の画素値Rの総和を求めるための変数である。配列HG(j)は、j番目の色相範囲の画素の画素値Gの総和を求めるための変数である。配列HB(j)は、j番目の色相範囲の画素の画素値Bの総和を求めるための変数である。配列HC(j)は、j番目の色相範囲の画素の個数を求めるための変数である。
CPU10は、HR(j)にk番目の画素の画素値Rを加えた値をHR(j)にセットする。CPU10は、HG(j)にk番目の画素の画素値Gを加えた値をHG(j)にセットする。CPU10は、HB(j)にk番目の画素の画素値Bを加えた値をHB(j)にセットする。CPU10は、HC(j)に1を加えた値をHC(j)にセットする。
色相範囲情報取得処理は、全ての検査画像データの画素に対して実行されるため、色相範囲に含まれる画素の画素値RGBの総和と、画素の個数が算出される。これにより、RGB平均値が算出可能となるので、色相範囲の輝度値が算出される。さらに、画素の個数により、合格判定割合条件を満たすか否かも判定可能となる。
図12は、合格判定処理の流れを示すフローチャートである。CPU10は、ループカウンタjを1で初期化する(ステップS701)。このループカウンタjは、色相範囲を順にカウントするためのカウンタである。CPU10は、HC(j)が全画素数の1%以上か否かを判定する(ステップS702)。すなわち、合格判定割合条件を満たすか否かを判定する。
HC(j)が全画素数の1%以上の場合には(ステップS702:YES)、CPU10は、HR(j)、HG(j)、HB(j)、及びHC(j)から、輝度値LSを算出する(ステップS703)。CPU10は、算出されたLSが輝度範囲L(j)に含まれるか否かを判定する(ステップS704)。
算出されたLSが輝度範囲L(j)に含まれる場合には(ステップS704:YES)、CPU10は、色相範囲H(j)で合格とする(ステップS705)。CPU10は、jを1だけ増分する(ステップS707)。CPU10は、jが色相範囲の個数Mより大きいか否かを判定する(ステップS708)。CPU10は、jが個数M以下の場合には(ステップS708:NO)、ステップS702に戻る。CPU10は、jが個数Mより大きい場合には(ステップS708:YES)、全ての色相範囲で合格したか否かを判定する(ステップS709)。全ての色相範囲で合格した場合には(ステップS709:YES)、CPU10は、判定結果を合格とし(ステップS710)、本処理を終了する。全ての色相範囲で合格しなかった場合には(ステップS709:NO)、CPU10は、判定結果を不合格とし(ステップS711)、本処理を終了する。
上記ステップS702で否定判定、またはステップS704で否定判定された場合には、CPU10は、色相範囲H(j)で不合格とし(ステップS706)、ステップS707に進む。
以上説明したように、本実施形態では、色相範囲だけではなく、輝度範囲を用いて判定することで、より精度よく判定できる。以下、具体例を用いて説明する。図13は、濃い赤と薄い赤とを含む画像例700を示す図である。
画像例700において、アルファベット、及び数字の色は、漆黒である。また、ハート型の領域730の色及び感嘆符を囲む三角形の領域740の色も漆黒である。「WARNING」及び領域730の下地領域710の色は、薄い赤である。車両通行止めマークの領域720の色は、濃い赤である。領域720、730、及び「Permanent」から始まり「1.0m.」で終了する文字列の下地領域750の色は白である。なお、薄い赤の下地領域710と、濃い赤の領域720は、分かりやすくするためにハッチングされている。実際の画像では、下地領域710には薄い赤がベタ塗されており、領域720には濃い赤がベタ塗されている。
図14は、画像例700から無彩色判定部220、及び色相範囲設定部230により得られた色相範囲、色相ピーク値、及びRGB平均値を示す図である。図14に示されるように、濃い赤の色相範囲は323〜23であり、色相ピーク値は353である。一方、薄い赤の色相範囲は329〜29であり、色相ピーク値は359である。このように、濃い赤と薄い赤では、色相範囲がほとんど重なっており、さらに色相ピーク値の差もほとんどないため、色相値だけで区別することは困難である。
これに対し、RGB平均値を用いて、輝度値を算出すると、濃い赤の輝度値は約85であり、薄い赤の輝度値は約104である。このように、色相値ではほとんど差がないが、輝度値では明らかな差が生じている。従って、本実施形態のように色相範囲と輝度範囲とを用いて判定することにより、より精度よく合否判定を行うことができる。
図15は、画像例700の輝度ヒストグラムを示す図である。図15に示される輝度ヒストグラムは、横軸が輝度値を示し、縦軸が画素数を示している。なお、縦軸の画素数は、最も多い画素数を100とした比率で示している。
P1は、薄い赤のピークを示し、P2は、濃い赤のピークを示している。上述したように、薄い赤の輝度値は約104である。従って、輝度範囲設定部240は、輝度範囲情報を用いて、輝度値104を中心とした輝度範囲を設定する。仮に輝度範囲情報が35とすると、設定される輝度範囲L1は[79,139]となる。
輝度範囲L1は、図16に示されるように、薄い赤のピークだけではなく、濃い赤のピークも含まれることとなる。従って、輝度範囲L1は適切な範囲といい難い。そこで、検査画像データ処理部500の輝度範囲調整部520により、図16に示される輝度範囲L2に輝度範囲を調整することによって、より精度よく色を判定することができる。
図17は、色判定装置のハードウェア構成の変形例を示す図である。図17に示される構成例は本実施形態に係る色判定装置をフィーチャーフォン、スマートフォン、タブレット端末等の携帯機器に適用した構成例である。
色判定装置800は、CPU810、ROM811、RAM812、フラッシュメモリ813、表示装置814、入力装置815、カメラ部817、及び通信部818で構成され、それらはバス816で接続されている。
CPU810は、色判定装置800全体を制御する。ROM811には、色判定装置800を起動したり制御するためのプログラムなどが記憶される。RAM812には、各種プログラムや、画像データなどのデータが記憶される。また、RAM812は、CPU810のワーク領域として用いられる。フラッシュメモリ813には、処理を実行するためのプログラムや画像データなどが記憶される。表示装置814は、例えば液晶ディスプレイや有機ELである。入力装置815は、タッチパネルやハードボタンなどである。カメラ部817は、被写体を撮像する撮像部であり、固体撮像素子により撮像された画像データをフラッシュメモリ813に記憶する。通信部818は、3G、4G、LTE、無線LAN等の各規格に従って、無線通信を行う。
図17に示した構成によれば、1つの携帯機器によって色判定装置を実現できるので、場所を問わずにいつでも色判定を行うことができる。
以上説明した実施形態によれば、様々な色を区別して一括で判定することができるだけでなく、従来よりも簡便な方法で容易に色判定を行うことができる。例えば、一般的な印刷物を画像データ化したものだけでなく、工業用シール・ラベル等の2次元印刷物や立体塗装品等の3次元印刷物を画像データ化したものに対し、本実施形態に係る色判定装置は有効である。
さらに、本実施形態に係る色判定装置は、印刷物の図案、模様及び文字や照明等の外的環境が変化しても、それらの因子によって影響を受けない状態で色判定をより精度よく行うことができる。
また、本実施形態に係る色判定装置によって解析される色は、実際に人間の視覚で感じるものとほとんど変わらないたため、様々な色を実情に即した形で、簡単かつ精度よく判定を行うことができる。従って、本実施形態に係る色判定装置によって、色判定検査の自動化による大幅な省力化が図れる。
また、図1や図17に示したように、本実施形態に係る色判定装置のハードウェア構成は、パソコンまたは携帯機器のハードウェア構成となっている。従って、汎用的で比較的安価で実現可能な色判定装置を提供することができる。また、本実施形態に係る色判定装置は、測定対象を2次元の印刷物だけでなく、3次元の工業製品、果実や野菜、人間の皮膚、及び歯等の様々なものに拡大できるため、その有用性が極めて高い。
以上説明した実施形態において、見本画像データ及び検査画像データの形式を、1画素あたり24ビットのビットマップ形式としたが、これに限るものではない。上述した実施形態に示されるように、本実施形態に係る色判定装置100は、画像データから色相値と輝度値とを取得することによって判定を行うので、画像データの形式は、色相値と輝度値とを取得可能な形式であれば、どのような形式であってもよい。
以上、本発明の実施形態について図面を参照して詳述したが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
なお、本実施形態の色判定装置の各処理を実行するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、当該記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、色判定装置の各処理に係る上述した種々の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものであってもよい。また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリ等の書き込み可能な不揮発性メモリ、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。