Imagem Comparando e retornando Porcentagem

int DiferentPixels = 0;
Bitmap first = new Bitmap("First.jpg");
Bitmap second = new Bitmap("Second.jpg");
Bitmap container = new Bitmap(first.Width, first.Height);
for (int i = 0; i < first.Width; i++)
{
    for (int j = 0; j < first.Height; j++)
    {
    int r1 = second.GetPixel(i, j).R;
    int g1 = second.GetPixel(i, j).G;
    int b1 = second.GetPixel(i, j).B;

    int r2 = first.GetPixel(i, j).R;
    int g2 = first.GetPixel(i, j).G;
    int b2 = first.GetPixel(i, j).B;

    if (r1 != r2 && g1 != g2 && b1 != b2)
    {
    DiferentPixels++;
    container.SetPixel(i, j, Color.Red);
    }
    else
    container.SetPixel(i, j, first.GetPixel(i, j));
    }
}
int TotalPixels = first.Width * first.Height;
float dierence = (float)((float)DiferentPixels / (float)TotalPixels);
float percentage = dierence * 100;

Com esta parte do código, estou comparando 2 imagens para cada pixel e, sim, funciona. Retorna a porcentagem de diferença, para comparar cada pixel da primeira imagem com o pixel no mesmo índice da segunda imagem. talvez não deva funcionar assim, na comparação, e talvez haja alguns algoritmos melhores que sejam mais rápidos e flexíveis. Então, alguém tem uma idéia de como posso transformar a comparação, devo continuar com isso ou comparar cores de cada pixel ou ....

PS: Se alguém tiver uma solução de como fazer esse código paralelo, eu também o aceitaria! Como expandir isso para 4 Threads, eles seriam mais rápidos em um Quad Core?

questionAnswers(2)

yourAnswerToTheQuestion