java - 是否有一个函数可以对两个缓冲图像的光栅求和?

标签 java matrix sum bufferedimage raster

我正在进行 2D 过滤,并希望在灰度 BufferedImages 上逐个元素添加。是否有现有的功能可以为我完成此任务,或者我需要从头开始制作一个功能吗?

是否有某种矩阵类可以将栅格转换为矩阵来简化这个问题?

编辑:这是它的一般要点

    BufferedImageOp opX = new ConvolveOp(new Kernel(3,3, kernelX));
    BufferedImageOp opY = new ConvolveOp(new Kernel(3,3, kernelY));
    BufferedImage filtImageX = opX.filter(sourceImage, null);
    BufferedImage filtImageY = opY.filter(sourceImage, null);
    BufferedImage outputImage = addBufferedImages(filtImageX, filtImageY);

灰度转换:

public void toGrayscale() { 
     BufferedImageOp op = new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY), null); 
     sourceImage = op.filter(sourceImage, null); 
}

最佳答案

我不熟悉任何可以为您执行此操作的 Java 库。

您可以通过以下方式获取 [i,j] 处的像素:image.getRGB(i, j);

BufferedImage image = ...;
BufferedImage resultImage = ...

int rgb= image.getRGB(i, j);
resultImage.setRGB(i, j, rgb);

您还可以将缓冲图像转换为字节数组 [ https://stackoverflow.com/a/7388025/1007845 ].
请参阅此线程:how to convert image to byte array in java?获取 WritableRaster

编辑:

看起来 WritableRaster 在这种情况下可能有用:http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/image/WritableRaster.html

WritableRaster raster = image.getRaster();

for(int h=0;h<height;h++) {
    for(int w=0;w<width;w++) {
        int colour = 127;
      raster.setSample(w,h,0,colour); 
   }
}

关于java - 是否有一个函数可以对两个缓冲图像的光栅求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9670001/

相关文章:

r - 如何对 data.frame 列值求和?

java - 无法让 DrawImage 在 Java 中工作

java - 从 JPanel 返回信息

java - 无法使用 jdbc 通过 phoenix 连接到 HBase。错误 NONODE,代码 101

java - java中的php strtr等价物

python - 将 numpy 3 维矩阵切片为 2 维矩阵

javascript - jScript - 如何 "mirror"矩阵(多维数组)

python - 在python中存储大型对称稀疏矩阵的最有效方法

MySQL SUM() 带有 MIN() 的子查询

MySQL:连接三个表,比较两个值