高斯滤波器应用于C中的BMP

时间:2016-11-15 11:51:58

标签: c filter bitmap gauss

我试图编写一个通过Gaussian和其他一些过滤器过滤位图的代码。我开发了一个代码,它根据输入参数(如内核大小和标准偏差)生成内核。我还编写了一个解析位图图像并将其放入指针的代码。我的问题是,如何将生成的内核矩阵应用于指针,或者是否有其他方法将高斯内核值应用于此位图指针。

这里的例子是我的代码,它有不同的过滤器(darkenImage),所以你可以看到我的代码样式:

    int darkenImage(unsigned char* iData, int iWidth, int iHeight)
{
    int i;
    int j;
    unsigned char* ptr = iData;

    for (i=0; i<iHeight; i++)
    {
        for (j=0; j<iWidth; j++)
        {
            *ptr = *ptr + darkenFactor;
            ptr++;
            *ptr = *ptr + darkenFactor;
            ptr += 1;
            *(ptr++) = *ptr + darkenFactor;
        }
        ptr+=2;
    }
    return 0;
}

这是主要功能的输入,输出部分

printf("Applying dark image\n");
    bitmapData = LoadBitmapFile("ubuntu.bmp",&bitmapFileHeader, &bitmapInfoHeader);
    darkenImage (bitmapData, bitmapInfoHeader.biWidth, bitmapInfoHeader.biHeight);
    err = SaveBitmapFile("out_darken.bmp", &bitmapFileHeader,
    &bitmapInfoHeader, bitmapData);
    if (err)
    {
        printf("Error trying to save bitmap\n");
    }
    free(bitmapData);

那么,我如何制作GaussFilter函数?

0 个答案:

没有答案