• ベストアンサー

白黒の二値画像

今、java言語で、JPEG形式の画像を白黒の二値画像に変換させるプログラムを考えているのですが、ピクセルの色の取得法がよく分からず、変換できません。 どのようにしたら、白黒の二値画像になるのか、簡単なプログラムを教えてもらえませんか?

noname#38655
noname#38655
  • Java
  • 回答数3
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
noname#49664
noname#49664
回答No.3

要するに、あるイメージを白黒2階調に変換したイメージを作りたい、ということと考えればいいんでしょうか? 方法はいろいろ考えられますが、まぁフィルターを使うのが一番手っ取り早いでしょう。 イメージをBufferedImageとして用意し、ByteLookupTableを作成、それをもとにLookupOpを作ってフィルター処理します。 あらかじめ、0~255の各輝度の階調ごとに変換する値を指定したbyte配列を用意しておきます。これを使って、BufferedImageの輝度をフィルター処理します。 // import java.awt.Image.*; BufferedImage img1; BufferedImage img2; ing w = 500; // イメージのwidth int h = 300; // イメージのheight img = Toolkit.getDafaultToolkit.getImage("hoge.jpg"); try { img1 = new BufferedImage(w,h,BUfferedImage.TYPE_INT_ARGB); img2 = new BufferedImage(w,h,BUfferedImage.TYPE_INT_RGB); Graphics2D g = img1.createGraphics(); g.drawImage(img,0,0,this); // とりあえずthisで g.dispose(); byte[] arr = new byte[256]; // これが変換用のテーブル for(int i = 0;i < 256;i++) arr[i] = (byte)(i < 128 ? 0 : 255); // テーブル準備 ByteLookupTable lt = new ByteLookupTable(0,arr); LookupOp lo = new LookupOp(lt,null); lo.filter(img1,img2); // フィルター処理 } catch ・・・以下略・・・ 例えば、こんな感じで2階調のイメージにフィルター処理されたimg2ができあがります。階調の感じは、byte配列の値をいろいろと調整すればいいでしょう。 BufferedImage,ByteLookupTable,LookupOpについて調べてみるとよいでしょう。

その他の回答 (2)

  • nicewind
  • ベストアンサー率0% (0/1)
回答No.2

 今晩は。  あまり詳しくはないですが、 java.awt.image.SampleModel、 java.awt.image.Raster、 java.awt.image.WritableRaster、 java.awt.image.BufferedImage 等を使うのではないでしょうか。java.awt.image.SampleModel の解説に、色について少し書いてあります。

  • guccii
  • ベストアンサー率31% (14/44)
回答No.1

「Java2 グラフィックプログラミング入門」 中山茂 技報堂出版 ISBN4-7655-3320-4 が値段もお手ごろですし、サンプルも多く、比較的よくまとまっていたと思います。これあたりから手をつけてみてはいかかでしょうか?

関連するQ&A

  • photoshopの白黒画像

    コピーした白黒画像を保存したいのですが、 JPEGだとカラー情報が入ってしまいます。 白黒で保存する場合は、どの形式がいいのでしょうか? よろしくお願い致します。

  • 画像の白黒表示

    Visual C++6.0でjpgなどのカラーの画像を白黒にして 保存したいのですが、どうすればよいでしょうか? 日本語プログラミング言語「なでしこ」でソースを 組んでみたのですが、やはりインタプリタなので 速いとは言えず290x350の画像で30分程度かかってしまいます。 なでしこでは 画像を表示してその表示されている色を取得して RGBの形式にし、それを下のURLを参考に (r*30 + g*59 + b*11)/100しています。 VCでjpgなどを処理するにはどうすればよいでしょうか? http://www.ne.jp/asahi/nagoya/ahomaro/builder/cpb-039.html

  • C++のプログラミング(画像処理)

    VisualC++を使ってJPEG画像をデスクトップなどから読み込み、何か加工して出力するというプログラムを作ろうとしています。 JPEG画像を読み込んで、出力するだけのプログラムをまず作りたいのですが、アドバイスいただけないでしょうか。 今まで使っていたのがJAVAであったためC言語の事があまりよくわかりません。できるだけ簡単な方法があればお願いします。

  • androidアプリ開発における白黒画像の画素取得

    現在アンドロイドでアプリを開発しており、白黒画像を保存して、その白黒画像のそれぞれのピクセルにおけるピクセル値を求めて、全部を足すことを考えていたのですが、調べてもjavaアプレットの情報しか出てこなくて、全くプログラムが進みません。 androidアプリ開発ではこのような事はできないのでしょうか? どなたかアドバイスをお願いします。

  • FortranでJPEG画像を

    FortranでJPEG画像を扱うことは可能でしょうか? 作成したいプログラム内容は以下の通りです。 JPEG画像をグレースケールに変換して、その画像の各ピクセルの階調値を テキストファイルに書き込む。 今は、JPEG画像を一度Photoshopでrawにしてから扱ってます。 ご教示ください。

  • JPEGとBMP

    JPEGで保存してある画像をBMP形式に変換する事というのは可能なのでしょうか? また、JPEG形式の画像を2値化するプログラムをC言語で書くことは可能なのでしょうか? JPEGとBMPの違いがよく分からないので、そのあたりも教えていただけるとありがたいです。 よろしくお願いします。

  • Mac OSX でgifやjpeg等の画像を白黒反転する方法はありますでしょうか?

    OSXを使用しています。写真編集等の知識が無いので、ご教授頂ければ助かります。 jpegやgif形式の白黒の画像の色を反転したいのですが、何か方法、もしくは簡単なフリーウェア等で編集ソフト等ありますでしょうか? どうぞ宜しくお願い致します。

    • ベストアンサー
    • Mac
  • C++の画像処理について【画像のピクセル値を表示する方法】

    画像処理に関する質問です。初歩的なことかもしれませんが、ご教授お願いいたします。 開発環境はVisual C++ 2005です。 JPEGまたはBMP画像を読み込んで、その画像のピクセル値を表示するプログラムを作成したいのですが、まったくどうしてよいか判らず、行き詰っています。 これまでいろいろ試してみたのですが、読み込んだ画像をBit値に変換してしまったり(そのせいでパソコンがクラッシュしてしまいました…)、うまくいきません。 画像処理の対象となる原画像を取り込み、その原画像のピクセルの色情報を表示するためには、どのような処理を行えばよいのでしょうか? どうぞよろしくお願いします。

  • カラーの画像を白黒へ

    使用しているCADソフトが、2色のビットマップイメージしか読み込みません。 カラーの画像を白黒(2色)に変換する方法があれば教えて下さい。 今、変換したいの画像は、ビットマップイメージです。

  • C言語での画像処理:jpeg→pgmへ

    Linux(Fedora core 4)を使っております。 今回C言語で画像処理を行いたいと考え、画像の形式がpgm形式としてのプログラムを組みました。 このプログラムを、実際にデジカメでとった写真について使いたいのですが、デジカメで撮った写真はjpeg形式の為、これをpgm形式に変換したいのですが、これはプログラムを作って行うことはできるのでしょうか。もしくはツールが必要なのでしょうか。ちなみに当方プログラミング初心者でございます。 よろしくお願い致します。