我试图编写一个通过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函数?