Tay*_*lor 2 java processing image gaussian
我想创建一种使用3x3高斯内核模糊24位图像的方法.
我得到了以下的东西.
3x3高斯内核:
A是原始图像,B是结果图像.
B(i,j) =
1/16 * A(i-1,j-1) +1/8 * A(i,j-1) +1/16 * A(i+1,j-1) +1/8 * A(i-1,j) +1/4 * A(i,j) +1/8 *A(i+1,j) +1/16 * A(i-1,j+1) +1/8 * A(i,j+1) +1/16 * A(i+1,j+1)
Run Code Online (Sandbox Code Playgroud)
方法:
public static BufferedImage gaussianBlur(Image img)
Run Code Online (Sandbox Code Playgroud)
其中img是输入图像的参考变量.
返回值是结果图像的对象的地址.
我应该将图像分成9个部分来实现这个方法吗?
her*_*tao 10
您无需将其分为9个部分.至少,我认为没有充分理由这样做.
但是在这个过程中你最好小心,记得将图像数据复制到某个地方并始终使用这些数据来计算新图像,避免使用新的图像数据来计算新图像.
另外,我不明白为什么你需要编写自己的函数来高斯模糊图像.这可以很容易地完成如下:
float[] matrix = {
1/16f, 1/8f, 1/16f,
1/8f, 1/4f, 1/8f,
1/16f, 1/8f, 1/16f,
};
BufferedImageOp op = new ConvolveOp( new Kernel(3, 3, matrix) );
blurredImage = op.filter(sourceImage, destImage);
Run Code Online (Sandbox Code Playgroud)