Java中3个灰度图像到1个彩色图像

Java中3个灰度图像到1个彩色图像,java,image,algorithm,image-processing,colorize,Java,Image,Algorithm,Image Processing,Colorize,我想创建一个Java应用程序,它将获取3个灰度图像(每个代表红色、绿色和蓝色),然后将它们合并/展平/等等。要创建一个彩色图像,我想知道是否有人知道我可能会使用任何现有的算法或方法? 我知道有一个叫做ImageJ的程序,我以前用过,它正是我想要的;选择3个图像,可以从中创建RGB图像。我知道这是在Java中通过使用查找表完成的,这是我以前从未遇到过的,所以我甚至不知道从哪里开始 如果有人对最好的方法有什么想法,现有的算法,我怎样才能自己做,等等,那就太好了。我不寻找任何人来为我编码,只是为了引导

我想创建一个Java应用程序,它将获取3个灰度图像(每个代表红色、绿色和蓝色),然后将它们合并/展平/等等。要创建一个彩色图像,我想知道是否有人知道我可能会使用任何现有的算法或方法? 我知道有一个叫做ImageJ的程序,我以前用过,它正是我想要的;选择3个图像,可以从中创建RGB图像。我知道这是在Java中通过使用查找表完成的,这是我以前从未遇到过的,所以我甚至不知道从哪里开始

如果有人对最好的方法有什么想法,现有的算法,我怎样才能自己做,等等,那就太好了。我不寻找任何人来为我编码,只是为了引导我在正确的方向;我对每个R、G和B灰度图像迭代每个像素的理论可能行不通


感谢您在sRGB色彩空间中提供的帮助,实现这样的方法很容易

考虑以下方法:

private static BufferedImage createColorFromGrayscale(BufferedImage red, BufferedImage green, BufferedImage blue){
    BufferedImage base = new BufferedImage(red.getWidth(), red.getHeight(), BufferedImage.TYPE_INT_ARGB);

    for(int x = 0;x < red.getWidth();x++){
        for(int y = 0; y < red.getHeight(); y++){
            int rgb = (red.getRGB(x, y) & 0x00FF0000) | (green.getRGB(x, y) & 0x0000FF00) | (blue.getRGB(x, y) & 0x000000FF);

            base.setRGB(x, y, (rgb | 0xFF000000));
        }
    }

    return base;
}
private static BufferedImage createColorFromGrayscale(BufferedImage红色、BufferedImage绿色、BufferedImage蓝色){
BuffereImage base=新的BuffereImage(red.getWidth(),red.getHeight(),BuffereImage.TYPE_INT_ARGB);
对于(int x=0;x
创建一个新的基础图像时,我们使用按位and和OR创建一个分配给基础图像的格式为ARGB的4字节整数颜色,从而创建一个颜色组件。通过for循环迭代整个图像,我们能够将生成的基础图像的每个像素分别设置为每个通道的颜色

此方法假定所有三个图像的大小相等。如果图像大小不相等,则必须单独处理(例如,通过在输入前拉伸图像或修改方法以接受不同大小的图像)


附言:在处理大型图像时,直接使用一个BuffereImage实例作为基础图像以节省内存可能更有效…

我会尝试一下并找出答案。为此,我以不同的方式实现了类似的功能,以便我能够读取所选图像的每个像素的值。我猜我需要复制这两张图片,然后以某种方式将三张图片组合在一起?@user2517280是的。。。只需确保将每个图像中的每个通道指定给结果图像中的相应通道即可。