2012-02-28 5 views
0

Как узнать, является ли двоичное изображение, которое я создаю, 0-индексированным или 1-индексированным?Java - двоичный индекс изображения изображения

Я сделал программу, которая читает изображение, создает двоичное изображение и выполняет некоторые другие функции на изображении. Я хотел бы знать, однако, как определить, какие «индексы» имеют значения пикселей в двоичном изображении?

Как это делается?

Есть ли простая встроенная функция (например, image.getRGB();), которую можно назвать, чтобы определить это?

+0

Что такое «бинарное изображение»? какие классы или структуры данных вы используете? –

+0

Двоичные, как в чисто черно-белом изображении, где пиксели либо черные, либо белые. – MusTheDataGuy

+0

Когда вы читаете изображение, как оно хранится? Это должно ответить на ваш вопрос «Есть ли простая встроенная функция (например, image.getRGB() ;, например)». После того, как вы разобрали это, создайте небольшое изображение вручную, установите один из пикселей в черный, а остальные белые, и вы можете очень быстро определить, как настроено индексирование, например. путем печати индексов и значений. – YXD

ответ

2

Я не знаю, что вы имеете в виду с 0- или 1-индексированным, но вот некоторые факты.

BufferedImage является родовым изображения, поэтому пиксели начинаются в координату (0,0)

Если вы хотите массив работать, исходя из этого образа, верхний левый угол будет индексом 0 (если не указано иное)

image.getRGB(0, 0, image.getWidth(), image.getHeight(), array, 0, image.getWidth());

BufferedImage не поддерживает 1 BPP изображения в естественном виде, но либо через Упакованные режиме с ColorModel или палитры 2-индекса. Я не могу сказать, какой из них у вас есть без примеров.

Независимо от внутреннего формата, разные методы getRGB() должны всегда возвращать одно значение на пиксель и один пиксель за значение. Обратите внимание, что значение полного непрозрачности (0xFF000000, -16777216) также будет включено в результаты.

например.

BufferedImage image = new BufferedImage(16, 16, BufferedImage.TYPE_BYTE_BINARY); 

    image.setRGB(0, 0, 0xFFFFFFFF); 
    image.setRGB(1, 0, 0xFF000000); 
    image.setRGB(0, 1, 0xFF000000); 
    image.setRGB(1, 1, 0xFFFFFFFF); 

    System.out.println(image.getRGB(0, 0)); 
    System.out.println(image.getRGB(1, 0)); 
    System.out.println(image.getRGB(0, 1)); 
    System.out.println(image.getRGB(1, 1)); 

    int[] array = image.getRGB(0, 0, image.getWidth(), image.getHeight(), null, 0, image.getWidth()); 
    System.out.println(array[0]); // at (0,0) 
    System.out.println(array[1]); // at (1,0) 
    System.out.println(array[16]); // at (0,1) 
    System.out.println(array[17]); // at (1,1) 
Смежные вопросы