我有一個程序,它使用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