【问题标题】:Image processing - How to Apply Box Filter Smoothing图像处理 - 如何应用 Box Filter Smoothing
【发布时间】:2012-09-09 05:45:36
【问题描述】:

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

【问题讨论】:

    标签: image-processing convolution smoothing cimg imagefilter


    【解决方案1】:

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

    【讨论】:

    • 当我读到这篇文章时感到很愚蠢,当我花了大约十分钟来弄清楚我应该做些什么来解决它时感觉更愚蠢。显然只是将权重相加并将权重除以该总和。
    • @Tim 是的,抱歉,我本来可以在那里提供更多帮助。无需自责,我认为这是一个经常被忽视的点。附言如果有任何权重是&lt;0.0&gt;1.0,那么您也需要添加夹紧。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 2012-01-14
    • 2012-07-30
    • 1970-01-01
    相关资源
    最近更新 更多