hiyoko-programingの日記

プログラミングを勉強したてのひよっ子。   エンジニア目指して勉強中。

画像を検出する方法

◉画像検出で何ができる??

画像検出は大きく分けると3つのことができる。

 ●特定部分の領域を見つける (EX:顔が写っている)

 ●一致するかどうかを見分ける (EX:指紋の一致)

 ●グループに分ける (EX:猫と犬を分ける)

 

最近では、次のような使われ方もしている

 ⚫︎スマホの自撮り写真の加工

 ⚫︎レジで顔をカメラに写すだけで会計ができる

 ⚫︎病院でC TやMRIの結果から病気を見つける

 ⚫︎製造業で組立や検品を自動で行う

 ⚫︎運送業で搬送品の分類を自動で行う

 ⚫︎魚の養殖で餌の量と与えるタイミングを計る

など。

 

◉画像をコンピュータはどのように見ているのか?

コンピュータは画像を見て何が写っているかは理解できない。

画像を構成している「ピクセル(px)」と呼ばれる小さな点の集まり

1つずつの情報(色)を認識しているだけ。

 

◉画像から特定の部分を検出する流れ

画像入力 ▶︎前処理 ▶︎ 特徴抽出 ▶︎画像検出

の流れになっている。

 ●画像入力

  デジタルカメラやスキャナーから画像を入力。

  ポイントはコンピュータが理解できる形に

  アナログをデジタル(ピクセル情報)にすること。

 ●前処理

  デジタル化された画像はそのままでは使えない。

  歪みを調整したり、明るさを変えたりする。

  場合よっては、画像の拡大や縮小、回転やネガポジ化することもある。

  さらに、コンピュータがより理解しやすいように、

  グレースケール化や2値化を行うことで、画像を単純化しつつ、

  次の「特徴抽出」の準備をする。

 ●特徴抽出

  できるだけ単純化された画像を、

  構成しているピクセル単位の情報を見ていくことで、

  隣合う情報の違いを調べていく。

  ここで、どの部分が共通情報の集まりかがわかる。→「ラベリング」という。

  ラベリングができると、お互いの境界線もわかってくるので、

  境界線を強調することで、輪郭が浮き上がる。

  浮き上がった輪郭の大きさや長さなどを、

  コンピュータが理解できる数値に置き換える。→「特徴抽出」という。

  特徴抽出とは、別視点で見れば、

  「検出に役に立たない情報を捨てる作業」とも捉えられる。

 ●画像検出

  特徴抽出された情報と、

  これまでに得た「特徴が集まった情報(機械学習による物)」と

  を比較することで、

  「顔の特徴である」とか「目の特徴である」などと判断し、

  画像から特徴に近い部分を検出する。

 

◉ポイントは「輪郭」と「特徴」

コンピュータが行う画像検出は、

すでに与えられた情報にどれだけ一致しているかを見つけるだけ。

そして、どれだけ一致するかどうかを判断するための情報は、

検出対象の「輪郭」を描き、そこから「特徴」を

見つけ出すことが重要。

 

画像検出を行うときの「特徴」は1つだけではない。

例えば、顔や動物、果物などを検出するならば、

輪郭(形)や大きさ、色が特徴になる。

反対に、手書き文字を検出するなら、色の特徴は必要なくなる。

 

検出する対象物によって必要な特徴が変わる。これがポイント。