
お世話になっております。
日本エレクトロセンサリデバイス株式会社 竹迫です。
今回のお題は・・・
二値化のしきい値 どう決める?
最近営業からメールマガジンのフィードバックをもらうことが増えてきました。
開始して2年半、NEDメールマガジンがある程度浸透してきたのかな、と思えてうれしい限りです。
そんな中でご要望が多いのが画像検査の手法について。
正直手法と言われても総論的なところは非常に少なく、かといって各論に入るとケースバイケースすぎる!という感じですが、
だからこそ検査業務に携わっている方は得られる情報が少なくお困りなのだなぁ・・・と思います。
それならぜひ!メルマガで、NED技術が当然のようにやっていることをピックアップしてお届けしたい!
ということで、今回は二値化のしきい値についてを取り扱います。
見たいところとそれ以外のところで黒か白かに振り分ける二値化処理。
画像処理の基本中の基本ですが、ベテランの方ほど「改めて考えたことないなぁ・・・」という感じなのでは。
改めて二値化のしきい値の決め方について、理解を深めていただければと思います。
目次
二値化とは?
そもそも二値化とは何ですか?という方向けの簡単解説です。
お分かりの方はさくっと次の章へお進みください。
二値化(binarization)は、画像の輝度値によって白か黒のどちらかに分別して、白黒画像にする処理です。
通常のモノクロ画像だと、グレーの部分が含まれますが、それを白か黒かのどちらかに分けます。
FAX等文字認識では必須となる処理ですが、キズ検知にも便利♪
傷の部分だけ白くもしくは黒く浮かび上がれば、背景色と同化して分かりにくかったキズもすぐ見つけられます。



その時必要になるのがしきい値。(上の図でいう点線の部分の値です)
しきい値を境に、どちらを白に、どちらを黒にするのか、そのあたりのお話を今回していきたいと思います。
NED流二値化の公式はコレ
画像処理アプリを触ったことがある方ならお分かりかもしれませんが、しきい値の決め方ってかなり感覚的です。
でもやったことがない人にとってなんとなく・・・っていう説明ほど困るものないですよね。
竹迫もうまくいかな~いと技術にヘルプを求めると、ほいできたよ~って修正されて返ってくるんですが、
「ほんとだ・・・しかしなぜこうなった・・・?」となることが多々ありました。
ということで、上記のような技術とのやり取りから、二値化のしきい値基本セオリーをまとめてみました。
あくまで基本の指針であって、全ケースこうすればうまくいくということを保証するものではないのですが、
最初のとっかかりとしてお使いいただければと思います。

見つけたいものをしきい値の上限下限で挟む
しきい値には上限・下限があり、
上限下限の間を輝度値255=白にし、それ以外の部分を輝度値0=黒にする
のがセオリー1つ目のポイントです。
そのため見つけたいものをしきい値の上限下限で挟むと、それだけが白抜きで浮かび上がってきます。




しきい値の上限/下限を255/0にできるか検討する
これは画像づくりの段階から想定しておいてほしい・・・という内容でもあるのですが、
しきい値の上限を255で固定、もしくは下限を0で固定できると、誤検知がぐっと減るためです。



上のカニの画像だと、カニ自体が全体的に白っぽいので、上限を輝度値255(白)に固定して、
下限を調整することでカニの検出が可能です。
画像づくりの段階で検討すべきは、背景と検出する対象の明暗がはっきりするようにしておくことです。
上の画像の場合だと背景色は黒に近いものにしておいた方が、下限値の値が楽に決められるようになります。
見たいものを黒にする?白にする?
NED流二値化の公式では、「見たいものを上限と下限で挟んで白にする」とお届けしましたが、
ぶっちゃけ見たいものは黒でも白でもどちらでも構いません。見たいものがピックアップできれば、結果は同じ!
ただ気を付けておきたいポイントはあるので、先ほどの公式に追加しておきたいと思います。

同じ検査アプリの中で対象の輝度値は統一する
たとえば同じ検査を行う種類違いの画像があったとします。
カニは白で検出するけど、クラゲは黒で検出しよ~っと。みたいなことをすると・・・






ブロブ処理で検出した対象に青枠がつくのですが、
白のカニに合わせてブロブ処理を設計すると、画像全体に青枠がついてしまっています。
黒のクラゲではなく背景を検出している状態です。
こういうことにならないためには、同じアプリ内で検出する対象は黒か白どちらかに統一しておくべき。
二値化後の検出がやりやすくなりますので、ご留意ください。
二値化も自分でやってみよう ☆オンラインセミナー開催中
今回の二値化を実際自分でやってみたりするTechViewのハンズオンセミナーをオンラインで開催させていただいております。
これより後の日程はまだ公開できないのですが、随時メルマガ/HPでご案内していきますので、
チェックしていただければと思います。
アンケートその他でいただいたご意見を踏まえつつ、トライ&エラーでより分かりやすくしていきたいと思いますので、
ぜひご参加ください♪
【ハンズオンセミナー】これからはプログラミングレス!
誰でも使える画像処理ツールTechView(初級編)
◆ 画像の取り込み・表示
◆ 二値化/エッジ抽出
◆ ブロブ処理
◆ タイルビューの使い方
主催:日本エレクトロセンサリデバイス株式会社 営業部
場所:オンラインセミナー(お申込みのお客様にURLをお送りいたします)
参加費:無料
対象:画像処理ツール・画像処理ソフトをお探しのお客様/TechView導入初期のお客様
【初心者必見】「最適な検査効率を目指すには?分解能と検査速度の最適解」
◆ 分解能とは
◆ ハードウェアの速度
◆ ソフトウェアの速度
◆ 目指すところは効率アップ
◆ Q&A
主催:日本エレクトロセンサリデバイス株式会社 営業部
場所:オンラインセミナー(お申込みのお客様にURLをお送りいたします)
参加費:無料
対象:産業用カメラをお探しのお客様
画像処理業務を始めたばかりのお客様
【ハンズオンセミナー】これからはプログラミングレス!
誰でも使える画像処理ツールTechView(中級編)
◆ 判定前の前処理
◆ マスク処理
◆ レシピ切替
◆ 出力ファイルの作成
主催:日本エレクトロセンサリデバイス株式会社 営業部
場所:オンラインセミナー(お申込みのお客様にURLをお送りいたします)
参加費:無料
対象:画像処理ツールをお探しのお客様、TechView導入初期のお客様
【初心者必見】「インターフェースはどう選ぶ?フレームグラバ―との関係は?」
◆ 産業用カメラのインターフェース
◆ フレームグラバ―ボードの役割
◆ 選定基準
◆ 今後のトレンド
◆ Q&A
主催:日本エレクトロセンサリデバイス株式会社 営業部
場所:オンラインセミナー(お申込みのお客様にURLをお送りいたします)
参加費:無料
対象:産業用カメラをお探しのお客様
画像処理業務を始めたばかりのお客様
NED 営業小ネタ
今回の二値化閾値について、TechViewハンズオンセミナーの準備中にこんな話題が。
「閾値って何て読む?」
竹迫は生物系出身なので「いきち」って読んでしまうのですが、
工学系界隈では「しきいち」と呼ぶのが多い模様。
セミナーの練習で何回も「いきち」って言ってしまう竹迫(本番でも言っていたかもしれない・・・)
苦笑する技術、爆笑する営業・・・みたいな光景が繰り広げられまして、本題より難しかったですね・・・笑
なかなか一度身に着けた読み方って変えられないです。
ちなみにどちらが正しいという答えはないようです。辞書的にはどちらもありとのこと。
この問題を回避するため、今回のメルマガでは「しきい値」で表記を統一しました!
竹迫と同じ轍を踏む方が出ないように、「しきい値」表記を推していきたいと思います!