图像处理 - 盒式滤镜平滑

时间:2012-09-17 00:50:15

标签: image-processing convolution smoothing cimg imagefilter

编辑:我对盒式过滤器的描述非常错误(盒式过滤器中的所有重量应该相同),但提供的答案确实解决了图片中的问题。即不确定权重总和等于1的错误。

我正在参加一个计算机图形学课程,我遇到了一些让平滑盒过滤器工作的问题。对于我的尝试,我使用3x3蒙版并将其与源图像进行卷积。 在我的书中给出的公式给出了离散的1 /(2r + 1)和连续的1 / 2r的权重,其中r是距中心像素的半径。所以我正在做的是分配3x3掩码的每个值,如

b a b
a 1 a
b a b

其中a为1/3,b为1 /((2 * sqrt(2))+1)

然后将其与源图像进行卷积。

我正在使用的特定库是CImg,可在此处找到:http://cimg.sourceforge.net/ 我不妨包括我的源代码和结果。

#include "CImg.h"
#include <cmath>

using namespace cimg_library;
int main() 
{
     CImg<unsigned char> image("zhbackground.bmp"), image2("zhbackground.bmp");
     double a = 1.0/3.0;
     double b = 1.0/((2.0*sqrt(2.0))+1.0);
     CImg<> mask = CImg<>(3,3).fill(b,a,b,a,1,a,b,a,b);
     image2.convolve(mask);
     CImgDisplay main_disp(image,"original"), main_disp2(image2, "second");
     while(1)
     {
        main_disp.wait();main_disp2.wait();
     }
}

original second

1 个答案:

答案 0 :(得分:3)

过滤器重量应总和为1.0。你的没有。