Obtendo a área ocupada por uma determinada cor na tela - iOS

Estou tentando fazer algo parecido com o que é perguntadoessa questão, mas eu realmente não entendo a resposta dada a essa pergunta e não tenho certeza se é o que eu preciso.

O que eu preciso é simples, embora eu não tenha certeza se é fácil. Eu quero calcular o número de pixels na tela que são uma determinada cor. Eu entendo que cada "pixel" que vemos é na verdade uma combinação de pixels de cores diferentes que parecem ser, digamos, verdes. Então, o que eu preciso é quereal cor, aquela que o usuário vê.

Por exemplo, se eu criei um UIView, defina a cor de fundo para[UIColor greenColor], e definir suas dimensões para metade da área da tela (podemos supor que a barra de status está oculta para simplificar e que estamos em um iPhone), eu esperaria que este 'método mágico' retornasse 240 * 160 ou 38.400 - metade da área da tela.

Eu não espero que ninguém escreva esse 'método mágico', mas eu gostaria de saber

a) Se isso for possível

b) Se sim, se for feito quase em tempo real

c) Se sim, por onde começar. Ouvi dizer que isso pode ser feito com o OpenGL, mas não tenho experiência nessa área.

Aqui está a minha solução, graças a Radif Sharafullin:

int pixelsFromImage(UIImage *inImage) {
    CGSize s = inImage.size;
    const int width = s.width;
    const int height = s.height;
    unsigned char* pixelData = malloc(width * height);

    int pixels = 0;

    CGContextRef context = CGBitmapContextCreate(pixelData,
                                                  width,            
                                                  height,            
                                                  8,           
                                                  width,            
                                                  NULL,            
                                                  kCGImageAlphaOnly);

    CGContextClearRect(context, CGRectMake(0, 0, width, height));

    CGContextDrawImage(context, CGRectMake(0, 0, width, height), inImage.CGImage );

    CGContextRelease(context);

    for(int idx = 0; idx < width * height; ++idx) {
        if(pixelData[idx]) {
            ++pixels;
        }
    }

    free(pixelData);

    return pixels;
}

questionAnswers(2)

yourAnswerToTheQuestion