Может ли кто-нибудь сказать мне быструю функцию для поиска размытия изображения по Гауссу с использованием маски 5x5. Мне это нужно для разработки приложений для iOS. Я работаю непосредственно с памятью изображения, определенного как
unsigned char *image_sqr_Baseaaddr = (unsigned char *) malloc(noOfPixels);
for (row = 2; row < H-2; row++)
{
for (col = 2; col < W-2; col++)
{
newPixel = 0;
for (rowOffset=-2; rowOffset<=2; rowOffset++)
{
for (colOffset=-2; colOffset<=2; colOffset++)
{
rowTotal = row + rowOffset;
colTotal = col + colOffset;
iOffset = (unsigned long)(rowTotal*W + colTotal);
newPixel += (*(imgData + iOffset)) * gaussianMask[2 + rowOffset][2 + colOffset];
}
}
i = (unsigned long)(row*W + col);
*(imgData + i) = newPixel / 159;
}
}
Это, очевидно, самая медленная функция из возможных. Я слышал, что встроенные функции ARM Neon на iOS можно использовать для выполнения нескольких операций за 1 цикл. Может быть, это путь?
Проблема в том, что я не очень хорошо знаком с ассемблером и у меня нет времени на изучение ассемблера. Так что было бы здорово, если бы кто-нибудь мог опубликовать встроенный код Neon для упомянутой выше проблемы или любой другой быстрой реализации на C/C++.