image-processing - 试图理解高斯模糊在 matlab 中的实现

标签 image-processing distribution matlab gaussian

我试图将扫描的文本文档模糊到文本行模糊成黑色的程度。我的意思是文本相互混合,我看到的都是黑色线条。

我是 MATLAB 的新手,即使我了解基础知识,我也无法正确地对图像进行模糊处理。我读过这个:Gaussian Blurr并且据此,模糊由 sigma 函数管理/决定。但这不是我编写的代码的工作方式。

在尝试在 Matlab 中学习高斯模糊时,我发现它是通过使用以下函数实现的:fspecial('gaussian',hsize,sigma);

显然有两个变量 hsize 指定函数中的行数或列数,而 sigma 是标准差。

有人可以在这里解释一下 hsize 的重要性以及为什么它对结果的影响比 sigma 更深吗?

为什么即使我将 sigma 增加到一个非常高的值,模糊也不会受到影响,但通过增加 hsize 图像会扭曲很多

这是我的代码:

img = imread('c:\new.jpg');

h = fspecial('gaussian',hsize,sigma);

out = imfilter(img,h);

imshow(out);

并附上结果:

为什么它不仅受sigma控制? hsize 起什么作用?为什么我不能让它只模糊文本而不是扭曲整个图像?

谢谢

enter image description here enter image description here enter image description here

最佳答案

hsize 是指过滤器的大小。具体来说,一个过滤器是 Nx x Ny 像素使用大小为 Nx x Ny 的像素区域,以每个像素为中心 计算滤波器响应时的像素。 react 就是这样 该区域中的像素组合在一起。在一个情况下 高斯滤波器,中心像素周围每个像素的强度为 在对该区域执行框平均之前根据高斯函数加权。 sigma 是指高斯的标准偏差(参见 documentation 对于 fspecial) 以像素为单位。随着您增加 sigma(保持 过滤器的大小相同)最终你接近一个具有统一权重的简单框平均值 在中心像素周围的过滤区域上方,因此您不会看到增加 sigma 的效果。

用高斯模糊(具有大的 sigma 值)和框获得的结果之间的相似性 平均值显示在下面的左侧和中间图像中。右图显示 侵 eclipse 图像的结果,这可能是你想要的。

enter image description here

代码:

% gaussian filter:
hsize = 5;
sigma = 10;
h = fspecial('gaussian',hsize,sigma);
out = imfilter(img,h);

% box filter:
h = fspecial('average',hsize);
out = imfilter(img,h);

% erode:
se=strel('ball',4,4); 
out = imerode(img,se);

关于image-processing - 试图理解高斯模糊在 matlab 中的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18106636/

相关文章:

python - 将 Matlab (Octave) 组着色代码翻译成 python (numpy, pyplot)

在 MATLAB 中将项目分类到容器中

ios - 如何创建实时图像效果处理应用程序iOS

c++ - 获取在opencv中聚集在一起的多个关闭行的单行表示

javascript - Fabric JS clipPath : how to fit the image to the canvas after cropping?

random - 根据分布生成随机数

c - 平衡工作负载分配?

java - matlab细化算法java实现

python - 如何从卡住的 spicy.stats 分布中获取参数参数?

algorithm - 邻居数KNN算法