【问题标题】:image processing(blur effect) in androidandroid中的图像处理(模糊效果)
【发布时间】:2012-10-23 23:49:53
【问题描述】:

我正在android中进行图像处理,例如模糊效果和图像上的圆圈。

我的目标是在特定点及其周围模糊图像。我可以使用 Gaussian Blur 和 ConvolutionMatrix 对整个图像进行模糊效果。

public static Bitmap applyGaussianBlur(Bitmap src) {

    double[][] GaussianBlurConfig = new double[][] { { 1, 2, 1 }, { 2, 4, 2 }, { 1, 2, 1 } };
    ConvolutionMatrix convMatrix = new ConvolutionMatrix(3);
    convMatrix.applyConfig(GaussianBlurConfig);
    convMatrix.Factor = 16;
    convMatrix.Offset = 0;
    return ConvolutionMatrix.computeConvolution3x3(src, convMatrix);
}

谁能告诉我在图像中的特定点做模糊效果的想法?

【问题讨论】:

  • 你想要一个单一的模糊区域,比如this picture,只有人的脸是模糊的吗?还是你想要相反的,面部是唯一清晰的区域?
  • 正是比尔先生,就像每个人在显示屏上击中的那个地方都需要模糊。感谢您的快速回复。

标签: android image-processing


【解决方案1】:

其实我只是回答了类似的问题。

Try doing the inverse of this.

我认为您想要做的是创建原始图像的两个副本。一个是清晰的,一个是模糊的(使用你想要的任何过滤器)。然后,对于您想要模糊的区域中的所有像素,将它们的值从模糊图像复制到清晰图像。

单独对所有像素进行模糊拟合可能会浪费您的时间。除非您尝试做一些花哨的事情(如链接中的),否则只做一次并将其用作一种查找表。

但是,由于您是在移动设备上执行此操作,因此您可能需要进行一些特殊的内存管理。在这种情况下,获取原始图像的裁剪版本(尺寸略大于模糊区域)并仅模糊该子图像。然后跟踪子图像中的哪些像素对应于原始图像中的哪些像素,并将这些值复制过来,或者对您的项目有用。

【讨论】:

  • 谢谢比尔,我理解该链接上给出的逻辑。问题是我需要为用户提供连续选项,让他可以在触摸屏幕的任何地方进行模糊处理。如果我继续您的建议,应用程序会变慢并且可能会发生崩溃。有没有像在图像上绘画以达到模糊效果的东西?
  • 只对原始图像进行一次模糊处理(对于每个新的模糊方法和半径实例)。所以我们在内存中有一些模糊的图像。现在,每次用户触摸原始图像上的某个区域时,该区域都会更新为相应的模糊图像值。这与您可能对用户触摸的像素更新为特定颜色的绘图程序所做的相同。唯一的区别是颜色由模糊图像中相应像素的值定义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-01
  • 2012-09-28
  • 1970-01-01
  • 2017-06-30
  • 2015-07-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多