Как уже предлагали другие, вы захотите переложить эту работу с ЦП на ГП, чтобы иметь какую-либо приличную производительность обработки на этих мобильных устройствах.
С этой целью у меня естьсоздал инфраструктуру с открытым исходным кодом для iOS под названием GPUImage , которая упрощает такую ускоренную обработку изображений.Для этого требуется поддержка OpenGL ES 2.0, но каждое устройство iOS, проданное за последние пару лет, имеет это (статистика показывает примерно 97% всех устройств iOS в этой области).
Как часть этой платформы,один из начальных фильтров, которые я включил, является пиксельным.Пример приложения SimpleVideoFilter показывает, как это использовать, с ползунком, который контролирует ширину пикселя в обработанном изображении:
Этот фильтр является результатом фрагментного шейдера со следующимКод GLSL:
varying highp vec2 textureCoordinate;
uniform sampler2D inputImageTexture;
uniform highp fractionalWidthOfPixel;
void main()
{
highp vec2 sampleDivisor = vec2(fractionalWidthOfPixel);
highp vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor);
gl_FragColor = texture2D(inputImageTexture, samplePos );
}
В моих тестах такие фильтры на основе GPU работают в 6-24 раза быстрее, чем эквивалентные процедуры обработки изображений и видео на iOS в iOS.Вышеприведенная структура должна быть достаточно простой для включения в приложение, а исходный код можно свободно настраивать по своему усмотрению.