Гауссов фильтр применяется к BMP в C
Я пытаюсь написать код, который фильтрует растровые изображения через гауссовские и некоторые другие фильтры. Я разработал код, который генерирует ядро в зависимости от входных параметров, таких как размер ядра и стандартное отклонение. Я также написал код, который анализирует растровое изображение и помещает его в указатель. Мой вопрос заключается в том, как применить сгенерированную матрицу ядра к указателю или есть какой-то другой способ применить значения ядра Гаусса к этому растровому указателю.
Вот пример моего кода с другим фильтром (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?