(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023163317
(43)【公開日】2023-11-10
(54)【発明の名称】コンピュータプログラム、および、データ処理装置
(51)【国際特許分類】
G06T 7/187 20170101AFI20231102BHJP
G06T 7/00 20170101ALI20231102BHJP
【FI】
G06T7/187
G06T7/00 610
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022074148
(22)【出願日】2022-04-28
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110001058
【氏名又は名称】鳳国際弁理士法人
(72)【発明者】
【氏名】尾野藤 祥司
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096AA02
5L096AA06
5L096BA03
5L096CA02
5L096DA02
5L096EA02
5L096EA05
5L096EA06
5L096EA13
5L096EA35
5L096EA43
5L096EA45
5L096FA18
5L096FA59
5L096FA62
5L096FA64
5L096FA66
5L096FA70
5L096FA78
5L096GA08
5L096GA51
5L096HA11
5L096JA11
(57)【要約】 (修正有)
【課題】オブジェクトを表す適切な特定領域を決定する処理を行うコンピュータプログラム及びデータ処理装置を提供する。
【解決手段】特定領域の決定処理は、対象画像中の注目オブジェクトのためのバウンディングボックスを決定する処理S220、バウンディングボックスによって囲まれる第1領域を拡張することによって第2領域を決定する処理S230、第2領域を、背景領域と、オブジェクト領域と、を含む複数の領域に分割する処理S240及びオブジェクト領域を内包する領域である特定領域を決定する処理S280を含む。
【選択図】
図3
【特許請求の範囲】
【請求項1】
コンピュータプログラムであって、
対象画像中の注目オブジェクトのためのバウンディングボックスを決定する第1決定機能と、
前記バウンディングボックスによって囲まれる第1領域を拡張することによって第2領域を決定する第2決定機能と、
前記第2領域を、背景領域と、オブジェクト領域と、を含む複数の領域に分割する分割機能と、
前記オブジェクト領域を内包する領域である特定領域を決定する第3決定機能と、
をコンピュータに実現させる、コンピュータプログラム。
【請求項2】
請求項1に記載のコンピュータプログラムであって、
前記第3決定機能は、前記複数の領域が複数のオブジェクト領域を含む場合に、前記複数のオブジェクト領域のうち、最大面積を有するオブジェクト領域、または、前記バウンディングボックスの中心に最も近いオブジェクト領域、を内包する前記特定領域を決定する、
コンピュータプログラム。
【請求項3】
請求項1または2に記載のコンピュータプログラムであって、
前記第2決定機能は、
前記第1領域を拡張することによって中間領域を決定する第1拡張機能と、
前記中間領域を拡張することによって前記第2領域を決定する第2拡張機能と、
を含み、
前記第1拡張機能は、前記中間領域のアスペクト比が前記注目オブジェクトのアスペクト比に近づくように、縦方向と横方向とのいずれかの方向に前記第1領域を拡張することによって前記中間領域を決定し、
前記第2拡張機能は、前記中間領域の輪郭の全体を外側に向かって拡張することによって前記第2領域を決定する、
コンピュータプログラム。
【請求項4】
請求項1または2に記載のコンピュータプログラムであって、
前記注目オブジェクトは、製品に設けられるラベルである、
コンピュータプログラム。
【請求項5】
請求項1または2に記載のコンピュータプログラムであって、さらに、
前記対象画像中の前記特定領域の画像を使用して、前記注目オブジェクトの外観の検査を行う検査機能をコンピュータに実現させる、コンピュータプログラム。
【請求項6】
データ処理装置であって、
対象画像中の注目オブジェクトのためのバウンディングボックスを決定する第1決定部と、
前記バウンディングボックスによって囲まれる第1領域を拡張することによって第2領域を決定する第2決定部と、
前記第2領域を、背景領域と、オブジェクト領域と、を含む複数の領域に分割する分割部と、
前記オブジェクト領域を内包する領域である特定領域を決定する第3決定部と、
を備える、データ処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、画像中のオブジェクトを表す領域を決定する技術に関する。
【背景技術】
【0002】
製品の外観検査やロボットによるオブジェクトの認識などの種々の用途のために、画像からオブジェクトを検出する技術が使用されている。オブジェクトを検出する技術としては、例えば、YOLOv4と呼ばれる機械学習モデルが提案されている。YOLOv4は、オブジェクトを囲む枠(バウンディングボックスと呼ばれる)と、オブジェクトの種類(クラスとも呼ばれる)と、を予測する。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】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
【発明の概要】
【発明が解決しようとする課題】
【0004】
オブジェクトの検出は容易ではなく、オブジェクトを表す領域として不適切な領域が決定される場合がある。例えば、オブジェクトの一部がバウンディングボックスの外にはみ出る場合がある。このように、オブジェクトを表す領域の決定には、工夫の余地があった。
【0005】
本明細書は、オブジェクトを表す領域を決定する技術を開示する。
【課題を解決するための手段】
【0006】
本明細書に開示された技術は、以下の適用例として実現することが可能である。
【0007】
[適用例1]コンピュータプログラムであって、対象画像中の注目オブジェクトのためのバウンディングボックスを決定する第1決定機能と、前記バウンディングボックスによって囲まれる第1領域を拡張することによって第2領域を決定する第2決定機能と、前記第2領域を、背景領域と、オブジェクト領域と、を含む複数の領域に分割する分割機能と、前記オブジェクト領域を内包する領域である特定領域を決定する第3決定機能と、をコンピュータに実現させる、コンピュータプログラム。
【0008】
この構成によれば、注目オブジェクトを表す適切な特定領域を決定できる。
【0009】
なお、本明細書に開示の技術は、種々の態様で実現することが可能であり、例えば、データ処理方法およびデータ処理装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体(例えば、一時的ではない記録媒体)、等の形態で実現することができる。
【図面の簡単な説明】
【0010】
【
図1】一実施例としてのデータ処理装置を示す説明図である。
【
図2】データ処理の例を示すフローチャートである。
【
図3】特定領域の決定処理の例を示すフローチャートである。
【
図4】(A)-(I)は、特定領域の決定処理で処理される画像の例を示す説明図である。
【
図5】第2領域A2を決定する処理の例を示すフローチャートである。
【
図6】領域の分割の処理の例を示すフローチャートである。
【
図8】(A)-(C)は、対象オブジェクト領域を選択する処理の別の実施例の概略図である。
【
図9】(A)-(C)は、中間領域Amを決定する処理の別の実施例の概略図である。
【発明を実施するための形態】
【0011】
A.第1実施例:
A1.装置構成:
図1は、一実施例としてのデータ処理装置を示す説明図である。本実施例では、データ処理装置200は、例えば、パーソナルコンピュータである。データ処理装置200は、製品(例えば、複合機など)に設けられるオブジェクト(例えば、ラベル)の外観の検査のためのデータ処理を行うデータ処理装置の例である。本実施例では、複合機900に、2枚のラベルLB1、LB2が貼付されている。第1ラベルLB1は、例えば、製造者名、モデル名などの複合機900の情報を示している。第2ラベルLB2は、例えば、認証マークを示している。ラベルLB1、LB2のそれぞれの形状は、略矩形状である。第2ラベルLB2は、第1ラベルLB1の近傍に配置されている。本実施例では、第1ラベルLB1の外観が検査される。
【0012】
データ処理装置200は、プロセッサ210と、記憶装置215と、表示部240と、操作部250と、通信インタフェース270と、を備えている。これらの要素は、バスを介して互いに接続されている。記憶装置215は、揮発性記憶装置220と、不揮発性記憶装置230と、を含んでいる。
【0013】
プロセッサ210は、データ処理を行うように構成された装置であり、例えば、CPUである。揮発性記憶装置220は、例えば、DRAMであり、不揮発性記憶装置230は、例えば、フラッシュメモリである。不揮発性記憶装置230は、プログラムPGと、物体検出モデルM1と、画像生成モデルM2と、を格納している。プログラムPGは、第1プログラム231と、第2プログラム232と、を含んでいる。本実施例では、モデルM1、M2は、それぞれ、プログラムモジュールである。モデルM1、M2は、それぞれ、いわゆる機械学習モデルである。プログラム231、232とモデルM1、M2との詳細については、後述する。
【0014】
表示部240は、液晶ディスプレイ、有機ELディスプレイなどの、画像を表示するように構成された装置である。操作部250は、ボタン、レバー、表示部240上に重ねて配置されたタッチパネルなどの、ユーザによる操作を受け取るように構成された装置である。ユーザは、操作部250を操作することによって、種々の指示をデータ処理装置200に入力可能である。通信インタフェース270は、他の装置と通信するためのインタフェースである。通信インタフェース270は、例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェースのうちの1種以上を含む。通信インタフェース270には、デジタルカメラ110が接続される。デジタルカメラ110は、複合機900の第1ラベルLB1を含む部分を撮影する。
【0015】
A2.データ処理:
図2は、データ処理の例を示すフローチャートである。本実施例では、データ処理は、特定領域の決定処理(S110)と、検査処理(S120)と、を含んでいる。特定領域は、デジタルカメラ110(
図1)によって生成される撮影画像の中の注目オブジェクト(ここでは、第1ラベルLB1)の画像を内包する領域である。本実施例では、第1ラベルLB1が注目オブジェクトである(以下、第1ラベルLB1を、注目オブジェクトLB1とも呼ぶ)。第1プログラム231(
図1)は、特定領域の決定処理のためのプログラムである。検査処理は、S110で決定される特定領域の画像を使用して、第1ラベルLB1の外観を検査する。第2プログラム232は、検査処理のためのプログラムである。
【0016】
本実施例では、検査のために、複合機900は、予め決められた位置に配置される。複合機900のこの位置は、デジタルカメラ110による第1ラベルLB1の撮影に適する位置である。本実施例では、複合機900の配置は、ベルトコンベアなどの機械によって行われる。複合機900の配置の後、データ処理の開始指示が、データ処理装置200に入力される。本実施例では、作業者は、操作部250を操作することによって、データ処理の開始指示を入力する。プロセッサ210は、開始指示に応じて、データ処理を開始する。なお、複合機900の配置は、作業者によって行われてよい。また、開始指示は、データ処理装置200とは異なる他の装置によって、通信インタフェース270を介して、データ処理装置200に供給されてよい。
【0017】
S110では、プロセッサ210は、第1プログラム231(
図1)に従って、特定領域の決定処理を実行する。S210では、プロセッサ210は、撮影指示をデジタルカメラ110に供給する。デジタルカメラ110は、指示に応じて、複合機900を撮影し、撮影画像を表すデータを生成する。プロセッサ210は、デジタルカメラ110から撮影画像のデータを取得する。
【0018】
図4(A)-
図4(I)は、特定領域の決定処理で処理される画像の例を示す説明図である。
図4(A)は、撮影画像の例を示している。図中には、撮影画像IM1の一部が示されている。撮影画像IM1は、第1ラベルLB1と第2ラベルLB2とを示している。図示を省略するが、撮影画像IM1は、第1方向Dxに平行な2辺と、第1方向Dxに垂直な第2方向Dyに平行な2辺と、を有する矩形状の画像である。第1方向Dxは、横方向を示し、第2方向Dyは、縦方向を示している。撮影画像IM1は、第1方向Dxと第2方向Dyとに沿ってマトリクス状に並ぶ複数の画素のそれぞれの色値によって、表されている。色値は、例えば、R(赤)、G(緑)、B(青)の3個の成分値で表される。各成分値は、例えば、0から255までの256段階で表される。
【0019】
S220(
図3)では、プロセッサ210は、撮影画像IM1の中の注目オブジェクトLB1のためのバウンディングボックスを決定する。バウンディングボックスは、注目オブジェクトを囲む矩形の枠である。本実施例では、プロセッサ210は、撮影画像IM1のデータを物体検出モデルM1に入力することによって、バウンディングボックスを決定する。物体検出モデルM1としては、種々の物体検出モデルを採用可能である。本実施例では、物体検出モデルM1は、YOLOv4と呼ばれる機械学習モデルである。YOLOv4モデルは、バウンディングボックスと、オブジェクトの種類(クラスとも呼ばれる)と、を予測する。本実施例では、物体検出モデルM1は、第1ラベルLB1の画像を含む画像のデータが入力される場合に、第1ラベルLB1の画像を囲むバウンディングボックスを示すデータを出力するように、予め訓練される。物体検出モデルM1の訓練方法としては、公知の種々の方法を採用可能である。
【0020】
物体検出モデルM1によって受け付けられる画像サイズである第1画像サイズ(具体的には、第1方向Dxの画素数と第2方向Dyの画素数)は、予め決められている。プロセッサ210は、撮影画像IM1のデータに対する解像度変換処理、トリミング処理などの種々の画像処理を実行することによって、物体検出モデルM1に入力すべき第1入力画像データを生成する。撮影画像IM1中の第1ラベルLB1を表し得る部分は、予め決められている。プロセッサ210は、第1入力画像が第1ラベルLB1を表し得る部分を含むように、第1入力画像データを生成する。
【0021】
図4(A)には、バウンディングボックスBB1の例が示されている。バウンディングボックスBB1は、第1方向Dxに平行な2辺と、第2方向Dyに平行な2辺と、を有する矩形状の枠である。
図4(A)では、第1ラベルLB1の一部分(具体的には、第2方向Dy側の端部)が、バウンディングボックスBB1の外にはみ出ている。このように、種々の物体検出モデルは、注目オブジェクトの一部分のみを囲むバウンディングボックスを決定し得る。
【0022】
S230(
図3)では、プロセッサ210は、バウンディングボックスBB1に囲まれる第1領域A1を拡張することによって、第2領域A2を決定する。
図5は、第2領域A2を決定する処理の例を示すフローチャートである。S310では、プロセッサ210は、原画像IM0の幅W0と高さH0とを取得する。
図4(B)は、原画像IM0の例を示している。原画像IM0は、第1ラベルLB1の設計画像である。本実施例では、第1ラベルLB1は、第1ラベルLB1の画像をシートに印刷することによって、製造される。原画像IM0は、印刷すべき第1ラベルLB1の画像である。原画像IM0のデータは、版下データとも呼ばれる。版下データは、予め、不揮発性記憶装置230に格納されている(図示省略)。
【0023】
本実施例では、原画像IM0は、第1方向Dxに平行な2辺と、第2方向Dyに平行な2辺と、を有する矩形状の画像である。幅W0は、第1方向Dxの大きさ(単位は、例えば、画素数)を示し、高さH0は、第2方向Dyの大きさを示している。プロセッサ210は、版下データを分析することによって、幅W0と高さH0とを取得する。以下、幅W0を、基準幅W0とも呼び、高さH0を、基準高さH0とも呼ぶ。ここで、W0>H0であることとする。
【0024】
S320(
図5)では、プロセッサ210は、S220(
図3)で決定されたバウンディングボックスBB1を分析することによって、バウンディングボックスBB1によって囲まれる第1領域A1の幅W1と高さH1とを取得する。
図4(A)に示すように、幅W1は、第1方向Dxの大きさを示し、高さH1は、第2方向Dyの大きさを示している。
【0025】
S330(
図5)では、プロセッサ210は、以下の第1条件が満たされるか否かを判断する。
(第1条件)W1>H1
【0026】
図4(A)の例では、高さH1は幅W1より小さい(W1>H1)。この場合(S330:Yes)、S340で、プロセッサ210は、幅W1に比率H0/W0を乗算することによって、参考高さHmを決定する。参考高さHmは、第1ラベルLB1の適切なアスペクト比(具体的には、第1方向Dxの長さに対する第2方向Dyの長さの比)で幅W1に対応付けられる高さを示している。
【0027】
S350では、プロセッサ210は、第1領域A1の高さH1を参考高さHmに変更することによって、中間領域Amを決定する。
図4(C)は、中間領域Amの例を示している。点線で示されるボックスBBmは、中間領域Amの輪郭を示している。
図4(C)の例では、参考高さHmは、高さH1よりも大きい。従って、中間領域Amは、第2方向Dyに平行に拡張される。中間領域Amの第2方向Dyの中心位置は、第1領域A1の第2方向Dyの中心位置と同じである。従って、中間領域Amは、第1領域A1から、第2方向Dyと、第2方向Dyとは反対の方向と、のそれぞれに同じ量だけ拡張した領域である。なお、
図4(C)に示すように、第1ラベルLB1の一部分は、中間領域Amの外に位置し得る(具体的には、第1ラベルLB1の第2方向Dy側の端部が、中間領域Amの外に位置している)。中間領域Amの決定の後、プロセッサ210は、S380(
図5)へ移行する。
【0028】
幅W1が高さH1以下である場合(S330:No)、プロセッサ210は、S360、S370を実行する。S360、S370は、S340、S350における第1方向Dxと第2方向Dyを入れ替えたものと、それぞれ同じである。
【0029】
S360では、プロセッサ210は、高さH1に比率W0/H0を乗算することによって、参考幅Wmを決定する。参考幅Wmは、第1ラベルLB1の適切なアスペクト比で高さH1に対応付けられる幅を示している。
【0030】
S370では、プロセッサ210は、第1領域A1の幅W1を参考幅Wmに変更することによって、中間領域Amを決定する。図示を省略するが、幅W1が参考幅Wmよりも小さい場合、中間領域Amは、第1方向Dxに平行に拡張され得る。中間領域Amの第1方向Dxの中心位置は、第1領域A1の第1方向Dxの中心位置と同じである。中間領域Amの決定の後、プロセッサ210は、S380へ移行する。
【0031】
このように、本実施例では、高さH1と幅W1とのうちの小さい方が参考値(参考高さHm、または、参考幅Wm)に調整される。これにより、注目オブジェクトLB1のアスペクト比と同じアスペクト比を有する中間領域Amが、決定される。
【0032】
S380では、プロセッサ210は、中間領域Amを拡張することによって、第2領域A2を決定する。本実施例では、プロセッサ210は、中間領域Amの高さと幅とのそれぞれに、係数kを乗じることによって、第2領域A2の高さと幅とを決定する。係数kは、1よりも大きい実数である。係数kは、種々の撮影画像が処理される場合に、第2領域A2が第1領域A1(ひいては、注目オブジェクトLB1)を内包するように、予め実験的に決められている。
【0033】
図4(D)は、第2領域A2の例を示している。ボックスBB2は、第2領域A2の輪郭を示している。以下、バウンディングボックスBB1を、第1ボックスBB1とも呼び、ボックスBB2を、第2ボックスBB2とも呼ぶ。第2領域A2の中心位置は、中間領域Amの中心位置と同じである。このように、プロセッサ210は、中間領域Amの輪郭(ここでは、ボックスBBm)の全体を外側に向かって拡張することによって第2領域A2を決定する。
図4(D)の例では、第2領域A2は、第1ラベルLB1の全体を、含んでいる。また、第2領域A2は、第2ラベルLB2の一部分も含んでいる。このように、第1領域A1から第2領域A2への拡張によって、第2領域A2は、注目オブジェクトLB1に加えて、他のオブジェクト(ここでは、第2ラベルLB2)を含み得る。
【0034】
このように、プロセッサ210は、S340-S350(
図5)、または、S360-S370で、バウンディングボックスBB1のアスペクト比を第1ラベルLB1のアスペクト比に調整することによって、中間領域Amを決定する。そして、プロセッサ210は、S380で、中間領域Amを第1方向Dxに平行な方向と、第2方向Dyに平行な方向とに、拡張することによって、第2領域A2を決定する。従って、プロセッサ210は、注目オブジェクトLB1を内包する第2領域A2を決定できる。第2領域A2の決定の後、プロセッサ210は、
図5の処理、すなわち、
図3のS230を終了する。
【0035】
S240(
図3)では、プロセッサ210は、第2領域A2を、背景領域と、オブジェクト領域と、を含む複数の領域に分割する。
図6は、領域の分割の処理の例を示すフローチャートである。S410では、プロセッサ210は、撮影画像IM1の第2領域A2のデータのぼかし処理を実行することによって、ぼけ画像データを生成する。ぼかし処理は、平滑化とも呼ばれる。ぼかし処理によって、ノイズが低減する。ぼかし処理は、種々の処理であってよい。本実施例では、プロセッサ210は、平滑化フィルタ(例えば、中央値フィルタ)を使用するフィルタ処理を実行する。
【0036】
S420では、プロセッサ210は、ぼけ画像データのグレースケール変換を実行することによって、グレー画像データを生成する。この変換によって、RGBの色値は、所定の関係式(例えば、RGB色空間からYCbCr色空間のY値への色変換式)を用いることによって、輝度値に変換される。
【0037】
図4(E)は、グレー画像データによって表されるグレー画像の例を示している。グレー画像IM2は、第1ラベルLB1と、第2ラベルLB2と、を示している。グレー画像IM2では、オブジェクト(ここでは、ラベルLB1、LB2)を示す部分と、背景を示す部分と、の間で、輝度値が大きく異なっている。
【0038】
S430(
図6)では、プロセッサ210は、グレー画像データの閾値処理を実行することによって、二値画像データを生成する。
図4(F)は、二値画像データによって示される二値画像の例を示している。二値画像IM3は、ハッチングを有する部分を示す複数の背景画素と、ハッチングのない部分を示す複数のオブジェクト画素と、で構成される。ラベルLB1、LB2は、オブジェクト画素で表され、他の部分は、背景画素で表される。なお、ラベルLB1、LB2の一部分は、背景画素で表され得る。閾値処理は、閾値を使用する二値化処理を含む種々の処理であってよい。本実施例では、閾値処理は、二値化処理と逆バイナリ処理とを含んでいる。二値化処理は、大きい値と小さい値とを区別する種々の方法であってよい。本実施例では、いわゆる大津の二値化が採用される。これに代えて、二値化には、予め決められた閾値が使用されてよい。逆バイナリ処理は、二値化された値を反転する処理である。
【0039】
S440(
図6)では、プロセッサ210は、二値画像データのノイズ除去処理を実行することによって、処理済二値画像データを生成する。プロセッサ210は、処理済二値画像データによって示される処理済二値画像において、複数のオブジェクト画素で形成される連続な領域を、オブジェクト領域として採用し、複数の背景画素で形成される連続な領域を、背景領域として採用する。
図4(G)は、処理済二値画像の例を示している。処理済二値画像IM4では、2個のラベルLB1、LB2に対応する2個のオブジェクト領域OA1、OA2が、形成される。オブジェクト領域OA1、OA2は、背景領域BAによって分離されている。ノイズ除去処理は、種々の処理であってよい。本実施例では、プロセッサ210は、オブジェクト領域に対して、所定回数の膨張処理を行った後に、同じ回数の収縮処理を実行する。ノイズ除去処理により、処理済二値画像IM4では、ノイズ(例えば、オブジェクト領域内の小さい背景領域)が、除去される。
【0040】
このように、プロセッサ210は、第2領域A2を、背景領域BAと、オブジェクト領域OA1、OA2と、を含む複数の領域に分割する。S440の後、プロセッサ210は、
図6の処理、すなわち、
図3のS240を、終了する。
【0041】
S250では、プロセッサ210は、第2領域A2内のオブジェクト領域の総数が2以上であるか否かを判断する。オブジェクト領域の総数が2以上である場合(S250:Yes)、S260で、プロセッサ210は、複数のオブジェクト領域から選択条件を満たすオブジェクト領域を選択する。選択条件は、注目オブジェクトを示すオブジェクト領域を選択するための任意の条件であってよい。本実施例では、選択条件は、オブジェクト領域が最大面積を有することである(オブジェクト領域の面積は、例えば、画素数で表される)。
図4(G)の例では、第1オブジェクト領域OA1の面積S(OA1)は、第2オブジェクト領域OA2の面積S(OA2)よりも大きい。従って、プロセッサ210は、第1オブジェクト領域OA1を選択する。第2領域A2は、注目オブジェクトLB1のためのバウンディングボックスBB1(
図4(A))に基づいて、決定される。第2領域A2のうちの大きな部分が、注目オブジェクトLB1に重なる。従って、最大面積を有するオブジェクト領域は、注目オブジェクトLB1を示す可能性が高い。以下、S260が実行される場合、S260で選択されるオブジェクト領域を、対象オブジェクト領域と呼ぶ。
図4(G)の例では、第1オブジェクト領域OA1が、対象オブジェクト領域である。以下、オブジェクト領域OA1を、対象オブジェクト領域OA1とも呼ぶ。S260の後、プロセッサ210は、S270へ移行する。
【0042】
オブジェクト領域の総数が1である場合(S250:No)、プロセッサ210は、S260をスキップして、S270へ移行する。以下、S250の判断結果がNoである場合、第2領域A2内の1個のオブジェクト領域を、対象オブジェクト領域と呼ぶ。
【0043】
S270では、プロセッサ210は、対象オブジェクト領域の座標を取得する。プロセッサ210は、取得した座標を使用して、対象オブジェクト領域を囲む矩形を決定する。
図4(H)は、撮影画像IM1上の対象オブジェクト領域OA1と矩形BB3との例を示している。矩形BB3は、4個の頂点P1-P4で定められる。各頂点P1-P4の座標は、以下の通りである(括弧内には、第1方向Dxの座標、第2方向Dyの座標が、順に示されている)。
第1点P1(xmin,ymin)
第2点P2(xmax,ymin)
第3点P3(xmin,ymax)
第4点P4(xmax,ymax)
プロセッサ210は、各頂点P1-P4の座標を、対象オブジェクト領域OA1の第1方向Dxの座標の最大値xmaxと最小値xminと、第2方向Dyの座標の最大値ymaxと最小値yminと、を使用して決定する。
【0044】
これらの頂点P1-P4は、第1方向Dxに平行な2辺と、第2方向Dyに平行な2辺と、を有する矩形BB3を形成する。矩形BB3は、上記4辺を有する矩形のうちの対象オブジェクト領域OA1に外接する最小矩形である。以下、矩形BB3を、第3矩形BB3とも呼ぶ。第3矩形BB3に囲まれる領域A3を、第3領域A3とも呼ぶ。
【0045】
第1ラベルLB1(
図1)の撮影時、デジタルカメラ110に対して第1ラベルLB1は斜めに傾き得る。撮影画像IM1上での第1ラベルLB1の形状は、矩形に限らず、種々の形状(例えば、台形など)であり得る。対象オブジェクト領域OA1の輪郭のうち、第3矩形BB3の縁に接するのは、輪郭の一部分のみであり得る。
【0046】
S280(
図3)では、プロセッサ210は、第3矩形BB3を拡張することによって、特定領域A4を決定する。
図4(I)は、特定領域A4の例を示している。本実施例では、プロセッサ210は、第3矩形BB3(
図4(H))の4個の頂点P1-P4のそれぞれを、外側に向かって移動させることによって、4個の拡張点P11-P14を決定する。拡張点P11-P14によって形成される矩形BB4に囲まれる領域が、特定領域A4である。
【0047】
拡張点P11-P14の決定方法は、第3領域A3の輪郭の全体を外側に向かって拡張する任意の方法であってよい。本実施例では、拡張点P11-P14の座標は、以下の通りである。
第1点P11(xmin-dx,ymin-dy)
第2点P12(xmax+dx,ymin-dy)
第3点P13(xmin-dx,ymax+dy)
第4点P14(xmax+dx,ymax+dy)
本実施例では、第3領域A3の輪郭の全体が、第1方向Dxに平行に第1拡張値dxだけ拡張され、第2方向Dyに平行に第2拡張値dyだけ拡張される。第1拡張値dxと第2拡張値dyとは、それぞれ、ゼロよりも大きい値に予め決定される(例えば、1画素以上、20画素以下)。
【0048】
このように、特定領域A4は、第3領域A3の輪郭を全周に亘って拡張することによって、決定される。従って、プロセッサ210は、対象オブジェクト領域(ひいては、注目オブジェクト)の全体を内包する特定領域A4を、決定できる。
【0049】
S290(
図3)では、プロセッサ210は、決定された特定領域A4を示すデータを、記憶装置215(例えば、不揮発性記憶装置230)に格納する。そして、プロセッサ210は、
図3の処理、すなわち、
図2のS110を終了する。
【0050】
S120では、プロセッサ210は、第2プログラム232に従って、検査処理を実行する。
図7は、検査処理の例を示すフローチャートである。S510では、プロセッサ210は、撮影画像のデータ(
図3:S210)と特定領域A4を示すデータ(S290)とを参照して、撮影画像のうちの特定領域A4の画像である特定画像を取得する。
図4(I)の例では、撮影画像IM1のうちの特定領域A4の画像(すなわち、第1ラベルLB1を示す画像)が取得される。
【0051】
S520(
図7)では、プロセッサ210は、特定画像と、第1ラベルLB1の基準画像と、の間の差分を取得する。本実施例では、プロセッサ210は、特定画像のデータを画像生成モデルM2(
図1)に入力することによって、基準画像のデータを生成する。画像生成モデルM2は、種々の画像生成モデルであってよい。本実施例では、画像生成モデルM2は、VQ-VAE(Vector Quantized Variational Auto Encoder)と呼ばれるオートエンコーダである。画像生成モデルM2は、不具合(マークやロゴなどの要素の欠落、傷、など)を有する第1ラベルLB1の画像データが入力される場合に、不具合の無い第1ラベルLB1の画像データである基準画像データを生成するように、予め訓練される。また、画像生成モデルM2は、画像生成モデルM2によって生成される基準画像中の第1ラベルLB1の配置が、画像生成モデルM2に入力される第2入力画像中の第1ラベルLB1の配置と同じであるように、予め訓練される。画像生成モデルM2の訓練方法としては、公知の種々の方法を採用可能である。
【0052】
画像生成モデルM2によって受け付けられる画像サイズである第2画像サイズ(具体的には、第1方向Dxの画素数と第2方向Dyの画素数)は、予め決められている。S510で、プロセッサ210は、撮影画像IM1のデータに対する解像度変換処理、トリミング処理などの種々の画像処理を実行することによって、画像生成モデルM2に入力すべき第2入力画像データを取得する。プロセッサ210は、第2入力画像が特定領域A4の画像の全体を含むように、第2入力画像データを生成する。例えば、プロセッサ210は、第2画像サイズによって定められる矩形領域であって特定領域A4に外接する最小の矩形領域の画像を、第2入力画像として採用する。
【0053】
図4(I)に示すように、特定領域A4は、注目オブジェクトLB1の輪郭の全体を包含する。従って、第2入力画像内では、注目オブジェクトLB1の全体が、背景(例えば、複合機900のボディ)に囲まれている。画像生成モデルM2は、このような第2入力画像を使用することによって、適切な基準画像データを生成できる。仮に、注目オブジェクトLB1の輪郭が第2入力画像の端に位置する場合、注目オブジェクトLB1が第2入力画像の外にはみ出ているのか否かを第2入力画像から判断することは、困難である。このような第2入力画像が画像生成モデルM2に入力される場合、画像生成モデルM2は、不適切な基準画像データを生成し得る(例えば、注目オブジェクトLB1の端部が適切に復元されない)。本実施例では、そのような不具合の可能性は、低減する。
【0054】
プロセッサ210は、画像生成モデルM2に入力される特定画像と、画像生成モデルM2によって生成される基準画像と、の間の差分画像を表す差分画像データを生成する。差分画像の各画素の色値(差分色値と呼ぶ)は、特定画像と基準画像との間の対応する画素の色値の差を示している。本実施例では、差分色値は、RGBのそれぞれの差を示している。これに代えて、差分色値は、他の色成分の差(例えば、輝度値の差)を示してよい。
【0055】
検査対象の第1ラベルLB1に不具合が無い場合、差分画像の各画素の差分色値は、おおよそゼロである。検査対象の第1ラベルLB1が不具合を有する場合、差分画像のうちの不具合を示す部分の複数の画素の差分色値は、大きい差分を示す。
【0056】
S530(
図7)では、プロセッサ210は、検査結果を表示部240(
図1)に表示する。本実施例では、プロセッサ210は、差分画像を表示部240に表示する。作業者は、表示される差分画像を観察することによって、第1ラベルLB1が不具合を有するか否かを容易に判断できる。S530の後、プロセッサ210は、
図7の処理、すなわち、
図2のS120を終了する。以上により、
図2のデータ処理は、終了する。
【0057】
以上のように、本実施例では、データ処理装置200のプロセッサ210は、
図2のS110で、特定領域A4の決定処理を実行する。この決定処理は、以下の処理を含んでいる。
図3のS220では、プロセッサ210は、撮影画像IM1(
図4(A))の中の注目オブジェクトLB1のためのバウンディングボックスBB1を決定する。撮影画像IM1は、処理対象の画像である対象画像の例である。S230では、プロセッサ210は、バウンディングボックスBB1によって囲まれる第1領域A1を拡張することによって第2領域A2を決定する(
図4(D))。S240では、プロセッサ210は、第2領域A2を、背景領域と、オブジェクト領域と、を含む複数の領域に分割する。
図4(G)の例では、第2領域A2は、背景領域BAとオブジェクト領域OA1、OA2とを含む複数の領域に、分割される。S250-S280では、プロセッサ210は、オブジェクト領域OA1を内包する領域である特定領域A4を決定する(
図4(I))。従って、
図4(A)の例のように、第1ラベルLB1の一部がバウンディングボックスBB1の外にはみ出る場合であっても、プロセッサ210は、注目オブジェクトLB1を表すオブジェクト領域OA1を内包する特定領域A4を決定できる。
【0058】
また、
図4(D)の例のように、バウンディングボックスBB1の拡張によって形成される第2ボックスBB2は、注目オブジェクトLB1とは異なる他のオブジェクト(ここでは、第2ラベルLB2)を含み得る。この場合、
図4(G)の例のように、第2領域A2から分割される複数の領域は、複数のオブジェクト領域OA1、OA2を含み得る。この場合(
図3:S250:Yes)、プロセッサ210は、複数のオブジェクト領域のうち、最大面積を有するオブジェクト領域を対象オブジェクト領域として選択する(S260)。
図4(G)の例では、第1オブジェクト領域OA1が対象オブジェクト領域として選択される。プロセッサ210は、S270-S280で、対象オブジェクト領域OA1を内包する特定領域A4を決定する。上述したように、最大面積を有するオブジェクト領域は、注目オブジェクトを示す可能性が高い。従って、
図4(I)に示すように、プロセッサ210は、注目オブジェクトLB1を表すオブジェクト領域OA1を内包する特定領域A4を決定できる。
【0059】
また、
図1等で説明したように、注目オブジェクトLB1は、製品の例である複合機900に設けられるラベルである。プロセッサ210は、ラベルを表す特定領域A4を決定できる。
【0060】
また、プロセッサ210は、
図2のS120で、検査処理を実行する。この検査処理では、
図7で説明したように、プロセッサ210は、撮影画像IM1(
図4(I))中の特定領域A4の画像を使用して、注目オブジェクトLB1の外観の検査を行う。具体的には、S510で、プロセッサ210は、撮影画像IM1のうちの特定領域A4の画像である特定画像を取得する。S520では、プロセッサ210は、特定画像と、注目オブジェクトLB1の基準画像と、の間の差分画像を表す差分画像データを生成する。差分画像は、注目オブジェクトLB1の不具合部分を示している。差分画像は、検査結果の例である。このように、プロセッサ210は、特定領域A4の画像を使用して、注目オブジェクトLB1の外観の適切な検査が可能である。
【0061】
また、本実施例では、第2領域A2を決定するためのS230(
図3)は、
図5の処理を含んでいる。S310-S370では、プロセッサ210は、中間領域Amのアスペクト比が注目オブジェクトLB1のアスペクト比に近づくように、中間領域Amを決定する。ここで、プロセッサ210は、第1領域A1の高さH1(すなわち、縦方向の大きさ)と幅W1(すなわち、横方向の大きさ)とのうちの小さい方を調整することによって、中間領域Amを決定する。また、S380では、プロセッサ210は、中間領域Amを拡張することによって第2領域A2を決定する。ここで、プロセッサ210は、中間領域Amの輪郭の全体を外側に向かって拡張することによって第2領域A2を決定する。第1領域A1のアスペクト比が注目オブジェクトLB1のアスペクト比と異なる場合であっても、プロセッサ210は、注目オブジェクトLB1のアスペクト比と同じアスペクト比を有する中間領域Amを拡張することによって、第2領域A2を決定する。以上により、注目オブジェクトLB1を表すオブジェクト領域OA1が第2領域A2の外にはみ出る可能性は、低減する。そして、プロセッサ210は、注目オブジェクトLB1を表すオブジェクト領域OA1を内包する特定領域A4を決定できる。
【0062】
また、物体検出モデルM1は、不適切なバウンディングボックスBB1を決定し得る。例えば、注目オブジェクトLB1(
図4(A))が横長である場合に、プロセッサ210は、物体検出モデルM1に従って、縦長のバウンディングボックスBB1を誤って決定し得る(図示省略)。このような場合に、プロセッサ210は、第1領域A1の高さH1と幅W1とのうちの小さい方である幅W1を、注目オブジェクトLB1の適切なアスペクト比に従って拡張することによって、中間領域Amを決定する。プロセッサ210は、中間領域Amを拡張することによって、第2領域A2を決定する。従って、注目オブジェクトLB1を表すオブジェクト領域OA1が第2領域A2の外にはみ出る可能性は、低減する。
【0063】
B.第2実施例:
図8(A)-
図8(C)は、対象オブジェクト領域を選択する処理の別の実施例の概略図である。
図8(A)は、対象オブジェクト領域を選択する処理の一部のフローチャートである。第1実施例との差異は、
図3のS260が、
図8(A)のS260aに置換される点だけである。データ処理の他の部分の処理は、第1実施例(
図2、
図3、
図5、
図6、
図7)の対応する部分の処理と同じである(同じ部分については、図示と説明とを省略する)。
【0064】
本実施例では、選択条件は、オブジェクト領域がバウンディングボックスBB1の中心に最も近いことである。
図8(B)は、バウンディングボックスBB1の中心と、オブジェクト領域OA1、OA2の中心と、の説明図である。図中には、処理済二値画像IM4が示されている。この処理済二値画像IM4は、
図4(G)の処理済二値画像IM4と同じである。図中には、3個の中心Cb、Co1、Co2が示されている。ボックス中心Cbは、バウンディングボックスBB1(
図4(A))の中心である。第1領域中心Co1は、第1オブジェクト領域OA1の中心である。第2領域中心Co2は、第2オブジェクト領域OA2の中心である。各中心の座標は、以下の通りである(括弧内には、第1方向Dxの座標、第2方向Dyの座標が、順に示されている)。
ボックス中心Cb(x0,y0)
第1領域中心Co1(x1,y1)
第2領域中心Co2(x2,y2)
【0065】
図8(C)は、ボックス中心Cbと領域中心Co1、Co2との間の距離R1、R2の計算式を示している。本実施例では、距離として、ユークリッド距離が採用される。また、図中には、第1距離R1と第2距離R2との間の大小関係が示されている。
図8(B)に示すように、第1オブジェクト領域OA1の中心Co1は、ボックス中心Cbにより近く、第2オブジェクト領域OA2の中心Co2は、ボックス中心Cbからより遠い。すなわち、R1<R2である。従って、プロセッサ210は、第1オブジェクト領域OA1を選択する。上述したように、第2領域A2は、注目オブジェクトLB1のためのバウンディングボックスBB1(
図4(A))に基づいて、決定される。第2領域A2のうちの大きな部分が、注目オブジェクトLB1に重なる。従って、ボックス中心Cbに最も近い中心を有するオブジェクト領域は、注目オブジェクトLB1を示す可能性が高い。
【0066】
このように、S260aでは、プロセッサ210は、複数のオブジェクト領域のうち、ボックス中心Cbに最も近い中心を有するオブジェクト領域、すなわち、ボックス中心Cbに最も近いオブジェクト領域を、対象オブジェクト領域として選択する。
図8(B)の例では、第1オブジェクト領域OA1が対象オブジェクト領域として選択される。従って、プロセッサ210は、第1実施例と同様に、
図3のS270-S280で、注目オブジェクトLB1を表すオブジェクト領域OA1を内包する特定領域A4を決定できる。
【0067】
C.第3実施例:
図9(A)-
図9(C)は、中間領域Amを決定する処理の別の実施例の概略図である。
図9(A)は、中間領域Amを決定する処理の一部のフローチャートである。第1実施例との差異は、
図5のS330が、
図9(A)のS330bに置換される点だけである。データ処理の他の部分の処理は、第1実施例(
図2、
図3、
図5、
図6、
図7)の対応する部分の処理と同じである(同じ部分については、図示と説明とを省略する)。なお、
図9(A)の実施例は、
図8(A)の実施例に適用されてもよい。
【0068】
本実施例では、プロセッサ210は、第1領域A1の形状に拘わらずに、中間領域Amのアスペクト比が注目オブジェクトLB1のアスペクト比になるように第1領域A1を拡張することによって、中間領域Amを決定する。S330bでは、プロセッサ210は、以下の第2条件が満たされるか否かを判断する。
(第2条件) (H0/W0)>(H1/W1)
【0069】
第2条件が満たされることは、注目オブジェクトLB1の適切なアスペクト比(H0/W0)に対して、第1領域A1(すなわち、バウンディングボックスBB1)の幅W1に対する高さH1の比が小さいことを示している。
図9(B)は、第2条件が満たされる場合のバウンディングボックスと第1領域の例を示している。図中には、注目オブジェクトLB1と、バウンディングボックスBB1と、バウンディングボックスBB1に囲まれる第1領域A1と、が示されている。図示するように、注目オブジェクトLB1に対して、第1領域A1の幅W1は十分であるが、第1領域A1の高さH1は十分ではない。
【0070】
第2条件は満たされる場合(S330b:Yes)、S340で決定される参考高さHmは、高さH1よりも大きい。S350では、この参考高さHmを使用して、中間領域Amが決定される。
図9(B)の下部分には、注目オブジェクトLB1と中間領域Amとが示されている。プロセッサ210は、第1領域A1の高さH1を参考高さHmに拡張することによって、中間領域Amを決定する。
【0071】
第1領域A1の幅W1は、撮影画像IM1上の注目オブジェクトLB1の幅よりも小さい場合がある。この場合も、第2条件が満たされる場合(S330b:Yes)、プロセッサ210は、S340、S350で、第1領域A1の高さH1を参考高さHmに拡張することによって、中間領域Amを決定する。
【0072】
第2条件(
図9(A):S330b)が満たされないことは、注目オブジェクトLB1の適切なアスペクト比(H0/W0)に対して、第1領域A1(すなわち、バウンディングボックスBB1)の幅W1に対する高さH1の比が大きいことを示している。
図9(C)は、第2条件が満たされない場合のバウンディングボックスと第1領域の例を示している。図中には、注目オブジェクトLB1と、バウンディングボックスBB1と、バウンディングボックスBB1に囲まれる第1領域A1と、が示されている。図示するように、注目オブジェクトLB1に対して、第1領域A1の高さH1は十分であるが、第1領域A1の幅W1は十分ではない。
【0073】
第2条件は満たされない場合(S330b:No)、S360で決定される参考幅Wmは、幅W1よりも大きい。S370では、この参考幅Wmを使用して、中間領域Amが決定される。
図9(C)の下部分には、注目オブジェクトLB1と中間領域Amとが示されている。プロセッサ210は、第1領域A1の幅W1を参考幅Wmに拡張することによって、中間領域Amを決定する。
【0074】
第1領域A1の高さH1は、撮影画像IM1上の注目オブジェクトLB1の高さよりも小さい場合がある。この場合も、第2条件が満たされない場合(S330b:No)、プロセッサ210は、S360、S370で、第1領域A1の幅W1を参考幅Wmに拡張することによって、中間領域Amを決定する。
【0075】
以上のように、本実施例では、第2領域A2を決定するためのS230(
図3)は、
図5、
図9(A)の処理を含んでいる(
図5のS330は、
図9(A)のS330bに置換される)。S310、S320、S330b、S340-S370では、プロセッサ210は、第1領域A1を拡張することによって中間領域Amを決定する。ここで、プロセッサ210は、中間領域Amのアスペクト比が注目オブジェクトLB1のアスペクト比に近づくように、第2方向Dy(すなわち、縦方向)と第1方向Dx(すなわち、横方向)とのいずれかの方向に第1領域A1を拡張することによって中間領域Amを決定する。また、S380では、プロセッサ210は、中間領域Amを拡張することによって第2領域A2を決定する。ここで、プロセッサ210は、中間領域Amの輪郭の全体を外側に向かって拡張することによって第2領域A2を決定する。以上により、第1領域A1のアスペクト比が注目オブジェクトLB1のアスペクト比と異なる場合であっても、
図4(I)の実施例と同様に、プロセッサ210は、注目オブジェクトLB1を表すオブジェクト領域OA1を内包する特定領域A4を決定できる。また、本実施例では、プロセッサ210は、第1領域A1の形状に拘わらずに、第1領域A1を拡張することによって、中間領域Amを決定する。従って、特定領域A4から注目オブジェクトLB1がはみ出る可能性は、低減する。
【0076】
D.変形例:
(1)第2領域A2を背景領域とオブジェクト領域とを含む複数の領域に分割する処理は、
図6の処理に代えて、他の種々の処理であってよい。例えば、プロセッサ210は、予め決められた背景色範囲内の色を有する画素を背景画素として選択し、他の画素をオブジェクト画素として選択してよい。そして、プロセッサ210は、複数のオブジェクト画素が連続する領域をオブジェクト領域として選択してよい。いずれの場合も、プロセッサ210は、複数のオブジェクト画素が連続する1個の領域を1個のオブジェクト領域として選択してよい。
【0077】
(2)複数のオブジェクト領域から処理対象のオブジェクト領域である対象オブジェクト領域を選択する処理は、
図3のS260、
図8(A)のS260aに代えて、他の種々の処理であってよい。例えば、プロセッサ210は、バウンディングボックスBB1(
図8(B))のボックス中心Cbを含むオブジェクト領域を対象オブジェクト領域として選択してよい。このようなオブジェクト領域も、バウンディングボックスBB1のボックス中心Cbに最も近いオブジェクト領域の例である。ここで、バウンディングボックスBB1のボックス中心Cbに代えて、第2ボックスBB2の中心が使用されてよい。
図8(A)のS260aにおいて、ボックス中心Cbに代えて、第2ボックスBB2の中心が使用されてよい。また、プロセッサ210は、バウンディングボックスBB1に囲まれる第1領域A1の面積に最も近い面積を有するオブジェクト領域を選択してよい。いずれの場合も、選択されるオブジェクト領域は、注目オブジェクトを示す可能性が高い。
【0078】
(3)中間領域Amの決定処理は、
図5の処理と
図9(A)の処理とに代えて、他の種々の処理であってよい。中間領域Amのアスペクト比は、注目オブジェクトのアスペクト比からずれていてもよい。例えば、S350(
図5、
図9(A))で決定される中間領域Amの高さは、参考高さHm(S340)に1とは異なる係数を乗じて得られる値であってよい。また、S370で決定される中間領域Amの幅は、参考幅Wm(S360)に1とは異なる係数を乗じて得られる値であってよい。いずれの場合も、プロセッサ210は、第1領域A1のアスペクト比と比べて、中間領域Amのアスペクト比が、注目オブジェクトのアスペクト比により近くなるように、中間領域Amを決定することが好ましい。
【0079】
(4)第1領域A1から第2領域A2を決定する処理は、
図5、
図9(A)の処理に代えて、他の種々の処理であってよい。S380(
図5)では、プロセッサ210は、中間領域Amの高さと幅とのそれぞれに、係数kを乗じることによって、第2領域A2の高さと幅とを決定する。ここで、プロセッサ210は、係数kを、調整してよい。例えば、プロセッサ210は、係数kを、中間領域Amの面積が小さいほど大きい値に調整してよい。また、高さのための係数は、幅のための係数と異なってよい。
【0080】
また、プロセッサ210は、中間領域Amを決定せずに、第1領域A1から第2領域A2を決定してよい。例えば、プロセッサ210は、第1領域A1の高さH1に第1係数c1を乗じることによって、第2領域A2の高さを決定してよい。プロセッサ210は、第1領域A1の幅W1に第2係数c2を乗じることによって、第2領域A2の幅を決定してよい。ここで、係数c1、c2は、いずれも、1よりも大きい値に予め決定されてよい。第2領域A2の中心は、第1領域A1の中心と同じ位置に配置されてよい。プロセッサ210は、係数c1、c2を、調整してよい。例えば、プロセッサ210は、第1係数c1を、第1領域A1の面積が小さいほど大きい値に調整してよい。プロセッサ210は、第2係数c2を、第1領域A1の面積が小さいほど大きい値に調整してよい。
【0081】
(5)第3矩形BB3(
図4(H))から特定領域A4(
図4(I))を決定する処理は、S280(
図3)の処理に代えて、他の種々の処理であってよい。プロセッサ210は、
図4(I)で説明した拡張点P11-P14の座標の第1拡張値dxと第2拡張値dyを、調整してよい。例えば、プロセッサ210は、第1拡張値dxを、対象オブジェクト領域OA1の面積が小さいほど大きい値に調整してよい。プロセッサ210は、第2拡張値dyを、対象オブジェクト領域OA1の面積が小さいほど大きい値に調整してよい。
【0082】
また、プロセッサ210は、第3領域A3(
図4(H))の高さに第1係数f1を乗じることによって、特定領域A4の高さを決定してよい。プロセッサ210は、第3領域A3の幅に第2係数f2を乗じることによって、特定領域A4の幅を決定してよい。ここで、係数f1、f2は、いずれも、1よりも大きい値に予め決定されてよい。特定領域A4の中心は、第3領域A3の中心と同じ位置に配置されてよい。プロセッサ210は、係数f1、f2を、調整してよい。例えば、プロセッサ210は、第1係数f1を、第3領域A3の面積が小さいほど大きい値に調整してよい。プロセッサ210は、第2係数f2を、第3領域A3の面積が小さいほど大きい値に調整してよい。
【0083】
(6)S520(
図7)で使用される画像生成モデルM2は、VQ-VAEに代えて、S510で取得される特定画像(すなわち、注目オブジェクトLB1の画像)に対応する基準画像を生成する任意のモデルであってよい。基準画像は、不具合の無い注目オブジェクトLB1の画像である。画像生成モデルM2は、例えば、VAE(Variational Auto Encoder)などの種々のオートエンコーダであってよい。
【0084】
(7)検査処理は、
図7の処理に代えて、注目オブジェクトの外観を検査する種々の処理であってよい。例えば、S520では、画像生成モデルM2によって生成される画像データに代えて、予め準備された基準画像データが使用されてよい。この場合、プロセッサ210は、パターンマッチングによって、S510で取得される特定画像の第1ラベルLB1と、基準画像の第1ラベルLB1と、の間の位置関係を決定してよい。プロセッサ210は、決定された位置関係に従って、差分画像データを生成してよい。ここで、プロセッサ210は、S510で取得される特定画像の第1ラベルLB1の形状と、基準画像の第1ラベルLB1の形状と、の間の差が小さくなるように、特定画像と基準画像との一方、または、両方を変形させることが好ましい。例えば、プロセッサ210は、特定画像の射影変換を行ってよい。プロセッサ210は、特定画像の第1ラベルLB1の複数の特定部分(例えば、第1ラベルLB1の4個の角)の配置が、基準画像の第1ラベルLB1の対応する部分の配置と同じとなるように、射影変換のパラメータを決定してよい。そして、プロセッサ210は、変換済の特定画像を使用して差分画像を生成してよい。射影変換には、例えば、いわゆるopenCVの射影変換の関数が使用されてよい。
【0085】
また、プロセッサ210は、S530で、差分画像データを分析することによって、検査結果が合格であるか不合格で有るかを判断してよい。例えば、プロセッサ210は、差分色値の合計値が閾値以上である場合に、検査結果が不合格であると判断し、その合計値が閾値未満である場合に、検査結果が合格であると判断してよい。そして、プロセッサ210は、差分画像に代えて、合格または不合格を示す情報を、表示部240に表示してよい。
【0086】
また、検査処理(
図7)で使用される画像生成モデルM2(
図1)は、anoGAN(Anomaly Detection with Generative Adversarial Networks)と呼ばれるモデルであってよい。anoGANは、種々の潜在変数から不具合の無い注目オブジェクトLB1の画像データを生成するように、予め訓練される。S520では、プロセッサ210は、訓練済のanoGANによって生成される画像が、S510で取得される特定画像(すなわち、注目オブジェクトLB1を示す画像)に近づくように、anoGANの潜在変数を調整する。anoGANは、不具合の無い注目オブジェクトLB1の画像を適切に生成できる。従って、特定画像の注目オブジェクトLB1に不具合が無い場合、調整済の潜在変数に従ってanoGANによって生成される画像と、特定画像と、の間の差分は小さくなる。また、anoGANは、不具合を有する注目オブジェクトLB1の画像を適切に生成できない。従って、特定画像の注目オブジェクトLB1が不具合を有する場合、調整済の潜在変数に従ってanoGANによって生成される画像と、特定画像と、の間の差分が大きくなる。S520では、プロセッサ210は、この差分を取得してよい。S530では、プロセッサ210は、差分が予め決められた基準よりも大きい場合に、検査結果が不合格であると判断してよい。そして、プロセッサ210は、合格または不合格を示す情報を、表示部240に表示してよい。このように、検査処理は、画像生成モデルを使用する種々の処理であってよい。
【0087】
(8)S220(
図3)で使用される物体検出モデルM1は、YOLOv4に代えて、SSD(Single Shot MultiBox Detector)など、種々の物体検出モデルであってよい。
【0088】
(9)S220でのバウンディングボックスの決定方法は、物体検出モデルM1を使用する方法に代えて、注目オブジェクトの少なくとも一部分を囲むバウンディングボックスを決定する任意の方法であってよい。例えば、プロセッサ210は、注目オブジェクトの予め決められた基準画像を使用するパターンマッチングによって、バウンディングボックスを決定してよい。
【0089】
(10)注目オブジェクトは、複合機900に限らず、種々の製品に設けられるラベルであってよい。製品は、プリンタ、ミシン、工作機械、カッティングマシーン、スキャナ、スマートフォンなど、任意の製品であってよい。また、製品は、他の製品の部品であってよい。例えば、注目オブジェクトは、複合機に取り付けられる部品である排紙トレーに設けられるラベルであってよい。製品には、注目オブジェクトを含むN個(Nは1以上の整数)のラベルが設けられてよい。撮影画像が複数のラベルを表す場合であっても、上記の特定領域の決定処理は、注目オブジェクトのオブジェクト領域を内包する特定領域を決定できる。
【0090】
(11)注目オブジェクトは、ラベルに代えて、他の任意のオブジェクトであってよい。例えば、注目オブジェクトは、立体的な銘(製造者のロゴ、製品のブランドなど)、または、塗装された模様であってよい。また、製品には、複数種類のオブジェクトが設けられてよい。
【0091】
(12)特定領域の決定に使用される対象画像は、撮影画像に代えて、他の種々の画像であってよい。例えば、プロセッサ210は、スキャナによって読み取られる読取画像から、特定領域を決定してよい。
【0092】
(13)
図2のデータ処理から、S120は省略されてよい。この場合、プログラムPG(
図1)から、第2プログラム232は省略されてよい。特定領域を示すデータ(
図3:S290)の用途は、注目オブジェクトの外観の検査に限らず、任意の用途であってよい。例えば、対象画像のうちの特定領域の画像を製品のマニュアルに掲載するために、特定領域を示すデータが使用されてよい。
【0093】
(14)
図1のデータ処理装置200は、パーソナルコンピュータとは異なる種類の装置(例えば、デジタルカメラ、スキャナ、スマートフォン)であってよい。また、ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータ)が、データ処理装置によるデータ処理の機能を一部ずつ分担して、全体として、データ処理の機能を提供してもよい(これらの装置を備えるシステムがデータ処理装置に対応する)。
【0094】
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、
図3のS240の領域分割の機能を、専用のハードウェア回路によって実現してもよい。
【0095】
また、本開示の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD-ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
【0096】
上記した実施の形態は、本開示の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【0097】
110…デジタルカメラ、200…データ処理装置、210…プロセッサ、215…記憶装置、220…揮発性記憶装置、230…不揮発性記憶装置、PG…プログラム、231…第1プログラム、232…第2プログラム、240…表示部、250…操作部、270…通信インタフェース、900…複合機、M1…物体検出モデル、M2…画像生成モデル、