Hallo Gemeinschaft,
Also, heut möchte ich aus einem selbst gewähltem Bild(Farbbild) von einer beliebigen Festplatte Bild die RGB Farbwerte auslesen. D.h. zur Standardausgabe soll ein Array zu sehen sein, wo folgendes (grob dargestellt) abzulesen sein soll:
0 1 2 3 4 5 6 -> 256 (Farbwert)(das soll nicht im Array auftauchen, dient nur zum VErständnis)
3 0 7 9 6 4 7 -> wie oft der Farbwert im Bild vorgekommen ist, ist nachher dann wichtig für ein Histogramm(eine Schleife durchläuft alle Pixel)
Also das habe ich bisher:
Ausgabe der äiusseren Schleife:
271342:158:156:159
271343:158:156:159
271344:160:158:161
271345:162:160:163
271346:163:161:164
271347:164:162:165
271348:176:162:179
271349:174:164:175
271350:200:156:207
271351:197:174:200
271352:164:176:162
271353:132:149:130 usw
Ausgabe der inneren Schleife:
[618549284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
ja hier sollten eigentlich die zusammengerechneten Werte stehen, aber ... da weiss ich leider nicht mehr weiter bzw. ein Gedankenanstoss von euch ??!!
Allgemein möchte ich im Anschluss in einem Histogramm die Helligkeit des (Farb)Bildes ausgeben. Ob ich das Bild das noch in ein Grauwertbild wandeln muss, ist noch nicht geklärt.
Also, heut möchte ich aus einem selbst gewähltem Bild(Farbbild) von einer beliebigen Festplatte Bild die RGB Farbwerte auslesen. D.h. zur Standardausgabe soll ein Array zu sehen sein, wo folgendes (grob dargestellt) abzulesen sein soll:
0 1 2 3 4 5 6 -> 256 (Farbwert)(das soll nicht im Array auftauchen, dient nur zum VErständnis)
3 0 7 9 6 4 7 -> wie oft der Farbwert im Bild vorgekommen ist, ist nachher dann wichtig für ein Histogramm(eine Schleife durchläuft alle Pixel)
Also das habe ich bisher:
Java:
package Uebung1;
import ij.IJ;
import ij.ImagePlus;
import ij.plugin.PlugIn;
import ij.process.ImageProcessor;
public class Histo2 implements PlugIn {
private final ImagePlus imp;
public static void main( final String args[] ) {
IJ.open( "" );
final Histo2 histo2 = new Histo2( IJ.getImage() );
histo2.run( "" );
}
public Histo2( final ImagePlus imp ) {
if( imp == null ) {
throw new IllegalArgumentException( "The parameter 'imp' must not be null!" );
}
this.imp = imp;
}
@Override
public void run( final String arg ) {
final ImageProcessor ipOld = imp.getProcessor();
final ImageProcessor ipold = imp.getProcessor();
final byte[] Pic = new byte[ipold.getPixelCount()];
final int[] PicPix = (int[]) ipOld.getPixels();
final int[] h = new int[256];
for( int i = 0; i < PicPix.length; ++i ) {
int r = (PicPix[ i ] & 0x00ff0000) >> 16;
int g = (PicPix[ i ] & 0x0000ff00) >> 8;
int b = PicPix[ i ] & 0x000000ff;
for (int j = 0; j<Pic.length; ++j){
h[Pic[j]]++;
}
//System.out.println(java.util.Arrays.toString(h));
System.out.println(i + ":" + r + ":" + g + ":" + b);
//hier bekomme ich Pixel + rWert + gWert + bWert
}
System.out.println(java.util.Arrays.toString(h));
//hier bekommen ich nur [0,0,0,0,0,0 -> 256]
//newImage.show();
}
}
Ausgabe der äiusseren Schleife:
271342:158:156:159
271343:158:156:159
271344:160:158:161
271345:162:160:163
271346:163:161:164
271347:164:162:165
271348:176:162:179
271349:174:164:175
271350:200:156:207
271351:197:174:200
271352:164:176:162
271353:132:149:130 usw
Ausgabe der inneren Schleife:
[618549284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
ja hier sollten eigentlich die zusammengerechneten Werte stehen, aber ... da weiss ich leider nicht mehr weiter bzw. ein Gedankenanstoss von euch ??!!
Allgemein möchte ich im Anschluss in einem Histogramm die Helligkeit des (Farb)Bildes ausgeben. Ob ich das Bild das noch in ein Grauwertbild wandeln muss, ist noch nicht geklärt.
Zuletzt bearbeitet: