我正在尝试编写一个通过高斯和其他一些过滤器过滤位图的代码。我开发了一个代码,它根据内核大小和标准偏差等输入参数生成内核。我还编写了一个解析位图图像并将其放入指针的代码。我的问题是,如何将生成的内核矩阵应用于指针,或者是否有其他方法可以将高斯内核值应用于该位图指针。
这里的示例是我使用不同过滤器(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 函数呢?