(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024109358
(43)【公開日】2024-08-14
(54)【発明の名称】プログラム、および、画像処理装置
(51)【国際特許分類】
G06T 7/00 20170101AFI20240806BHJP
H04N 23/60 20230101ALI20240806BHJP
【FI】
G06T7/00 610C
H04N23/60 500
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2023014105
(22)【出願日】2023-02-01
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110001058
【氏名又は名称】鳳国際弁理士法人
(72)【発明者】
【氏名】近藤 真樹
【テーマコード(参考)】
5C122
5L096
【Fターム(参考)】
5C122DA12
5C122EA06
5C122FH04
5C122FH07
5C122FH11
5C122FH14
5C122FH16
5C122GC07
5C122HA13
5C122HA35
5C122HA88
5C122HB01
5C122HB10
5L096AA02
5L096AA06
5L096BA03
5L096EA03
5L096EA16
5L096FA06
5L096FA09
5L096FA22
5L096FA32
5L096FA64
5L096FA66
5L096FA67
5L096FA69
5L096GA19
(57)【要約】
【課題】 オブジェクトが異常を有するか否かを判断する。
【解決手段】
二次元撮影画像と正常な特定面を表す二次元正常画像との間のキーポイントマッチングの結果に従ってホモグラフィ変換を行うことによって、変換済画像を生成する。変換済画像を使用して、対象オブジェクトの特定面が異常を有するか否かを判断する。あるいは、二次元撮影画像と、正常な特定面を表す二次元正常画像と、を比較して、対象オブジェクトの特定面が異常を有するか否かを判断する異常判断処理を実行する。異常判断処理では、二次元撮影画像のN個の第1種部分画像と二次元正常画像のN個の第2種部分画像とのキーポイントマッチングのN個の結果に従ってN個のホモグラフィ行列が算出され、N個のホモグラフィ行列を使用して、対象オブジェクトの特定面が異常を有するか否かが判断される。
【選択図】
図1
【特許請求の範囲】
【請求項1】
プログラムであって、
対象オブジェクトの特定面の二次元撮影画像を取得する撮影画像取得機能と、
前記二次元撮影画像と、正常な特定面を表す二次元正常画像と、の間のキーポイントマッチングを行う機能と、
前記二次元撮影画像と前記二次元正常画像とのいずれかである第1画像に対して、前記キーポイントマッチングの結果に従ってホモグラフィ変換を行うことによって、変換済画像を生成する機能と、
前記二次元撮影画像と前記二次元正常画像とのうちの前記第1画像とは異なる第2画像と、前記変換済画像と、を比較して、前記対象オブジェクトの前記特定面が異常を有するか否かを判断する第1異常判断処理を実行する機能と、
をコンピュータに実現させる、プログラム。
【請求項2】
請求項1に記載のプログラムであって、
前記第1異常判断処理は、
前記変換済画像によって表される特定面である第1種特定面のうちの互いに異なる部分を含むN個(Nは2以上の整数)の第1種部分画像を、前記変換済画像から取得する第1種取得処理と、
互いに対応付けられる第1種部分画像と第2種部分画像とのN個の組み合わせのそれぞれのキーポイントマッチングを行うマッチング処理であって、前記N個の組み合わせを形成するN個の第2種部分画像は、前記第2画像によって表される特定面である第2種特定面のうちの互いに異なる部分を含み、前記第2種部分画像に含まれる前記第2種特定面の部分は、前記第2種部分画像に対応付けられる前記第1種部分画像に含まれる前記第1種特定面の部分と共通する部分を含む、前記マッチング処理と、
前記キーポイントマッチングのN個の結果に従ってN個のホモグラフィ行列を算出する処理と、
前記N個のホモグラフィ行列のそれぞれと単位行列との間の差異の程度を算出する処理と、
N個の差異の程度のそれぞれと、差異の程度の基準と、を比較することによって、前記対象オブジェクトの前記特定面が異常を有するか否かを判断する処理と、
を含む、プログラム。
【請求項3】
請求項2に記載のプログラムであって、
前記N個の第1種部分画像は、1以上の他の第1種部分画像と部分的に重なる第1種部分画像であるQ個(Qは、2以上、N以下の整数)の第1種重畳部分画像を含み、
前記第1種重畳部分画像に対応付けられる第2種部分画像である第2種重畳部分画像は、1以上の他の第2種部分画像と部分的に重なっており、
前記第2種重畳部分画像に部分的に重なる前記1以上の他の第2種部分画像は、前記第2種重畳部分画像に対応付けられる前記第1種重畳部分画像に部分的に重なる1以上の他の第1種部分画像に、それぞれ対応付けられている、
プログラム。
【請求項4】
請求項2または3に記載のプログラムであって、
前記N個のホモグラフィ行列のそれぞれは、前記第1種部分画像上の位置を示す二次元座標系と、前記第2種部分画像上の位置を示す二次元座標系と、の間の回転とスケーリングとを含む座標変換を表す2行2列の部分行列を形成する要素を含み、
前記差異の程度は、前記2行2列の部分行列と、2行2列の単位行列と、の間の差異の程度を示している、
プログラム。
【請求項5】
請求項1から3のいずれかに記載のプログラムであって、さらに、
前記第1画像に対する前記ホモグラフィ変換による回転角度を近似する近似回転角度が許容角度範囲外である第1の場合と、前記第1画像に対する前記ホモグラフィ変換によるスケーリング倍率を近似する近似スケーリング倍率が許容倍率範囲外である第2の場合とのうち、予め選択された1つの場合、または、両方の場合、を含む特定の場合に、前記対象オブジェクトに関連する異常があると判断する第2異常判断処理を実行する機能を、コンピュータに実現させる、プログラム。
【請求項6】
請求項5に記載のプログラムであって、
前記第1画像に対する前記ホモグラフィ変換は、第1ホモグラフィ行列による座標変換を含み、
前記第1ホモグラフィ行列は、前記第1画像上の位置を示す二次元座標系と、前記変換済画像上の位置を示す二次元座標系と、の間の回転とスケーリングとを含む座標変換を表す2行2列の部分行列を形成する要素を含み、
前記第2異常判断処理は、前記近似回転角度と、前記近似スケーリング倍率と、の一方、または、両方を、前記第1ホモグラフィ行列の前記2行2列の部分行列を形成する要素に基づいて算出する処理を含む、
プログラム。
【請求項7】
プログラムであって、
対象オブジェクトの特定面の二次元撮影画像を取得する撮影画像取得機能と、
前記二次元撮影画像と、正常な特定面を表す二次元正常画像と、を比較して、前記対象オブジェクトの前記特定面が異常を有するか否かを判断する異常判断処理を実行する機能と、
をコンピュータに実現させ、
前記異常判断処理は、
前記二次元撮影画像によって表される特定面である第1種特定面のうちの互いに異なる部分を含むN個(Nは2以上の整数)の第1種部分画像を、前記二次元撮影画像から取得する取得処理と、
互いに対応付けられる第1種部分画像と第2種部分画像とのN個の組み合わせのそれぞれのキーポイントマッチングを行うマッチング処理であって、前記N個の組み合わせを形成するN個の第2種部分画像は、前記二次元正常画像によって表される特定面である第2種特定面のうちの互いに異なる部分を含み、前記第2種部分画像に含まれる前記第2種特定面の部分は、前記第2種部分画像に対応付けられる前記第1種部分画像に含まれる前記第1種特定面の部分と共通する部分を含む、前記マッチング処理と、
前記キーポイントマッチングのN個の結果に従ってN個のホモグラフィ行列を算出する処理と、
前記N個のホモグラフィ行列のそれぞれと単位行列との間の差異の程度を算出する処理と、
N個の差異の程度のそれぞれと、差異の程度の基準と、を比較することによって、前記対象オブジェクトの前記特定面が異常を有するか否かを判断する処理と、
を含む、プログラム。
【請求項8】
請求項7に記載のプログラムであって、
前記N個の第1種部分画像は、1以上の他の第1種部分画像と部分的に重なる第1種部分画像であるQ個(Qは、2以上、N以下の整数)の第1種重畳部分画像を含み、
前記第1種重畳部分画像に対応付けられる第2種部分画像である第2種重畳部分画像は、1以上の他の第2種部分画像と部分的に重なっており、
前記第2種重畳部分画像に部分的に重なる前記1以上の他の第2種部分画像は、前記第2種重畳部分画像に対応付けられる前記第1種重畳部分画像に部分的に重なる1以上の他の第1種部分画像に、それぞれ対応付けられている、
プログラム。
【請求項9】
請求項7または8に記載のプログラムであって、
前記N個のホモグラフィ行列のそれぞれは、前記第1種部分画像上の位置を示す二次元座標系と、前記第2種部分画像上の位置を示す二次元座標系と、の間の回転とスケーリングとを含む座標変換を表す2行2列の部分行列を形成する要素を含み、
前記差異の程度は、前記2行2列の部分行列と、2行2列の単位行列と、の間の差異の程度を示している、
プログラム。
【請求項10】
画像処理装置であって、
対象オブジェクトの特定面の二次元撮影画像を取得する撮影画像取得部と、
前記二次元撮影画像と、正常な特定面を表す二次元正常画像と、の間のキーポイントマッチングを行うマッチング処理部と、
前記二次元撮影画像と前記二次元正常画像とのいずれかである第1画像に対して、前記キーポイントマッチングの結果に従ってホモグラフィ変換を行うことによって、変換済画像を生成する生成部と、
前記二次元撮影画像と前記二次元正常画像とのうちの前記第1画像とは異なる第2画像と、前記変換済画像と、を比較して、前記対象オブジェクトの前記特定面が異常を有するか否かを判断する第1異常判断処理を実行する第1判断部と、
を備える、画像処理装置。
【請求項11】
画像処理装置であって、
対象オブジェクトの特定面の二次元撮影画像を取得する撮影画像取得部と、
前記二次元撮影画像と、正常な特定面を表す二次元正常画像と、を比較して、前記対象オブジェクトの前記特定面が異常を有するか否かを判断する異常判断処理を実行する判断部と、
を備え、
前記異常判断処理は、
前記二次元撮影画像によって表される特定面である第1種特定面のうちの互いに異なる部分を含むN個(Nは2以上の整数)の第1種部分画像を、前記二次元撮影画像から取得する取得処理と、
互いに対応付けられる第1種部分画像と第2種部分画像とのN個の組み合わせのそれぞれのキーポイントマッチングを行うマッチング処理であって、前記N個の組み合わせを形成するN個の第2種部分画像は、前記二次元正常画像によって表される特定面である第2種特定面のうちの互いに異なる部分を含み、前記第2種部分画像に含まれる前記第2種特定面の部分は、前記第2種部分画像に対応付けられる前記第1種部分画像に含まれる前記第1種特定面の部分と共通する部分を含む、前記マッチング処理と、
前記キーポイントマッチングのN個の結果に従ってN個のホモグラフィ行列を算出する処理と、
前記N個のホモグラフィ行列のそれぞれと単位行列との間の差異の程度を算出する処理と、
N個の差異の程度のそれぞれと、差異の程度の基準と、を比較することによって、前記対象オブジェクトの前記特定面が異常を有するか否かを判断する処理と、
を含む、画像処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、画像を使用する異常判断に関する。
【背景技術】
【0002】
従来から、オブジェクト(例えば、複合機などの製品に貼付されたラベルシート)の外観が異常を有するか否かの判断に、オブジェクトの画像が使用されている。例えば、特許文献1は、以下の技術を開示する。ラベルシートの画像データを機械学習モデルに入力することによって、不具合の無いラベルシートの画像データを生成する。入力された画像と生成された画像との間の差分を表す差分画像データを使用して、異常度を算出する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところが、オブジェクトが異常を有するか否かを判断するための処理には、工夫の余地があった。
【0005】
本明細書は、オブジェクトが異常を有するか否かを判断する新たな技術を開示する。
【課題を解決するための手段】
【0006】
本明細書に開示された技術は、以下の適用例として実現することが可能である。
【0007】
[適用例1]プログラムであって、対象オブジェクトの特定面の二次元撮影画像を取得する撮影画像取得機能と、前記二次元撮影画像と、正常な特定面を表す二次元正常画像と、の間のキーポイントマッチングを行う機能と、前記二次元撮影画像と前記二次元正常画像とのいずれかである第1画像に対して、前記キーポイントマッチングの結果に従ってホモグラフィ変換を行うことによって、変換済画像を生成する機能と、前記二次元撮影画像と前記二次元正常画像とのうちの前記第1画像とは異なる第2画像と、前記変換済画像と、を比較して、前記対象オブジェクトの前記特定面が異常を有するか否かを判断する第1異常判断処理を実行する機能と、をコンピュータに実現させる、プログラム。
【0008】
この構成によれば、第2画像とホモグラフィ変換による変換済画像とを比較して対象面が異常を有するか否かが判断されるので、適切な判断が可能である。
【0009】
[適用例2]プログラムであって、対象オブジェクトの特定面の二次元撮影画像を取得する撮影画像取得機能と、前記二次元撮影画像と、正常な特定面を表す二次元正常画像と、を比較して、前記対象オブジェクトの前記特定面が異常を有するか否かを判断する異常判断処理を実行する機能と、をコンピュータに実現させ、前記異常判断処理は、前記二次元撮影画像によって表される特定面である第1種特定面のうちの互いに異なる部分を含むN個(Nは2以上の整数)の第1種部分画像を、前記二次元撮影画像から取得する取得処理と、互いに対応付けられる第1種部分画像と第2種部分画像とのN個の組み合わせのそれぞれのキーポイントマッチングを行うマッチング処理であって、前記N個の組み合わせを形成するN個の第2種部分画像は、前記二次元正常画像によって表される特定面である第2種特定面のうちの互いに異なる部分を含み、前記第2種部分画像に含まれる前記第2種特定面の部分は、前記第2種部分画像に対応付けられる前記第1種部分画像に含まれる前記第1種特定面の部分と共通する部分を含む、前記マッチング処理と、前記キーポイントマッチングのN個の結果に従ってN個のホモグラフィ行列を算出する処理と、前記N個のホモグラフィ行列のそれぞれと単位行列との間の差異の程度を算出する処理と、N個の差異の程度のそれぞれと、差異の程度の基準と、を比較することによって、前記対象オブジェクトの前記特定面が異常を有するか否かを判断する処理と、を含む、プログラム。
【0010】
この構成によれば、ホモグラフィ行列と単位行列との間の差異の程度と差異の程度の基準との比較によって、対象面が異常を有するか否かを適切に判断できる。
【0011】
なお、本明細書に開示の技術は、種々の態様で実現することが可能であり、例えば、画像処理方法および画像処理装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体(例えば、一時的ではない記録媒体)、等の形態で実現することができる。
【図面の簡単な説明】
【0012】
【
図1】一実施例としてのデータ処理装置を示す説明図である。
【
図2】(A)は、製品300の斜視図である。(B)は、ラベルLの例を示す図である。
【
図4】(A)は、撮影画像の例を示す図である。(B)は、撮影画像ipから検出されるキーポイントの例を示す図である。(C)は、正常画像の例を示す図である。(D)は、キーポイントマッチングの結果の例を示す図である。
【
図5】(A)は、ホモグラフィ行列の例を示す図である。(B)は、座標変換を表すホモグラフィ行列の例を示している。(C)は、変換済画像の例を示している。
【
図6】異常判断処理の例を示すフローチャートである。
【
図7】(A)-(F)は、複数のブロック画像の説明図である。(G)、(H)は、キーポイントマッチングの結果の例を示す図である。
【
図8】S250で算出されるホモグラフィ行列の例を示している。
【
図9】(A)-(C)は、異常指標値Adの算出式の例の説明図である。
【
図10】異常ブロック検出処理の例を示すフローチャートである。
【
図11】表示部140に表示される結果画像の例を示している。
【
図12】(A)-(F)は、複数のブロック画像の別の実施例を示す図である。
【
図13】(A)-(F)は、複数のブロック画像の別の実施例を示す図である。(G)は、表示部140に表示される結果画像の例を示している。
【
図14】(A)は、検査処理の別の実施例のフローチャートの一部である。(B)は、近似角度AGと近似倍率SCとの算出式の例を示す図である。
【
図15】検査処理の別の実施例を示すフローチャートである。
【
図16】検査処理用の撮影画像の例を示す図である。
【発明を実施するための形態】
【0013】
A.第1実施例:
A1.装置構成:
図1は、一実施例としてのデータ処理装置を示す説明図である。データ処理装置100は、例えば、パーソナルコンピュータである。本実施例では、製品300(例えば、複合機)に、ラベルLが貼付されている。データ処理装置100は、ラベルLの外観の検査のために、ラベルLの外観を表す画像データを処理する。データ処理装置100は、オブジェクト(本実施例では、ラベルL)の外観を表す画像データを処理する画像処理装置の例である。
【0014】
データ処理装置100は、プロセッサ110と、記憶装置115と、表示部140と、操作部150と、通信インタフェース170と、を備えている。これらの要素は、バスを介して互いに接続されている。記憶装置115は、揮発性記憶装置120と、不揮発性記憶装置130と、を含んでいる。
【0015】
プロセッサ110は、データを処理するように構成された装置である。プロセッサ110は、例えば、CPU(Central Processing Unit)、または、SoC(System on a chip)であってよい。揮発性記憶装置120は、例えば、DRAMであり、不揮発性記憶装置130は、例えば、フラッシュメモリである。不揮発性記憶装置130は、プログラム131と、正常キーポイントD1と、正常ブロックキーポイントD2と、のそれぞれのデータを格納している。これらのデータの詳細については、後述する。
【0016】
表示部140は、液晶ディスプレイ、有機ELディスプレイなどの、画像を表示するように構成された装置である。操作部150は、ボタン、レバー、表示部140上に重ねて配置されたタッチパネルなどの、ユーザによる操作を受け取るように構成された装置である。ユーザは、操作部150を操作することによって、種々の指示をデータ処理装置100に入力可能である。通信インタフェース170は、他の装置と通信するためのインタフェースである。通信インタフェース170は、例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェース、産業用カメラのインタフェース(例えば、CameraLink、CoaXPressなど)、のうちの1種以上を含む。通信インタフェース170には、撮影装置400が接続されている。
【0017】
撮影装置400は、二次元イメージセンサを用いて被写体を撮影することによって、被写体を表す二次元撮影画像のデータを生成する(以下、二次元撮影画像を、単に「撮影画像」とも呼ぶ)。本実施例では、撮影装置400は、いわゆるデジタルカメラである。撮影画像データは、複数個の画素を含む画像を表すビットマップデータである。本実施例では、撮影画像データは、赤Rと緑Gと青Bとの3色成分の階調値によって画素ごとの色を表すRGB画像データである。R値、G値、B値は、例えば、ゼロから255までの256階調で表される。なお、撮影画像データは、他の色成分(例えば、輝度)の階調値によって画素毎の色を表してよい。撮影装置400は、ラベルLが貼付された製品300を撮影して、製品300のうちのラベルLを含む部分の撮影画像を表す撮影画像データを生成する。
【0018】
A2.ラベルと撮影画像:
図2(A)は、製品300の斜視図である。本実施例では、製品300は、複合機である。製品300の製造工程において、製品300の外面の所定の位置にラベルLが貼付される。そして、ラベルLの外観の検査のために、撮影装置400は、製品300上のラベルLを撮影する。ラベルLの撮影時には、撮影装置400の撮影範囲CV内にラベルLが位置するように、製品300に対する撮影装置400の相対的な位置と向きとが調整される。
【0019】
図2(B)は、ラベルLの例を示す図である。本実施例では、ラベルLは、矩形状のシートである。ラベルLの表面SF1(特定面SF1とも呼ぶ)は、製造者名、製造者のロゴ、ブランドロゴ、認証マークなど、種々の情報を表し得る。ラベルLによって表されるべき適切な情報は、製品300に予め対応付けられている。
図2(B)の特定面SF1は、異常の無い特定面を表している。図示を省略するが、ラベルLの裏面には、粘着剤が塗布されている。なお、ラベルLの形状は、矩形に代えて、他の種々の形状であってよい(例えば、円形、楕円形、多角形など)。
【0020】
A3.検査処理:
図3は、検査処理の例を示すフローチャートである。データ処理装置100(
図1)のプロセッサ110は、プログラム131を実行することによって、検査処理を実行する。
図2(A)で説明したように、検査のために、製品300と撮影装置400との間の相対的な配置が調整される。本実施例では、機械(ベルトコンベア、または、ターンテーブルなど)によって製品300の位置と向きとが調整される。製品300の配置の後、検査処理の開始指示が、データ処理装置100に入力される。本実施例では、作業者は、操作部150を操作することによって、開始指示を入力する。プロセッサ110は、開始指示に応じて、検査処理を開始する。なお、製品300の配置は、作業者によって調整されてよい。製品300の位置と向きとに代えて、撮影装置400の位置と向きとが調整されてよい。開始指示は、データ処理装置100とは異なる他の装置によって、通信インタフェース170を介して、データ処理装置100に入力されてよい。
図3の処理は、1個の製品300の検査処理を示している。プロセッサ110は、複数個の製品300のそれぞれを検査するために、
図3の処理を繰り返す。
【0021】
S110では、プロセッサ110は、処理対象のラベルである対象ラベルの特定面の二次元撮影画像のデータを取得する。本実施例では、プロセッサ110は、撮影指示を撮影装置400に供給する。撮影装置400は、撮影指示に応じて、製品300のうちのラベルLを含む部分を撮影し、撮影画像のデータを生成する。プロセッサ110は、撮影装置400から、撮影画像のデータを取得する。
【0022】
図4(A)は、撮影画像の例を示す図である。撮影画像ipは、第1方向Dxに平行な2辺と第2方向Dyに平行な2辺とを有する矩形状の画像である。撮影画像ipは、第1方向Dxと第2方向Dyとに沿ってマトリクス状に並ぶ複数の画素のそれぞれの色値(本実施例では、R、G、Bの階調値)によって、表されている。撮影画像ipは、製品300のうちの対象ラベルLtを含む部分を表している。撮影画像ipは、対象ラベルLtの特定面SF1tを表している(対象面SF1tとも呼ぶ)。対象面SF1tは、異常の無い特定面SF1(
図2(B))とは異なり、傷部分、汚れ部分、誤った情報部分(例えば、誤字)など、種々の異常部分を含み得る。
図4(A)の対象面SF1tは、異常部分AP(ここでは、汚れ部分)を含んでいる。
【0023】
S130(
図3)では、プロセッサ110は、撮影画像のデータを分析することによって、撮影画像からキーポイントを検出する。キーポイントは、画像内でユニークである可能性が高いと期待される点である。例えば、画像内の特徴的な部分を示す点が、キーポイントとして検出される。このようなキーポイントは、画像の追跡や比較に使用可能である。
【0024】
図4(B)は、撮影画像ipから検出されるキーポイントの例を示す図である。図中の複数の黒点pKは、検出される複数のキーポイントを示している(「撮影キーポイントpK」、または、単に「キーポイントpK」と呼ぶ)。図示するように、被写体(例えば、文字、マークなど)のコーナーや端などの特徴的な部分を示す点が、キーポイントpKとして検出される。図中では、3個のキーポイントpK1-pK3に、後述する説明のために、個別の符号が付されている。なお、図示を省略するが、実際には、より多くのキーポイントpKが検出される(例えば、数十、または、数百程度)。
【0025】
キーポイントの検出方法は、種々の方法であってよい。検出方法は、例えば、DoG(Difference-of-Gaussian)を使用する極値(極大値と極小値)の探索と、Harrisのコーナー検出と、FAST(Features from Accelerated Segment Test)のコーナー検出と、から予め選択されてよい。また、キーポイントの検出のために、キーポイントの検出と特徴量記述子の算出とを行うアルゴリズムが採用されてよい。特徴量記述子は、キーポイントの特徴を記述する情報である。キーポイントの検出と特徴量記述子の算出とを行うアルゴリズムは、例えば、SIFT(Scale Invariant Feature Transform)と、SURF(Speeded Up Robust Features)と、ORB(Oriented FAST and Rotated BRIEF)と、から予め選択されてよい。本実施例では、プロセッサ110は、ORBのアルゴリズムに従って、キーポイントを検出する。ORBのアルゴリズムによるキーポイントの検出には、例えば、OpenCV(Open Source Computer Vision Library)の関数「detect」または関数「detectAndCompute」を使用可能である。
【0026】
S140では、プロセッサ110は、二次元撮影画像と二次元正常画像との間のキーポイントマッチングを行う(以下、二次元正常画像を、単に「正常画像」とも呼ぶ)。
図4(C)は、正常画像の例を示す図である。正常画像iqは、異常の無いラベルである正常ラベルLsの画像である。正常画像iqは、正常ラベルLsを表す種々の画像であってよい。本実施例では、製品300の製造工程では、版下画像がシートに印刷されることによって、ラベルLが形成される。この版下画像が、正常画像iqとして使用される。
【0027】
本実施例では、正常画像iqは、撮影画像ip(
図4(B))と同様に、第1方向Dxに平行な2辺と第2方向Dyに平行な2辺とを有する矩形状の画像である。正常画像iqは、第1方向Dxと第2方向Dyとに沿ってマトリクス状に並ぶ複数の画素のそれぞれの色値(本実施例では、R、G、Bの階調値)によって、表されている。なお、正常画像iqの第1方向Dxの画素数は、撮影画像ipの第1方向Dxの画素数と異なり得る。正常画像iqの第2方向Dyの画素数は、撮影画像ipの第2方向Dyの画素数と異なり得る。
【0028】
図4(C)には、正常画像iqから検出されるキーポイントの例が示されている。図中の複数の黒点qKは、検出される複数のキーポイントを示している(「正常キーポイントqK」または、単に「キーポイントqK」と呼ぶ)。図中では、3個のキーポイントqK1-qK3に、後述する説明のために、個別の符号が付されている。なお、図示を省略するが、実際には、より多くのキーポイントqKが検出される(例えば、数十、または、数百程度)。
【0029】
本実施例では、複数の正常キーポイントqKは、S130の検出方法と同じ方法によって、予め検出済である。正常キーポイントD1(
図1)のデータは、検出された複数の正常キーポイントqKを表している。正常キーポイントD1のデータは、予め、記憶装置115(本実施例では、不揮発性記憶装置130)に格納されている。プロセッサ110は、正常キーポイントD1のデータを参照して、複数の正常キーポイントqKを取得する。
【0030】
S140では、プロセッサ110は、複数の撮影キーポイントpKと複数の正常キーポイントqKとの間のマッチングを行う。キーポイントマッチングによって、同じ被写体の同じ部分(例えば、同じ文字の同じコーナー)を示す撮影キーポイントpKと正常キーポイントqKとが対応付けられる。プロセッサ110は、互いに対応付けられるキーポイントpK、qKの複数のペアを、抽出する。以下、互いに対応付けられるキーポイントpK、qKのペアを、マッチングペアとも呼ぶ。
【0031】
図4(D)は、キーポイントマッチングの結果の例を示す図である。図中の複数の線RLは、それぞれ、適切なマッチングペアを示している。各線RLは、マッチングペアを形成するキーポイントpK、qKを接続している。キーポイントpK1、qK1のペアは、同じ四角マークの同じコーナーを示している。キーポイントpK2、qK2のペアは、同じ「L」の文字の同じ端を示している。線RLzは、不適切なマッチングペアを示している。線RLzによって示されるキーポイントpK3、qK3のペアは、互いに異なるマークを示している。このように、キーポイントマッチングの結果は、エラーを含み得る。
【0032】
キーポイントマッチングの方法は、種々の方法であってよい。例えば、プロセッサ110は、キーポイントの特徴量記述子を使用して、キーポイントマッチングを行ってよい。特徴量記述子は、キーポイントの特徴を記述する種々の情報であってよい。特徴量記述子は、例えば、キーポイントの周辺の複数の画素の色値の分布に応じて変化するように、算出される。特徴量記述子の算出方法は、種々の方法であってよい。特徴量記述子の算出のアルゴリズムは、例えば、BRIEF(Binary Robust Independent Elementary Features)と、BRISK(Binary Robust Invariant Scalable Keypoints)と、SIFTと、SURFと、ORBと、から予め選択されてよい。本実施例では、プロセッサ110は、ORBのアルゴリズムに基づく特徴量記述子を使用する。
【0033】
S140では、プロセッサ110は、撮影画像のデータを分析することによって、各撮影キーポイントpKの特徴量記述子を算出する。ORBのアルゴリズムに基づく特徴量記述子の算出には、例えば、OpenCVの関数「compute」を使用可能である。なお、プロセッサ110は、S130で、キーポイントの検出と特徴量記述子の算出とを行ってよい。例えば、プロセッサ110は、OpenCVの関数「detectAndCompute」を実行することによって、複数のキーポイントと各キーポイントの特徴量記述子とを取得できる。この場合、S140では、プロセッサ110は、S130で算出された特徴量記述子を使用する。
【0034】
また、本実施例では、各正常キーポイントqKの特徴量記述子は、キーポイントpKの特徴量記述子の算出方法と同じ方法によって、予め算出済である。正常キーポイントD1(
図1)のデータは、複数の正常キーポイントqKと各正常キーポイントqKの特徴量記述子とを表している。このような正常キーポイントD1のデータは、予め、記憶装置115(本実施例では、不揮発性記憶装置130)に格納されている。プロセッサ110は、正常キーポイントD1のデータを参照して、各正常キーポイントqKの特徴量記述子を取得する。
【0035】
特徴量記述子を使用するキーポイントマッチングの方法は、種々の方法であってよい。マッチングの方法は、例えば、FLANN(Fast Library for Approximate Nearest Neighbor)ベースのマッチングと、総当たりマッチングと、から予め選択されてよい。FLANNベースのマッチングには、例えば、OpenCVの「cv2.FlannBasedMatcher」によるマッチングを使用可能である。総当たりマッチングには、例えば、OpenCVの「cv2.BFMatcher」によるマッチングを使用可能である。本実施例では、プロセッサ110は、総当たりマッチングを行う。
【0036】
総当たりマッチングでは、プロセッサ110は、複数の正常キーポイントqKのうち、注目キーポイントpKまでの距離が最短である正常キーポイントqKを、注目キーポイントpKに対応付ける。2個のキーポイントpK、qKの間の距離は、2個のキーポイントpK、qKの2個の特徴量記述子を使用して、算出される。この距離は、小さい距離が2個の特徴量記述子の高い類似度を示すように、算出される。このような距離の算出方法は、特徴量記述子のデータ構成に適する種々の方法であってよい。ORBとBRIEFとBRISKとの特徴量記述子のように、特徴量記述子がバイナリベクトル(1以上の2値要素で構成されるベクトル)によって表現される場合、プロセッサ110は、ハミング距離を使用してよい。プロセッサ110は、ハミング距離に代えて、他の種々の距離(例えば、L1ノルム、L2ノルム(ユークリッド距離とも呼ばれる)などのノルム)を使用してよい。ノルムは、種々の特徴量記述子に適用可能である。本実施例では、プロセッサ110は、ORBの特徴量記述子の距離として、ハミング距離を使用する。プロセッサ110は、総当たりマッチングによって、各撮影キーポイントpKに対して、最短距離の正常キーポイントqKを対応付ける。
【0037】
ここで、プロセッサ110は、信頼性の低いペアを除く処理を実行してよい。例えば、プロセッサ110は、キーポイントpK、qKの複数のペアを距離の短い順にソートし、上位の一部のペア(例えば、15%のペア)を最終的なペアとして選択してよい。また、プロセッサ110は、マッチングのクロスチェックを行ってよい。u番の撮影キーポイントpKに対するマッチング結果がv番の正常キーポイントqKである場合に、v番の正常キーポイントqKに対するマッチング結果がu番の撮影キーポイントpKとは異なる場合がある。クロスチェックは、キーポイントpK、qKのペアの間でマッチング結果が一貫していない場合に、そのペアを取り除く。
【0038】
S150(
図3)では、プロセッサ110は、キーポイントマッチングの結果に従って、ホモグラフィ行列を算出する。ホモグラフィ行列は、ホモグラフィ(射影変換とも呼ばれる)を表す行列である。ホモグラフィは、同じシーンの2つの投影平面の間のマッピングを示している。ホモグラフィによって、直線は直線に変換され、四角形は四角形に変換される。矩形は、台形に変換され得る。
【0039】
図5(A)は、ホモグラフィ行列の例を示す図である。ホモグラフィ行列Hは、撮影画像ip上の点の位置Cipと、正常画像iq上の点の位置Ciqと、の間の対応関係を表している。図中では、位置Cip、Ciqは、いわゆる同次座標(射影座標とも呼ばれる)で表されている。位置Cipの2個の座標x、yは、撮影画像ip(
図4(A))上の互いに垂直な2つの方向Dx、Dyのそれぞれの位置を示している(例えば、画素位置)。これらの座標x、yは、撮影画像ip上の点の位置を表す二次元のデカルト座標系の座標を示している。位置Cipの3番目の座標は、1に固定されている。位置Ciqについても、同様である。位置Ciqの2個の座標x’、y’は、正常画像iq(
図4(C))上の互いに垂直な2つの方向Dx、Dyのそれぞれの位置を示している。これらの座標x’、y’は、正常画像iq上の点の位置を表す二次元のデカルト座標系の座標を示している。位置Cipの座標(x、y、1)にホモグラフィ行列Hを乗じることによって、座標(Z*x’、Z*y’、Z)が得られる(「*」は乗算記号である)。1番と2番の成分(Z*x’、Z*y’)を3番の成分Zで除算することによって、座標x’、y’が得られる。
【0040】
ホモグラフィ行列Hは、同次座標で表される2つの位置Cip、Ciqの間の対応関係を表している。ホモグラフィ行列Hは、3行3列の行列で表される。要素hijは、i行j列の要素を示している。最も右下の要素h33は、1に固定されている。このように、ホモグラフィ行列Hは、8の自由度を有している。残りの8個の要素は、3個の部分行列SM1、SM2、SM3に区分される。第1部分行列SM1は、4個の要素h11、h12、h21、h22で構成される部分行列である。第2部分行列SM2は、2個の要素h13、h23で構成される部分行列である。第3部分行列SM3は、2個の要素h31、h32で構成される部分行列である。
【0041】
第1部分行列SM1の4個の要素h11、h12、h21、h22は、回転とスケーリング(拡大または縮小)とスキューとを含む座標変換を表している(スキューは、矩形を平行四辺形に変換し得る)。この座標変換は、撮影画像ip上の位置を示す二次元座標系(すなわち、座標x、yを示す二次元座標系)と、正常画像iq上の位置を示す二次元座標系(すなわち、座標x’、y’を示す二次元座標系)と、の間の座標変換である。
【0042】
図5(B)は、座標変換を表すホモグラフィ行列の例を示している。図中には、4個のホモグラフィ行列H1-H4が示されている。これらのホモグラフィ行列H1-H4では、部分行列SM2、SM3の要素はゼロである。
【0043】
第1ホモグラフィ行列H1は、角度Tの回転を表している。h11=h22=cos(T)であり、h12=-sin(T)であり、h21=sin(T)である。
【0044】
第2ホモグラフィ行列H2は、倍率Uのスケーリングを表している。h11=h22=Uであり、h12=h21=ゼロである。なお、x軸とy軸との間で、倍率が異なってよい。h11は、x軸の倍率を示し、h22はy軸の倍率を示している。
【0045】
ホモグラフィ行列H3、H4は、角度Vのスキューを表している。第3ホモグラフィ行列H3では、h12=tan(V)であり、h11=h22=1であり、h21=ゼロである。第3ホモグラフィ行列H3は、y軸を角度Vで傾斜させる。第4ホモグラフィ行列H4は、第3ホモグラフィ行列H3のh12とh21を交換して得られる行列である。第4ホモグラフィ行列H4は、x軸を角度Vで傾斜させる。
【0046】
ホモグラフィ行列H(
図5(A))の第1部分行列SM1は、回転とスケーリングとスキューとを含む複数種類の座標変換をそれぞれ表す複数の行列(例えば、ホモグラフィ行列H1、H2、H3、H4の第1部分行列SM1)の積に分解され得る。
【0047】
第2部分行列SM2(
図5(A))の2個の要素h13、h23は、座標x、yを示す二次元座標系と、座標x’、y’を示す二次元座標系と、の間の平行移動を示している。第3部分行列SM3の2個の要素h31、h32は、座標x、yに応じて成分Zを変化させる。要素h31、h32は、矩形を台形に変換し得る。
【0048】
ホモグラフィ行列Hの8個の要素h11-h13、h21-h23、h31、h32は、位置Cip、Ciqの4個以上の対応関係を使用することによって、決定可能である。例えば、キーポイントpK、qK(
図4(B))の4組のマッチングペアを使用することによって、ホモグラフィ行列Hは決定可能である。
【0049】
マッチングペアのキーポイントpK、qK(
図4(B))のそれぞれの座標は、誤差を含み得る。例えば、撮影キーポイントpKの対象ラベルLt上の位置は、撮影キーポイントpKに対応付けられる正常キーポイントqKの正常ラベルLs上の位置から、ズレ得る。このような誤差の影響を緩和するために、本実施例では、プロセッサ110は、4個よりも多い数のマッチングペアを使用して、ホモグラフィ行列Hの8個の要素を算出する。
【0050】
ホモグラフィ行列Hの算出方法は、種々の方法であってよい。ホモグラフィ行列Hの算出方法は、例えば、単純な最小二乗法、または、ロバスト法であってよい。
【0051】
最小二乗法では、誤差の2乗和が最小となるように、ホモグラフィ行列Hが算出される。ここで、誤差の2乗和としては、第1方向Dxの位置の差の2乗と、第2方向Dyの位置の差の2乗と、の和が使用されてよい。これらの位置の差は、ホモグラフィ行列Hによって撮影キーポイントpKを変換することによって得られる変換済の点と、撮影キーポイントpKに対応付けられる正常キーポイントqKと、の間の位置の差を示している。1組のマッチングペアからは、変換済の点と正常キーポイントqKとの間のユークリッド距離の2乗が算出される。誤差の2乗和は、複数のマッチングペアから算出される複数の距離の2乗和であってよい。本実施例では、誤差の2乗和の算出には、複数のマッチングペアの全てが使用される。これに代えて、特徴量記述子の小さい距離を有する一部の複数のマッチングペアが、使用されてよい。
【0052】
ロバスト法は、不適切なマッチングペアの影響を緩和可能な種々の方法であってよい。ロバスト法としては、例えば、RANSAC(Random sample consensus)に基づく方法が採用されてよい。RANSACに基づく方法では、4組のマッチングペアが、ランダムに選択される。4組のマッチングペアを使用して、ホモグラフィ行列Hの候補が算出される。ホモグラフィ行列Hの候補の算出方法は、例えば、最小二乗法であってよい。ホモグラフィ行列Hの候補に従って、複数の撮影キーポイントpKが変換される。変換済の点と正常キーポイントqKとの間の誤差(例えば、ユークリッド距離)が、複数のマッチングペアのそれぞれについて、算出される。複数のマッチングペアの複数の誤差を使用して、ホモグラフィ行列Hの候補の質の高さを示すスコアが算出される。スコアは、例えば、予め決められた閾値以下の誤差を有するマッチングペア(「inlier」とも呼ばれる)の総数であってよい。4組のマッチングペアの選択と、ホモグラフィ行列Hの候補の算出と、スコアの算出と、を含む処理は、複数回、行われる。ホモグラフィ行列Hの複数の候補のうち最高のスコアを有する候補が、ホモグラフィ行列Hとして採用される。
【0053】
本実施例では、プロセッサ110は、RANSACに基づく方法に従って、ホモグラフィ行列Hを算出する。RANSACに基づくホモグラフィ行列Hの算出には、例えば、OpenCVの関数「cv2.findHomography」を使用可能である。この関数では、フラグの設定によって、RANSACとは異なる種々のアルゴリズムを使用可能である。例えば、単純な最小二乗法を選択可能である。また、ロバスト法として、RANSACに代えて、LMedS(least-median of squares)、または、RHO、を選択可能である。ホモグラフィ行列Hの算出のアルゴリズムは、RANSACに代えて、これらのアルゴリズムから選択されてよい。
【0054】
S190(
図3)では、プロセッサ110は、ホモグラフィ行列に従って撮影画像のホモグラフィ変換を行って、変換済画像のデータを生成する。
図5(C)は、変換済画像の例を示している。図中の変換済画像ipcは、撮影画像ipのホモグラフィ変換によって生成される画像の例を示している。ホモグラフィ変換には、撮影画像ipと正常画像iqとを使用して算出されるホモグラフィ行列Hが使用される。図示するように、変換済画像ipc中で、対象ラベルLtの位置と向きと大きさとは、正常画像iq中の正常ラベルLsの位置と向きと大きさと、おおよそ同じである。なお、図中では、変換済画像ipcのうちの対象ラベルLtの外の部分の図示が省略されている。また、ホモグラフィ変換には、例えば、OpenCVの関数「cv2.warpPerspective」を使用可能である。
【0055】
S195(
図3)では、プロセッサ110は、異常判断処理を実行する。この処理では、プロセッサ110は、変換済画像と正常画像とを比較することによって、異常の有無を判断する。
【0056】
図6は、異常判断処理の例を示すフローチャートである。S210では、プロセッサ110は、変換済画像のデータから複数のブロック画像のそれぞれのデータを取得する。
図7(A)-
図7(F)は、複数のブロック画像の説明図である。本実施例では、複数のブロック画像のそれぞれの位置と大きさと形状とは、正常画像iqを複数のブロックに分割することによって、予め決められている。
図7(A)は、正常画像iqを表し、
図7(B)は、正常画像iqに含まれる複数のブロック画像qa1-qa9を表している(ブロック画像の内容の図示は、省略されている)。本実施例では、正常画像iqは、第1方向Dxに3等分され、第2方向Dyに3等分されることによって、9個のブロック画像qa1-qa9に分割される。
図7(C)は、
図7(A)の正常画像iqから得られるブロック画像qa1-qa9のそれぞれの内容を表している。ブロック画像qa1-qa9は、正常ラベルLsの特定面SF1の互いに異なる一部分を表している。以下、正常画像iqのブロック画像qa1-qa9を、正常ブロック画像qa1-qa9と呼ぶ。
【0057】
図7(D)は、変換済画像ipcを表している。変換済画像ipc中には、輪郭LOが示されている。この輪郭LOは、正常画像iq(
図7(A))上の正常ラベルLsの輪郭LOを、変換済画像ipc上に重ねたものである(以下、輪郭LOを、正常輪郭LOと呼ぶ)。変換済画像ipc上の正常輪郭LOの位置は、正常画像iq上の正常輪郭LOの位置と同じである。正常輪郭LOは、対象ラベルLtの輪郭と、おおよそ一致している。
【0058】
図7(E)は、変換済画像ipcに含まれる複数のブロック画像pa1-pa9を表している(ブロック画像の内容の図示は、省略されている)。以下、変換済画像ipcのブロック画像pa1-pa9を、対象ブロック画像pa1-pa9と呼ぶ。対象ブロック画像pa1-pa9は、正常画像iq(
図7(B))の正常ブロック画像qa1-qa9に、それぞれ対応付けられている。互いに対応付けられる対象ブロック画像と正常ブロック画像との間では、正常輪郭LOに対する位置と大きさと形状とは、それぞれ同じである。例えば、正常輪郭LOに対する第1対象ブロック画像pa1の位置と大きさと形状とは、正常輪郭LOに対する第1正常ブロック画像qa1の位置と大きさと形状と、それぞれ同じである。
【0059】
図7(F)は、
図7(D)の変換済画像ipcから得られる対象ブロック画像pa1-pa9のそれぞれの内容を表している。対象ブロック画像pa1-pa9は、対象ラベルLtの対象面SF1tの互いに異なる一部分を表している。
図5(C)で説明したように、変換済画像ipc中の対象ラベルLtの位置と向きと大きさとは、正常画像iq中の正常ラベルLsの位置と向きと大きさと、それぞれ、おおよそ同じである。従って、互いに対応付けられる対象ブロック画像と正常ブロック画像とは、ラベルLt、Lsの対象面SF1t、SF1のおおよそ同じ部分を表している。例えば、対象ラベルLtの対象面SF1tのうちの第1対象ブロック画像pa1によって表される部分は、正常ラベルLsの特定面SF1のうちの第1正常ブロック画像qa1(
図7(C))によって表される部分と、おおよそ同じである。なお、第1対象ブロック画像pa1は、さらに、異常部分APを表している。
【0060】
S210(
図6)では、プロセッサ110は、変換済画像ipc(
図7(E))のうちの対象ブロック画像pa1-pa9に対応する部分を分割することによって、対象ブロック画像pa1-pa9のデータを取得する。
【0061】
S220では、プロセッサ110は、複数の対象ブロック画像pa1-pa9から、未処理の対象ブロック画像を、処理対象のブロック画像である注目ブロック画像として選択する。
【0062】
S230では、プロセッサ110は、注目ブロック画像のデータを分析することによって、注目ブロック画像からキーポイントを検出する。キーポイントの検出方法は、S130(
図3)の方法と同じである。本実施例では、プロセッサ110は、ORBのアルゴリズムに従って、複数のキーポイントと各キーポイントの特徴量記述子とを取得する。
【0063】
S240では、プロセッサ110は、注目ブロック画像と、注目ブロック画像に対応付けられる正常ブロック画像と、の間のキーポイントマッチングを行う。キーポイントマッチングの方法は、S140(
図3)の方法と同じである。本実施例では、プロセッサ110は、注目ブロック画像の複数のキーポイントのそれぞれの特徴量記述子と、正常ブロック画像の複数のキーポイントのそれぞれの特徴量記述子と、を使用して、キーポイントマッチングを行う。
【0064】
本実施例では、正常ブロック画像qa1-qa9(
図7(B))のそれぞれの複数のキーポイントと各キーポイントの特徴量記述子とは、S230の方法と同じ方法によって、予め取得済である。正常ブロックキーポイントD2(
図1)のデータは、正常ブロック画像qa1-qa9のそれぞれの複数のキーポイントと、各キーポイントの特徴量記述子と、を表している。このような正常ブロックキーポイントD2のデータは、予め、記憶装置115(本実施例では、不揮発性記憶装置130)に格納されている。プロセッサ110は、正常ブロックキーポイントD2のデータを参照して、複数のキーポイントと、各キーポイントの特徴量記述子と、を取得する。
【0065】
図7(G)、
図7(H)は、キーポイントマッチングの結果の例を示す図である。
図7(G)は、注目ブロック画像が第2対象ブロック画像pa2である場合を示している。プロセッサ110は、第2対象ブロック画像pa2の複数のキーポイントpa2Kと、第2正常ブロック画像qa2の複数のキーポイントqa2Kと、のマッチングを行う。図中の複数の線RLは、それぞれ、適切なマッチングペアを示している。
【0066】
図7(H)は、注目ブロック画像が第1対象ブロック画像pa1である場合を示している。第1対象ブロック画像pa1からは、S230(
図6)で、複数のキーポイントpa1Kが検出される。第1対象ブロック画像pa1は、異常部分APを含んでいる。異常部分APは、対象面SF1tの本来の特徴的な部分を改変し得る。例えば、
図7(H)の第1対象ブロック画像pa1中では、「X」の文字の一部が、異常部分APによって隠されている。この結果、「X」の文字の特徴的な部分を示すキーポイントが、検出されない場合がある。また、異常部分APは、本来の対象面SF1tには無い新たな特徴部分を形成し得る。例えば、第1対象ブロック画像pa1中では、異常部分APは、「A」の文字の一部分と重なっている。この重なる部分から、新たなキーポイント(例えば、キーポイントpa1K1)が検出される場合がある。このように、検出されるべきではないキーポイントが、異常部分APに起因して、検出される場合がある。
【0067】
プロセッサ110は、第1対象ブロック画像pa1の複数のキーポイントpa1Kと、第1正常ブロック画像qa1の複数のキーポイントqa1Kと、のマッチングを行う。図中の複数の線RLは、それぞれ、適切なマッチングペアを示している。図中の複数の線RLzは、それぞれ、不適切なマッチングペアを示している。不適切なマッチングペアが形成される可能性は、異常部分APに起因して、増大する。
【0068】
このように、注目ブロック画像が異常部分を含む場合(例えば、
図7(H))、注目ブロック画像が異常部分を含まない場合(例えば、
図7(G))と比べて、複数のマッチングペアの総数に対する不適切なマッチングペアの総数の割合は高くなり易い。
【0069】
S250(
図6)では、プロセッサ110は、キーポイントマッチングの結果に従って、注目ブロック画像のホモグラフィ行列を算出する。ホモグラフィ行列の算出方法は、S150(
図3)の方法と同じである。
【0070】
図8は、S250で算出されるホモグラフィ行列の例を示している。9個のホモグラフィ行列Ha1-Ha9は、9個の対象ブロック画像pa1-pa9に、それぞれ対応している。ホモグラフィ行列Ha1-Ha9は、対象ブロック画像pa1-pa9(
図7(F))上の位置と、対応する正常ブロック画像qa1-qa9(
図7(C))上の位置と、の間の対応関係を示している。図中では、ホモグラフィ行列の9個の要素のうち、第1部分行列SM1(
図5(A))の4個の要素が示されている。S190(
図3)、
図5(C)で説明したように、正常画像iqと変換済画像ipcとの間では、ラベルLs、Ltの位置と向きと大きさとはおおよそ同じである。互いに対応付けられる対象ブロック画像と正常ブロック画像との間では、回転角度はおおよそゼロであり、スケーリング倍率はおおよそ1であり、スキューの角度はおおよそゼロである。従って、第1部分行列SM1が単位行列であることが、期待される。
【0071】
ホモグラフィ行列の算出には、不適切なマッチングペアが使用され得る。以下、ホモグラフィ行列の算出に使用される複数のマッチングペアのうち、不適切なマッチングペアの数の割合を、不適切ペア割合と呼ぶ。第2対象ブロック画像pa2(
図7(G))のように、対象ブロック画像中の異常部分の割合が小さい場合、異常部分の割合が大きい場合と比べて、不適切ペア割合が小さいことが期待される。不適切ペア割合が小さい場合、不適切ペア割合が大きい場合と比べて、第1部分行列SM1と単位行列との間の差は小さい。
図7(F)に示すように、第1対象ブロック画像pa1以外の8個の対象ブロック画像pa2-pa9では、異常部分の割合が小さい(7個の対象ブロック画像pa2、pa3、pa5-pa9は、異常部分を含んでいない)。これら8個の対象ブロック画像pa2-pa9に対応する8個のホモグラフィ行列Ha2-Ha9(
図8)の8個の第1部分行列SM1は、それぞれ、単位行列に近い。具体的には、2個の対角成分(要素h11、h22(
図5(A)))は、おおよそ1であり、他の2個の成分(h12、h21(
図5(A)))は、おおよそゼロである。
【0072】
第1対象ブロック画像pa1(
図7(H))のように、対象ブロック画像中の異常部分の割合が大きい場合、異常部分の割合が小さい場合と比べて、不適切ペア割合が大きいことが期待される。不適切ペア割合が大きい場合、不適切ペア割合が小さい場合と比べて、第1部分行列SM1と単位行列との間の差は大きい。第1対象ブロック画像pa1に対応するホモグラフィ行列Ha1(
図8)の第1部分行列SM1と、単位行列と、の間の差は大きい。具体的には、対角成分(要素h11、h22(
図5(A)))と1との間の差が大きく、他の成分(h12、h21(
図5(A)))とゼロとの間の差が大きい。
【0073】
S260(
図6)では、プロセッサ110は、全ての対象ブロック画像が処理されたか否かを判断する。未処理の対象ブロック画像が残っている場合(S260:No)、プロセッサ110は、S220へ移行して、新たな対象ブロック画像を処理する。
【0074】
全ての対象ブロック画像の処理が完了した場合(S260:Yes)、S270で、プロセッサ110は、全ての対象ブロック画像のそれぞれのホモグラフィ行列の異常指標値Adを算出する。
図9(A)-
図9(C)は、異常指標値Adの算出式の例の説明図である。
図9(A)には、2個の行列Ma、Mbと、単位行列IMと、が示されている。これらの行列Ma、Mb、IAは、ホモグラフィ行列と同様に、3行3列の行列である。図中では、第1部分行列SM1の4個の要素が示されている。行列Ma、Mbの要素aij、bijは、それぞれ、i行j列の要素を示している。
【0075】
図9(B)は、2個の行列Ma、Mbの間の距離dの算出式の例を示している。本実施例では、距離dは、第1部分行列SM1の4個の要素のそれぞれの差の絶対値の和である。
【0076】
図9(C)は、ホモグラフィ行列Hの異常指標値Adの算出式の例を示している。本実施例では、ホモグラフィ行列Hの異常指標値Adは、ホモグラフィ行列Hと単位行列IMとの間の距離dを示している。異常指標値Adは、対角成分h11と「1」との間の差の絶対値と、対角成分h22と「1」との間の差の絶対値と、他の2個の成分h12、h21のそれぞれの絶対値と、の和である。このような異常指標値Adは、ホモグラフィ行列Hと単位行列IMとの間のズレが大きいほど、大きい。例えば、ホモグラフィ行列Ha1(
図8)の異常指標値Adは、他のホモグラフィ行列Ha2-Ha9の異常指標値Adと比べて、大きくなる。
【0077】
S280(
図6)では、プロセッサ110は、異常ブロック検出処理を実行する。
図10は、異常ブロック検出処理の例を示すフローチャートである。
図10の処理は、1個の対象ブロック画像のための処理を示している。プロセッサ110は、複数の対象ブロック画像pa1-pa9のそれぞれに対して、
図10の処理を実行する。
【0078】
S310では、プロセッサ110は、対象ブロック画像の異常指標値Adが閾値Adth以上であるか否かを判断する。異常指標値Adが閾値Adth以上である場合(S310:Yes)、S320で、プロセッサ110は、対象ブロック画像が異常部分を有する異常ブロック画像であると判断し、
図10の処理を終了する。異常指標値Adが閾値Adth未満である場合(S310:No)、S330で、プロセッサ110は、対象ブロック画像は異常ブロック画像ではないと判断し、
図10の処理を終了する。
【0079】
閾値Adthは、異常部分を含む対象ブロック画像の異常指標値Adが閾値Adth以上であり、異常部分を含まない対象ブロック画像の異常指標値Adが閾値Adth未満であるように、予め実験的に決定される。これにより、異常部分APを含む第1対象ブロック画像pa1(
図7(F))の異常指標値Adは、閾値Adth以上であり得る。他の対象ブロック画像pa2-pa9の異常指標値Adは、閾値Adth未満であり得る。
【0080】
S290(
図6)では、プロセッサ110は、異常ブロック画像を示すデータを出力する。例えば、プロセッサ110は、変換済画像ipcと、変換済画像ipc上の異常ブロック画像と、を表す結果画像のデータを表示部140に出力することによって、結果画像を表示部140に表示させる。
図11は、表示部140に表示される結果画像の例を示している。結果画像ipcdは、対象ラベルLtと、異常ブロック画像を示すマークAzと、を表している。
図11の例では、マークAzは、異常ブロック画像(ここでは、第1対象ブロック画像pa1)の輪郭を示している。作業者は、結果画像ipcdを観察することによって、マークAzによって示される異常部分APを、容易に認識できる。また、プロセッサ110は、異常ブロック画像を示す結果データ(例えば、異常ブロック画像の識別番号を示すデータ)を、記憶装置115(例えば、不揮発性記憶装置130)に出力してよい。すなわち、プロセッサ110は、結果データを記憶装置に格納してよい。結果データは、異常ブロック画像の検出結果を参照する種々の処理に使用可能である。例えば、異常部分を有するラベルが貼付された製品300を製造ラインから取り除く処理が、結果データを参照して行われてよい。
【0081】
S290(
図5)の後、プロセッサ110は、
図6の処理、すなわち、
図3のS195の処理を終了する。そして、
図3の処理が終了する。
【0082】
以上のように、本実施例では、データ処理装置100(
図1)のプロセッサ110は、以下の処理を実行する。S110(
図3)では、プロセッサ110は、二次元の撮影画像ip(
図4(A))のデータを取得する。撮影画像ipは、対象ラベルLtの特定面SF1tを表している。対象ラベルLtは、処理対象のオブジェクトである対象オブジェクトの例である。S130、S140では、プロセッサ110は、撮影画像ipと正常画像iqとの間のキーポイントマッチングを行う。正常画像iqは、正常な特定面SF1(
図2(B))を表している。なお、本実施例では、正常画像iqのキーポイントを表す正常キーポイントD1(
図1)のデータが、予め準備されている。従って、正常画像iqからキーポイントを検出する処理は、省略される。S150、S190では、プロセッサ110は、撮影画像ipに対して、キーポイントマッチングの結果に従ってホモグラフィ変換を行うことによって、変換済画像ipc(
図5(C))のデータを生成する。撮影画像ipは、ホモグラフィ変換の対象の画像である第1画像の例である。正常画像iqは、撮影画像ipと正常画像iqとのうちの第1画像(ここでは、撮影画像ip)とは異なる第2画像の例である。
【0083】
S195では、プロセッサ110は、正常画像iqと変換済画像ipcとを比較して、対象ラベルLtの特定面SF1tが異常を有するか否かを判断する異常判断処理を実行する。本実施例では、S195の処理は、S230、S240、S250(
図6)を含んでいる。S230、S240、S250では、プロセッサ110は、変換済画像ipcの対象ブロック画像pa1-pa9(
図7(F))と、正常画像iqの正常ブロック画像qa1-qa9(
図7(C))と、を対応付けるホモグラフィ行列Ha1-Ha9(
図8)を算出する。ホモグラフィ行列Ha1-Ha9は、変換済画像ipcと正常画像iqとの間の差異に応じて変化する。ホモグラフィ行列Ha1-Ha9は、変換済画像ipcと正常画像iqとの比較結果の例である。
【0084】
S195の処理は、さらに、S270、S280(
図6)を含んでいる。S270、S280では、プロセッサ110は、ホモグラフィ行列Ha1-Ha9を使用して、対象ブロック画像pa1-pa9が異常ブロックであるか否かを判断する。
【0085】
このように、プロセッサ110は、ホモグラフィ変換による変換済画像ipcと、正常画像iqと、を比較して、対象ラベルLtの対象面SF1tが異常を有するか否かを判断する。ホモグラフィ変換によって、撮影画像ipと正常画像iqとの間の投影平面の差異が異常の判断に与える影響は、緩和される。例えば、撮影装置400(
図2(A))が矩形の対象ラベルLtを斜めの方向から撮影する場合、撮影画像ip上では、対象ラベルLtの形状は矩形と異なる形状(例えば、台形)であり得る。撮影画像ip上の対象ラベルLtの形状と、正常画像iq上の正常ラベルLsの形状と、の間の差異は、異常の判断に影響し得る。本実施例では、ホモグラフィ変換による変換済画像ipcと正常画像iqとが比較されるので、撮影画像ipと正常画像iqとの間のラベルLt、Lsの形状の差異(すなわち、投影平面の差異)の影響は、緩和される。
【0086】
また、ホモグラフィ行列H、Ha1-Ha9は、機械学習モデルの訓練のような高い負荷の準備をせずに、算出可能である。本実施例では、対象面SF1tが異常を有するか否かの判断に機械学習モデルを使用する場合と比べて、準備の負担を軽減できる。
【0087】
また、本実施例では、S195(
図3)の処理は、
図6のS210、S230、S240、S250、S270、S280を含んでいる。S210では、
図7(D)-
図7(F)に示すように、プロセッサ110は、N個(本実施例では、N=9)の対象ブロック画像pa1-pa9を、変換済画像ipcから取得する。対象ブロック画像は、変換済画像から取得される第1種部分画像の例である。N個の対象ブロック画像pa1-pa9は、変換済画像ipcによって表される対象面SF1tのうちの互いに異なる部分を含んでいる。
【0088】
S230、S240では、プロセッサ110は、互いに対応付けられる対象ブロック画像と正常ブロック画像とのN個の組み合わせのそれぞれのキーポイントマッチングを行う。正常ブロック画像qa1-qa9(
図7(C))は、キーポイントマッチングによって第1種部分画像(本実施例では、対象ブロック画像)と照合される第2種部分画像の例である。N個の組み合わせを形成するN個の正常ブロック画像qa1-qa9は、正常画像iqによって表される特定面SF1のうちの互いに異なる部分を含んでいる。正常ブロック画像に含まれる特定面SF1の部分は、正常ブロック画像に対応付けられる対象ブロック画像に含まれる対象面SF1tの部分と共通する部分を含んでいる。例えば、特定面SF1(
図7(C))のうちの第1正常ブロック画像qa1に含まれる部分は、対象面SF1t(
図7(F))のうちの第1対象ブロック画像pa1に含まれる部分と共通する部分(ここでは、「EXA」の文字を表す部分)を含んでいる。
【0089】
S250では、プロセッサ110は、キーポイントマッチングのN個の結果に従ってN個のホモグラフィ行列Ha1-Ha9(
図8)を算出する。S270では、プロセッサ110は、N個のホモグラフィ行列Ha1-Ha9(
図8)のそれぞれの異常指標値Adを算出する。
図9(A)-
図9(C)で説明したように、異常指標値Adは、ホモグラフィ行列と単位行列IMとの間の差異の程度を示している。
【0090】
S280では、プロセッサ110は、異常指標値Adと閾値Adthとを比較することによって(
図10:S310)、対象ブロック画像が異常ブロック画像であるか否かを判断する。この判断は、N個の対象ブロック画像pa1-pa9のそれぞれに対して、行われる。1個以上の対象ブロック画像が異常ブロック画像であるという判断結果は、対象ラベルLtの対象面SF1tが異常を有するという判断結果を示している。全ての対象ブロック画像が異常ブロック画像ではないという判断結果は、対象ラベルLtの対象面SF1tが異常を有していないという判断結果を示している。このように、プロセッサ110は、N個のホモグラフィ行列Ha1-Ha9を使用して、対象ラベルLtの対象面SF1tが異常を有するか否かを判断している。
【0091】
このように、プロセッサ110は、ホモグラフィ行列Ha1-Ha9と単位行列IMとの間の差異の程度を示す異常指標値Adと、差異の程度の基準を示す閾値Adth、との比較によって、対象面SF1tが異常を有するか否かを適切に判断できる。
【0092】
また、本実施例では、プロセッサ110は、キーポイントを使用して、対象面SF1tが異常を有するか否かを判断する。従って、撮影画像ipがボケやノイズを含む場合であっても、適切な判断が可能である。
【0093】
なお、変換済画像ipc(
図5(C))は、撮影画像ipのホモグラフィ変換によって生成される。変換済画像ipcと撮影画像ipとは、同じシーン(ここでは、撮影された対象ラベルLt)を表している(ただし、投影平面は、変換済画像ipcと撮影画像ipとの間で異なっている)。このように、変換済画像ipcは、撮影画像の一種である。以下、撮影画像ipを、第1種撮影画像ipとも呼び、変換済画像ipcを、第2種撮影画像ipcとも呼ぶ。変換済画像ipcが撮影画像の一種であるという観点から本実施例を見ると、本実施例の説明において、「変換済画像ipc」は、「第2種撮影画像ipc」に読み替えられてよい。プロセッサ110は、このような読み替えによって説明される処理を、実行する。S110-S190(
図3)では、プロセッサ110は、対象ラベルLtの特定面SF1tの第2種撮影画像ipcのデータを取得する。S195では、プロセッサ110は、第2種撮影画像ipcと正常画像iqとを比較して、対象ラベルLtの特定面SF1tが異常を有するか否かを判断する異常判断処理を実行する。
【0094】
S195の処理は、
図6のS210、S230、S240、S250、S270、S280を含んでいる。これらのステップでは、N個(本実施例では、N=9)の対象ブロック画像pa1-pa9(
図7(D)-
図7(F))と、N個の正常ブロック画像qa1-qa9(
図7(A)-
図7(C))とが、使用される。N個の対象ブロック画像pa1-pa9は、第2種撮影画像ipcから取得される第1種部分画像の例である。N個の正常ブロック画像qa1-qa9は、キーポイントマッチングによって第1種部分画像(本実施例では、対象ブロック画像)と照合される第2種部分画像の例である。
【0095】
S210、S230、S240、S250、S270、S280について上述したように、プロセッサ110は、ホモグラフィ行列Ha1-Ha9と単位行列IMとの間の差異の程度を示す異常指標値Adと、差異の程度の基準を示す閾値Adth、との比較によって、対象面SF1tが異常を有するか否かを適切に判断できる。ここで、ホモグラフィ行列Ha1-Ha9は、第2種撮影画像ipcと正常画像iqとを使用して、算出される。
【0096】
また、「変換済画像ipc」を「第2種撮影画像ipc」に読み替えるか否かに拘わらず、本実施例では、N個のホモグラフィ行列Ha1-Ha9(
図8)は、以下のように説明可能である。N個のホモグラフィ行列Ha1-Ha9のそれぞれは、2行2列の要素で構成される第1部分行列SM1を含んでいる。
図5(A)、
図5(B)で説明したように、第1部分行列SM1は、変換前の2次元座標系と変換後の二次元座標系との間の回転とスケーリングと含む座標変換を表している。すなわち、N個のホモグラフィ行列Ha1-Ha9のそれぞれの第1部分行列SM1は、対象ブロック画像上の位置を示す二次元座標系と、正常ブロック画像上の位置を示す二次元座標系と、の間の回転とスケーリングとを含む座標変換を表している。
【0097】
S270(
図6)、
図9(A)-
図9(C)で説明したように、異常指標値Adは、2行2列の第1部分行列SM1と、2行2列の単位行列と、の間の差異の程度を示している。第2対象ブロック画像pa2(
図7(G))のように、対象ブロック画像中の異常部分の割合が小さい場合、第1部分行列SM1と単位行列との間の差が小さいことが期待される。第1対象ブロック画像pa1(
図7(H))のように、対象ブロック画像中の異常部分の割合が大きい場合、第1部分行列SM1と単位行列との間の差が大きいことが期待される。プロセッサ110は、このような異常指標値Adを使用することによって、対象ラベルLtの対象面SF1tが異常を有するか否かを適切に判断できる。
【0098】
B.第2実施例:
図12(A)-
図12(F)は、
図13(A)-
図13(F)は、
図6の異常判断処理で使用される複数のブロック画像の別の実施例を示す図である。
図7(B)、
図7(E)の第1実施例との差異は、複数のブロック画像が、1以上の他のブロック画像と部分的に重なる重畳ブロック画像を含む点である。複数のブロック画像の構成が異なる点を除いて、異常判断処理は、第1実施例の異常判断処理と同じである。
【0099】
図12(A)-
図12(D)は、正常画像iqに含まれる複数の正常ブロック画像qa1-qa9、qb1-qb6、qc1-qc6、qd1-qd4を、それぞれ表している(ブロック画像の内容の図示は、省略されている)。
図12(A)の正常ブロック画像qa1-qa9は、
図7(B)の正常ブロック画像qa1-qa9と、それぞれ同じである。以下、正常ブロック画像qa1-qa9を、第1種正常ブロック画像qa1-qa9と呼ぶ。
【0100】
図12(B)の第2種正常ブロック画像qb1-qb6の領域は、
図12(A)の第1種正常ブロック画像qa1、qa2、qa4、qa5、qa7、qa8の領域を第1方向Dxに移動させることによって、それぞれ形成される。移動量は、1個のブロック画像の第1方向Dxの長さの半分である。
【0101】
図12(C)の第3種正常ブロック画像qc1-qc6の領域は、
図12(A)の第1種正常ブロック画像qa1-qa6の領域を第2方向Dyに移動させることによって、それぞれ形成される。移動量は、1個のブロック画像の第2方向Dyの長さの半分である。
【0102】
図12(D)の第4種正常ブロック画像qd1-qd4の領域は、
図12(B)の第2種正常ブロック画像qb1-qb4の領域を第2方向Dyに移動させることによって、それぞれ形成される。移動量は、1個のブロック画像の第2方向Dyの長さの半分である。
【0103】
このように、第1種と第2種と第3種と第4種との正常ブロック画像の間では、形状と大きさとは、それぞれ同じである。また、第1種と第2種と第3種と第4種との正常ブロック画像の間では、第1方向Dxの位置のズレ量と、第2方向Dyの位置のズレ量と、のうちの一方、または、両方が、1個のブロック画像の長さの倍数に1個のブロック画像の長さの半分を加算した値である。従って、1個のブロック画像は、1以上の他の種類のブロック画像と、部分的に重なっている。
図12(E)は、4種類のブロック画像qa1、qb1、qc1、qd1を表している。これらのブロック画像qa1、qb1、qc1、qd1は、互いに部分的に重なっている。共通部分q1oは、ブロック画像qa1、qb1、qc1、qd1に共通である。
【0104】
図12(F)は、4種類のブロック画像qa1、qb1、qc1、qd1のそれぞれの内容を表している。これらの正常ブロック画像qa1、qb1、qc1、qd1は、特定面SF1の互いに異なる一部分を表している。例えば、第1種正常ブロック画像qa1は、「EXA」の文字(特に「E」の文字)を含み、「EXA」に続く「M」の文字を含んでいない。第2種正常ブロック画像qb1は、「E」の文字を含んでおらず、「E」に続く「XAM」の文字(特に「M」の文字)を含んでいる。このように、正常ブロック画像qa1、qb1は、特定面SF1の互いに異なる部分を表している。部分的に重なる2つの正常ブロック画像の他の組み合わせも、同様に、特定面SF1の互いに異なる部分を表している。
【0105】
図示を省略するが、正常ブロック画像qa1、qb1、qc1、qd1とは異なる他の正常ブロック画像も、1以上の他の種類の正常ブロックの画像と、部分的に重なっている。
【0106】
図13(A)-
図13(D)は、変換済画像ipcに含まれる複数の対象ブロック画像pa1-pa9、pb1-pb6、pc1-pc6、pd1-pd4を、それぞれ表している(ブロック画像の内容の図示は、省略されている)。これらの対象ブロック画像pa1-pa9、pb1-pb6、pc1-pc6、pd1-pd4は、
図12(A)-
図12(D)の正常ブロック画像qa1-qa9、qb1-qb6、qc1-qc6、qd1-qd4に、それぞれ対応付けられている。互いに対応付けられる対象ブロック画像と正常ブロック画像との間では、正常輪郭LOに対する位置と大きさと形状とは、共通である。以下、
図13(A)、
図13(B)、
図13(C)、
図13(D)の対象ブロック画像を、それぞれ、第1種、第2種、第3種、第4種の対象ブロック画像と、呼ぶ。
【0107】
図13(E)は、4種類のブロック画像pa1、pb1、pc1、pd1を表している。これらのブロック画像pa1、pb1、pc1、pd1は、互いに部分的に重なっている。共通部分p1oは、ブロック画像pa1、pb1、pc1、pd1に共通である。
【0108】
図13(F)は、4種類のブロック画像pa1、pb1、pc1、pd1のそれぞれの内容を表している。
図12(F)の正常ブロック画像qa1、qb1、qc1、qd1と同様に、これらの対象ブロック画像pa1、pb1、pc1、pd1は、対象面SF1tの互いに異なる一部分を表している。
【0109】
図示を省略するが、対象ブロック画像pa1、pb1、pc1、pd1とは異なる他の対象ブロック画像も、1以上の他の種類の対象ブロックの画像と、部分的に重なっている。
【0110】
図5(C)で説明したように、変換済画像ipc中の対象ラベルLtの位置と大きさとは、正常画像iq中の正常ラベルLsの位置と大きさと、それぞれ、おおよそ同じである。従って、互いに対応付けられる対象ブロック画像と正常ブロック画像とは、ラベルLt、Lsの対象面SF1t、SF1のおおよそ同じ部分を表している。例えば、対象ラベルLtの対象面SF1tのうちの対象ブロック画像pd1(
図13(F))によって表される部分は、正常ラベルLsの特定面SF1のうちの正常ブロック画像qd1(
図12(F))によって表される部分と、おおよそ同じである。対象ブロック画像pd1は、さらに、異常部分APを表している。
【0111】
S210(
図6)では、プロセッサ110は、25個の対象ブロック画像pa1-pa9、pb1-pb6、pc1-pc6、pd1-pd4(
図13(A)-
図13(D))を、変換済画像ipcから取得する。プロセッサ110は、25個の対象ブロック画像と25個の正常ブロック画像とで構成される25組のブロック画像ペアのそれぞれに対して、S220-S260の処理を実行する。
【0112】
25個の正常ブロック画像のそれぞれの複数のキーポイントと各キーポイントの特徴量記述子とは、S230の方法と同じ方法によって、予め取得済である。本実施例では、正常ブロックキーポイントD2(
図1)のデータは、25個の正常ブロック画像のそれぞれの複数のキーポイントと、各キーポイントの特徴量記述子と、を表している。このような正常ブロックキーポイントD2のデータは、予め、記憶装置115(本実施例では、不揮発性記憶装置130)に格納されている。
【0113】
S270(
図6)では、プロセッサ110は、25個のホモグラフィ行列のそれぞれの異常指標値Adを算出する。S280では、プロセッサ110は、25個の対象ブロック画像のそれぞれに対して、
図10の処理を実行する。S290では、プロセッサ110は、異常ブロック画像を示すデータを出力する。
図13(G)は、表示部140に表示される結果画像の例を示している。結果画像ipcdは、対象ラベルLtと、異常ブロック画像を示すマークAzと、を表している。
図13(G)の例では、マークAzは、異常ブロック画像(ここでは、対象ブロック画像pa1、pb1、pc1、pd1を含む領域)の輪郭を示している。
【0114】
以上のように、本実施例では、対象ブロック画像pa1-pa9、pb1-pb6、pc1-pc6、pd1-pd4は、変換済画像から取得される第1種部分画像の例である。正常ブロック画像qa1-qa9、qb1-qb6、qc1-qc6、qd1-qd4は、キーポイントマッチングによって第1種部分画像(本実施例では、対象ブロック画像)と照合される第2種部分画像の例である。
【0115】
図13(A)-
図13(F)で説明したように、N個(本実施例では、N=25)の対象ブロック画像は、それぞれ、1以上の他の対象ブロック画像と部分的に重なっている。1以上の他の対象ブロック画像と部分的に重なる対象ブロック画像を、第1種重畳部分画像と呼ぶ。N個の対象ブロック画像は、L個の第1種重畳部分画像を含み得る(Lは、2以上、N以下の整数)。本実施例では、N個の対象ブロック画像のそれぞれが、第1種重畳部分画像の例である(L=N)。
【0116】
また、
図12(A)-
図12(D)、
図13(A)-
図13(D)で説明したように、対象ブロック画像の位置と大きさと形状とは、対象ブロック画像に対応付けられる正常ブロック画像の位置と大きさと形状と、それぞれ同じである。すなわち、第1種重畳部分画像(本実施例では、対象ブロック画像)に対応付けられる正常ブロック画像である第2種重畳部分画像は、1以上の他の正常ブロック画像と部分的に重なっている(
図12(E)、
図12(F))。本実施例では、N個の正常ブロックのそれぞれが、第2種重畳部分画像の例である。
【0117】
図12(E)、
図12(F)に示すように、正常ブロック画像qa1には、1以上(本実施例では、3個)の他の正常ブロック画像qb1、qc1、qd1が、部分的に重なっている。
図13(F)の対象ブロック画像pa1は、
図12(F)の正常ブロック画像qa1に対応付けられている。この対象ブロック画像pa1には、1以上(本実施例では、3個)の他の対象ブロック画像pb1、pc1、pd1が、部分的に重なっている。対象ブロック画像pa1に部分的に重なる対象ブロック画像pb1、pc1、pd1は、正常ブロック画像qa1(
図12(F))に部分的に重なる正常ブロック画像qb1、qc1、qd1に、それぞれ対応付けられている。このように、第2種重畳部分画像(例えば、正常ブロック画像qa1)に部分的に重なる1以上の他の正常ブロック画像(例えば、正常ブロック画像qb1、qc1、qd1)は、第2種重畳部分画像に対応付けられる第1種重畳部分画像(例えば、対象ブロック画像pa1)に部分的に重なる1以上の他の対象ブロック画像(例えば、対象ブロック画像pb1、pc1、pd1)に、それぞれ対応付けられている。
【0118】
従って、対象ラベルLtの対象面SF1tが異常部分APを含む場合に、複数の対象ブロック画像のそれぞれが、異常部分APの一部または全部を表し得る。そして、プロセッサ110は、対象ブロック画像と正常ブロック画像との複数の組み合わせのそれぞれから、対象ブロック画像が異常部分を有するという判断結果を導き得る。このように、プロセッサ110は、対象面SF1tが異常部分を有するか否かを適切に判断できる。例えば、
図13(F)の実施例では、4個の対象ブロック画像pa1、pb1、pc1、pd1のそれぞれが、異常部分APの一部を表している。この場合、プロセッサ110は、対象ブロック画像と正常ブロック画像との4個の組み合わせ「pa1-qa1」、「pb1-qb1」、「pc1-qc1」、「pd1-qd1」のそれぞれから、対象ブロック画像が異常部分を有するという判断結果を導き得る。仮に、1個の組み合わせ「pa1-qa1」から、対象ブロック画像は異常ブロック画像ではないという判断結果が得られたとしても、他の組み合わせから、対象ブロック画像は異常ブロック画像であるという判断結果が得られ得る。このように、異常部分を見逃す可能性は、低減する。
【0119】
また、複数の対象ブロック画像のそれぞれが異常部分の一部または全部を含む場合に、プロセッサ110は、それら複数の対象ブロック画像を異常ブロック画像として検出可能である。従って、
図13(G)のマークAzのように、プロセッサ110は、異常部分の全体を含む領域を、検出できる。
【0120】
また、上述したように、変換済画像ipcは、撮影画像の一種である。この観点から本実施例を見ると、本実施例の説明において、「変換済画像ipc」は、「第2種撮影画像ipc」に読み替えられてよい。この場合、対象ブロック画像(例えば、対象ブロック画像pa1(
図13(F)))は、第2種撮影画像ipcから取得される第1種部分画像の例である。正常ブロック画像(例えば、正常ブロック画像qa1(
図12(F)))は、キーポイントマッチングによって第1種部分画像(本実施例では、対象ブロック画像)と照合される第2種部分画像の例である。そして、プロセッサ110は、上述したように、L個の第1種重畳部分画像を含むN個の第1種部分画像(ここでは、対象ブロック画像)と、L個の第2種重畳部分画像を含むN個の第2種部分画像(ここでは、正常ブロック画像)と、を使用することによって、対象面SF1tが異常部分を有するか否かを適切に判断できる。
【0121】
C.第3実施例:
図14(A)は、検査処理の別の実施例のフローチャートの一部である。
図3の検査処理との差異は、S150とS190との間に、S160、S170、S180が挿入される点である。本実施例では、プロセッサ110は、異常判断処理(S195)の前に、S150で算出されるホモグラフィ行列Hを使用して、対象ラベルLtに関連する異常が有るか否かを判断する。
【0122】
S160では、プロセッサ110は、ホモグラフィ行列Hを使用して、異常指標値を算出する。S160では、撮影画像ipによって表される対象ラベルLtに関連する異常の可能性を示す指標値が算出される(オブジェクト指標値とも呼ぶ)。本実施例では、プロセッサ110は、ホモグラフィ行列Hによる回転角度を近似するの近似回転角度AGと、ホモグラフィ行列Hによるスケーリング倍率を近似する近似スケーリング倍率SCと、を算出する。以下、近似回転角度AGを、近似角度AGとも呼ぶ。近似スケーリング倍率SCを、近似倍率SCとも呼ぶ。
【0123】
図14(B)は、近似角度AGと近似倍率SCとの算出式の例を示す図である。図中には、5個の式EQ1-EQ5が示されている。第1式EQ1は、ホモグラフィ行列Hと近似角度AGと近似倍率SCとの対応関係を示している。ここで、ホモグラフィ行列Hの第1部分行列SM1が、近似角度AGの回転を示す行列(行列H1(
図5(B)))と、近似倍率SCのスケーリングを示す行列(行列H2(
図5(B))と、の積で表されることと仮定している。すなわち、他の種類の座標変換(例えば、スキュー)の影響は、十分に小さいことと仮定している。この場合、図示するように、要素h11、h22は、「SC*cos(AG)」で表され、要素h12は、「-SC*sin(AG)」で表され、要素h21は、「SC*sin(AG)」で表される。
【0124】
実際には、ホモグラフィ行列Hは、ラベルL(
図2(A))に対する撮影装置400の向き、撮影装置400の図示しないレンズの歪み、などの種々のパラメータから、影響を受ける。第1部分行列SM1の要素h11、h12、h21、h22は、回転とスケーリングとのみから算出される値から、ズレ得る。そこで、本実施例では、プロセッサ110は、第1部分行列SM1の4個の要素h11、h12、h21、h22の全てを使用して、近似角度AGと近似倍率SCとを算出する。
【0125】
本実施例では、第2式EQ2に示すように、「h11」と「h22」との平均が、SC*cos(AG)として採用される(この値を、第1値Pcと呼ぶ)。第3式EQ3に示すように、「h21」と「-h12」との平均が、SC*sin(AG)として採用される(この値を、第2値Psと呼ぶ)。これらの式EQ2、EQ3から、式EQ4、EQ5が導かれる。第4式EQ4に示すように、近似倍率SCは、第1値Pcの2乗と第2値Psの2乗との和の平方根によって、算出される。第5式EQ5に示すように、近似角度AGは、正接関数の逆関数(引数は「Ps/Pc」)によって、算出される。このように、SC*cos(AG)とSC*sin(AG)とは、それぞれ、第1部分行列SM1の対応する2個の要素の平均を使用して、算出される。従って、回転の角度とスケーリングの倍率と以外の他のパラメータの影響は、緩和可能である。
【0126】
S160(
図14(A))では、プロセッサ110は、
図14(B)の式EQ4、EQ5に従って、ホモグラフィ行列Hから近似倍率SCと近似角度AGとを算出する。
【0127】
S170では、プロセッサ110は、オブジェクト指標値が許容範囲内であるか否かを判断する。本実施例では、近似倍率SCが、許容倍率範囲(下限SC1以上、上限SC2以下の範囲)内であり、かつ、近似角度AGが、許容角度範囲(下限AG1以上、かつ、上限AG2以下の範囲)内である場合に、プロセッサ110は、オブジェクト指標値が許容範囲内であると判断する。以下に説明するように、許容倍率範囲と許容角度範囲とは、予め決められている。
【0128】
本実施例では、ラベルL(
図2(A))の撮影時に、製品300と撮影装置400との間の相対的な配置は、撮影に適する予め決められた配置に調整される。従って、異常の無い複数のラベルが処理される場合に、近似倍率SCは、おおよそ一定であり、近似角度AGは、おおよそ一定である。近似倍率SCは、例えば、撮影画像ipと正常画像iqとの間の解像度(すなわち、画素密度)の比率と、撮影装置400(
図2(A))とラベルLとの間の距離と、に応じて決まる。近似角度AGは、例えば、おおよそゼロ度であり得る。
【0129】
対象ラベルLtに関連する異常がある場合、
図7(H)の例と同様に、不適切なマッチングペアがホモグラフィ行列Hの算出に使用され得る。ホモグラフィ行列Hの要素(例えば、第1部分行列SM1の要素h11、h12、h21、h22)は、異常に起因する異常値であり得る。異常値により、近似倍率SCは、適切な値から大幅に異なり得、近似角度AGは、適切な値から大幅に異なり得る。
【0130】
対象ラベルLtに関連する異常としては、様々の異常が生じ得る。
図4(A)の対象ラベルLtの対象面SF1tのように、対象面SF1tが異常部分を含む場合がある。この場合、近似倍率SCと近似角度AGとの一方、または、両方が、対応する適切な値から大幅に異なり得る。また、対象面SF1tが異常部分を含まない場合であっても、対象ラベルLtが、製品300に対する適切な向きに対して傾いている場合がある。この場合、近似角度AGが、適切な値から大幅に異なり得る。また、対象面SF1tが異常部分を含まない場合であっても、適切なサイズとは異なるサイズの対象ラベルLtが製品300に貼付される場合がある。この場合、近似倍率SCが、適切な値から大幅に異なり得る。また、製品300とは異なる他の製品のためのラベルが、誤って、製品300に貼付される場合がある。この場合、近似倍率SCと近似角度AGとの一方、または、両方が、対応する適切な値から大幅に異なり得る。
【0131】
許容倍率範囲(本実施例では、下限SC1と上限SC2)は、対象ラベルLtに関連する異常が無い場合に、近似倍率SCが許容倍率範囲内であり、対象ラベルLtに関連する異常に起因して近似倍率SCが適切な値から大幅に異なる場合に、近似倍率SCが許容倍率範囲外であるように、予め実験的に決定される。同様に、許容角度範囲(本実施例では、下限AG1と上限AG2)は、対象ラベルLtに関連する異常が無い場合に、近似角度AGが許容角度範囲内であり、対象ラベルLtに関連する異常に起因して近似角度AGが適切な値から大幅に異なる場合に、近似角度AGが許容角度範囲外であるように、予め実験的に決定される。
【0132】
オブジェクト指標値が許容範囲外である場合(S170:No)、S180で、プロセッサ110は、対象ラベルLtに関連する異常があると判断し、検査結果を、対象ラベルLtに関連する異常を示すオブジェクト異常に設定する。プロセッサ110は、検査結果を示すデータを、記憶装置115(例えば、不揮発性記憶装置130)に格納する。そして、プロセッサ110は、検査処理を終了する。
【0133】
オブジェクト指標値が許容範囲内である場合(S170:Yes)、プロセッサ110は、S190(
図3)へ移行する。S190、S195の処理は、第1実施例の処理、または、第2実施例の処理と同じであってよい。
【0134】
以上のように、本実施例では、プロセッサ110は、S160で、ホモグラフィ行列Hによる回転角度を近似する近似回転角度AGと、ホモグラフィ行列Hによるスケーリング倍率を近似する近似スケーリング倍率SCと、を算出する。ホモグラフィ行列Hは、撮影画像ipに対するホモグラフィ変換(S190(
図3))を示す行列である。S170、S180で説明したように、プロセッサ110は、近似回転角度AGが許容角度範囲外である第1の場合と、近似スケーリング倍率SCが許容倍率範囲外である第2の場合とのうち、両方の場合を含む特定の場合に(S170:No)、対象オブジェクトに関連する異常があると判断する(S180)。従って、プロセッサ110は、対象面SF1tの傾きの異常と大きさの異常とを含む種々の異常に関する適切な判断を実行可能である。
【0135】
また、本実施例では、
図5(A)で説明したように、S190(
図3)における撮影画像ipのホモグラフィ変換は、ホモグラフィ行列Hによる座標変換を含んでいる。ホモグラフィ行列Hは、2行2列の第1部分行列SM1を形成する要素h11、h12、h21、h22を含んでいる。第1部分行列SM1は、撮影画像ip上の位置を示す2次元座標系(座標x、yを示す)と、変換済画像ipc上の位置を示す二次元座標系(座標x’、y’を示す)と、の間の回転とスケーリングとを含む座標変換を表している。
図14(B)で説明したように、S160(
図14(A))では、プロセッサ110は、近似回転角度AGと近似スケーリング倍率SCとの両方を、第1部分行列SM1の要素h11、h12、h21、h22に基づいて算出する。このように、プロセッサ110は、第1部分行列SM1の要素h11、h12、h21、h22に基づいて、適切な近似回転角度AGと適切な近似スケーリング倍率SCとを算出できる。
【0136】
D.第4実施例:
図15は、検査処理の別の実施例を示すフローチャートである。
図3の検査処理との差異は、変換済画像を取得するためのホモグラフィ変換(S130、S140、S150、S190)が省略される点である。S110a、S195aは、
図3のS110、S195から、以下のように修正される。
【0137】
S110aでは、プロセッサ110(
図1)は、撮影装置400(
図2(A))から出力される撮影画像である出力画像のデータから、検査処理用の撮影画像のデータを取得する。
図16は、検査処理用の撮影画像の例を示す図である。撮影画像ipzは、対象ラベルLtの特定面SF1tを表している。本実施例では、撮影画像ipz中の対象ラベルLtの位置と向きと大きさとは、正常画像iq(
図7(A))中の正常ラベルLsの位置と向きと大きさと、それぞれ、おおよそ同じである。
【0138】
このような撮影画像ipzを取得するために、ラベルL(
図2(A))の撮影時に、製品300と撮影装置400との間の相対的な配置は、撮影に適する予め決められた基準配置に調整される。基準配置は、撮影装置400から出力される出力画像中の対象ラベルLtの形状の歪みが小さいように、予め実験的に決定される。例えば、基準配置の撮影装置400は、対象ラベルLtの正面から、対象ラベルLtを撮影する。
【0139】
S110aでは、プロセッサ110は、撮影装置400から出力画像を取得し、出力画像から対象ラベルLtを検出する。プロセッサ110は、出力画像のうちの検出された対象ラベルLtを表す部分画像を撮影画像ipzとして取得する。対象ラベルLtを検出する方法は、種々の方法であってよい。例えば、プロセッサ110は、ラベルLのテンプレート画像(例えば、正常画像iq(
図7(A)))を使用するテンプレートマッチングによって、対象ラベルLtを検出してよい。また、プロセッサ110は、ラベルLを検出するように訓練済の物体検出モデルを使用して、対象ラベルLtを検出してよい。また、出力画像中の予め決められた部分が、撮影画像ipzとして取得されてよい。なお、出力画像から取得される部分画像の解像度(すなわち、第1方向Dxの画素数と第2方向Dyの画素数)が正常画像iqの解像度と異なる場合、プロセッサ110は、部分画像の解像度変換を行って、正常画像iqの解像度と同じ解像度を有する撮影画像ipzを取得する。
【0140】
このように、撮影画像ipz中の対象ラベルLtの位置と向きと大きさとは、正常画像iq(
図7(A))中の正常ラベルLsの位置と向きと大きさと、それぞれ、おおよそ同じである。従って、プロセッサ110は、撮影画像から変換済画像へのホモグラフィ変換(S130-S190(
図3))を行わずに、撮影画像ipzを使用してS195a(
図15)の異常判断処理を実行できる。
【0141】
S195aでは、プロセッサ110は、撮影画像ipzと正常画像iq(
図4(C))とを比較して、対象ラベルLtの特定面SF1tが異常を有するか否かを判断する異常判断処理を実行する。S195aの異常判断処理は、変換済画像ipcの代わりに撮影画像ipzが使用される点を除いて、S195(
図3)の異常判断処理(すなわち、
図6の異常判断処理)と同じである。上記の任意の実施例のS195の異常判断処理が、本実施例のS195aに適用されてよい(ここで、変換済画像ipcは撮影画像ipzに置換される)。例えば、プロセッサ110は、
図7(A)-
図7(F)のブロックを使用する異常判断処理、または、
図12(A)-
図12(D)、
図13(A)-
図13(D)のブロックを使用する異常判断処理を、実行してよい。
図7(D)、
図16に示すように、撮影画像ipzは、変換済画像ipcと、おおよそ同じである。従って、本実施例は、上記の実施例と同じ種々の利点を提供可能である。
【0142】
E.変形例:
(1)キーポイントの検出方法は、上記の方法に代えて、他の種々の方法であってよい。例えば、プロセッサ110は、予め準備される複数のテンプレート画像を使用するテンプレートマッチングによって、複数のキーポイントを検出してよい。テンプレート画像としては、正常ラベルLsの特定面SF1内の特徴的な部分の画像を使用可能である。また、プロセッサ110は、2枚の画像(例えば、撮影画像ipと正常画像iq)から同じテンプレート画像を使用して検出されるキーポイントのペアを、マッチングペアとして採用してよい。
【0143】
(2)
図12(A)-
図12(D)、
図13(A)-
図13(D)の実施例のように、N個の第1種部分画像(例えば、対象ブロック画像pa1-pa9)は、1以上の他の第1種部分画像と部分的に重なる第1種重畳部分画像を含んでよい。ここで、第1種重畳部分画像の総数Qは、2以上、N以下の種々の数であってよい。このように、N個の第1種部分画像は、他の第1種部分画像と重ならないN-Q個の第1種部分画像を含んでよい。例えば、対象ブロック画像pd4(
図13(D))に重なる他の対象ブロック画像は、省略されてよい。以上の説明は、N個の第2種部分画像(例えば、正常ブロック画像qa1-qa9)にも、適用される。例えば、N個の第2種部分画像は、他の第2種部分画像と重ならないN-Q個の第2種部分画像を含んでよい。
【0144】
(3)互いに対応付けられる第1種部分画像(例えば、対象ブロック画像pa1(
図7(E)))と第2種部分画像(例えば、正常ブロック画像qa1(
図7(B)))との間で、ラベルLt、Lsに対する位置が異なってよい。例えば、対象ラベルLtに対する対象ブロック画像pa1-pa9の位置は、正常ラベルLsに対する正常ブロック画像qa1-qa9の位置に対して、第1方向Dxに少しだけずれていてよい。また、互いに対応付けられる第1種部分画像と第2種部分画像との間で、大きさと形状とが異なってよい。
【0145】
いずれの場合も、互いに対応付けられる第1種部分画像と第2種部分画像とは、ラベルLt、Lsの共通する部分を含むことが好ましい。この構成によれば、プロセッサ110は、ラベルLt、Lsの共通する部分を示す複数のマッチングペアを使用してホモグラフィ行列を算出できる。プロセッサ110は、
図7(G)、
図7(H)の実施例と同様に、ホモグラフィ行列を使用して、特定面SF1tが異常部分を有するか否かを適切に判断できる。
【0146】
(4)ラベルLは、異常が生じ易い部分と、異常が生じ難い部分と、を含み得る。この場合、異常が生じ難い部分は、複数の部分画像から除かれてよい。すなわち、複数の第1種部分画像(例えば、対象ブロック画像pa1-pa9(
図7(E)))は、対象ラベルLtのうちの一部分(例えば、異常が生じ易い部分)のみに配置されてよい。以上の説明は、複数の第2種部分画像(例えば、正常ブロック画像qa1-qa9(
図7(B)))にも、適用される。正常ラベルLsのうちの一部分は、複数の第2種部分画像から除かれてよい。
【0147】
(5)複数の第1種部分画像(例えば、対象ブロック画像pa1-pa9(
図7(E)))のそれぞれの大きさと形状とは、特定面SF1tの異常に関する適切な判断ができるように、予め実験的に決定される。第1種部分画像が小さい場合、適切なマッチングペアの総数が減少するので、適切なホモグラフィ行列の算出が難しい場合がある。第1種部分画像が大きい場合、適切なマッチングペアの総数が増大するので、第1種部分画像に異常部分が含まれる場合であっても、不適切なマッチングペアを使用せずに、ホモグラフィ行列が算出され得る。以上の説明は、複数の第2種部分画像(例えば、正常ブロック画像qa1-qa9(
図7(B)))にも、適用される。
【0148】
(6)S270(
図6)で算出される異常指標値Adは、ホモグラフィ行列と単位行列との間の差異の程度を示す種々の値であってよい。異常指標値Adは、第1部分行列SM1の4個の要素のうちの1以上の要素に基づいて算出される種々の値であってよい。例えば、異常指標値Adは、h12の絶対値とh21の絶対値との和であってよい。異常指標値Adの算出には、第1部分行列SM1の1以上の要素に加えて、他の要素(例えば、第2部分行列SM2の1以上の要素、または、第3部分行列SM3の1以上の要素)が使用されてよい。例えば、異常指標値Adは、ホモグラフィ行列と単位行列との間のh33以外の8個の要素の8個の差分の絶対値の和であってよい。また、異常指標値Adは、複数の要素の差分の2乗の和であってよい。
【0149】
また、異常指標値Adとしては、
図14(A)、
図14(B)で説明した近似倍率SCと近似角度AGとの一方、または、両方が使用されてよい。近似倍率SCと近似角度AGも、ホモグラフィ行列と単位行列との間の差異の程度を示している。
【0150】
(7)S195(
図3)、S195a(
図15)の処理(すなわち、対象ラベルLtの特定面SF1tが異常を有するか否かを判断する処理)は、
図6の処理に代えて、他の種々の処理であってよい。プロセッサ110は、変換済画像ipcと正常画像iqとの間の画素毎の色値の差分を表す差分画像のデータを生成してよい。そして、プロセッサ110は、差分画像を使用して、特定面SF1tが異常を有するか否かを判断してよい。例えば、プロセッサ110は、複数の画素の複数の差分の代表値(例えば、合計値、平均値などの要約統計量)が代表閾値以上である場合に、特定面SF1tが異常を有すると判断してよい。また、プロセッサ110は、差分閾値以上の差分を有する画素の総数が総数閾値以上である場合に、特定面SF1tが異常を有すると判断してよい。代表閾値と差分閾値と総数閾値とは、予め実験的に決定されてよい。また、プロセッサ110は、差分画像を異常を有する画像と異常の無い画像とに分類する機械学習モデルを使用して、特定面SF1tが異常を有するか否かを判断してよい。機械学習モデルを使用する異常の判断には、例えば、PaDiM(a Patch Distribution Modeling Framework for Anomaly Detection and Localization)と呼ばれる技術が採用されてよい。
【0151】
(8)近似倍率SCと近似角度AGとの算出方法は、
図14(B)の方法に代えて、他の種々の方法であってよい。近似倍率SCと近似角度AGとは、第1部分行列SM1を形成する要素に基づいて算出されてよい。すなわち、近似倍率SCと近似角度AGとは、第1部分行列SM1の4個の要素のうちの1以上の要素に基づいて、算出されてよい。例えば、h11、h22の平均が、近似倍率SCとして使用されてよい。第5式EQ5の正接関数の逆関数の引数は、「h21/h11」または「-h12/h22」であってよい。
【0152】
また、
図14(A)のS160、S170では、近似倍率SCと近似角度AGのいずれか一方のみが、使用されてよい。すなわち、近似角度AGが許容角度範囲外である第1の場合と、近似倍率SCが許容倍率範囲外である第2の場合と、のうち、予め選択された1つの場合に、プロセッサ110は、撮影画像ipによって表される対象ラベルLtに関連する異常があると判断してよい。いずれの場合も、異常があると判断される特定の場合は、さらに、別の場合を含んでよい。例えば、プロセッサ110は、S150(
図4)で算出されるホモグラフィ行列Hから異常指標値Ad(例えば、
図9(C)の異常指標値Ad)を算出してよい。そして、プロセッサ110は、異常指標値Adが、予め決められた閾値以上である場合に、対象ラベルLtに関連する異常があると判断してよい。なお、この閾値は、S310(
図10)の閾値Adthと異なってよい。
【0153】
(9)上記の各実施例において、プロセッサ110は、撮影画像ipに対するホモグラフィ変換に代えて、正常画像iqに対するホモグラフィ変換を行うことによって、変換済画像のデータを生成してよい。そして、プロセッサ110は、変換済画像と、撮影画像と、を比較して、対象ラベルLtの特定面SF1tが異常を有するか否かを判断してよい。この場合、S190(
図3)では、プロセッサ110は、正常画像iqのホモグラフィ変換を行って、変換済画像を生成する(変換済正常画像と呼ぶ)。S190の異常判断処理(
図6)では、プロセッサ110は、撮影画像と、変換済正常画像と、を比較する。ここで、複数の正常ブロック画像と複数の対象ブロック画像とは、各ブロック画像がラベルLs、Ltの一部を含むように、配置される。複数のブロック画像の位置と大きさと形状とは、予め決められてよい。例えば、プロセッサ110は、正常画像iqの予め定められた複数の正常ブロック画像(例えば、正常ブロック画像qa1-qa9(
図7(B)))のホモグラフィ変換によって、変換済正常画像上の複数の正常ブロック画像を取得してよい。撮影画像上の対象ブロックの位置と大きさと形状とは、対象ブロック画像に対応付けられる正常ブロック画像の位置と大きさと形状(ここでは、変換済正常画像上の位置と大きさと形状)と、それぞれ同じであってよい。これに代えて、プロセッサ110は、変換済画像と撮影画像とからラベルLs、Ltを検出し、検出されたラベルLs、Ltの位置に応じて、複数のブロック画像の位置と大きさと形状とを決定してよい(この場合も、大きさと形状とは、予め決められてよい)。
【0154】
(10)検査処理で使用される撮影画像のデータを取得する処理は、上記の処理に代えて、他の種々の処理であってよい。例えば、プロセッサ110は、撮影装置400(
図2(A))から出力される出力画像に対して、図示しないレンズの歪み補正など、撮影装置400の特性を補正する補正処理を行うことによって、撮影画像のデータを取得してよい。補正処理で使用されるパラメータは、カメラ内部パラメータとも呼ばれる。また、撮影画像のデータは、データ処理装置100とは異なる他の装置(例えば、スマートフォンなどのコンピュータ)によって、データ処理装置100に供給されてよい。プロセッサ110は、供給された撮影画像データを使用して、検査処理(例えば、
図3、
図14、
図15の各実施例の検査処理)を実行してよい。ここで、他の装置は、撮影装置400から出力される出力画像に対して正常画像iqに基づくホモグラフィ変換を行うことによって変換済の撮影画像のデータを生成し、変換済の撮影画像のデータをデータ処理装置100に供給してよい。
【0155】
(11)対象ラベルLtの特定面SF1tが異常を有するか否かを判断する処理は、上記の処理に代えて、他の種々の処理であってよい。例えば、プロセッサ110は、検査処理において、正常画像iqのデータを分析することによって、複数のキーポイントを検出してよい。この場合、正常キーポイントD1(
図1)のデータは、省略されてよい。記憶装置115(例えば、不揮発性記憶装置130)には、正常画像iqのデータが予め格納されることが好ましい。また、プロセッサ110は、正常ブロック画像のデータを分析することによって、正常ブロック画像のキーポイントと特徴量記述子とを取得してよい。この場合、正常ブロックキーポイントD2(
図1)のデータは、省略されてよい。
【0156】
(12)処理対象のオブジェクトである対象オブジェクトは、ラベルL(
図2(B))に限らず、任意のオブジェクトであってよい。対象オブジェクトは、製品(例えば、複合機)に設けられるオブジェクトであってよい。対象オブジェクトは、ラベルシートと、銘板(例えば、立体的な銘)と、塗装された模様と、を含む複数の要素から選択される1以上の要素を含んでよい。また、対象オブジェクトの処理対象の面である特定面は、対象オブジェクトの任意の面であってよい。特定面は、対象オブジェクトの平らな部分と、対象オブジェクトの立体的な部分と、の一方、または、両方を含んでよい。
【0157】
(13)撮影画像と正常画像とを処理する画像処理装置は、上述したデータ処理装置100(
図1)に代えて、他の種々の装置(例えば、デジタルカメラ、スマートフォン)であってよい。ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータ)が、画像処理装置による画像処理の機能を一部ずつ分担して、全体として、画像処理の機能を提供してもよい(これらの装置を備えるシステムが画像処理装置に対応する)。
【0158】
上記の実施例と変形例とにおいて、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、ホモグラフィ行列を算出する機能(S150(
図3)、S250(
図6))を、専用のハードウェア回路によって実現してもよい。
【0159】
また、本開示の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD-ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
【0160】
上記の実施例と変形例とは、適宜に組み合わせることができる。また、上記の実施例と変形例とは、本開示の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【0161】
100…データ処理装置、110…プロセッサ、115…記憶装置、120…揮発性記憶装置、130…不揮発性記憶装置、131…プログラム、140…表示部、150…操作部、170…通信インタフェース、300…製品、400…撮影装置、L…ラベル、Ls…正常ラベル、Lt…対象ラベル、SF1…特定面、SF1t…特定面(対象面)、H、H1-H4、Ha1-Ha9…ホモグラフィ行列、T…角度、U…倍率、V…角度、SC…近似スケーリング倍率(近似倍率)、AG…近似回転角度(近似角度)、IM…単位行列、LO…輪郭(正常輪郭)、AP…異常部分、SM1…第1部分行列、SM2…第2部分行列、SM3…第3部分行列