JavaDIP-グレースケール変換
カラー画像をグレースケール画像に変換するには、を使用して画像のピクセルまたはデータを読み取る必要があります。 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クラスで使用できる他のメソッドがあります。
シニア番号 | 方法と説明 |
---|---|
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() この色の文字列表現を返します。 |
最後のステップは、これら3つの値をすべて追加し、対応するピクセル値に再度設定することです。その構文を以下に示します-
int sum = red+green+blue;
Color newColor = new Color(sum,sum,sum);
image.setRGB(j,i,newColor.getRGB());
例
次の例は、画像をグレースケールに変換するJavaBufferedImageクラスの使用法を示しています。
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。