我有一个程序,它使用getRed()
,getGreen()
和getBlue()
,它工作正常。我正在寻找是否可以找到一些其他的算法,这些算法也可以为灰度图像着色,不管它或多或少都是准确无误的,它只是用来比较方法和准确性的东西。 我决定使用类似的方法,只需对图像1,2和3使用getRed()
(相对于1),并对每种颜色除以3,理论上实现3幅图像上的平均红色,绿色和蓝色值并从中创建一个新的图像。通过平均组合灰度图像
生成的图像很奇怪;颜色并不均匀,即对于每个像素都是随机的颜色,你几乎可以很容易地发现图像的任何特征,因为它的颗粒感很强,我认为它是描述它的最好方式。它看起来像一张普通的照片,但随处都有彩色噪点。只是想知道是否有人知道为什么会发生这种情况?它不是我的意图,并期待更为正常,与原始方法非常相似,但每种方法可能会更柔和/明亮。
任何人都知道为什么会发生这种情况?它看起来不正确。除了标准getRGB()
之外,还有其他方法可以用来对图像进行着色吗?
BufferedImage combinedImage = new BufferedImage(image1.getWidth(), image1.getHeight(), image1.getType());
for(int x = 0; x < combinedImage.getWidth(); x++)
for(int y = 0; y < combinedImage.getHeight(); y++)
combinedImage.setRGB(x, y, new Color(
new Color((image1.getRGB(x, y) + image2.getRGB(x, y) + image3.getRGB(x, y))/3).getRed(),
new Color((image1.getRGB(x, y) + image2.getRGB(x, y) + image3.getRGB(x, y))/3).getGreen(),
new Color((image1.getRGB(x, y) + image2.getRGB(x, y) + image3.getRGB(x, y))/3).getBlue()).
getRGB());
预先感谢
啊,这是有道理的,谢谢。当我使用你发布的代码时,我得到一个错误,说int不能被解除引用,只能按照以前的方式使它工作,对此有什么想法?感谢您的帮助 – user2517280
我通过编译代码更新了我的答案 – Evans
非常感谢,正如我所说的,我很欣赏它。图像是完全组合的,但是,输出图像只是灰色。我能想到的唯一原因是它不超过255,所以除以3时R,G,B值通常是相同的,导致灰色? – user2517280