prev up inhalt next


4.3 Dithering

Eine n × n -Dithermatrix M ist mit den n 2 Zahlen zwischen 0 und n 2 - 1 besetzt. Zum Färben einer Fläche mit Grauwert k,0 k n 2 werden alle Pixel (i,j) gesetzt mit M[i  mod  n,j  mod  n] < k . Abbildung 4.7 zeigt das Füllmuster zum Schwellwert 7.


Zum Schwellwert 7 gehörender Grauwert

/*************************************************************************************/
/*                   Definition einer Dithermatrix mit Routinen dafuer               */
/*************************************************************************************/

private static final int DITHER_DIM  = 8;       // 8x8-Dithermatrix

private static final int[][] dit_mat =
{       { 0,32, 8,40, 2,34,10,42},              // 64-elementige Dithermatrix:
        {48,16,56,24,50,18,58,26},              // Bei Grauwert k werden alle
        {12,44, 4,36,14,46, 6,38},              // Pixel i,j auf schwarz
        {60,28,52,20,62,30,54,22},              // gesetzt, fuer die gilt:
        { 3,35,11,43, 1,33, 9,41},              // dit_mat[i%8,j%8] < k
        {51,19,59,27,49,17,57,25},
        {15,47, 7,39,13,45, 5,37},
        {63,31,55,23,61,29,53,21} };

boolean kleiner_schwelle(                       // testet die Dither-Matrix
                          Point p )             // bezueglich des Punktes 
{
        int x = p.x; int y = p.y;

        if (x<0) x=DITHER_DIM - (Math.abs(x)%DITHER_DIM);  // falls x negativ
        if (y<0) y=DITHER_DIM - (Math.abs(y)%DITHER_DIM);  // falls y negativ

        return (dit_mat[x%DITHER_DIM][y%DITHER_DIM] < schwelle);
}

int grauwert(                                   // liefert den Grauwert
              int i, int j )                    // an Position i, j
{       
  return(dit_mat[i][j]); 
}
	


prev up inhalt next