나는 자바로 사진 모자이크를 쓰고 있습니다. 이를 위해 2 개의 이미지 중 RGB를 계산하여 비교하고 대상 이미지를 가장 적합한 타일 이미지로 대체해야합니다. 가장 적절하게 말하자면 정확한 RGB 일치를 찾지 못하면 d
이라는 오류가 허용됩니다.자바에서 2 개의 이미지 중 RGB를 비교하십시오.
내가 RGB를 계산하기 위해 다음 코드를 사용하고 있습니다 :
protected static int calcRGBForEachFile(String filePath) throws IOException {
int RGBTotal = 0;
try{
BufferedImage tile = ImageIO.read(new File(filePath));
tileWidth = tile.getWidth();
tileHeight = tile.getHeight();
for(int i=0; i<tileWidth; i++){
for(int j=0; j<tileHeight; j++){
RGBTotal = getPixelData(tile.getRGB(i,j));
}
}
}
catch(IOException e){
System.out.println(e);
}
return RGBTotal;
}
protected static void getPixelData(int rgb) {
int red = (rgb >> 16) & 0xff;
int green = (rgb >> 8) & 0xff;
int blue = (rgb) & 0xff;
}
는 그것이 무엇을하는가 주어진 경로에서 이미지를 소요, 그 RGB를 계산하고 HashMap
에 저장.
더 나은 결과를 얻으려면 RGB를 계산하여 두 이미지를 비교하는 더 좋은 방법이 있습니까?
편집 : 일부 의견을 기반으로 질문을 편집했습니다.
'total'의 두 값이 완전히 다를 수 있으므로 예를 들어 모든 값을 함께 추가하면 안됩니다. 색상 1 = R : 50G : 50B : 50, 색상 2 = R : 150G : 0B : 0. 완전히 다른 색상입니다. – Kinected
Kinected가 말한 바. 각 샘플/구성 요소를 개별적으로 비교하고 추가하지 않고 합계를 비교해야합니다. – aroth
@Kinected : 저는 이것을 알고 있습니다. 내가 RGB를위한 하나의 값을 얻었고 (쉬운 저장과 비교를 위해서) 3이 아니기 때문에 내가 이것을하는 유일한 이유가있다. 좋은 방법으로 계산하고 비교할 방법을 찾으면 그 문제를 처리 할 것입니다. – Intern