Klasa ImageFilter.java impementuje operację filtrowania obrazu. Po ustaleniu maski filtru i podaniu obrazu wejściowego tworzony jest nowy obraz o identycznych wymiarach, do którego zapisywane są wartości pikseli po przefi-trowaniu.
private float [] [] maska = (...);
public Graylmage fiItrujObraz(GrayImage im){
Graylmage ret = new GrayImage(im.getWidth() , im.getHeightO) ; ret.setNazwa( im.getNazwa());
for (int i=0; i< im.getWidthO; i++) for (int j=0; j<im.getHeight(); j++){ int val = filtrujSąsiedztwo(im, i, j); ret.setPixel(i, j, val);
> // for j
return ret;
} // filtruj Obraz(GI)
private int filtruj Sąsiedztwo(Graylmage im, int x, int y){ float suma = 0;
int m = (maska.length -1 ) /2; int n = (maska[0].length -1 ) /2;
for (int i=-m; i<=+m; i++) for (int j=-n; j<=+n; j++)
suma += im.getPixel(x+i, y+j) * maska[i+m][j+n];
int ret = (int) suma; ret = ret<0 ? 0 : ret; ret = ret>255 ? 255 : ret; return ret;
} //filtrujSasiadztwo(GI, int, int)
Klasa Poltony.java impementuje malowanie obrazów technikami półtonów. Ustalono odgórnie wielkość bloku na 3 x 3. Dla każdego takiego bloku w źródłowym rysunku liczona jest średnia arytmetyczna poziomów szarości pikseli i przyporządkowywany jest odpowiadający blok pikseli (wyłącznie białych i czarnych) do wynikowego obrazu.
public static Graylmage przetwozObraz(Graylmage im){ int x = im.getWidthO + (3 - im.getWidthO 7,3); int y = im.getHeightO + (3 - im.getHeightO 7,3);
Graylmage ret = new Graylmage(x, y);
14