Java に組み込まれている畳み込み演算子を使用する代わりに、独自の畳み込み演算子を作成しようとしています。この画像リンクに組み込みの畳み込み演算子を適用しました
組み込みの畳み込み演算子とガウス フィルターを使用して、この画像を取得しました。 リンク
今、コードを使用して同じ画像を実行します
public static int convolve(BufferedImage a,int x,int y){
int red=0,green=0,blue=0;
float[] matrix = {
0.1710991401561097f, 0.2196956447338621f, 0.1710991401561097f,
0.2196956447338621f, 0.28209479177387814f, 0.2196956447338621f,
0.1710991401561097f, 0.2196956447338621f, 0.1710991401561097f,
};
for(int i = x;i<x+3;i++){
for(int j = y;j<y+3;j++){
int color = a.getRGB(i,j);
red += Math.round(((color >> 16) & 0xff)*matrix[(i-x)*3+j-y]);
green += Math.round(((color >> 8) & 0xff)*matrix[(i-x)*3+j-y]);
blue += Math.round(((color >> 0) & 0xff)*matrix[(i-x)*3+j-y]);
}
}
return (a.getRGB(x, y)&0xFF000000) | (red << 16) | (green << 8) | (blue);
}
で、得た結果がこれです。 リンク
また、私が書いたコードを最適化するにはどうすればよいですか。組み込みの畳み込み演算子は 1 ~ 2 秒かかりますが、コードが想定どおりに正確な目的を果たしていない場合でも、5 ~ 7 秒かかります。
アップロード中にソース画像を誤って回転させてしまいました。だから無視してください。