二値化(にちか、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前処理) |
物体検出 | 形状・輪郭の抽出 |
顔検出・認識 | 肌色領域抽出や前処理 |
医療画像 | 病変・腫瘍などの輪郭抽出 |
🔁 二値化とヒストグラムの関係
- ヒストグラムを見れば、「どこにしきい値を設定するべきか」が直感的にわかる。
- 明暗のピークが二山(バイモーダル)の場合、大津の手法が有効。
もっと詳しく知りたい処理(適応的二値化や、大津法の原理など)があれば、そこを深掘りできます!