是否有一个函数来总和两个缓冲图像的栅格?
-
12-12-2019 - |
题
我正在进行2d fileting,并希望按元素添加灰度缓冲区的元素。是否有现有功能将为我完成此操作,或者我需要从Scrach中取得一个吗?
是否有一些矩阵类,它将栅格转换为矩阵以简单地删除此问题?
编辑:这是它的一般要点
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 lib。
您可以在[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/1007845A>]。
查看此线程:如何将图像转换为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);
}
}
. 其他提示
我不知道直接做到这一点。
但我可以建议一种略微削弱的方法。首先,拍摄你的两个图像,并将它们与两个频段组合成一个图像。我是如何做到这一点的细节。我怀疑你想要创建一个栅格带有 bandedsamplemodel ,和然后将其他两个图像的内容闪烁到其 databuffer 。虽然它看起来你应该能够创建一个双银行数据库,它使用源图像'(一银行)Databuffers的阵列作为银行,这将避免复制。
一旦您有一个双频图像,只需应用 bandcombineop 哪个频带。您需要将求和作为矩阵表示,但这不应该很难。如果您想重新归类结果,我认为它将是[1.0,1.0],或[0.5,0.5]。
不隶属于 StackOverflow