Mosher
2010-11-19, 16:29:12
Tach.
Wollte schon mal vorarbeiten und unsere neue Programmieraufgabe lösen. Es geht dabei um Bildbearbeitung.
Ich soll über ein Bild, das ich bereits in Graustufen transformiert habe, eine Maske laufen lassen
public int[][] wendeMaskeAn (int[][] grau, int[][] maske, int hoehe, int breite) {
int [][] pixelKante = new int[hoehe][breite];
int farbsumme =0;
int farbe=0;
for(int i=1;i<hoehe-1;i++) {
for(int j=1;j<breite-1;j++) {
for(int iM=0;iM<3;iM++) {
for (int jM=0;jM<3;jM++) {
farbsumme = farbsumme+((grau[i-1+iM][j-1+jM])*maske[iM][jM])&255;
}
}
farbe = farbsumme/16;
pixelKante[i][j] = farbe;
}
}
return pixelKante;
}
Ich fange quasi, da es eine 3X3-Matrix ist beim Pixel (1|1) an und höre bei (Höhe-1|Breite-1) auf.
Das wird durch die beiden äußeren for-schleifen erreicht werden.
die beiden inneren sollen jetzt dem Pixel, den ich gerade betrachte, den Mittelwert aller umgebenden Farbwerte der umgebenden Pixel multipliziert mit der jeweiligen Position in der 3x3 Matrix, zuweisen.
in einer zweiten Methode, die schon funktionstüchtig ist, werden aus den Grauwerten wieder RGB-Werte gemacht und dann das Bild gezeichnet.
Laut Angabe soll ich den Filter {{1,1,1},{0,0,0},{-1,-1,-1}} verwenden, also einen Kantenfilter.
Leider erhalte ich immer ein fast schwarzes Bild mit einigen Schlieren darin.
Kann mir jmd. helfen?
zur Erklärung der Methode: grau[][] soll das 2D-Array der Pixel eines Graustufenbildes sein, maske[][] die 3x3-Maske, höhe und breite halt höhe und breite des bildes ^^
Wollte schon mal vorarbeiten und unsere neue Programmieraufgabe lösen. Es geht dabei um Bildbearbeitung.
Ich soll über ein Bild, das ich bereits in Graustufen transformiert habe, eine Maske laufen lassen
public int[][] wendeMaskeAn (int[][] grau, int[][] maske, int hoehe, int breite) {
int [][] pixelKante = new int[hoehe][breite];
int farbsumme =0;
int farbe=0;
for(int i=1;i<hoehe-1;i++) {
for(int j=1;j<breite-1;j++) {
for(int iM=0;iM<3;iM++) {
for (int jM=0;jM<3;jM++) {
farbsumme = farbsumme+((grau[i-1+iM][j-1+jM])*maske[iM][jM])&255;
}
}
farbe = farbsumme/16;
pixelKante[i][j] = farbe;
}
}
return pixelKante;
}
Ich fange quasi, da es eine 3X3-Matrix ist beim Pixel (1|1) an und höre bei (Höhe-1|Breite-1) auf.
Das wird durch die beiden äußeren for-schleifen erreicht werden.
die beiden inneren sollen jetzt dem Pixel, den ich gerade betrachte, den Mittelwert aller umgebenden Farbwerte der umgebenden Pixel multipliziert mit der jeweiligen Position in der 3x3 Matrix, zuweisen.
in einer zweiten Methode, die schon funktionstüchtig ist, werden aus den Grauwerten wieder RGB-Werte gemacht und dann das Bild gezeichnet.
Laut Angabe soll ich den Filter {{1,1,1},{0,0,0},{-1,-1,-1}} verwenden, also einen Kantenfilter.
Leider erhalte ich immer ein fast schwarzes Bild mit einigen Schlieren darin.
Kann mir jmd. helfen?
zur Erklärung der Methode: grau[][] soll das 2D-Array der Pixel eines Graustufenbildes sein, maske[][] die 3x3-Maske, höhe und breite halt höhe und breite des bildes ^^