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