使用非均匀滤镜模糊图像

时间:2014-01-17 01:37:05

标签: matlab image-processing filtering

我是Stackoverflow的新手,这是我的第一个问题,所以请耐心等待我。

我想用非均匀滤镜模糊图像。但是,我还没有完全理解什么是非均匀滤镜我想问一下非均匀滤镜的作用是什么以及如何将其解释在代码方面。 我想在Matlab中实现它。这是我的代码的一个例子。

非统一内核就是那个

init= imread('cameraman.jpg');
initial = rgb2gray(init);
sigma=3;
H_filt = fspecial('gaussian',[5 5], sigma);

或仅限于一个维度?

init= imread('cameraman.jpg');
initial = rgb2gray(init);
sigma=3;
H_filt = fspecial('gaussian',[5 1], sigma);

先谢谢老乡!!

2 个答案:

答案 0 :(得分:1)

通常它们意味着对于每个像素不是恒定的滤波器 - >它在空间上不统一 尝试实现高斯模糊,其标准偏差在每个像素处不同。

快速执行此操作的方法是使用colfilt

如果您需要更多帮助,请与我们联系。

答案 1 :(得分:1)

非均匀模糊内核

非均匀模糊内核是整个图像非常数的内核。

举一些例子:

  • 离焦模糊内核大小取决于相机与场景点之间的距离(通常称为Z)。这种现象可以通过离散形状算法来利用;
  • 静态场景中的移动物体可能会受到运动模糊的影响,而静态部分中显然没有模糊。不同的移动物体确实可以有不同的运动模糊;
  • 相机镜头通常会在其中心相对于边框产生更好(更清晰)的图像。

如何生成非均匀模糊图像

这取决于您的图像有多少个模糊内核,以及您想要模拟的模糊类型。

  • 离焦模糊(相机场景点距离的功能)可以通过光线跟踪软件进行模拟。
  • 如果您想通过后处理(卷积)生成非均匀模糊,那么您需要:
    1. 获取手边像素的模糊内核(i,j):例如sigma_ij = f(i,j)
    2. 通过此模糊内核卷积您的输入图像(清晰,干净的图像):H_ij = fspecial('gaussian', [some large size], sigma_ij])
    3. 将结果写入输出图像:I_final[i,j] = I_blurred_with_Hij[i,j]
    4. 继续下一个像素。

在某些情况下,您可以使用正确的假设(模糊大小限制,图像中只有两个或三个可能的模糊...)来剪切这个贪婪的循环。