Может кто-нибудь сказать мне быструю функцию, чтобы найти гауссово размытие изображения, используя маску 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;
}
}
Это, очевидно, самая медленная из возможных функций.Я слышал, что встроенные в iOS ARM Neon можно использовать для выполнения нескольких операций за 1 цикл.Может быть, это путь?
Проблема в том, что я не очень знаком и мне не хватает времени на изучение ассемблера.Поэтому было бы здорово, если бы кто-нибудь мог опубликовать встроенный код Neon для упомянутой выше проблемы или любую другую быструю реализацию на C / C ++.