java - 使用 3x3 高斯核模糊图像?

标签 java image processing gaussian

我想创建一种使用 3x3 高斯内核模糊 24 位图像的方法。

我得到了以下东西。

3x3 高斯核:

/image/YAEQR.png

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)  

方法:

public static BufferedImage gaussianBlur(Image img)

其中 img 是输入图像的引用变量。
返回的值是结果图像的对象的地址。

我应该将图像分成9部分来实现这个方法吗?

最佳答案

您不需要将其分为 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);

关于java - 使用 3x3 高斯核模糊图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20746172/

相关文章:

java - Android开发与hibernate+spring

java - 如何在CVS中分支多个模块maven项目?

java - Grails 应用程序未部署在 tomcat 中

c - 非方形图像的错误结果

javascript - 如何强制 Chrome 停止获取相同的图像?

processing - 改变文本域功能 ControlP5

java - 在我的 REST 网络服务中将正则表达式作为参数传递

c++ - 如何在 Leptonica 中围绕图像 (PIX) 中的矩形创建边框?

glsl - 为什么每次我在 p5js 中调用 glsl 着色器时,我的纹理坐标都会反转?

java - 初学者编码器 : Java (Processing) and Leap Motion Controller Tutorials?