カラー画像をどのように二値化しますか?


14

私の友人は中国語の手書きの色付きの画像を持っています(基本的には彼が白い紙に書いたものを写真に撮ったりスキャンしたりして)ので、白黒のバイナリイメージに変換してほしいです。Ubuntuでそれを実現できるアプリケーションはありますか?

画像の例を次に示します。

ここに画像の説明を入力してください


回答:


27

必要なものは、画像処理では「しきい値」と呼ばれます。基本的に、入力として画像を取得し、黒に設定された特定のしきい値未満の値を持つすべてのピクセルと、白に設定されたしきい値を超えるすべてのピクセルを持つ画像を出力します。これにより、任意の入力画像から白黒画像が得られます。

一般に、より予測可能な結果を​​得るために、最初にグレースケールに変換する必要がありますが、フルカラーイメージのしきい値を設定することもできます。

GIMPなどのグラフィカルツールを使用してこれをインタラクティブに行うことができます(メインメニュー->色->しきい値からツールを見つけることができます)、またはImageMagickを次のように使用できます。

convert colored.png -threshold 75% thres_colored.png

サンプル画像で上記のコマンドを実行すると、次の結果が生成されます。

OPの画像の白黒バージョン

多くの場合、しきい値処理は満足のいく結果を得るための試行錯誤のプロセスであるため、特にソースイメージが既に白黒にあまり近くない場合は、可能であればGUIアプローチをお勧めしますが、これは、何らかの理由でコマンドラインからも実行できるオプションではありません。出力をより細かく制御するには、まずカラーカーブ、レベル、コントラストなどのツールを使用して、しきい値処理する前に画像の明るい部分と暗い部分をより適切に分離します。(実際には、しきい値はカラーカーブツールを使用する極端なケースと見なすことができます。)


2
ありがとう!カラー画像にはRBG 3つのチャネルがあるため、一般的にしきい値は何に適用できますか?
ティム14年

@Timそれはおそらくソフトウェアに依存しますが、しきい値は(チャンネルごとまたは特定のチャンネルについて指定しない限り、例えばImageMagickの変換-channelオプションを参照)ピクセルの何らかの「値」に適用され、計算されますすべてのチャンネルから。これが、より予測可能な結果を​​得るために、最初にグレースケールに変換したいと言った理由です。(私の編集も参照してください。)
CVn 14年

ありがとう!あなたの投稿に示されているコマンドでしきい値が適用されるものについてのドキュメントはありますか?
ティム14年

@Timそうではありません。変換は、最大値の割合(チャネルあたり256である必要があります)または特定の値のいずれかを取ると予想していましたが、割合を指定した場合にのみ有用な結果が得られました。GIMPなどのグラフィカルツールを使用すると、通常、画像の色調分布を示すヒストグラムが表示されます。それは適切な値を選択する際の大きな助けになります。あなたがそうする特定の理由がない限り、唯一のコマンドラインを使用して、あるおそらく本当に、それの価値よりも多くのトラブル。
CVn 14年

2
補足として、ハードコーディングされたしきい値レベルに依存する必要のない他のしきい値設定方法があります。たとえば、ImageMagickには-lat、周囲のピクセルを考慮して、ローカル適応しきい値を実行するものが含まれます。
voithos

7

Imagemagickを使用できます:

convert test.png -colorspace Gray gray_colorspace.png

ここから。

あなたの画像に適用した後に私が得たものは次のとおりです。

ここに画像の説明を入力してください


10
「Binary」は「bi」から「2」を意味するため、OPが画像を純粋な白黒に変換したいと考えています。グレースケールに変換すると、2つ以上のレベルが得られます。
CVn 14年

同意した!理にかなっています、+ 1。
mkc 14年

2

ImageMagickの -monochromeは、スマートディザリングを使用するオプションであり、出力-thresholdを人間が使用する場合よりもはるかに見やすくします。

convert -monochrome signature.png out.png

ここに画像の説明を入力してください

このような単純なイメージでは大きな違いはありませんが、大きなイメージでは印象的です。


1

netpbmツールキットを使用してこれを簡単に行うこともできます。

anytopnm inputfile | ppmtopgm | pgmtopbm > outputfile

ppmtopgmグレースケール画像にpgmtopbm変換し、白黒画像に変換してから、出力をファイルにリダイレクトします。pbm形式になります。より一般的なものが必要な場合は、出力コンバーター(pnmtopngまたは、そのようなもの)を追加する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.