Гауссов фильтр применяется к 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?

0 ответов

Другие вопросы по тегам