
- INDEX目次
目次【非表示】
- 1.画像処理の二値化とは?しきい値の種類やOpenCVでの方法を解説
- 2.画像処理における二値化の基本をわかりやすく解説
- 3.二値化処理の仕組みと「しきい値」の重要な役割
- 3-1.画像を白と黒の2色に変換する「しきい値」とは
- 3-2.二値化の前処理として行われるグレースケール変換
- 4.二値化処理で得られる3つのメリット
- 4-1.データ量を削減して処理を高速化できる
- 4-2.画像内の特定オブジェクトを抽出しやすくなる
- 4-3.ノイズを除去して特徴を際立たせられる
- 5.知っておきたい二値化処理のデメリットと注意点
- 5-1.しきい値の設定次第で結果が大きく変わる
- 5-2.一度失われた色や濃淡の情報は復元できない
- 6.代表的な5つの二値化手法としきい値の決定方法
- 6-1.濃度ヒストグラムの谷を利用する「モード法」
- 6-2.画素の割合からしきい値を決める「pタイル法」
- 6-3.画像全体で固定のしきい値を使う「静的二値化」
- 6-4.分離度が最大になるしきい値を自動算出する「大津の二値化」
- 6-5.画像の場所に応じてしきい値を変える「適応的二値化」
- 7.PythonのOpenCVライブラリで二値化を実装する方法
- 7-1.基本的な二値化を行うthreshold関数の使い方
- 7-2.大津の二値化や適応的二値化を実装するコード例
- 8.二値化技術はこんな分野で活用されている
- 8-1.スキャンした文書の文字を読み取るOCR技術
- 8-2.工場の生産ラインにおける製品の外観検査
- 8-3.医療現場での画像診断をサポートする技術
- 9.まとめ
画像処理の二値化とは?しきい値の種類やOpenCVでの方法を解説
画像処理における二値化とは、画像を白と黒の2階調に変換する基本的な手法です。
この処理には、色の境界を定める「しきい値」が重要な役割を果たします。
本記事では、二値化の基本原理から、しきい値の代表的な種類、そしてPythonのライブラリであるOpenCVを使った具体的な実装方法までを説明します。
二値化がどのような技術であり、どういった方法で実現できるのか、その全体像を解説します。
画像処理における二値化の基本をわかりやすく解説
画像処理における二値化とは、画像を特定の色を基準にして白と黒の2色のみで表現する処理のことです。
グレースケール画像が持つ濃淡の情報を、ある「しきい値」よりも明るいか暗いかで判断し、白か黒のどちらかの画素に置き換えるという単純な原理に基づいています。
この処理により、画像内の対象物と背景を明確に分離することが可能になります。
画像から特定の特徴を抽出したり、データ量を削減したりする目的で、様々な画像処理の前段階として広く利用されています。
二値化処理の仕組みと「しきい値」の重要な役割
二値化処理は、画像の各画素が持つ明るさの数値を、あらかじめ設定した「しきい値」と比較することで行われます。
一般的に0(黒)から255(白)までの256段階で表現されるグレースケール画像において、画素の値がしきい値より大きければ白(255)、小さければ黒(0)に置き換えるのが基本的な仕組みです。
このしきい値をどこに設定するかによって、生成される白黒画像の品質が大きく左右されるため、しきい値の決定は二値化処理において最も重要な要素となります。
画像を白と黒の2色に変換する「しきい値」とは
しきい値とは、画像の各画素を白と黒のどちらかに分類するための基準となる明るさの値です。
例えば、0から255までの明るさを持つグレースケール画像に対してしきい値を128と設定した場合、画素の値が128以上のピクセルは白に、128未満のピクセルは黒に変換されます。
カラー画像(RGB画像)を二値化する際は、通常そのままでは処理できないため、まずグレースケール画像に変換してからしきい値処理を適用します。
このしきい値の値をどのように決めるかによって、背景から対象物をどれだけ正確に切り出せるかが決まるため、その設定は非常に重要です。
二値化の前処理として行われるグレースケール変換
カラー画像を二値化する場合、多くは前処理としてグレースケール変換が行われます。
カラー画像は光の三原色であるR(赤)・G(緑)・B(青)の3つの要素で構成されており、そのままではしきい値を一つに定めて白黒に分けることが困難です。
そこで、まずこれらの色情報を輝度(明るさ)情報のみを持つグレースケール画像に変換します。
グレースケール画像は0(黒)から255(白)までの256階調の濃淡で表現されるため、単一のしきい値を基準に白と黒への分類が可能になります。
この前処理によって、後続の二値化処理を単純化し、かつ効果的に実行できます。
二値化処理で得られる3つのメリット
二値化処理を適用することで、画像処理の効率化や精度向上につながる様々なメリットが得られます。
画像データが持つ情報を白と黒の2値に絞ることで、データ量を大幅に削減できるだけでなく、画像の中から特定の対象物を抽出しやすくなります。
また、不要な濃淡情報や微細なノイズを除去し、対象物の特徴をより明確に際立たせる効果も期待できます。
これらのメリットは、後続のより複雑な画像解析処理の土台となります。
データ量を削減して処理を高速化できる
二値化の大きなメリットの一つは、画像データ量を劇的に削減できる点です。
例えば、256階調のグレースケール画像では1画素あたり8ビット(256通り)の情報量が必要ですが、二値化すると1画素あたり1ビット(白か黒かの2通り)の情報量で済みます。
これにより、画像全体のデータサイズが8分の1に圧縮されます。
データ量が小さくなることで、メモリ使用量が抑えられるだけでなく、画像の転送や保存、さらには特徴抽出などの後続処理にかかる計算コストも大幅に削減され、システム全体の高速化に貢献します。
画像内の特定オブジェクトを抽出しやすくなる
二値化によって背景と対象物が明確に分離されるため、画像内から特定のオブジェクト(物体)を抽出しやすくなるというメリットがあります。
白と黒の2色に単純化された画像では、オブジェクトの輪郭(エッジ)が際立ち、その検出が容易になります。
また、分離されたオブジェクトに対して、その数(カウント)を数えたり、画素数を数えることで面積を計算したりといった幾何学的な特徴量の計測も簡単に行えます。
これにより、物体の個数検査やサイズ計測といったタスクの精度と効率が向上します。
ノイズを除去して特徴を際立たせられる
二値化処理は、画像に含まれる不要な情報やノイズを除去し、本質的な特徴を際立たせる効果があります。
画像内の微妙な色の変化や照明による濃淡のムラといった情報は、しきい値処理によって白か黒のどちらかに統一されるため、結果的に除去されます。
これにより、背景と対象物のコントラストが強調され、形状などの特徴がより明確になります。
メディアンフィルタなどのノイズ除去フィルターと組み合わせることで、さらに効果的に対象物の特徴を際立たせ、後続のパターン認識や形状分析の精度を高めることができます。
知っておきたい二値化処理のデメリットと注意点
二値化は多くのメリットを持つ一方で、いくつかのデメリットや注意点も存在します。
この処理は画像の情報を大幅に単純化するため、しきい値の設定を誤ると重要な情報が失われてしまう可能性があります。
また、一度白と黒の2値に変換してしまうと、元の画像が持っていた豊かな色や濃淡の情報を取り戻すことはできません。
これらの特性を理解し、目的に応じて適切に利用することが求められます。
しきい値の設定次第で結果が大きく変わる
二値化処理の最も注意すべき点は、しきい値の設定が結果を大きく左右することです。
しきい値が高すぎると、本来対象物として抽出したい部分まで背景として黒く塗りつぶされてしまい、オブジェクトが欠けたり消えたりする原因になります。
逆にしきい値が低すぎると、背景のノイズまでオブジェクトとして白く抽出してしまい、正確な形状や特徴を捉えられません。
このように、しきい値のわずかな違いが二値化画像の品質を決定づけるため、画像の特性や目的に合わせて最適な値を慎重に選択する必要があります。
一度失われた色や濃淡の情報は復元できない
二値化処理は、元の画像が持つ豊富な階調情報を白と黒の2値情報に圧縮する非可逆的な処理です。
グレースケール画像の256段階の濃淡や、カラー画像の多彩な色情報は、しきい値によって白か黒のどちらかに振り分けられた時点で完全に失われます。
そのため、一度二値化した画像から元のグレースケール画像やカラー画像を復元することはできません。
この特性から、二値化を行う際には、失われても問題ない情報かどうかを事前に検討する必要があります。
必要な濃淡情報まで失ってしまうリスクがあることを常に念頭に置くべきです。
代表的な5つの二値化手法としきい値の決定方法
二値化の品質はしきい値の決定方法に大きく依存するため、画像の特性に合わせて最適な手法を選択することが重要です。
しきい値を決定するためのアルゴリズムには様々な種類が存在し、それぞれに得意な画像のタイプや計算コストが異なります。
ここでは、濃度ヒストグラムを利用するものから、画像の局所的な特徴に応じてしきい値を変えるものまで、代表的な5つの二値化手法を紹介します。

濃度ヒストグラムの谷を利用する「モード法」
モード法は、画像の濃度ヒストグラムを利用してしきい値を決定する代表的な手法です。
濃度ヒストグラムとは、画像の明るさの分布をグラフ化したもので、背景と対象物の明るさが明確に分かれている画像では、2つの山(モード)が形成されます。
モード法では、この2つの山のちょうど中間にある最も度数が低い谷の部分を、背景と対象物を分離するのに最適な明るさと判断し、しきい値として採用します。
この手法は、背景と対象物のコントラストがはっきりしている画像に対して非常に有効に機能します。
画素の割合からしきい値を決める「pタイル法」
pタイル法は、画像全体に占める対象物の面積の割合が、あらかじめおおよそ分かっている場合に有効なしきい値決定手法です。
この方法では、まず画像の濃度ヒストグラムを作成し、明るい(または暗い)方から画素数を累積していきます。
そして、その累積値が事前に設定した対象物の割合(p%)に達した時点の明るさの値をしきい値として採用します。
例えば、画像全体の20%が対象物だと分かっている場合、ヒストグラムの暗い側から全体の20%の画素が含まれる輝度値をしきい値とします。
画像全体で固定のしきい値を使う「静的二値化」
静的二値化(または単純二値化)は、画像全体に対して単一の固定しきい値を用いて二値化を行う、最もシンプルで基本的な手法です。
処理が高速であるという利点がありますが、最適な結果を得るためには、画像全体の照明が均一で、かつ背景と対象物のコントラストが明確である必要があります。
照明ムラがあったり、画像内で明るさが大きく変化したりする場合には、一部の領域で対象物がうまく抽出できなかったり、逆に背景がノイズとして残ったりする可能性があります。
そのため、適用できるシーンは限定的ですが、条件が合えば非常に効果的な方法です。
分離度が最大になるしきい値を自動算出する「大津の二値化」
大津の二値化は、しきい値を境に画素を2つのクラスに分けた際に、その分離度合いが最も良くなるしきい値を自動で算出する手法です。このアルゴリズムは判別分析法に基づいており、クラス内の分散を最小化し、クラス間の分散を最大化するしきい値を探索します。計算式にはクラスの確率や分散が用いられ、濃度ヒストグラムに明確な谷がないような画像でも安定して適切なしきい値を決定できます。大津の方法(Otsu’s method)として広く知られ、OpenCVでは`THRESH_OTSU`というフラグで簡単に利用できるため、自動でしきい値を決めたい場合に頻繁に用いられます。
画像の場所に応じてしきい値を変える「適応的二値化」
適応的二値化は、画像全体で一つのしきい値を用いるのではなく、画像の各領域で異なるしきい値を適用する手法です。
具体的には、ある画素を二値化する際に、その周辺の小さな領域(近傍領域)の画素値の平均値や加重平均値を計算し、それを基にしきい値を決定します。
この適応的なアプローチにより、一枚の画像内に照明ムラがあって明るさが均一でない場合でも、局所的な明るさの変化に対応して適切に二値化できます。
静的二値化ではうまくいかないような、複雑な照明環境下で撮影された画像の処理に特に有効です。
PythonのOpenCVライブラリで二値化を実装する方法
Pythonで画像処理を行う際、広く利用されているのがOpenCVというライブラリです。
OpenCVには二値化処理のための関数が豊富に用意されており、数行のコードで簡単に実装することが可能です。
ここでは、基本的な二値化から、大津の二値化や適応的二値化といった高度な手法まで、具体的なやり方をコード例と共に解説します。
これらの関数を使えば、これまで説明してきた様々な二値化アルゴリズムを手軽に試すことができます。
基本的な二値化を行うthreshold関数の使い方
OpenCVで最も基本的な二値化を行うにはcv2.threshold()関数を使用します。
この関数は、入力画像(グレースケール)、しきい値、最大値(通常は255)、二値化の種類の4つを主な引数として受け取ります。
例えば、しきい値を127に設定して、それを超える値を255(白)、それ以下の値を0(黒)にする単純な二値化は簡単に行えます。
戻り値として、実際に適用されたしきい値と、二値化処理後の画像が得られます。
この関数は、静的二値化を実装する際の基本となり、様々な二値化タイプの指定も可能です。
大津の二値化や適応的二値化を実装するコード例
OpenCVを使えば、より高度な二値化手法も簡単に実装できます。
大津の二値化を行うには、`cv2.threshold()`関数の第4引数(二値化の種類)に`cv2.THRESH_OTSU`を追加で指定します。
この際、第2引数のしきい値は0などダミーの値を設定すれば、関数が自動で最適なしきい値を計算してくれます。
一方、適応的二値化を実装する場合は`cv2.adaptiveThreshold()`関数を用います。
この関数には、入力画像、最大値、適応的二値化のアルゴリズム(近傍領域の平均値を使うか、ガウシアン加重平均を使うか)、二値化の種類、近傍領域のサイズ、そして計算されたしきい値から引く定数を指定します。
二値化技術はこんな分野で活用されている
二値化は画像処理の基本的な技術ですが、その応用範囲は非常に広く、様々な分野のシステムや解析ツールに組み込まれています。
文字認識や製品検査、医療診断といった専門的な領域から、身近なアプリケーションまで、対象物と背景を分離するという単純な処理が多岐にわたる課題解決の基盤となっています。
ここでは、二値化技術が実際にどのように社会で活用されているのか、具体的な事例をいくつか紹介します。
スキャンした文書の文字を読み取るOCR技術
OCR(光学的文字認識)は、スキャンした文書や画像から文字を抽出し、テキストデータに変換する技術です。
このプロセスにおいて、二値化は極めて重要な前処理の役割を担います。
紙の文書をスキャンして得られた画像には、紙の地色や照明による影など、文字以外の情報が多く含まれます。
二値化を適用することで、背景と文字を明確に白と黒に分離し、文字の形状を単純化できます。
これにより、後続の文字認識アルゴリズムが文字のパターンを識別しやすくなり、認識精度が大幅に向上します。
工場の生産ラインにおける製品の外観検査
工場の生産ラインでは、製品の品質を保証するためにカメラを用いた自動外観検査が広く行われています。
この検査システムにおいて、二値化は製品の傷や汚れ、欠けといった欠陥を検出するために活用されます。
カメラで撮影した製品の画像に対し二値化処理を施すことで、正常な表面と欠陥部分を白黒で明確に分離します。
これにより、欠陥の有無や大きさ、位置などを高速かつ正確に判定することが可能になります。
FA(ファクトリーオートメーション)分野において、二値化は品質管理の効率化と自動化に不可欠な技術となっています。
医療現場での画像診断をサポートする技術
医療分野では、CTスキャンやMRI、レントゲン写真といった医用画像の解析に二値化技術が応用されています。
これらの画像から特定の臓器の輪郭を抽出したり、腫瘍などの病変部を検出したりする際の前処理として二値化が用いられます。
画像から関心のある領域とそれ以外の領域を明確に分離することで、医師による診断を視覚的にサポートするだけでなく、領域の面積や体積を自動計測することも可能になります。
近年では、機械学習を用いた画像診断システムの精度を向上させるための重要なステップとしても位置づけられています。
まとめ
2値化は、画像を白と黒の2色に単純化する画像処理の基本技術であり、データ量の削減や特徴抽出の容易化といったメリットがあります。
しきい値の決定方法には、モード法や大津の二値化、適応的二値化など様々な手法が存在し、画像の特性に応じて使い分ける必要があります。
PythonのOpenCVライブラリを使えばこれらの処理を簡単に実装でき、OCRや外観検査、医療画像解析など幅広い分野で活用されています。
最近では無料の画像編集アプリで画像の線画抽出などに使われることもありますが、より複雑な処理では3値以上の情報を持つ多値化といった技術も存在します。

西進商事コラム編集部
西進商事コラム編集部です。専門商社かつメーカーとしての長い歴史を持ち、精密装置やレーザー加工の最前線を発信。分析標準物質の活用も含め、さまざまなコラム発信をします。

FMEAのやり方を7つの手順で解説!初心者向けの作成方法と具体例

CO2レーザーとは?原理・特徴・用途をわかりやすく解説!

PLCとは?シーケンサとは?わかりやすくどんな装置か基礎知識を徹底解説!
