2

Javaでフォトモザイクを書いています。このためには、2 つの画像の RGB を計算して比較し、ターゲット画像を最も適切なタイル画像に置き換える必要があります。最も適切とは、正確な RGB 一致が見つからない場合、エラーdが許容されることを意味します。

次のコードを使用して 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 を計算し、2 つの画像を比較してより良い結果を得る方法はありますか?

編集:いくつかのコメントに基づいて質問を編集しました。

4

1 に答える 1

3

人間の知覚に応じて (大まかに) どのように異なるかという点で画像を比較する最良の方法の 1 つは、SSIMです。

また、各ピクセルの R、G、および B の値を比較してみてください。もう少し手間をかければ、人間の目の感度に基づいて各色に重みを付けることができます (たとえば、Von Kries の方法を参照してください)。画像が非常に近く、同じサイズでない場合、これは期待どおりに機能しません。

私は、保存形式の推奨プログラム (PNG と JPG) であるImageGuideを作成しました。その (オープンな) ソースには、その目的のために機能する単純な画像比較アルゴリズムが含まれています。始めるのに役立つかもしれません。

于 2012-10-08T00:34:32.783 に答える