我试图将扫描的文本文档模糊到文本行模糊成黑色的程度。我的意思是文本相互混合,我看到的都是黑色线条。
我是 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
起什么作用?为什么我不能让它只模糊文本而不是扭曲整个图像?
谢谢
最佳答案
hsize
是指过滤器的大小。具体来说,一个过滤器是 Nx
x Ny 像素使用大小为 Nx x Ny 的像素区域,以每个像素为中心
计算滤波器响应时的像素。 react 就是这样
该区域中的像素组合在一起。在一个情况下
高斯滤波器,中心像素周围每个像素的强度为
在对该区域执行框平均之前根据高斯函数加权。
sigma
是指高斯的标准偏差(参见 documentation
对于 fspecial
) 以像素为单位。随着您增加 sigma
(保持
过滤器的大小相同)最终你接近一个具有统一权重的简单框平均值
在中心像素周围的过滤区域上方,因此您不会看到增加 sigma
的效果。
用高斯模糊(具有大的 sigma 值)和框获得的结果之间的相似性 平均值显示在下面的左侧和中间图像中。右图显示 侵 eclipse 图像的结果,这可能是你想要的。
代码:
% 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/