IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ブラザー工業株式会社の特許一覧

特開2023-173600コンピュータプログラム、および、データ処理装置。
<>
  • 特開-コンピュータプログラム、および、データ処理装置。 図1
  • 特開-コンピュータプログラム、および、データ処理装置。 図2
  • 特開-コンピュータプログラム、および、データ処理装置。 図3
  • 特開-コンピュータプログラム、および、データ処理装置。 図4
  • 特開-コンピュータプログラム、および、データ処理装置。 図5
  • 特開-コンピュータプログラム、および、データ処理装置。 図6
  • 特開-コンピュータプログラム、および、データ処理装置。 図7
  • 特開-コンピュータプログラム、および、データ処理装置。 図8
  • 特開-コンピュータプログラム、および、データ処理装置。 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023173600
(43)【公開日】2023-12-07
(54)【発明の名称】コンピュータプログラム、および、データ処理装置。
(51)【国際特許分類】
   G06V 10/82 20220101AFI20231130BHJP
   G06T 7/00 20170101ALI20231130BHJP
   G06T 1/00 20060101ALI20231130BHJP
   G06T 3/00 20060101ALI20231130BHJP
【FI】
G06V10/82
G06T7/00 350C
G06T7/00 610B
G06T1/00 305A
G06T3/00 750
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022085959
(22)【出願日】2022-05-26
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110001058
【氏名又は名称】鳳国際弁理士法人
(72)【発明者】
【氏名】尾野藤 祥司
【テーマコード(参考)】
5B057
5L096
【Fターム(参考)】
5B057CE10
5B057DA03
5B057DA16
5B057DC32
5B057DC40
5L096BA03
5L096CA05
5L096DA01
5L096GA08
5L096HA11
5L096KA04
5L096KA15
(57)【要約】
【課題】オブジェクトのエラー部分を適切に示す合成画像を生成する。
【解決手段】
オブジェクトのN個の撮影画像データを取得する。第1撮影画像データはオブジェクトの第1部分を表す。第2撮影画像データはオブジェクトの第2部分を表す。オブジェクトのうちの第1部分と第1撮影画像の外に位置する見切れる部分との境界の第1位置を取得する。第1部分の画像と、オブジェクトの第1基準画像と、を使用して、オブジェクトの第1エラー部分を示す第1エラー画像を生成する。第2部分の画像と、オブジェクトの第2基準画像と、を使用して、オブジェクトの第2エラー部分を示す第2エラー画像を生成する。第1エラー画像と、第1位置と、第2エラー画像と、を使用することによって、オブジェクトの全体から検出されるエラー部分を示す合成エラー画像を生成する。
【選択図】 図1
【特許請求の範囲】
【請求項1】
コンピュータプログラムであって、
第1カメラと第2カメラとを含むN台(Nは2以上の整数)のカメラによってそれぞれ撮影されるオブジェクトのN個の撮影画像データを取得する画像取得機能であって、前記第1カメラにより撮影される第1撮影画像データは前記オブジェクトの第1部分の第1撮影画像を表し、前記第2カメラにより撮影される第2撮影画像データは前記オブジェクトの第2部分の第2撮影画像を表し、前記第1部分と前記第2部分とは、前記オブジェクトのうちの互いに異なる部分を含む、前記画像取得機能と、
前記第1撮影画像から前記第1部分を検出する第1部分検出機能と、
前記第2撮影画像から前記第2部分を検出する第2部分検出機能と、
前記オブジェクトのうちの前記第1撮影画像に含まれる前記第1部分と前記第1撮影画像の外に位置する見切れる部分との境界の前記オブジェクト上の位置である第1位置を取得する第1位置取得機能と、
前記第1撮影画像に含まれる前記第1部分の画像と、前記オブジェクトの第1基準画像と、を使用して、前記オブジェクトの第1エラー部分を示す第1エラー画像を生成する第1エラー画像生成機能と、
前記第2撮影画像に含まれる前記第2部分の画像と、前記オブジェクトの第2基準画像と、を使用して、前記オブジェクトの第2エラー部分を示す第2エラー画像を生成する第2エラー画像生成機能と、
前記第1エラー画像と、前記第1位置と、前記第2エラー画像と、を使用することによって、前記オブジェクトの全体から検出されるエラー部分を示す画像であって、前記第1エラー画像の少なくとも一部と前記第2エラー画像の少なくとも一部とを含む合成画像である合成エラー画像を生成する合成機能と、
をコンピュータに実現させる、コンピュータプログラム。
【請求項2】
請求項1に記載のコンピュータプログラムであって、
前記第1エラー画像生成機能は、エラーを有する前記オブジェクトの画像データからエラーの無い前記オブジェクトの画像データを生成するように訓練された生成モデルに、前記第1部分の画像データを入力することによって、前記第1基準画像のデータを生成する機能を含み、
前記第2エラー画像生成機能は、前記生成モデルに、前記第2部分の画像データを入力することによって、前記第2基準画像のデータを生成する機能を含む、
コンピュータプログラム。
【請求項3】
請求項1または2に記載のコンピュータプログラムであって、さらに、
前記合成エラー画像と、前記オブジェクトの第3基準画像と、の重畳画像を生成する重畳画像生成機能と、
前記重畳画像を表示装置に表示させる機能と、
をコンピュータに実現させる、コンピュータプログラム。
【請求項4】
請求項3に記載のコンピュータプログラムであって、
前記重畳画像生成機能は、前記合成エラー画像と前記第3基準画像との間の前記オブジェクトに対応する領域の差異が小さくなるように、前記合成エラー画像と前記第3基準画像との一方、または、両方に、画像変換処理を実行する機能を含む、
コンピュータプログラム。
【請求項5】
請求項1または2に記載のコンピュータプログラムであって、
前記合成機能は、
前記第1撮影画像と前記第2撮影画像とから、主撮影画像と、前記主撮影画像とは異なる画像である副撮影画像と、を選択し、前記主撮影画像は、前記第1撮影画像の前記第1部分の第1アスペクト比と前記第2撮影画像の前記第2部分の第2アスペクト比とのうちの基準アスペクト比により近いアスペクト比に対応付けられる画像であり、
前記合成エラー画像のうち、前記主撮影画像の外に位置する部分を、前記第1エラー画像と前記第2エラー画像とのうちの前記副撮影画像を使用して生成されるエラー画像の対応する部分を使用して形成する、
コンピュータプログラム。
【請求項6】
請求項1または2に記載のコンピュータプログラムであって、さらに、
前記オブジェクトのうちの前記第2撮影画像に含まれる前記第2部分と前記第2撮影画像の外に位置する見切れる部分との境界の前記オブジェクト上の位置である第2位置を取得する第2位置取得機能と、
前記第1位置と前記第2位置とを使用して、前記第1撮影画像の前記第1部分と前記第2撮影画像の前記第2部分との共通部分を決定する共通部分決定機能と、
をコンピュータに実現させ、
前記合成機能は、
前記合成エラー画像の前記共通部分のうち、前記オブジェクトのうちの前記第1撮影画像の外に位置する見切れる部分に連続する一部分である第1特定部分を、前記第2撮影画像を使用して形成し、
前記合成エラー画像の前記共通部分の残りの部分である第2特定部分を、前記第1撮影画像を使用して形成する、
コンピュータプログラム。
【請求項7】
請求項6に記載のコンピュータプログラムであって、
前記合成機能は、前記オブジェクトのうちの前記第1撮影画像の外に位置する前記見切れる部分の面積が第1面積よりも大きい第2面積である場合の前記第1特定部分を、前記見切れる部分の前記面積が前記第1面積である場合の前記第1特定部分よりも、大きい領域に決定する、
コンピュータプログラム。
【請求項8】
請求項1または2に記載のコンピュータプログラムであって、
前記オブジェクトは、ラベルと、立体的な銘と、塗装された模様と、を含む複数の要素から選択される1以上の要素を含む、
コンピュータプログラム。
【請求項9】
データ処理装置であって、
第1カメラと第2カメラとを含むN台(Nは2以上の整数)のカメラによってそれぞれ撮影されるオブジェクトのN個の撮影画像データを取得する画像取得部であって、前記第1カメラにより撮影される第1撮影画像データは前記オブジェクトの第1部分の第1撮影画像を表し、前記第2カメラにより撮影される第2撮影画像データは前記オブジェクトの第2部分の第2撮影画像を表し、前記第1部分と前記第2部分とは、前記オブジェクトのうちの互いに異なる部分を含む、前記画像取得部と、
前記第1撮影画像から前記第1部分を検出する第1部分検出部と、
前記第2撮影画像から前記第2部分を検出する第2部分検出部と、
前記オブジェクトのうちの前記第1撮影画像に含まれる前記第1部分と前記第1撮影画像の外に位置する見切れる部分との境界の前記オブジェクト上の位置である第1位置を取得する第1位置取得部と、
前記第1撮影画像に含まれる前記第1部分の画像と、前記オブジェクトの第1基準画像と、を使用して、前記オブジェクトの第1エラー部分を示す第1エラー画像を生成する第1エラー画像生成部と、
前記第2撮影画像に含まれる前記第2部分の画像と、前記オブジェクトの第2基準画像と、を使用して、前記オブジェクトの第2エラー部分を示す第2エラー画像を生成する第2エラー画像生成部と、
前記第1エラー画像と、前記第1位置と、前記第2エラー画像と、を使用することによって、前記オブジェクトの全体から検出されるエラー部分を示す画像であって、前記第1エラー画像の少なくとも一部と前記第2エラー画像の少なくとも一部とを含む合成画像である合成エラー画像を生成する合成部と、
を備える、データ処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、オブジェクトのエラー部分を検出する技術に関する。
【背景技術】
【0002】
従来から、ラベルなどのオブジェクトのエラー部分の検出に、オブジェクトの撮影画像が使用されている。また、画像を処理する技術として、互いに重複する領域を有する2つの画像データを接合して、接合画像データを生成する技術が提案されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2014-86925号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
オブジェクトのエラー部分を検出するために複数の画像を合成する点については、工夫の余地があった。例えば、複数の画像のつなぎ目の歪みが、エラー部分として検出される場合があった。
【0005】
本明細書は、オブジェクトのエラー部分を適切に示す合成画像を生成する技術を開示する。
【課題を解決するための手段】
【0006】
本明細書に開示された技術は、以下の適用例として実現することが可能である。
【0007】
[適用例1]コンピュータプログラムであって、第1カメラと第2カメラとを含むN台(Nは2以上の整数)のカメラによってそれぞれ撮影されるオブジェクトのN個の撮影画像データを取得する画像取得機能であって、前記第1カメラにより撮影される第1撮影画像データは前記オブジェクトの第1部分の第1撮影画像を表し、前記第2カメラにより撮影される第2撮影画像データは前記オブジェクトの第2部分の第2撮影画像を表し、前記第1部分と前記第2部分とは、前記オブジェクトのうちの互いに異なる部分を含む、前記画像取得機能と、前記第1撮影画像から前記第1部分を検出する第1部分検出機能と、前記第2撮影画像から前記第2部分を検出する第2部分検出機能と、前記オブジェクトのうちの前記第1撮影画像に含まれる前記第1部分と前記第1撮影画像の外に位置する見切れる部分との境界の前記オブジェクト上の位置である第1位置を取得する第1位置取得機能と、前記第1撮影画像に含まれる前記第1部分の画像と、前記オブジェクトの第1基準画像と、を使用して、前記オブジェクトの第1エラー部分を示す第1エラー画像を生成する第1エラー画像生成機能と、前記第2撮影画像に含まれる前記第2部分の画像と、前記オブジェクトの第2基準画像と、を使用して、前記オブジェクトの第2エラー部分を示す第2エラー画像を生成する第2エラー画像生成機能と、前記第1エラー画像と、前記第1位置と、前記第2エラー画像と、を使用することによって、前記オブジェクトの全体から検出されるエラー部分を示す画像であって、前記第1エラー画像の少なくとも一部と前記第2エラー画像の少なくとも一部とを含む合成画像である合成エラー画像を生成する合成機能と、をコンピュータに実現させる、コンピュータプログラム。
【0008】
この構成によれば、オブジェクトの全体から検出されるエラー部分を適切に示す合成画像を生成できる。
【0009】
なお、本明細書に開示の技術は、種々の態様で実現することが可能であり、例えば、データ処理方法およびデータ処理装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体(例えば、一時的ではない記録媒体)、等の形態で実現することができる。
【図面の簡単な説明】
【0010】
図1】一実施例としてのデータ処理装置を示す説明図である。
図2】(A)-(E)は、ラベルの撮影画像の説明図である。
図3】検査処理の例を示すフローチャートである。
図4】(A)は、検査対象のラベルの例を示す概略図である。(B)-(G)は、検査処理で使用される画像の概略図である。
図5】(A)-(H)は、検査処理で処理される画像の例を示す概略図である。
図6】合成画像の概略図である。
図7】検査処理の別の実施例のフローチャートである。
図8】検査処理で生成される画像の例を示す概略図である。
図9】対応関係Rosの例を示すグラフである。
【発明を実施するための形態】
【0011】
A.第1実施例:
A1.装置構成:
図1は、一実施例としてのデータ処理装置を示す説明図である。本実施例では、データ処理装置200は、例えば、パーソナルコンピュータである。データ処理装置200は、製品(例えば、複合機など)に設けられるオブジェクト(例えば、ラベル)の外観のエラー部分を示す画像データを生成するデータ処理装置の例である。本実施例では、複合機900に、ラベル800が貼付されている。本実施例では、ラベル800の外観が検査される。
【0012】
データ処理装置200は、プロセッサ210と、記憶装置215と、表示部240と、操作部250と、通信インタフェース270と、を備えている。これらの要素は、バスを介して互いに接続されている。記憶装置215は、揮発性記憶装置220と、不揮発性記憶装置230と、を含んでいる。
【0013】
プロセッサ210は、データ処理を行うように構成された装置であり、例えば、CPUである。揮発性記憶装置220は、例えば、DRAMであり、不揮発性記憶装置230は、例えば、フラッシュメモリである。不揮発性記憶装置230は、プログラム231と、物体検出モデルM1と、生成モデルM2と、を格納している。本実施例では、モデルM1、M2は、それぞれ、プログラムモジュールである。モデルM1、M2は、それぞれ、いわゆる機械学習モデルである。プログラム231とモデルM1、M2との詳細については、後述する。
【0014】
表示部240は、液晶ディスプレイ、有機ELディスプレイなどの、画像を表示するように構成された装置である。操作部250は、ボタン、レバー、表示部240上に重ねて配置されたタッチパネルなどの、ユーザによる操作を受け取るように構成された装置である。ユーザは、操作部250を操作することによって、種々の指示をデータ処理装置200に入力可能である。通信インタフェース270は、他の装置と通信するためのインタフェースである。通信インタフェース270は、例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェース、又は、専用ボードを介して接続するCameraLink,CoaXPressのうちの1種以上を含む。通信インタフェース270には、第1デジタルカメラ110(第1カメラ110と呼ぶ)と、第2デジタルカメラ120(第2カメラ120と呼ぶ)と、が接続される。
【0015】
A2.ラベル:
図2(A)-図2(E)は、ラベルの撮影画像の説明図である。図2(A)は、複合機900とデジタルカメラ110、120との斜視図を示している。複合機900のボディの外面に、ラベル800が貼付されている。
【0016】
図2(B)は、ラベル800の例を示している。本実施例では、ラベル800の形状は、略矩形状である。ラベル800は、複数の要素(ここでは、7個の要素EL1-EL7)を含んでいる。要素EL1、EL2、EL3、EL7は、それぞれ、複合機900に関連する情報を示す文字列である(例えば、ブランド名、モデル名、入力定格、製造者名、製造国、など)。要素EL4、EL5、EL6は、それぞれ、複合機900に関連するマークである(例えば、ロゴマーク、CEマーク、WEEEマーク、GSマーク、FCCマークなど)。
【0017】
幅W0は、ラベル800の横方向の大きさであり、高さH0は、ラベル800の縦方向の大きさである(単位は、例えば、cm)。アスペクト比R0は、幅W0に対する高さH0の比率である(R0=H0/W0)。以下、アスペクト比R0を、基準アスペクト比R0とも呼ぶ。
【0018】
図中には、ラベル800の4個の部分P11、P12、P21、P22の横方向の範囲が示されている。部分P11、P12、P21、P22の詳細については、後述する。
【0019】
後述するように、本実施例では、デジタルカメラによるラベル800の撮影画像を使用して、ラベル800が検査される。ラベル800の細かい構成(例えば、小さい文字、マークの細かい形状、など)を検査するためには、撮影画像が、高い画素密度で、ラベル800を表すことが好ましい。ラベル800に近い位置でデジタルカメラがラベル800を撮影する場合、撮影画像中のラベル800のサイズは、大きくなり、ラベル800を表す画素の総数は、多くなる。この結果、ラベル800は、高い画素密度で表される。ただし、ラベル800の一部は、デジタルカメラの撮影範囲の外にはみ出得る。複数のデジタルカメラがラベル800の互いに異なる部分を撮影する場合、ラベル800の全体の高精細な撮影画像を使用可能である。本実施例では、ラベル800の全体の高精細な撮影画像を使用するために、2個のデジタルカメラ110、120が、ラベル800を撮影する。
【0020】
図2(C)は、撮影範囲の例を示している。図中には、ラベル800と撮影範囲V1、V2とが示されている。第1撮影範囲V1は、第1カメラ110の撮影範囲であり、第2撮影範囲V2は、第2カメラ120の撮影範囲である。第1撮影範囲V1は、ラベル800の一部を含んでいる。第2撮影範囲V2は、ラベル800のうち第1撮影範囲V1に含まれない部分を含んでいる。
【0021】
図2(D)は、ラベル800と第2撮影範囲V2との位置関係の例を示している。図2(E)は、ラベル800と第1カメラ110の第1撮影範囲V1との位置関係を示している。図2(E)に示すように、ラベル800のうちの第1内部分P11は、第1撮影範囲V1に含まれる。ラベル800の残りの部分である第1外部分P12は、第1撮影範囲V1の外に位置する(第1外部分P12は、見切れる部分である)。第1内部分P11は、連続な1個の部分である。図2(D)に示すように、ラベル800のうちの第2内部分P21は、第2撮影範囲V2に含まれる。ラベル800の残りの部分である第2外部分P22は、第2撮影範囲V2の外に位置する(第2外部分P22は、見切れる部分である)。第2内部分P21は、連続な1個の部分である。第2内部分P21は、第1外部分P12の全体を含んでいる。従って、第1撮影範囲V1の撮影画像と、第2撮影範囲V2の撮影画像と、を参照することによって、ラベル800の全体の撮影画像を使用可能である。なお、本実施例では、撮影範囲V1、V2のそれぞれのサイズは、ラベル800の全体を含むことができず、ラベル800の一部のみを含むことが可能な小さいサイズであってよい。
【0022】
A3.検査処理:
図3は、検査処理の例を示すフローチャートである。データ処理装置200(図1)は、検査処理を実行することによって、複合機900(図2(A))のラベル800の外観を検査する。プログラム231は、検査処理のためのプログラムである。
【0023】
図4(A)は、検査対象のラベルの例を示す概略図である。このラベル800は、傷810を有している。傷810は、複合機900の製造過程で、誤って形成され得る。検査処理では、このようなエラーの有無が、撮影画像を使用して検査される。以下、検査対象のラベルを、対象ラベル800tと呼ぶ。
【0024】
検査のために、複合機900(図2(A))は、予め決められた位置に配置される。複合機900のこの位置は、カメラ110、120によるラベル800の撮影に適する位置である。本実施例では、複合機900の配置は、ベルトコンベアなどの機械によって行われる。複合機900の配置の後、検査処理の開始指示が、データ処理装置200に入力される。本実施例では、作業者は、操作部250を操作することによって、検査処理の開始指示を入力する。プロセッサ210は、開始指示に応じて、検査処理を開始する。なお、複合機900の配置は、作業者によって行われてよい。複合機900に代えて、カメラ110、120の位置が複合機900に適する位置に調整されてよい。開始指示は、データ処理装置200とは異なる他の装置によって、通信インタフェース270を介して、データ処理装置200に供給されてよい。
【0025】
プロセッサ210は、S110-S120(図3)の処理と、S130-S140の処理と、を実行する。プロセッサ210は、例えば、S110-S120の処理の後に、S130-S140の処理を実行する。なお、これらの処理は、逆の順番に、または、並列に、実行されてよい。
【0026】
S110では、プロセッサ210(図1)は、撮影指示を第1カメラ110に供給する。第1カメラ110は、指示に応じて、複合機900を撮影し、撮影画像の画像データを生成する。プロセッサ210は、第1カメラ110から画像データを取得する。プロセッサ210は、第1カメラ110から取得された画像データを使用して、物体検出モデルM1に入力するための撮影画像データを取得する。以下、第1カメラ110による撮影画像を、第1撮影画像と呼ぶ。
【0027】
図4(B)-図4(G)は、検査処理で使用される画像の概略図である。図4(B)は、第1撮影画像の例を示している。第1撮影画像IM10は、第1方向Dx(ここでは、右方向)に平行な2辺と、第1方向Dxに垂直な第2方向Dy(ここでは、下方向)に平行な2辺と、を有する矩形状の画像である。第1撮影画像IM10は、第1方向Dxと第2方向Dyとに沿ってマトリクス状に並ぶ複数の画素のそれぞれの色値によって、表されている。本実施例では、色値は、R(赤)、G(緑)、B(青)の3個の成分値で表されている。各成分値は、例えば、0から255までの256段階で表されている。第1撮影画像IM10は、対象ラベル800tの第1内部分P11を示している。対象ラベル800tの第1外部分P12は、第1撮影画像IM10に含まれない。本実施例では、第1撮影画像IM10の第1方向Dxとは反対方向側の辺S1が、第1内部分P11と第1外部分P12との間の境界を形成する。
【0028】
後述するように、撮影画像のデータは、物体検出モデルM1(図1)に入力される。物体検出モデルM1に入力すべき画像データのデータ形式は、予め決められいてる(第1処理データ形式と呼ぶ)。具体的には、第1方向Dxの画素数と、第2方向Dyの画素数と、各画素の色値の色成分(本実施例では、RGBの3色成分)とは、予め決められている。プロセッサ210は、第1カメラ110から取得される画像データに対して、トリミング処理と解像度変換処理を実行することによって、第1処理データ形式の撮影画像データを取得する。なお、第1カメラ110から取得される画像データの画像内の対象ラベル800tの位置と向きとは、それぞれ、予め決められた位置範囲と向き範囲とに含まれる。例えば、本実施例では、対象ラベル800tの輪郭の長辺は、第1方向Dxにおおよそ平行であり、対象ラベル800tの輪郭の短辺は、第2方向Dyにおおよそ平行である。プロセッサ210は、対象ラベル800tを含み得る予め決められた領域をトリミング処理によって抽出してよい。
【0029】
S120(図3)では、プロセッサ210は、第1撮影画像IM10からオブジェクト(ここでは、ラベル800)を検出する。本実施例では、プロセッサ210は、第1撮影画像IM10のデータを物体検出モデルM1(図1)に入力することによって、第1撮影画像IM10内のラベル800を表す部分を検出する。
【0030】
物体検出モデルM1は、種々の物体検出モデルであってよい。本実施例では、物体検出モデルM1は、YOLOv4と呼ばれる機械学習モデルである。YOLOv4モデルは、バウンディングボックスと呼ばれるオブジェクトの少なくとも一部を含む矩形の枠と、バウンディングボックスがオブジェクトを含むことの信頼度(物体スコアとも呼ばれる)と、バウンディングボックスがオブジェクトを含む場合のオブジェクトの種類(クラスとも呼ばれる)のそれぞれの確率(クラス確率とも呼ぶ)と、を予測する。物体検出の最終的な予測結果の決定方法は、種々の方法であってよい。例えば、信頼度(物体スコア)とクラス確率とから、クラス毎、バウンディングボックス毎の信頼度スコアが算出される。信頼度スコアは、例えば、物体スコアとクラス確率との積で表されてよい。閾値以上の信頼度スコアを有するバウンディングボックスとクラスとの組み合わせは、最終的な予測結果として使用される。閾値は、例えば、適切な検出結果が得られるように、予め実験的に決定されてよい。
【0031】
本実施例では、物体検出モデルM1は、物体検出モデルM1に入力される画像からラベル800の画像を囲むバウンディングボックスを出力するように、予め訓練済である。物体検出モデルM1の訓練方法は、物体検出モデルM1に適する任意の方法であってよい。本実施例では、物体検出モデルM1は、YOLOv4モデルである。物体検出モデルM1は、YOLOv4の以下の論文に記載の訓練方法によって、訓練されてよい。
Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao, "YOLOv4: Optimal Speed and Accuracy of Object Detection", arXiv:2004.10934 (2020), https://arxiv.org/abs/2004.10934
【0032】
プロセッサ210は、第1撮影画像IM10のデータを使用して物体検出モデルM1の演算を実行することによって、バウンディングボックスを示すデータを生成する。図4(C)は、第1撮影画像IM10から検出されるバウンディングボックスの例を示している(第1バウンディングボックスBB1と呼ぶ)。第1バウンディングボックスBB1の形状は、第1方向Dxに平行な2辺と、第2方向Dyに平行な2辺と、を有する矩形状である。第1バウンディングボックスBB1は、第1撮影画像IM10のうちのラベル800を示す部分(すなわち、第1内部分P11)を囲んでいる。
【0033】
図4(C)には、第1バウンディングボックスBB1の4個の頂点V11-V14が示されている。本実施例では、第1頂点V11と第2頂点V12とは、第1撮影画像IM10の辺S1上に位置している。すなわち、これらの頂点V11、V12は、第1内部分P11と第1外部分P12との境界を示している。
【0034】
後述するように、対象ラベル800tの第1内部分P11と第1外部分P12との間の境界を決定するために、各頂点V11-V14の座標が使用される。各頂点V11-V14の座標は、例えば、以下のように表される。
V11( 0 ,y1a)
V12( 0 ,y1b)
V13(x1a,y1b)
V14(x1a,y1a)
本実施例では、画像内の座標は、画素位置(X,Y)によって表されることとする。Xは、第1方向Dxの位置を示し、第1方向Dxに向かって増加する。Yは、第2方向Dyの位置を示し、第2方向Dyに向かって増加する。原点(0,0)は、画像の左上の角の画素の位置であることとする。第1撮影画像IM10内の座標の原点の位置は、左上の角の画素O1の位置である。
【0035】
図4(D)は、対象ラベル800tと第1バウンディングボックスBB1との概要を示している。図中において、第1幅W1は、第1バウンディングボックスBB1の第1方向Dxの大きさであり、第1高さH1は、第1バウンディングボックスBB1の第2方向Dyの大きさである(単位は、例えば、画素数)。第1幅W1は、第1内部分P11の幅と同じ、または、それらの間の差は小さい。第1高さH1は、第1内部分P11の高さと同じ、または、それらの間の差は小さい。第1アスペクト比R1は、第1幅W1に対する第1高さH1の比率である(R1=H1/W1)。図4(C)の頂点V11-V14の座標を参照する場合、W1=x1a、H1=y1b-y1aである。
【0036】
S130、S140(図3)は、第1カメラ110からの画像データに代えて第2カメラ120からの画像データが使用される点を除いて、S110、S120とそれぞれ同じである。S130では、プロセッサ210(図1)は、撮影指示を第2カメラ120に供給し、第2カメラ120から、撮影画像の画像データを取得する。プロセッサ210は、第2カメラ120から取得された画像データを使用して、物体検出モデルM1に入力するための撮影画像データを取得する。以下、第2カメラ120による撮影画像を、第2撮影画像と呼ぶ。
【0037】
図4(E)は、第2撮影画像の例を示している。第2撮影画像IM20は、対象ラベル800tの第2内部分P21を示している。対象ラベル800tの第2外部分P22は、第2撮影画像IM20に含まれない。本実施例では、第2撮影画像IM20の第1方向Dx側の辺S2が、第2内部分P21と第2外部分P22との間の境界を形成する。
【0038】
S140(図3)では、プロセッサ210は、第2撮影画像IM20のデータを物体検出モデルM1(図1)に入力することによって、第2撮影画像IM20内のラベル800を表す部分を検出する。具体的には、プロセッサ210は、第2撮影画像IM20のデータを使用して物体検出モデルM1の演算を実行することによって、バウンディングボックスを示すデータを生成する。
【0039】
図4(F)は、第2撮影画像IM20から検出されるバウンディングボックスの例を示している(第2バウンディングボックスBB2と呼ぶ)。第2バウンディングボックスBB2は、第2撮影画像IM20のうちのラベル800を示す部分(すなわち、第2内部分P21)を囲んでいる。
【0040】
図4(F)には、第2バウンディングボックスBB2の4個の頂点V21-V24が示されている。本実施例では、第1頂点V21と第2頂点V22とは、第2撮影画像IM20の辺S2上に位置している。すなわち、これらの頂点V21、V22は、第2内部分P21と第2外部分P22との境界を示している。
【0041】
後述するように、対象ラベル800tの第2内部分P21と第2外部分P22との間の境界を決定するために、各頂点V21-V24の座標が使用される。各頂点V21-V24の座標は、例えば、以下のように表される。
V21(xmx,y2a)
V22(xmx,y2b)
V23(x2a,y2b)
V24(x2a,y2a)
第2撮影画像IM20内の座標の原点の位置は、左上の角の画素O2の位置である。xmxは、第2撮影画像IM20内の第1方向Dxの画素位置の最大値である。
【0042】
図4(G)は、対象ラベル800tと第2バウンディングボックスBB2との概要を示している。図中において、第2幅W2は、第2バウンディングボックスBB2の第1方向Dxの大きさであり、第2高さH2は、第2バウンディングボックスBB2の第2方向Dyの大きさである(単位は、例えば、画素数)。第2幅W2は、第2内部分P21の幅と同じ、または、それらの間の差は小さい。第2高さH2は、第2内部分P21の高さと同じ、または、それらの間の差は小さい。第2アスペクト比R2は、第2幅W2に対する第2高さH2の比率である(R2=H2/W2)。図4(F)の頂点V21-V24の座標を参照する場合、W2=xmx-x2a、H2=y2b-y2aである。
【0043】
S150(図3)では、プロセッサ210は、アスペクト比R1、R2を使用して、撮影画像IM10、IM20から、主撮影画像と複撮影画像とを選択する。本実施例では、プロセッサ210は、基準アスペクト比R0(図2(B))により近いアスペクト比に対応する撮影画像を、主撮影画像として選択する。そして、プロセッサ210は、撮影画像IM10、IM20のうち、主撮影画像とは異なる撮影画像を、副撮影画像として選択する。
【0044】
図4(D)、図4(G)の例では、対象ラベル800t(図4(G))のうち第2バウンディングボックスBB2に含まれる第2内部分P21の割合(例えば、面積割合)と比べて、対象ラベル800t(図4(D))のうち第1バウンディングボックスBB1に含まれる第1内部分P11の割合が大きい。この場合、第1アスペクト比R1と基準アスペクト比R0との間の差は、第2アスペクト比R2と基準アスペクト比R0との間の差よりも、小さい。すなわち、第1アスペクト比R1は、第2アスペクト比R2と比べて、基準アスペクト比R0により近い。従って、プロセッサ210は、主撮影画像として第1撮影画像IM10を選択し、副撮影画像として第2撮影画像IM20を選択する。以下、第1撮影画像IM10を、主撮影画像IM10とも呼び、第2撮影画像IM20を、副撮影画像IM20とも呼ぶ。
【0045】
続いて、プロセッサ210は、S160-S190の処理と、S210-S230の処理と、を実行する。プロセッサ210は、例えば、S160-S190の処理の後に、S210-S230の処理を実行する。なお、これらの処理は、逆の順番に、または、並列に実行されてよい。
【0046】
S160では、プロセッサ210は、第1バウンディングボックスBB1の4個の頂点V11-V14のそれぞれの座標を取得する(図4(C))。S120で物体検出モデルM1から出力される出力データは、第1バウンディングボックスBB1を定める複数のパラメータ(例えば、第1バウンディングボックスBB1の中心座標と高さと幅)を示している。プロセッサ210は、出力データによって示される複数のパラメータを使用して、各頂点V11-V14の座標を算出する。
【0047】
S165(図3)では、プロセッサ210は、生成モデルM2(図1)に入力するための主入力画像のデータを生成する。図5(A)-図5(H)は、検査処理で処理される画像の例を示す概略図である。図5(A)は、主撮影画像IM10と第1バウンディングボックスBB1とを示している。図5(B)の画像IM11は、主入力画像の例を示している(画像IM11を、主入力画像IM11と呼ぶ)。主入力画像IM11は、対象ラベル800tの画像であり、主撮影画像IM10を使用して形成される。
【0048】
主入力画像IM11のデータ形式、すなわち、生成モデルM2に入力すべき画像データのデータ形式は、予め決められいてる(第2処理データ形式と呼ぶ)。具体的には、幅Wd(第1方向Dxの画素数)と、高さHd(第2方向Dyの画素数)と、各画素の色値の色成分(本実施例では、RGBの3色成分)とは、予め決められている。幅Wdに対する高さHdの比率(Hd/Wd)は、基準アスペクト比R0(図2(B))と同じである。すなわち、主入力画像IM11の形状は、ラベル800の形状と、実質的に同じである。
【0049】
第1撮影画像IM10(図5(A))が主撮影画像である場合、第1バウンディングボックスBB1に囲まれる部分(ここでは、第1内部分P11)は、対象ラベル800tの第1方向Dx側の端を含む一部分を示している。プロセッサ210は、主入力画像IM11(図5(B))の第1方向Dx側の端を含む一部分である第1対象部分P1iの画像を、第1バウンディングボックスBB1に囲まれる部分の画像に設定する。プロセッサ210は、S160で取得された頂点V11-V14の座標を使用して、主撮影画像IM10から、第1バウンディングボックスBB1に囲まれる部分の画像を抽出する。プロセッサ210は、主入力画像IM11の第1対象部分P1iの画像を、抽出された画像に設定する。これにより、第1対象部分P1iは、第1内部分P11の画像を表す。第1対象部分P1iの複数の画素のそれぞれの色値の決定方法は、主撮影画像IM10から抽出される画像の複数の画素を使用する種々の方法であってよい(例えば、ニアレストネイバ、バイリニア、バイキュービックなど)。
【0050】
第1対象部分P1iの高さは、主入力画像IM11の高さHdと同じである。第1対象部分P1iの幅である第1対応幅W1iは、第1対象部分P1iのアスペクト比(Hd/W1i)が、第1バウンディングボックスBB1(図5(A))のアスペクト比R1(=H1/W1)と同じとなるように、決定される。プロセッサ210は、第1対応幅W1iを、W1i=Hd*W1/H1に従って算出する。
【0051】
図中の線BS11は、第1対象部分P1iと、主入力画像IM11の残りの部分である残余部分P1oと、の間の境界線である。境界線BS11は、第2方向Dyに平行な線であり、主入力画像IM11の第1方向Dx側の辺SD11から第1対応幅W1iだけ離れた位置にある。上述したように、第1対象部分P1iには、第1内部分P11の画像が割り当てられる。従って、境界線BS11(ひいては、第1対応幅W1i)は、主入力画像IM11によって表される対象ラベル800t上の第1内部分P11と第1外部分P12(図4(D)参照。主入力画像IM11内では示されない)との間の境界の位置を示している。
【0052】
プロセッサ210は、第1対応幅W1iを使用して、主入力画像IM11の残余部分P1oを決定する。プロセッサ210は、残余部分P1oの画像を、予め決められた処理によって決定する。残余部分P1oの画像の決定処理は、種々の処理であってよい。本実施例では、プロセッサ210は、残余部分P1oの複数の画素のそれぞれの色を、予め決められた色(例えば、白、黒など)に決定する。このように、画像の不足する部分を補足する処理は、パディングとも呼ばれる。
【0053】
S170(図3)では、プロセッサ210は、主入力画像IM11のデータを使用して、主復元画像のデータを生成する。図5(C)の画像IM12は、主復元画像の例を示している(画像IM12を、主復元画像IM12と呼ぶ)。本実施例では、プロセッサ210は、主入力画像IM11(図5(B))のデータを使用して生成モデルM2の演算を実行することによって、主復元画像IM12のデータを生成する。
【0054】
生成モデルM2は、ラベル800の画像データから、エラーの無いラベル800の画像データを生成するためのモデルである。生成モデルM2の構成は、種々の構成であってよい。生成モデルM2は、例えば、いわゆるオートエンコーダであってよい。本実施例では、生成モデルM2は、ラベル800を示す種々の画像データから、エラーの無いラベル800の画像データを生成するように訓練済である。なお、本実施例では、生成モデルM2によって生成される画像データのデータ形式は、生成モデルM2に入力される画像データのデータ形式と同じである。
【0055】
生成モデルM2の訓練方法は、生成モデルM2に適する任意の方法であってよい。例えば、エラーの無いラベル800の画像データである訓練画像データが、生成モデルM2に入力される。訓練画像データを使用する生成モデルM2の演算によって、出力画像データが生成される。出力画像データと訓練画像データとの間の差分を示す損失が小さくなるように、生成モデルM2の複数のパラメータが調整される。複数のパラメータは、例えば、誤差逆伝播法と勾配降下法とを使用する方法によって、調整される。損失は、例えば、いわゆる交差エントロピーであってよい。生成モデルM2の訓練のために、いわゆるデータオーギュメンテーションによって、複数の訓練画像データが生成されてよい。損失の算出には、訓練画像データに代えて、訓練画像データに対応する基準画像データが使用されてよい。基準画像データは、訓練画像データによって表されるラベル800と同じラベル800であってエラーの無いラベル800を表す種々の画像データであってよい。例えば、訓練画像データが、ラベル800の画像データにノイズを付加することによって生成される場合に、基準画像データは、ノイズが付加される前の画像データであってよい。いずれの場合も、生成モデルM2に入力される画像と生成モデルM2によって生成される画像との間で、ラベル800を示す領域が同じであるように、生成モデルM2は訓練される。
【0056】
主復元画像IM12(図5(C)は、第1対象部分P1i(図5(B))に対応する第1内復元部分P11xと、残余部分P1oに対応する第1外復元部分P12xと、を含んでいる。上述したように、生成モデルM2は、ラベル800の画像データから、エラーの無いラベル800の画像データを生成するように、訓練済である。第1内復元部分P11xは、エラー(ここでは、傷810)の無いラベル800(図2(B))の第1内部分P11の画像を表している。
【0057】
一方、第1外復元部分P12xは、ラベル800(図2(B))の第1外部分P12の画像を表すことができない。この理由は、以下の通りである。生成モデルM2は、生成モデルM2に入力されるラベル800の画像に基づいて、ラベル800の画像を復元する。生成モデルM2は、ラベル800の画像とは異なる画像からは、ラベル800の画像を復元できない。本実施例では、主入力画像IM11(図5(B))の残余部分P1oは、ラベル800の画像を表していない。この結果、残余部分P1oに対応する第1外復元部分P12x(図5(C))は、ラベル800とは異なる画像を表す。また、生成モデルM2は、残余部分P1oの画像から同じ画像を復元するように訓練されていない。従って、第1外復元部分P12xは、残余部分P1oの画像とは異なる画像を表す。
【0058】
図示を省略するが、第1内復元部分P11xのうちの第1外復元部分P12xの近傍では、残余部分P1o(図5(B))の画像(すなわち、ラベル800とは異なる画像)の影響によって、ラベル800の画像の復元の精度が低下し得る。本実施例では、復元の精度低下の程度は、ラベル800のエラーを示す画像データの生成に影響しないほどに小さいこととする。
【0059】
S180(図3)では、プロセッサ210は、主入力画像IM11のデータと主復元画像IM12のデータとを使用して主差分画像のデータを生成する。図5(D)の画像IM13は、主差分画像の例を示している(画像IM13を、主差分画像IM13と呼ぶ)。主差分画像IM13の各画素は、2枚の画像IM11、IM12の間の対応する画素の色値の差を示している。色値の差は、元の画像IM11、IM12の色成分と同じ色成分で表される(ここでは、RGBの3色成分)。これに代えて、色値の差は、特定の色成分(例えば、輝度)で表されてよい。
【0060】
主差分画像IM13は、第1対象部分P1i(図5(B))に対応する第1内差部分D11と、残余部分P1oに対応する第1外差部分D12と、を含んでいる。第1内差部分D11では、傷810を示す複数の画素は、大きな差を示している。残りの複数の画素は、傷810を示す差よりも小さい差(例えば、ゼロに近い値)を示している。第1外差部分D12では、おおよそ全ての画素が、大きな差を示している。このように、主差分画像IM13は、対象ラベル800tのエラー(ここでは、傷810)のうちの第1内部分P11に含まれる部分810aを示している(部分810aを、第1エラー部分810aと呼ぶ)。
【0061】
S190(図3)では、プロセッサ210は、主差分画像IM13の無効部分を決定する。無効部分は、対象ラベル800tのエラーを適切に表していない部分である。本実施例では、第1外差部分D12が、無効部分として採用される。図5(D)の境界線BS13は、第1内差部分D11と第1外差部分D12との間の境界線である。境界線BS13は、図5(B)の境界線BS11と同じであり、主差分画像IM13の第1方向Dx側の辺SD13から、第1対応幅W1iだけ離れた位置にある。図5(B)で説明したように、第1対応幅W1iは、対象ラベル800t上の第1内部分P11と第1外部分P12との間の境界の位置を示している。プロセッサ210は、第1対応幅W1iに従って、境界線BS13を決定する。プロセッサ210は、境界線BS13よりも左側の部分、すなわち、境界線BS13よりも第1方向Dxとは反対方向側の部分(ここでは、第1外差部分D12)を、無効部分として決定する。以下、第1外差部分D12を、無効部分D12とも呼ぶ。
【0062】
図5の続くS210、S215、S220、S230は、主撮影画像IM10の代わりに副撮影画像IM20が処理される点を除いて、S160、S165、S170、S180とそれぞれ同じである。S210では、プロセッサ210は、第2バウンディングボックスBB2の4個の頂点V21-V24のそれぞれの座標を取得する(図4(F))。
【0063】
S215では、プロセッサ210は、生成モデルM2(図1)に入力するための副入力画像のデータを生成する。図5(E)は、副撮影画像IM20と第2バウンディングボックスBB2とを示している。図5(F)の画像IM21は、副入力画像の例を示している(画像IM21を、副入力画像IM21と呼ぶ)。
【0064】
第2撮影画像IM20(図5(E))が副撮影画像である場合、第2バウンディングボックスBB2に囲まれる部分(ここでは、第2内部分P21)は、対象ラベル800tの第1方向Dxとは反対方向側の端を含む一部分を示している。プロセッサ210は、副入力画像IM21(図5(F))の第1方向Dxとは反対方向側の端を含む一部分である第2対象部分P2iの画像を、第2バウンディングボックスBB2に囲まれる部分の画像に設定する。プロセッサ210は、S210で取得された頂点V21-V24の座標を使用して、副撮影画像IM20から、第2バウンディングボックスBB2に囲まれる部分の画像を抽出する。プロセッサ210は、副入力画像IM21の第2対象部分P2iの画像を、抽出された画像に設定する。これにより、第2対象部分P2iは、第2内部分P21の画像を表す。
【0065】
第2対象部分P2iの高さは、副入力画像IM21の高さHdと同じである。第2対象部分P2iの幅である第2対応幅W2iは、第2対象部分P2iのアスペクト比(Hd/W2i)が、第2バウンディングボックスBB2(図5(E))のアスペクト比(H2/W2)と同じとなるように、決定される。プロセッサ210は、第2対応幅W2iを、W2i=Hd*W2/H2に従って算出する。
【0066】
図中の線BS21は、第2対象部分P2iと、副入力画像IM21の残りの部分である残余部分P2oと、の間の境界線である。境界線BS21は、第2方向Dyに平行な線であり、副入力画像IM21の左側の辺SD21(すなわち、第1方向Dxとは反対方向側の辺SD21)から第2対応幅W2iだけ離れた位置にある。上述したように、第2対象部分P2iには、第2内部分P21の画像が割り当てられる。従って、境界線BS21(ひいては、第2対応幅W2i)は、副入力画像IM21によって表される対象ラベル800t上の第2内部分P21と第2外部分P22(図4(G)参照。副入力画像IM21内では示されない)との間の境界の位置を示している。
【0067】
プロセッサ210は、第2対応幅W2iを使用して、副入力画像IM21の残余部分P2oを決定する。プロセッサ210は、残余部分P2oの画像を、S165の残余部分P1oの画像の決定処理と同じ処理によって決定する。
【0068】
S220(図3)では、プロセッサ210は、副入力画像IM21のデータを使用して、副復元画像のデータを生成する。図5(G)の画像IM22は、副復元画像の例を示している(画像IM22を、副復元画像IM22と呼ぶ)。本実施例では、プロセッサ210は、副入力画像IM21(図5(F))のデータを使用して生成モデルM2の演算を実行することによって、副復元画像IM22のデータを生成する。
【0069】
副復元画像IM22は、第2対象部分P2i(図5(F))に対応する第2内復元部分P21xと、残余部分P2oに対応する第2外復元部分P22xと、を含んでいる。第2内復元部分P21xは、エラー(ここでは、傷810)の無いラベル800(図2(D))の第2内部分P21の画像を表している。第2外復元部分P22xは、ラベル800の画像とも残余部分P2oの画像とも異なる画像を表している。
【0070】
図示を省略するが、第2内復元部分P21xのうちの第2外復元部分P22xの近傍では、残余部分P2o(図5(F))の画像(すなわち、ラベル800とは異なる画像)の影響によって、ラベル800の画像の復元の精度が低下し得る。本実施例では、復元の精度低下の程度は、ラベル800のエラーを示す画像データの生成に影響しないほどに小さいこととする。
【0071】
S230(図3)では、プロセッサ210は、副入力画像IM21のデータと副復元画像IM22のデータとを使用して副差分画像のデータを生成する。図5(H)の画像IM23は、副差分画像の例を示している(画像IM23を、副差分画像IM23と呼ぶ)。副差分画像IM23のデータの生成方法は、S180での主差分画像IM13の生成方法と同じである。
【0072】
副差分画像IM23は、第2対象部分P2i(図5(F))に対応する第2内差部分D21と、残余部分P2oに対応する第2外差部分D22と、を含んでいる。第2内差部分D21では、傷810を示す複数の画素は、大きな差を示している。残りの複数の画素は、傷810を示す差よりも小さい差(例えば、ゼロに近い値)を示している。第2外差部分D22では、おおよそ全ての画素が、大きな差を示している。このように、副差分画像IM23は、対象ラベル800tのエラー(ここでは、傷810)のうちの第2内部分P21に含まれる部分810bを示している(部分810bを、第2エラー部分810bと呼ぶ)。
【0073】
図中の境界線BS23は、第2内差部分D21と第2外差部分D22との間の境界線である。境界線BS23は、図5(F)の境界線BS21と同じであり、副差分画像IM23の第1方向Dxとは反対方向側の辺SD23から、第2対応幅W2iだけ離れた位置にある。図5(F)で説明したように、第2対応幅W2iは、対象ラベル800t上の第2内部分P21と第2外部分P22との間の境界の位置を示している。境界線BS23よりも第1方向Dx側の部分(ここでは、第2外差部分D22)は、無効部分である。
【0074】
S258(図3)では、プロセッサ210は、主差分画像IM13(図5(D))の無効部分D12に副差分画像IM23(図5(H))の対応する部分を合成することによって、合成画像のデータを生成する。図6は、合成画像の概略図である。図中には、差分画像IM13、IM23と、合成画像IM4と、が示されている。合成画像IM4は、第1部分P41と第2部分P42とを含んでいる。本実施例では、主差分画像IM13の第1内差部分D11が、そのまま、第1部分P41として使用される。第2部分P42の画像は、副差分画像IM23を使用して形成される。
【0075】
差分画像IM13、IM23には、共通部分PCが示されている。共通部分PCは、差分画像IM13、IM23に共通な部分である。この共通部分PCは、第1内部分P11(図5(B))と第2内部分P21(図5(F))との共通部分に相当する。本実施例では、境界線BS13と境界線BS23との間の部分が、共通部分PCである。プロセッサ210は、主差分画像IM13に対する副差分画像IM23の合成位置を、共通部分PCが重なるように、決定する。本実施例では、プロセッサ210は、差分画像IM13、IM23のパターンマッチングによって、合成位置を決定する。なお、合成位置は、差分画像IM13、IM23に関連する他の2個の画像(例えば、入力画像IM11、IM21)のパターンマッチングによって決定されてよい。
【0076】
副差分画像IM23の部分D12xは、主差分画像IM13の無効部分D12に対応する部分である(対応部分D12xと呼ぶ)。プロセッサ210は、合成位置を使用して、合成画像IM4の第2部分P42の画像を、副差分画像IM23の対応部分D12xの画像に設定する。対応部分D12xは、副差分画像IM23の第2外差部分D22ではなく、第2内差部分D21に含まれている。従って、対応部分D12xは、対象ラベル800tのエラー(例えば、傷810)を、適切に示している。合成画像IM4の第2部分P42の複数の画素のそれぞれの色値の決定方法は、対応部分D12xの複数の画素を使用する種々の方法であってよい(例えば、ニアレストネイバ、バイリニア、バイキュービックなど)。以上により、プロセッサ210は、対象ラベル800tの全体のエラー(例えば、傷810の全体)を示す合成画像IM4のデータを生成する。
【0077】
S260(図3)では、プロセッサ210は、合成画像IM4(図6)と、オブジェクト(ここでは、ラベル800)の基準画像と、の重畳画像のデータを生成する。図6の画像IM5は、基準画像の例を示している(画像IM5を、基準画像IM5と呼ぶ)。基準画像IM5は、エラーの無いラベル800の種々の画像であってよい。本実施例では、ラベル800は、ラベル800の版下画像をシートに印刷することによって、製造される。基準画像IM5は、版下画像である。これに代えて、基準画像IM5は、エラーの無いラベル800の撮影画像であってよい。
【0078】
図6の画像IM6は、重畳画像の例を示している(画像IM6を、重畳画像IM6と呼ぶ)。重畳画像IM6は、基準画像IM5によって表されるラベル800と、合成画像IM4によって表される傷810と、を表している。
【0079】
なお、S110、S130(図3)での撮影時、対象ラベル800tは、カメラ110、120に対して斜めに傾き得る。撮影画像IM10、IM20(図5(A)、図5(E))上で、対象ラベル800tは、歪み得る。例えば、ラベル800内の矩形部分(例えば、矩形のマーク)は、撮影画像IM10、IM20上で、台形で表され得る。合成画像IM4(図6)は、同じ歪みを有している。また、撮影画像IM10、IM20内で対象ラベル800tが歪んでいない場合であっても、撮影画像IM10、IM20内の対象ラベル800tの向きが、意図された向きからずれている場合がある。例えば、対象ラベル800tの長辺が、第1方向Dxに対して斜めであり得る。
【0080】
歪み、向きのずれ、などの種々の原因によって、撮影画像IM10、IM20(ひいては、合成画像IM4)と、基準画像IM5と、の間のラベル800tに対応する領域の差異が生じる。例えば、合成画像IM4と基準画像IM5とを、画像IM4、IM5の輪郭が一致するように重ねると仮定する。この場合、合成画像IM4中の対象ラベル800tに対応する領域と、基準画像IM5中のラベル800tに対応する領域(すなわち、ラベル800に対応する領域)とは、完全には一致せずに、互いに異なる部分を含み得る。
【0081】
プロセッサ210は、撮影画像IM10、IM20(ひいては、合成画像IM4)と、基準画像IM5と、の間のラベル800t、800に対応する領域の差異が小さくなるように、合成画像IM4のデータに画像変換処理を実行する。画像変換処理は、例えば、射影変換処理であってよい。プロセッサ210は、主撮影画像IM10(図5(A))上の対象ラベル800tの複数の特定部分(例えば、矩形のマークの4個の角)の配置が、基準画像IM5(図6)上の同じ複数の特定部分の配置と同じとなるように、射影変換のパラメータを決定する。パラメータの決定のために、プロセッサ210は、主撮影画像IM10と基準画像IM5とから、各特定部分の基準画像を使用するパターンマッチングによって、複数の特定部分のそれぞれを検出する。ここで、特定部分毎の基準画像に代えて、複数の特定部分を表す1個の基準画像が使用されてよい。プロセッサ210は、決定されたパラメータに従って、合成画像IM4の射影変換を実行する。プロセッサ210は、変換済の合成画像IM4を使用して重畳画像IM6を生成する。射影変換には、例えば、いわゆるopenCVの射影変換の関数が使用されてよい。
【0082】
S270(図3)では、プロセッサ210は、重畳画像IM6を、表示部240(図1)に表示する。作業者は、表示される重畳画像IM6を観察することによって、傷810を容易に認識できる。そして、プロセッサ210は、図3の処理を終了する。図3の検査処理は、複数の複合機900のそれぞれの検査で実行される。
【0083】
以上のように、プロセッサ210は、以下の処理を実行する。S110、S130(図3)では、プロセッサ210は、第1カメラ110と第2カメラ120とを含む2台のカメラ110、120によってそれぞれ撮影される対象ラベル800tの2個の撮影画像データを取得する。対象ラベル800tは、処理対象のオブジェクトの例である。図5(A)に示すように、第1カメラ110により撮影される第1撮影画像データは、対象ラベル800tの第1内部分P11の第1撮影画像IM10を表している。図5(E)に示すように、第2カメラ120により撮影される第2撮影画像データは、対象ラベル800tの第2内部分P21の第2撮影画像IM20を表している。第1内部分P11と第2内部分P21とは、対象ラベル800tのうちの互いに異なる部分を含んでいる。例えば、第1内部分P11(図2(B))は、第2内部分P21には含まれない第2外部分P22に対応する部分を含んでいる。第2内部分P21は、第1内部分P11には含まれない第1外部分P12に対応する部分を含んでいる。
【0084】
S120(図3)では、プロセッサ210は、第1撮影画像IM10から第1内部分P11を検出する(本実施例では、第1内部分P11を囲む第1バウンディングボックスBB1が検出される)。S140では、プロセッサ210は、第2撮影画像IM20から第2内部分P21を検出する(本実施例では、第2内部分P21を囲む第2バウンディングボックスBB2が検出される)。
【0085】
S165(図3)では、プロセッサ210は、第1対応幅W1i(図5(B))を取得する。上述したように、第1対応幅W1iは、対象ラベル800tの第1内部分P11と第1外部分P12(図4(D))との境界の対象ラベル800t上の位置である第1位置を示している。第1内部分P11は、対象ラベル800tのうち第1撮影画像IM10(図5(A))に含まれる部分である。第1外部分P12は、対象ラベル800tのうち第1撮影画像IM10の外に位置する見切れる部分である。
【0086】
S170、S180(図3)では、プロセッサ210は、主入力画像IM11(図5(B))のデータと主復元画像IM12(図5(C))のデータとを使用して、主差分画像IM13(図5(D))のデータを生成する。主入力画像IM11は、第1撮影画像IM10(図5(A))に含まれる第1内部分P11の画像を含んでいる。主復元画像IM12は、エラーの無いラベル800の画像である第1基準画像の例である。主差分画像IM13は、対象ラベル800tの第1エラー部分810aを示している。本実施例では、この第1エラー部分810aは、傷810のうちの第1内部分P11に含まれる部分である。主差分画像IM13は、対象ラベル800tの第1エラー部分810aを示す第1エラー画像の例である。
【0087】
S220、S230(図3)では、プロセッサ210は、副入力画像IM21(図5(F))のデータと副復元画像IM22(図5(G))のデータとを使用して、副差分画像IM23(図5(H))のデータを生成する。副入力画像IM21は、第2撮影画像IM20(図5(E))に含まれる第2内部分P21の画像を含んでいる。副復元画像IM22は、エラーの無いラベル800の画像である第2基準画像の例である。副差分画像IM23は、対象ラベル800tの第2エラー部分810bを示している。本実施例では、この第2エラー部分810bは、傷810のうちの第2内部分P21に含まれる部分である。副差分画像IM23は、対象ラベル800tの第2エラー部分810bを示す第2エラー画像の例である。
【0088】
S190、S258(図3)では、プロセッサ210は、主差分画像IM13(図6)のデータと、第1対応幅W1iと、副差分画像IM23のデータと、を使用することによって、合成画像IM4のデータを生成する。S190では、プロセッサ210は、第1対応幅W1iを使用して、主差分画像IM13の無効部分D12を決定する。S258では、プロセッサ210は、主差分画像IM13の無効部分D12に副差分画像IM23の対応する部分D12xを合成することによって、合成画像IM4のデータを生成する。合成画像IM4は、対象ラベル800tの全体から検出されるエラー部分(ここでは、傷810)を示している。合成画像IM4は、主差分画像IM13の少なくとも一部と、副差分画像IM23の少なくとも一部と、を含む合成画像である。合成画像IM4は、対象ラベル800tの全体から検出されるエラー部分を示す合成エラー画像の例である。合成画像IM4を、合成エラー画像IM4とも呼ぶ。
【0089】
以上により、1枚の撮影画像が対象ラベル800tの一部分のみを表す場合に、プロセッサ210は、複数の撮影画像IM10、IM20を使用して、対象ラベル800tの全体から検出されるエラー部分を示す合成エラー画像IM4を生成できる。
【0090】
また、仮に、2枚の撮影画像IM10、IM20の合成画像と、基準画像IM5と、の対比によってエラーが検出されると仮定する。この場合、合成画像中の撮影画像IM10、IM20の接続部分では、画像の歪みが生じ得る。この画像の歪みは、ラベル800の基準画像からの大きな差分を示し得る。従って、対象ラベル800tのエラーの無い部分から、エラーが誤検出され得る。本実施例では、エラーの検出(S180、S230)は、合成されていない画像IM11、IM21を使用して行われる。従って、エラーの誤検出の可能性は、低減する。
【0091】
また、S170(図3)では、プロセッサ210は、第1内部分P11の画像を含む主入力画像IM11(図5(B))のデータを生成モデルM2に入力することによって、第1基準画像(ここでは、主復元画像IM12(図5(C)))のデータを生成する。生成モデルM2は、エラーを有するラベル800の画像データからエラーの無いラベル800の画像データを生成するように訓練された生成モデルである。S220では、プロセッサ210は、第2内部分P21の画像を含む副入力画像IM21(図5(F))のデータを生成モデルM2に入力することによって、第2基準画像(ここでは、副復元画像IM22(図5(G)))のデータを生成する。以上により、プロセッサ210は、第1エラー部分810aを示す主差分画像IM13のデータと、第2エラー部分810bを示す副差分画像IM23のデータとを、適切に生成できる。
【0092】
また、S260(図3)では、プロセッサ210は、合成エラー画像IM4(図6)と、基準画像IM5と、の重畳画像IM6のデータを生成する。S270では、プロセッサ210は、重畳画像IM6を、表示部240に表示させる。このように、プロセッサ210は、エラー部分(例えば、傷810)を示す重畳画像IM6を表示部240に表示できる。作業者は、重畳画像IM6を観察することによって、エラーを容易に認識できる。
【0093】
また、S260(図3)では、プロセッサ210は、合成エラー画像IM4(図6)と基準画像IM5との間のラベル800tに対応する領域の差異が小さくなるように、合成エラー画像IM4のデータに画像変換処理(ここでは、射影変換処理)を実行する。従って、重畳画像IM6中の対象ラベル800tとエラー部分(例えば、傷810)との間の位置ずれは、小さくなる。作業者は、重畳画像IM6を観察することによって、対象ラベル800t内のエラーの位置を適切に認識できる。
【0094】
また、合成エラー画像IM4(図6)を生成する処理は、図3のS150、S258を含んでいる。S150では、プロセッサ210は、第1撮影画像IM10と第2撮影画像IM20とから、主撮影画像と副撮影画像とを選択する。主撮影画像は、第1撮影画像IM10の第1バウンディングボックスBB1の第1アスペクト比R1と第2撮影画像IM20の第2バウンディングボックスBB2の第2アスペクト比R2とのうちの基準アスペクト比R0により近いアスペクト比に対応付けられる画像である。上述したように、第1バウンディングボックスBB1は、第1内部分P11を示している。第1アスペクト比R1は、第1内部分P11のアスペクト比を示している。また、第2バウンディングボックスBB2は、第2内部分P21を示している。第2アスペクト比R2は、第2内部分P21のアスペクト比を示している。図4(D)、図4(G)の例では、第1撮影画像IM10が主撮影画像であり、第2撮影画像IM20が副撮影画像である。S258では、プロセッサ210は、合成エラー画像IM4(図6)のうち、主撮影画像IM10の外に位置する第2部分P42を、副撮影画像IM20を使用して生成される副差分画像IM23の対応する部分D12xを使用して形成する。このように、プロセッサ210は、適切な合成エラー画像IM4を生成できる。
【0095】
また、処理対象のオブジェクトは、ラベル800(図2(B))である。図6に示すように、プロセッサ210は、ラベル800のエラー部分(例えば、傷810)を適切に示す画像である合成画像IM4を生成できる。
【0096】
B.第2実施例:
図7は、検査処理の別の実施例のフローチャートである。図6の実施例との差異は、合成エラー画像IM4の共通部分PCの合成方法が異なる点だけである。合成エラー画像IM4の他の部分の合成方法は、図6の実施例と同じである。本実施例では、副差分画像IM23のうち、対応部分D12xの画像に加えて、共通部分PCのうちの対応部分D12xに連続する一部分の画像が、合成エラー画像IM4に組み込まれる。これにより、生成モデルM2によるラベル800の画像の復元の精度の低い部分の影響は、緩和される(詳細は、後述)。図7の処理は、図3の処理に、S252a、S254a、S256a、S258aを追加することによって得られる。S252a、S254a、S256a、S258aは、S190、S230の後、かつ、S260の前に、追加される。図3のステップと同じステップには、同じ符号を付して、詳細な説明を省略する。
【0097】
以下、図5(A)、図5(E)の撮影画像IM10、IM20に基づいて検査処理が行われることとする。S120では、図5(A)の第1バウンディングボックスBB1が検出される。S140では、図5(E)の第2バウンディングボックスBB2が検出される。S150では、第1撮影画像IM10が主撮影画像として選択され、第2撮影画像IM20が副撮影画像として選択される。S165では、図5(B)の主入力画像IM11が生成される。S215では、図5(F)の副入力画像IM21が生成される。
【0098】
図8は、検査処理で生成される画像の例を示す概略図である。図中には、以下の画像が示されている。
主復元画像IM12(S170(図7)で生成される)
主差分画像IM13(S180で生成される)
副復元画像IM22(S220で生成される)
副差分画像IM23(S230で生成される)
合成エラー画像IM4a(S258aで生成される)
【0099】
上述したように、主復元画像IM12の第1内復元部分P11xのうちの第1外復元部分P12xの近傍では、残余部分P1o(図5(B))の画像(すなわち、ラベル800とは異なる画像)の影響によって、ラベル800の画像の復元の精度が低下し得る。本実施例では、復元の精度低下が合成エラー画像IM4aの生成に影響し得ることとする。主差分画像IM13の第1内差部分D11のうちの第1外差部分D12の近傍では、傷810を示す部分とは異なる部分(すなわち、不具合の無い部分)の複数の画素が、大きな差を示し得る。
【0100】
副復元画像IM22と副差分画像IM23とについても、同様である。副復元画像IM22の第2内復元部分P21xのうちの第2外復元部分P22xの近傍では、残余部分P2o(図5(F))の画像(すなわち、ラベル800とは異なる画像)の影響によって、ラベル800の画像の復元の精度が低下し得る。本実施例では、復元の精度低下が合成エラー画像IM4aの生成に影響し得ることとする。副差分画像IM23の第2内差部分D21のうちの第2外差部分D22の近傍では、傷810を示す部分とは異なる部分(すなわち、不具合の無い部分)の複数の画素が、大きな差を示し得る。
【0101】
プロセッサ210(図1)は、S252a-S258a(図7)を実行することによって、ラベル800の画像の復元の精度の低い部分を使用せずに、合成エラー画像IM4aのデータを生成する。S252aでは、プロセッサ210は、境界の位置を使用して、共通部分を決定する。図8の差分画像IM13、IM23に示すように、共通部分PCは、境界線BS13、BS23に挟まれる部分である。境界線BS13は、図5(D)に示すように、第1対応幅W1iによって定められる。プロセッサ210は、S165(図3図7)で算出される第1対応幅W1iを使用して、境界線BS13を決定する。境界線BS23は、図5(H)に示すように、第2対応幅W2iによって定められる。プロセッサ210は、S215(図3図7)で算出される第2対応幅W2iを使用して、境界線BS23を決定する。プロセッサ210は、決定された境界線BS13、BS23の間の部分を、共通部分PCとして採用する。なお、図5(B)、図5(F)に示すように、共通部分PCは、第1内部分P11と第2内部分P21との共通部分に相当する。
【0102】
S254a(図7)では、プロセッサ210は、主撮影画像IM10(図5(A))によって表される対象ラベル800tのうちの見切れる部分である第1外部分P12の面積を算出する。図5(B)の幅W1rは、第1外部分P12に対応する残余部分P1oの第1方向Dxの大きさである。プロセッサ210は、幅Wdから第1対応幅W1iを減算することによって、幅W1rを算出する(W1r=Wd-W1i)。プロセッサ210は、幅W1rに高さHdを乗じて得られる値を、第1外部分P12の面積Soとして算出する(単位は、例えば、画素数)。以下、面積Soを、外面積Soと呼ぶ。
【0103】
S256a(図7)では、プロセッサ210は、外面積Soを使用して、共通部分PCのうちの第1特定部分を決定する。図8の差分画像IM13、IM23には、共通部分PCが示されている。共通部分PCは、第1特定部分Psと第2特定部分Pmとを含んでいる。本実施例では、第1特定部分Psと第2特定部分Pmとの間の境界線BScは、第2方向Dyに平行な直線である。第1特定部分Psは、共通部分PCのうちの無効部分D12に連続する部分である。第2特定部分Pmは、共通部分PCから第1特定部分Psを除いた残りの部分である。幅Wsは、第1特定部分Psの第1方向Dxの大きさである(単位は、例えば、画素数)。
【0104】
プロセッサ210は、S254aで算出される外面積Soを使用して、第1特定部分Psの面積を決定する。図9は、外面積Soと、第1特定部分Psの面積Ss(特定面積Ssと呼ぶ)との対応関係Rosの例を示すグラフである。横軸は、外面積Soを示し、縦軸は、特定面積Ssを示している。図中には、第1外面積So1と第2外面積So2とが示されている。第1外面積So1には、第1特定面積Ss1が対応付けられ、第2外面積So2には、第2特定面積Ss2が対応付けられる。ここで、So1<So2である。この場合、Ss1<Ss2である。このように、本実施例では、外面積Soが大きいほど、特定面積Ssは大きい。例えば、図8のグラフのように、特定面積Ssは、外面積Soに比例してよい。
【0105】
プロセッサ210は、予め決められた対応関係Rosに従って、外面積Soに対応する特定面積Ssを決定する。プロセッサ210は、特定面積Ssを高さHdで除算することによって、幅Wsを算出する。プロセッサ210は、幅Wsを使用して、境界線BSc、すなわち、第1特定部分Psを決定する。
【0106】
S258a(図7)では、プロセッサ210は、主差分画像IM13の無効部分D12と第1特定部分Psとに、副差分画像IM23の対応する部分を合成することによって、合成エラー画像IM4aを生成する。図8に示すように、合成エラー画像IM4aは、第1部分P41aと、第2部分P42aと、を含んでいる。本実施例では、主差分画像IM13の第1内差部分D11から第1特定部分Psを除いた残りの部分である第1対応部分P41axが、そのまま、第1部分P41aとして使用される。第1対応部分P41axは、第1内差部分D11のうちの第1外差部分D12から離れた部分である。従って、第1対応部分P41axは、対象ラベル800tのエラー(例えば、傷810)を、適切に示している。
【0107】
主差分画像IM13の残余部分Pxは、主差分画像IM13から第1対応部分P41axを除いた残りの部分である。残余部分Pxは、無効部分D12と第1特定部分Psとで構成されている。副差分画像IM23の部分P42axは、主差分画像IM13の残余部分Pxに対応する部分である(この部分P42axを、第2対応部分P42axと呼ぶ)。プロセッサ210は、図3のS258での合成位置の決定方法と同じ方法で、主差分画像IM13に対する副差分画像IM23の合成位置を決定する。プロセッサ210は、合成位置を使用して、合成エラー画像IM4aの第2部分P42aの画像を、副差分画像IM23の第2対応部分P42axの画像に設定する。第2対応部分P42axは、第2内差部分D21のうちの第2外差部分D22から離れた部分である。従って、第2対応部分P42axは、対象ラベル800tのエラー(例えば、傷810)を、適切に示している。
【0108】
このように、合成エラー画像IM4aは、対象ラベル800tのエラー(例えば、傷810)を適切に示す第1対応部分P41axと第2対応部分P42axとの合成画像である。このような合成エラー画像IM4aは、対象ラベル800tの全体のエラー(例えば、傷810の全体)を適切に示すことができる。
【0109】
続くS260、S270(図7)は、図3のS260、S270と、それぞれ同じである。S260では、プロセッサ210は、合成エラー画像IM4aと、基準画像IM5(図6)と、の重畳画像のデータを生成する。S270では、プロセッサ210は、重畳画像を、表示部240に表示する。そして、プロセッサ210は、図7の検査処理を終了する。
【0110】
以上のように、本実施例の検査処理(図7)は、図3の検査処理に、S252a、S254a、S256a、S258aを追加することによって得られる。追加される処理は、合成エラー画像IM4aの共通部分PCの合成方法を変更するものである。図7の検査処理の他の部分は、図3の検査処理の対応する部分と同じである。従って、本実施例の検査処理は、図3の検査処理のものと同じ種々の利点を有する。
【0111】
また、プロセッサ210は、以下の処理を実行する。S215(図7)では、プロセッサ210は、第2対応幅W2i(図5(F))を取得する。上述したように、第2対応幅W2iは、対象ラベル800tの第2内部分P21と第2外部分P22(図4(G))との境界の対象ラベル800t上の位置である第2位置を示している。第2内部分P21は、対象ラベル800tのうち第2撮影画像IM20(図5(E))に含まれる部分である。第2外部分P22は、対象ラベル800tのうち第2撮影画像IM20の外に位置する見切れる部分である。
【0112】
S252a(図7)では、プロセッサ210は、第1対応幅W1iと第2対応幅W2iとを使用して、第1内部分P11(図5(B))と第2内部分P21(図5(F))との共通部分PCを決定する。
【0113】
S258aでは、プロセッサ210は、合成エラー画像IM4a(図8)の共通部分PCのうち、第1特定部分Psを、副差分画像IM23を使用して形成する。第1特定部分Psは、無効部分D12に連続する部分である。無効部分D12は、第1外部分P12(図5(A))、すなわち、対象ラベル800tのうちの第1撮影画像IM10の外に位置する見切れる部分に相当する。副差分画像IM23は、図5(E)-図5(H)で説明したように、第2撮影画像IM20を使用して生成される。すなわち、プロセッサ210は、合成エラー画像IM4aの共通部分PCのうち、第1特定部分Psを、第2撮影画像IM20を使用して形成する。
【0114】
S258a(図7)では、プロセッサ210は、合成エラー画像IM4a(図8)の共通部分PCの残りの部分である第2特定部分Pmを、主差分画像IM13を使用して形成する。主差分画像IM13は、図5(A)-図5(D)で説明したように、第1撮影画像IM10を使用して生成される。すなわち、プロセッサ210は、合成エラー画像IM4aの共通部分PCのうち、第2特定部分Pmを、第1撮影画像IM10を使用して形成する。
【0115】
以上により、プロセッサ210は、共通部分PCのエラー部分を適切に示す合成エラー画像IM4a(図8)を生成できる。例えば、主復元画像IM12の第1特定部分Psでは、ラベル800の画像の復元の精度が低下し得る。合成エラー画像IM4aのうちの第1特定部分Psの画像は、副差分画像IM23から取得されるので、復元の精度低下の影響は、緩和される。また、副復元画像IM22の第2特定部分Pmでは、ラベル800の画像の復元の精度が低下し得る。合成エラー画像IM4aのうちの第2特定部分Pmの画像は、主差分画像IM13から取得されるので、復元の精度低下の影響は、緩和される。
【0116】
また、S254a、S256a(図7)では、プロセッサ210は、共通部分PC(図8)のうちの第1特定部分Psを、第1外部分P12(図5(A))の面積である外面積Soを使用して決定する。第1特定部分Psは、共通部分PCのうちの無効部分D12に連続する部分である。無効部分D12は、第1外部分P12(図5(A)-図5(D))を示している。従って、第1特定部分Psは、第1外部分P12に連続する部分である。なお、第1外部分P12は、対象ラベル800tのうちの第1撮影画像IM10の外に位置する見切れる部分である。
【0117】
プロセッサ210は、第1特定部分Psの面積である特定面積Ssを、図9の対応関係Rosを使用して決定する。プロセッサ210は、外面積Soが第1外面積So1よりも大きい第2外面積So2である場合の第2特定面積Ss2を、外面積Soが第1外面積So1である場合の第1特定面積Ss1よりも大きい値に決定する。すなわち、第2外面積So2に対応する第1特定部分Psは、第1外面積So1に対応する第1特定部分Psよりも大きい。見切れる部分である第1外部分P12が大きい場合には、主復元画像IM12の共通部分PCのうちの第1外部分P12に連続する大きい部分で、ラベル800の画像の復元の精度が低下し得る。本実施例では、第1外部分P12が大きい場合であっても、復元の精度低下の影響は、緩和される。
【0118】
C.変形例:
(1)合成エラー画像(例えば、図6図8の合成エラー画像IM4、IM4a)を生成する処理は、図3図7の処理に代えて、他の種々の処理であってよい。例えば、S170、S220(図3図7)で使用される生成モデルM2は、オートエンコーダに代えて、対象ラベル800tの画像に対応する不具合の無いラベル800の画像を生成する種々の生成モデルであってよい。生成モデルM2は、VAE(Variational Auto Encoder)、VQ-VAE(Vector Quantized Variational Auto Encoder)などの、種々のオートエンコーダであってよい。また、生成モデルM2は、他の種々の機械学習モデル(例えば、全結合層で構成されるモデル)であってよい。
【0119】
(2)S260(図3図7)では、プロセッサ210は、射影変換処理に限らず、合成エラー画像IM4、IM4a(図6図8)と基準画像IM5との間のラベル800t、800に対応する領域の差異を小さくする種々の画像変換処理を実行してよい。画像変換処理は、画像の位置と向きと形状とのうちの1つ以上を変化させる種々の処理であってよい。例えば、画像変換処理は、回転処理であってよい。プロセッサ210は、合成エラー画像IM4、IM4aに対応する対象ラベル800tの画像(例えば、第1撮影画像IM10(図5(A)))と、基準画像IM5と、のパターンマッチングによって、回転角度を決定する。そして、プロセッサ210は、合成エラー画像IM4、IM4aを、決定された回転角度に従って、回転させる。プロセッサ210は、回転済の合成エラー画像IM4、IM4aと、基準画像IM5と、の重畳画像のデータを生成する。なお、画像変換処理は、合成エラー画像IM4、IM4aに代えて、基準画像IM5に対して行われてよい。また、画像変換処理は、合成エラー画像IM4、IM4aと基準画像IM5との両方に対して、行われてよい。例えば、プロセッサ210は、ラベル800t、800に対応する領域の形状が所定の矩形になるように、合成エラー画像IM4、IM4aと基準画像IM5との両方に画像変換処理を実行してよい。
【0120】
なお、カメラ110、120(図2(A))と複合機900とのそれぞれの位置と向きとが、予め決められた目標の位置と向きとに精度よく調整される場合、合成エラー画像IM4、IM4aと基準画像IM5との間のラベル800tに対応する領域の差異は、小さい。この場合、画像変換処理は、省略されてよい。
【0121】
(3)S170、S180(図3図7)に代えて、プロセッサ210は、生成モデルM2を使用せずに、不具合の無いラベル800の第1基準画像(例えば、版下画像)と、入力画像IM11(図5(B))と、を使用して差分画像IM13(図5(D))を生成してよい。ここで、プロセッサ210は、第1基準画像と入力画像IM11との間のラベル800tに対応する領域の差異が小さくなるように、第1基準画像と入力画像IM11との一方、または、両方に、画像変換処理を実行することが好ましい。画像変換処理が実行される場合、プロセッサ210は、画像変換処理された画像(第1基準画像と入力画像IM11との一方、または、両方)を使用して、差分画像IM13を生成する。画像変換処理は、S260のための上述した画像変換処理と同様に、種々の処理であってよい。以上の第1基準画像と入力画像IM11とを使用する差分画像IM13の生成処理の変形例は、第2基準画像と入力画像IM21(図5(F))とを使用する差分画像IM23(図5(H))の生成処理に、適用されてよい。
【0122】
(4)S260(図3図7)では、プロセッサ210は、予め準備された基準画像IM5(図6)に代えて、画像生成モデルによって生成される不具合の無いラベル800の画像を使用してよい。例えば、プロセッサ210は、入力画像IM11、IM21(図5(B)、図5(F))を合成することによって、合成エラー画像IM4、IM4a(図6図8)に対応する対象ラベル800tの画像を生成する(合成ラベル画像と呼ぶ)。プロセッサ210は、合成ラベル画像を画像生成モデルに入力して、合成ラベル画像の対象ラベル800tに対応する不具合の無いラベル800の画像を生成する。プロセッサ210は、生成される画像と、合成エラー画像IM4、IM4aと、の重畳画像を生成する。画像生成モデルは、S170、S220(図3図7)で使用される生成モデルM2と同様に、種々のモデルであってよい。また、画像変換処理は、省略されてよい。
【0123】
(5)S120、S140(図3図7)では、プロセッサ210は、物体検出モデルM1によって検出されるバウンディングボックスBB1、BB2を、以下のように修正してよい。S120で検出されるバウンディングボックスBB1(図4(C))の第1外部分P12側の頂点V11、V12は、第1撮影画像IM10の辺S1から画像IM10の内部に向かって離れた位置に位置し得る。この場合、プロセッサ210は、頂点V11、V12を、第1方向Dxに平行に、辺S1上に移動させてよい(すなわち、バウンディングボックスBB1は、第1方向Dxに平行に、拡大されてよい)。S140で検出される第2バウンディングボックスBB2(図4(F))の第2外部分P22側の頂点V21、V22も、第2撮影画像IM20の辺S2から画像IM20の内部に向かって離れた位置に位置し得る。この場合、プロセッサ210は、頂点V21、V22を、第1方向Dxに平行に、辺S2上に移動させてよい(すなわち、バウンディングボックスBB2は、第1方向Dxに平行に、拡大されてよい)。
【0124】
また、第1バウンディングボックスBB1(図4(C))は、第1内部分P11の一部が第1バウンディングボックスBB1の外に位置するように、決定され得る。プロセッサ210は、第1バウンディングボックスBB1が第1内部分P11の全体を含むように、第1バウンディングボックスBB1を、全周に亘って、拡大してよい。例えば、頂点V11-V14のそれぞれが、予め決められた量だけ、外周側に向かって移動してよい。第2バウンディングボックスBB2(図4(F))についても、同様である。
【0125】
(6)S120、S140(図3図7)で使用される物体検出モデルM1(図1)は、YOLOv4に代えて、他の種々の物体検出モデルであってよい(例えば、SSD(Single Shot MultiBox Detector)、R-CNN(Region Based Convolutional Neural Networks)など)。YOLO、SSD、R-CNNなどのCNNを使用する検出モデルは、オブジェクトの画像の検出に適している。ただし、物体検出モデルM1は、CNNを含まない物体検出モデル(例えば、全結合層で構成されるモデル)であってよい。また、プロセッサ210は、S120、S140で、物体検出モデルM1を使用せずに、オブジェクト(例えば、ラベル800)の基準画像を使用するパターンマッチングによって、オブジェクトを示す部分(例えば、内部分P11、P21(図4(C)、図4(F)))を検出してよい。
【0126】
(7)S165(図3図7)において、対象ラベル800t(図5(B))上の第1内部分P11と第1外部分P12との間の境界の位置(例えば、第1対応幅W1i)の取得方法は、バウンディングボックスBB1のアスペクト比R1を使用する方法に代えて、他の種々の方法であってよい。例えば、プロセッサ210は、ラベル800の基準画像を使用するパターンマッチングによって、第1撮影画像IM10(図4(C))上のラベル800の輪郭の位置を決定する。プロセッサ210は、輪郭と第1撮影画像IM10の辺S1との交点を、境界の位置として取得してよい。S215(図3図7)における境界の位置(例えば、第2対応幅W2i)の取得方法についても、同様である。
【0127】
(7)S150(図3図7)における主撮影画像と副撮影画像とを選択する処理は、内部分P11、P21のアスペクト比を示すバウンディングボックスBB1、BB2のアスペクト比R1、R2を使用する処理に代えて、他の種々の処理であってよい。例えば、プロセッサ210は、第1撮影画像IM10(図5(A))の第1内部分P11の面積(単位は、例えば、画素数)と、第2撮影画像IM20(図5(E))の第2内部分P21の面積と、のうちの大きい面積に対応する画像を、主撮影画像として選択してよい。第1バウンディングボックスBB1に囲まれる領域の面積は、第1内部分P11の面積として使用可能である。同様に、第2バウンディングボックスBB2に囲まれる領域の面積は、第2内部分P21の面積として使用可能である。
【0128】
なお、カメラ110、120(図2(A))と複合機900とのそれぞれの位置と向きとが、予め決められた目標の位置と向きとに精度よく調整される場合、撮影画像IM10、IM20のうちの主撮影画像として選択すべき画像は、予め決まっている。この場合、プロセッサ210は、撮影画像IM10、IM20のうちの予め決められた画像を、主撮影画像として使用してよい。
【0129】
(8)S254a(図7)での外面積Soの算出方法は、図5(B)で説明した幅W1rと高さHdを使用する方法に代えて、他の種々の方法であってよい。例えば、プロセッサ210は、第1撮影画像IM10(図4(B))とラベル800の基準画像とのパターンマッチングによって、第1撮影画像IM10上のラベル800の輪郭の位置を決定する。ラベル800の輪郭の一部は、第1撮影画像IM10の外に位置する。プロセッサ210は、ラベル800の輪郭のうちの第1撮影画像IM10の外に位置する部分に囲まれる領域の面積(例えば、画素数)を、外面積Soとして算出してよい。
【0130】
外面積So(図9)と特定面積Ssとの対応関係は、図9の対応関係Rosに限らず、外面積Soが大きいほど特定面積Ssが大きくなるような、種々の対応関係であってよい。例えば、外面積Soの変化に対して、特定面積Ssは曲線を描くように変化してよい。
【0131】
第1特定部分Ps(図8)の形状は、矩形に限らず、種々の形状であってよい。例えば、第1特定部分Psと第2特定部分Pmとの間の境界線は、直線に代えて、波線であってよい。波線の形状は、予め決められてよい。波線の第1方向Dxの位置が、外面積Soに従って調整されてよい。
【0132】
共通部分PC(図8)における第1特定部分Psの面積比率は、予め決められてよい。例えば、第1特定部分Psは、共通部分PCの所定割合(例えば、50%)の部分であってよい。
【0133】
いずれの場合も、第1特定部分Psは、1個の連続な領域であってよい。第2特定部分Pmは、1個の連続な領域であってよい。
【0134】
(9)差分画像IM13(図6図8)と差分画像IM23との合成処理は、S258(図3)、S252a-S258a(図7)の処理に代えて、差分画像IM13の少なくとも一部と、差分画像IM23の少なくとも一部と、を含む合成エラー画像を生成する種々の処理であってよい。例えば、プロセッサ210は、差分画像IM13のうちの予め決められた部分と、差分画像IM23のうちの予め決められた部分と、を接続することによって、合成エラー画像を生成してよい。
【0135】
(10)合成エラー画像IM4、IM4a(図6図8)を使用する検査処理は、重畳画像の生成と表示(S260、S270(図3図7))に限らず、対象ラベル800tの不具合を検査する任意の処理であってよい。例えば、プロセッサ210は、合成エラー画像IM4、IM4aを分析して、対象ラベル800tのエラーの程度を示すエラースコアを算出してよい。エラースコアは、例えば、合成エラー画像IM4、IM4aの複数の画素のそれぞれによって示される色値の差の合計値であってよい。プロセッサ210は、エラースコアが検査閾値以下である場合に、検査結果が合格であると判断し、エラースコアが検査閾値を超える場合に、検査結果が不合格であると判断してよい。検査閾値は、適切な検査結果が得られるように、予め実験的に決定されてよい。プロセッサ210は、検査結果を示すデータを、記憶装置215(例えば、不揮発性記憶装置230)に格納してよい。いずれの場合も、合成エラー画像IM4、IM4aを使用する検査処理は、合成エラー画像IM4、IM4aを生成するデータ処理装置200とは別のデータ処理装置によって実行されてよい。例えば、図3図8の処理からは、S260、S270は省略されてよい。
【0136】
(11)処理対象のオブジェクトは、複合機900に限らず、種々の製品に設けられるラベルであってよい。製品は、プリンタ、ミシン、工作機械、カッティングマシーン、スキャナ、スマートフォンなど、任意の製品であってよい。また、製品は、他の製品の部品であってよい。例えば、オブジェクトは、複合機に取り付けられる部品である排紙トレーに設けられるラベルであってよい。
【0137】
(12)処理対象のオブジェクトは、ラベル800に限らず、ラベルと、立体的な銘と、塗装された模様と、を含む複数の要素から選択される1以上の要素を含んでよい。立体的な銘と塗装された模様とは、それぞれ、製造者名、製造者のロゴ、ブランドロゴ、認証マークなど、製品(例えば、複合機900)に関する種々の情報を示してよい。オブジェクトの形状は、矩形に代えて、他の種々の形状であってよい(例えば、円、楕円など)。
【0138】
(13)合成エラー画像(例えば、合成エラー画像IM4、IM4a(図6図8))の生成に使用されるデジタルカメラの総数は、N個(Nは2以上の整数)であってよい。例えば、3台のデジタルカメラが、オブジェクトの全体を表すために第1方向Dxに並んで配置される3個の撮影画像を生成してよい。隣り合う2個の撮影画像は、共通部分を有している。プロセッサ210は、3個の撮影画像から、3個の差分画像を生成する。差分画像の生成処理は、上記の各実施例の差分画像の生成処理と同じであってよい。プロセッサ210は、3個の差分画像を合成することによって、合成エラー画像を生成する。ここで、プロセッサ210は、隣り合うエラー画像のペアの合成を、複数のペア(ここでは、2個のペア)のそれぞれに対して実行することによって、3個の差分画像を合成してよい。エラー画像のペアの合成処理は、上記の各実施例の合成処理と同じであってよい。
【0139】
(14)図1のデータ処理装置200は、パーソナルコンピュータとは異なる種類の装置(例えば、デジタルカメラ、スキャナ、スマートフォン)であってもよい。また、ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータ)が、データ処理装置によるデータ処理の機能を一部ずつ分担して、全体として、データ処理の機能を提供してもよい(これらの装置を備えるシステムがデータ処理装置に対応する)。
【0140】
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、物体検出モデルM1の機能は、専用のハードウェア回路によって実現されてよい。
【0141】
また、本開示の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD-ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
【0142】
上記した実施の形態は、本開示の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【0143】
110…第1デジタルカメラ(第1カメラ)、120…第2デジタルカメラ(第2カメラ)、200…データ処理装置、210…プロセッサ、215…記憶装置、220…揮発性記憶装置、230…不揮発性記憶装置、231…プログラム、240…表示部、250…操作部、270…通信インタフェース、800…ラベル、800t…対象ラベル、810…傷、810a…第1エラー部分、810b…第2エラー部分、900…複合機、M1…物体検出モデル、M2…生成モデル、Dx…第1方向、Dy…第2方向
図1
図2
図3
図4
図5
図6
図7
図8
図9