クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

二値化としきい値の決め方

このレッスンのあとで: ヒストグラムを見てしきい値を選び、背景から物体を分けられる。

60分のレッスンコマンド3件コンピュータビジョンラボ:JupyterLab でピクセル、しきい値、物の数え方

しきい値で背景と物体を分ける

しきい値とは、ピクセルを「明るい」と「暗い」に分けるための、境目の明るさです。しきい値で分けると、背景から物体だけを取り出せます。

レジのカメラが、トレーの上の硬貨を数えるときも、まずこの分け方から始まります。ヒストグラムを見れば、境目をどこに置くかが分かります。

このレッスンのゴール

メモ

ヒストグラムを見てしきい値を選び、背景から物体を分けられる。

キーワード

ことばいみれい
ヒストグラム明るさごとの、ピクセルの数を数えた表
しきい値明るいと暗いを分ける、境目の明るさ100
二値化各ピクセルを、2つの値のどちらかにすること
マスク二値化の結果。物体が 1、背景が 0 の格子
背景調べたい物体のまわりの、何もない部分
物体画像の中で、取り出したいもの

学生が入力するセルは、このプレビューでは空白です。

ヒストグラムは明るさごとの数

ヒストグラムは、画像のピクセルを明るさで分け、グループごとに数を数えた表です。画像の明るさが、どう偏っているかが一目で分かります。

ラボのコインの画像を、4つの帯に分けると、次の数になります。

例: コインの画像の4つの帯

明るさの帯ピクセルの数中身
0 から 6363231暗い背景
64 から 1270何もない
128 から 19113566明るいコイン
192 から 2553ほんの少しの強い光

学生が入力するセルは、このプレビューでは空白です。

真ん中の空いた帯に、しきい値を置く

暗い背景と明るいコインの間に、ピクセルが1つもない帯があります。しきい値は、この空いた帯に置くと、背景とコインをきれいに分けられます。

4つの数を足すと、全部のピクセルになります。次のコマンドで確かめます。

4つの帯の数を足す

コマンド
docker exec jupyter python3 -c "print(63231 + 0 + 13566 + 3)"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

しきい値より明るければ1、そうでなければ0

二値化は、各ピクセルを、しきい値と比べるだけです。しきい値より明るければ1、そうでなければ0にします。

結果の 0 と 1 の格子がマスクです。ラボのスクリプトは、しきい値を 30、100、160 の3つで試し、数を出します。出力の keeps は「残す」、pixels of は「全体のうち」の意味です。

3つのしきい値を試す

コマンド
docker exec jupyter python3 steps/threshold.py

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

3つのしきい値の結果

しきい値残るピクセルどうなったか
3058806背景のむらまで、残ってしまう
10013569コインだけが残る
16010062コインの一部まで、削られる

学生が入力するセルは、このプレビューでは空白です。

100 で残った割合を求める

コマンド
docker exec jupyter python3 -c "print(round(13569 / 76800 * 100, 1))"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

しきい値より明るい数を数える

コード: python
grid = [[30, 35, 40], [32, 200, 210], [34, 205, 198]]
level = 100
count = 0
for row in range(len(grid)):
    for column in range(len(grid[0])):
        if grid[row][column] > level:
            count = count + 1
print("しきい値", level, "より明るいピクセル:", count)
# level を 199 に変えて、もう一度実行します。
# 数はいくつになりますか。

よくある間違い

注意

真ん中の 128 を、いつでも正しいしきい値と考えがちです。しかし、コインの画像で 160 にすると、残るのは 10062 に減りました。いつも、ヒストグラムを見てから決めます。

このラボとソースについて: コンピュータビジョンラボ:JupyterLab でピクセル、しきい値、物の数え方

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。