Java DIP - Pixels de imagem

Uma imagem contém uma matriz bidimensional de pixels. Na verdade, é o valor desses pixels que constituem uma imagem. Normalmente, uma imagem pode ser colorida ou em tons de cinza.

Em Java, a classe BufferedImage é usada para lidar com imagens. Você precisa ligargetRGB() método do BufferedImage classe para obter o valor do pixel.

Obtendo valor de pixel

O valor do pixel pode ser recebido usando a seguinte sintaxe -

Color c = new Color(image.getRGB(j, i));

Obtendo Valores RGB

O método getRGB()toma o índice de linha e coluna como parâmetro e retorna o pixel apropriado. No caso de imagem colorida, ele retorna três valores que são (Vermelho, Verde, Azul). Eles podem ser obtidos da seguinte forma -

c.getRed();
c.getGreen();
c.getBlue();

Obtendo largura e altura da imagem

A altura e largura da imagem podem ser obtidas chamando o getWidth() e getHeight()métodos da classe BufferedImage. Sua sintaxe é fornecida abaixo−

int width = image.getWidth();
int height = image.getHeight();

Além desses métodos, existem outros métodos suportados na classe BufferedImage. Eles são descritos resumidamente-

Sr. Não. Método e Descrição
1

copyData(WritableRaster outRaster)

Ele calcula uma região retangular arbitrária de BufferedImage e a copia em um WritableRaster especificado.

2

getColorModel()

Ele retorna ColorModel de uma imagem.

3

getData()

Ele retorna a imagem como um grande bloco.

4

getData(Rectangle rect)

Ele calcula e retorna uma região arbitrária da BufferedImage.

5

getGraphics()

Este método retorna um Graphics2D, mas está aqui para compatibilidade com versões anteriores.

6

getHeight()

Ele retorna a altura do BufferedImage.

7

getMinX()

Ele retorna a coordenada x mínima deste BufferedImage.

8

getMinY()

Ele retorna a coordenada y mínima deste BufferedImage.

9

getRGB(int x, int y)

Ele retorna um pixel inteiro no modelo de cor RGB padrão (TYPE_INT_ARGB) e espaço de cor sRGB padrão.

10

getType()

Ele retorna o tipo de imagem.

Exemplo

O exemplo a seguir demonstra o uso da classe java BufferedImage que exibe pixels de uma imagem de tamanho (100 x 100) -

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

import java.io.*;

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

class Pixel {
   BufferedImage image;
   int width;
   int height;
   
   public Pixel() {
      try {
         File input = new File("blackandwhite.jpg");
         image = ImageIO.read(input);
         width = image.getWidth();
         height = image.getHeight();
         
         int count = 0;
         
         for(int i=0; i<height; i++) {
         
            for(int j=0; j<width; j++) {
            
               count++;
               Color c = new Color(image.getRGB(j, i));
               System.out.println("S.No: " + count + " Red: " + c.getRed() +"  Green: " + c.getGreen() + " Blue: " + c.getBlue());
            }
         }

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

Resultado

Quando você executa o exemplo acima, ele imprime os pixels da imagem a seguir -

Original Image

Pixels Output

Se você rolar para baixo a saída, o seguinte padrão é visto -