Java-dip-grayscale-conversion

提供:Dev Guides
移動先:案内検索

Java DIP-グレースケール変換

カラー画像をグレースケール画像に変換するには、 File および ImageIO オブジェクトを使用して画像のピクセルまたはデータを読み取り、 BufferedImage オブジェクトに画像を保存する必要があります。 その構文は以下のとおりです-

File input = new File("digital_image_processing.jpg");
BufferedImage image = ImageIO.read(input);

さらに、メソッド* getRGB()*を使用してピクセル値を取得し、GrayScale()メソッドを実行します。 メソッドgetRGB()は、パラメーターとして行と列のインデックスを取ります。

Color c = new Color(image.getRGB(j, i));
int red = (c.getRed() *0.299);
int green =(c.getGreen()* 0.587);
int blue = (c.getBlue() *0.114);

これらの3つのメソッドとは別に、簡単に説明するようにColorクラスで利用可能な他のメソッドがあります-

Sr.No. Method & Description
1

brighter()

この色のより明るいバージョンである新しい色を作成します。

2

darker()

この色の暗いバージョンである新しい色を作成します。

3

getAlpha()

0〜255の範囲のアルファ成分を返します。

4

getHSBColor(float h, float s, float b)

HSBカラーモデルの指定値に基づいてColorオブジェクトを作成します。

5

HSBtoRGB(float hue, float saturation, float brightness)

HSBモデルで指定された色のコンポーネントを、デフォルトのRGBモデルの同等の値セットに変換します。

6

toString()

このColorの文字列表現を返します。

最後の手順では、これら3つの値をすべて追加し、対応するピクセル値に再度設定します。 その構文は以下のとおりです-

int sum = red+green+blue;
Color newColor = new Color(sum,sum,sum);
image.setRGB(j,i,newColor.getRGB());

次の例は、画像をグレースケールに変換するJava BufferedImageクラスの使用を示しています-

import java.awt.*;
import java.awt.image.BufferedImage;

import java.io.*;

import javax.imageio.ImageIO;
import javax.swing.JFrame;

public class GrayScale {

   BufferedImage  image;
   int width;
   int height;

   public GrayScale() {

      try {
         File input = new File("digital_image_processing.jpg");
         image = ImageIO.read(input);
         width = image.getWidth();
         height = image.getHeight();

         for(int i=0; i<height; i++) {

            for(int j=0; j<width; j++) {

               Color c = new Color(image.getRGB(j, i));
               int red = (int)(c.getRed() *0.299);
               int green = (int)(c.getGreen()* 0.587);
               int blue = (int)(c.getBlue() *0.114);
               Color newColor = new Color(red+green+blue,

               red+green+blue,red+green+blue);

               image.setRGB(j,i,newColor.getRGB());
            }
         }

         File ouptut = new File("grayscale.jpg");
         ImageIO.write(image, "jpg", ouptut);

      } catch (Exception e) {}
   }

   static public void main(String args[]) throws Exception {
      GrayScale obj = new GrayScale();
   }
}

出力

この例を実行すると、画像 digital_image_processing.jpg が同等のグレースケール画像に変換され、 grayscale.jpg という名前でハードディスクに書き込まれます。

元画像

グレースケール変換チュートリアル

グレースケール画像

Java画像処理チュートリアル