Java DIP - GrayScale Dönüşümü

Renkli bir görüntüyü Gri Tonlamalı görüntüye dönüştürmek için, görüntünün piksellerini veya verilerini okumanız gerekir. File ve ImageIO nesneler ve görüntüyü BufferedImagenesne. Söz dizimi aşağıda verilmiştir -

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

Ayrıca, yöntemi kullanarak piksel değerini alın getRGB()ve üzerinde GrayScale () yöntemini uygulayın. GetRGB () yöntemi, parametre olarak satır ve sütun dizinini alır.

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);

Bu üç yöntemin dışında, Color sınıfında kısaca açıklandığı gibi başka yöntemler de vardır -

Sr.No. Yöntem ve Açıklama
1

brighter()

Bu Rengin daha parlak bir versiyonu olan yeni bir Renk yaratır.

2

darker()

Bu Rengin daha koyu bir versiyonu olan yeni bir Renk yaratır.

3

getAlpha()

0-255 aralığında alfa bileşenini döndürür.

4

getHSBColor(float h, float s, float b)

HSB renk modeli için belirtilen değerlere dayalı olarak bir Color nesnesi oluşturur.

5

HSBtoRGB(float hue, float saturation, float brightness)

HSB modeli tarafından belirtildiği gibi bir rengin bileşenlerini varsayılan RGB modeli için eşdeğer bir değer kümesine dönüştürür.

6

toString()

Bu Rengin bir dize gösterimini döndürür.

Son adım, tüm bu üç değeri eklemek ve tekrar karşılık gelen piksel değerine ayarlamaktır. Söz dizimi aşağıda verilmiştir -

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

Misal

Aşağıdaki örnek, bir görüntüyü Gri Tonlamaya dönüştüren Java BufferedImage sınıfının kullanımını gösterir -

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();
   }
}

Çıktı

Verilen örneği çalıştırdığınızda, görüntüyü dönüştürür digital_image_processing.jpg eşdeğer Gri Tonlamalı görüntüsüne ve sabit diske şu adla yazın: grayscale.jpg.

Gerçek görüntü

Gri Tonlamalı Görüntü