二値化の概要を解説

二値化(にちか、Binary Thresholding)とは、画像処理において各画素の値を「0」か「1(または255)」に分類する処理のことです。主に「物体の領域」と「背景」とを分離するために使われます。


目次

🔍 二値化の概要

🎯 目的:

  • 画像の情報を**白(前景)と黒(背景)**に簡略化し、
  • 対象の輪郭・形状・位置などを明確にする。

🧠 処理の原理(基本的な考え方)

ある「しきい値 T」を境にして、
- 画素値 > T → 白 (255)
- 画素値 <= T → 黒 (0)

✅ Pythonでの基本コード(OpenCV)

import cv2

# グレースケール画像を読み込み
img = cv2.imread('sample.jpg', 0)

# しきい値を指定して二値化
_, binary = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)

cv2.imshow("Binary Image", binary)
cv2.waitKey(0)
cv2.destroyAllWindows()

🧰 主な二値化手法

手法特徴説明
固定しきい値一定の値で分類cv2.threshold(img, T, max, ...)
大津の手法(Otsu)最適なしきい値を自動計算背景と前景の分離を最大化
適応的二値化局所領域ごとに異なるしきい値明暗差が激しい画像に有効
インバート(反転)黒白を反転するcv2.THRESH_BINARY_INV

✅ 大津の手法(Otsu法)の例

_, binary_otsu = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)

📸 応用例

分野応用内容
文書スキャン文字と背景の分離(OCR前処理)
物体検出形状・輪郭の抽出
顔検出・認識肌色領域抽出や前処理
医療画像病変・腫瘍などの輪郭抽出

🔁 二値化とヒストグラムの関係

  • ヒストグラムを見れば、「どこにしきい値を設定するべきか」が直感的にわかる。
  • 明暗のピークが二山(バイモーダル)の場合、大津の手法が有効。

もっと詳しく知りたい処理(適応的二値化や、大津法の原理など)があれば、そこを深掘りできます!

よかったらシェアしてね!
目次