3

编辑:我对盒式过滤器的描述非常错误(盒式过滤器中的所有权重都应该相同),但提供的答案确实解决了图片中的问题。即不确保权重之和等于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();
     }
}

原来的 第二

4

1 回答 1

3

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

于 2012-09-17T01:24:59.220 回答