web-dev-qa-db-ja.com

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

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

以下は画像の例です。

enter image description here

14
Tim

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

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

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

convert colored.png -threshold 75% thres_colored.png

上記のコマンドをサンプル画像で実行すると、次のような結果になります。

Black-and-white version of OP's image

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

27
a CVn

Imagemagickを使用できます。

convert test.png -colorspace Gray gray_colorspace.png

ここ から。

これがあなたの画像に適用した後に得られたものです:

enter image description here

7
mkc

-monochromeImageMagickからのオプションは、スマートディザリングを使用するオプションであり、意図した場合は、出力が-thresholdよりもはるかに見やすくなります。それを人間の消費のために:

convert -monochrome signature.png out.png

enter image description here

そのような単純な画像ではそれほど大きな違いはありませんが、大きな画像では印象的です。

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

anytopnm inputfile | ppmtopgm | pgmtopbm > outputfile

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

1
Wouter Verhelst