Calcule el histograma con OpenMP

Quiero paralelizar este código obteniendo el mejor rendimiento. El "histograma" almacena el número de apariencias de un determinado color (hay 10 colores diferentes, por lo que el tamaño del histograma es 10). "img" es una matriz que almacena cierta información de imagen. En cada índice de img se almacena un color (valor int, rango 0..9). Este es el código:

for( i=0; i<N1; i++ ){
  for( j=0; j<N2; j++ ){
    histogram[ img[i][j] ]  = histogram[ img[i][j] ] + 1;
  }
}

Intenté esto pero el rendimiento es tan malo (peor que la ejecución en serie):

#pragma omp parallel for schedule(static, N1/nthreads) private(i,j)
for(i=0; i<N1; i++){
  for(j=0; j<N2; j++)
  {
    #pragma omp atomic
    histogram[img[i][j]]++;
  }
}

¿Alguna sugerencia? Gracias.

Respuestas a la pregunta(3)

Su respuesta a la pregunta