Java - 二进制图像像素索引

标签 java image-processing

如何判断我生成的二进制图像是 0 索引还是 1 索引?

我编写了一个程序,可以读取图像,生成二进制图像并对图像执行一些其他功能。但是,我想知道如何判断二值图像中的像素值是哪个“索引”?

这是如何完成的?

是否有一个简单的内置函数(例如 image.getRGB();)可以调用来确定这一点?

最佳答案

我不知道你所说的 0 或 1 索引是什么意思,但这里有一些事实。

BufferedImage 是通用图像,因此像素从坐标 (0,0) 开始

如果您希望使用来自此图像的数组,则左上角将位于索引 0 中(除非另有指定)

image.getRGB(0, 0, image.getWidth(), image.getHeight(), 数组, 0, image.getWidth());

BufferedImage 本身不支持 1 BPP 图像,但可以通过带有 Colormodel 的 Packed 模式或 2-index 调色板。没有例子我无法判断你有哪一个。

无论内部格式如何,不同的 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)

关于Java - 二进制图像像素索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9484953/

相关文章:

java - Dockerfile & 安装 -> Package 'openjdk-8-jre-headless' has no installation candidate

java - 如何使用 JMS 将响应 xml 放入 Activity MQ 响应队列中

python-2.7 - 用于 3D 图像体积的 SSIM

javascript - 网站上的图像裁剪并与水印结合

php - 在php中获取远程图像的图像类型

java - Hibernate Session 更新未反射(reflect)在数据库中

javascript - 动态颜色编码数字

java - 枚举中的内部类在 Java 中总是静态的吗?

c - 基于星/点的图像配准

c++ - OpenCV 或 Boost 智能指针