Image konvertieren in monochrom scharz/weiß

Status
Nicht offen für weitere Antworten.

okin

Mitglied
Hallo Zusammen,

ich möchte Farb TIF´s und/oder JPG´s in monochrome schwarz/weiß Bilder konvertieren.

Mittels JAI habe ich es geschafft Images in Graustufenbilder zu wandeln.
Das hilft mir leider nicht, dar über die Images anschließend eine nachgelagerte OCR-Erkennung laufen soll, und diese schwarz/weiß Images voraussetzt.

Hier der Code, mit dem ich erfolgreich das Graustufenimage erzeugen konnte.
Vielleicht lässt sich hier drauf aufbauen.


Code:
import java.awt.color.ColorSpace;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.io.File;

import javax.imageio.ImageIO;

public class GrayScaleConversionExample {

    public static void main(String[] args) throws Exception {
        BufferedImage src = ImageIO.read(new File("C:\\temp\\7a8b282a.jpg"));
        BufferedImage dest = new BufferedImage(src.getWidth(), src.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
        ColorConvertOp grayScaleConversionOp = new ColorConvertOp(ColorSpace
                .getInstance(ColorSpace.CS_GRAY), null);
        
        grayScaleConversionOp.filter(src, dest);
        ImageIO.write(dest, "jpeg", new File("C:\\temp\\7a8b282a_grau.jpg"));

    }

}

Ein verzweifelter Newbie ;-)
 

AlArenal

Top Contributor
Schwellwert festlegen und alles was dunkler ist schwarz machen und was heller ist weiß.

P.S.:
Sind die Bilder 3D ;)
 

okin

Mitglied
OK, aber wie realisiere ich das?

Ein Beispiel würde mir bestimmt helfen.
Den Schwellwert kann ich anschießend selbst austesten.

Bei den Images selbst handelt es sich um ganz normale 2D Images, welche zuvor mit einen Flachbettscanner gescannt worden sind.

Sorry, aber mir fehlt da jeglicher Ansatz, wie ich das umsetzen kann.
 

okin

Mitglied
Ich habe nun doch eine Lösung gefunden, um ein TIFF-Image in monochrom umzuwandeln.

Jedoch hat sich für mich auch gleich ein weiteres Problem aufgetan.

Doch zuerst mal der Code, mit dem es funktioniert:


Code:
import java.awt.image.renderable.ParameterBlock;
import java.io.IOException;
import javax.media.jai.JAI;
import javax.media.jai.RenderedOp;
import com.sun.media.jai.codec.FileSeekableStream;
import com.sun.media.jai.codec.TIFFEncodeParam;
import javax.media.jai.PlanarImage;
import javax.media.jai.Histogram;

public class JAISampleProgram16 {

		public static void main(String[] args) throws IOException {
		
			String outputFile = "C:\\temp\\finalash.tif"; 
		
		
			/*
			* Create an input stream from the specified file name
			* to be used with the file decoding operator.
			*/
			FileSeekableStream stream = null;
			try {
				stream = new FileSeekableStream( "C:\\temp\\7a8b282a.jpg" );	
			} catch (IOException e) {
				e.printStackTrace();
			}
			
			/* Create an operator to decode the image file. */
			RenderedOp sourceImg = JAI.create("stream", stream);
			
			// Create a ParameterBlock and specify the source and
			
			/* Get the width and height of image2. */
			int w = sourceImg.getWidth();
			int h = sourceImg.getHeight();
			System.out.println(w +"*"+h);
						
			// typical weights for converting RGB to Grayscale
			// gray = 0.3*red + 0.59*green + 0.11*blue
			double[][] matrix = {{ 0.3D, 0.59D, 0.11D, 0D }};
			ParameterBlock pb = new ParameterBlock();
			pb.addSource(sourceImg);	
			pb.add(matrix);
			PlanarImage src = JAI.create("BandCombine", pb, null);
			
			// Generate a histogram.
			Histogram histogram = (Histogram)JAI.create("histogram", src).getProperty("histogram");
			
			// Get a threshold equal to the median.
			double[] threshold = histogram.getPTileThreshold(0.5);
			
			// Binarize the image.
			PlanarImage dst = JAI.create("binarize", src, new Double(threshold[0]));
			RenderedOp im = JAI.create("format", dst);
			
			TIFFEncodeParam param = new TIFFEncodeParam();
			param.setCompression(TIFFEncodeParam.COMPRESSION_GROUP4);
			
			try {
				//JAI.create("filestore", im, outputFile, "BMP", null);
				//JAI.create("filestore", im, outputFile, "jpeg", null);
				JAI.create("filestore", im, outputFile, "tiff", param);
			}catch(Exception e){
				System.out.println("Error:"+e);
			}//try catch ends
		
		}//main ends
}//class ends


Klappt prima, solange ich keine MultiPage-Tiffs verwende.
Hat jemand eine Idee, wie Multipage-Tiffs verwendet werden?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Image in BufferedImage konvertieren Spiele- und Multimedia-Programmierung 2
T Position eines Image verändern mithilfe eines Timers Spiele- und Multimedia-Programmierung 6
K Video: Per Image Information Spiele- und Multimedia-Programmierung 3
M Image unpainten Spiele- und Multimedia-Programmierung 3
B Bild ohne Image auf die Festplatte streamen Spiele- und Multimedia-Programmierung 4
X Android Slick AE Image Pfad Spiele- und Multimedia-Programmierung 3
A Drehen von einem Image Spiele- und Multimedia-Programmierung 4
C Mouseover Area genau wie Image Spiele- und Multimedia-Programmierung 8
L Slick-Image aus byte-array erzeugen Spiele- und Multimedia-Programmierung 2
0 2D Spiel Welt scrollen bzw Image erweitern Spiele- und Multimedia-Programmierung 2
T jME3: awt.Image <-> jME3.Image Spiele- und Multimedia-Programmierung 7
F nur Ausschnitt eines Image zeichnen Spiele- und Multimedia-Programmierung 9
F Hintergrund bei Image entfernen Spiele- und Multimedia-Programmierung 4
S Image-Einbindung Spiele- und Multimedia-Programmierung 5
StrikeTom .gif animation als image abspielen Spiele- und Multimedia-Programmierung 2
T Glüh effekt um Image Spiele- und Multimedia-Programmierung 9
radiac Aktuelles ScreenBild als Image? Spiele- und Multimedia-Programmierung 6
Stillmatic1985 Buffered Image drucken Spiele- und Multimedia-Programmierung 1
P Culling von Image-Objekten Spiele- und Multimedia-Programmierung 3
E Alternative zu import com.sun.image.codec.jpeg.JPEGCodec ? Spiele- und Multimedia-Programmierung 1
E JPCT background image Spiele- und Multimedia-Programmierung 3
P Grosses Bufferd Image Drucken Print API Spiele- und Multimedia-Programmierung 3
G Image drucken Spiele- und Multimedia-Programmierung 17
S Image will nicht laden Spiele- und Multimedia-Programmierung 3
O Image dynamisch erstellen. Spiele- und Multimedia-Programmierung 6
G Punkt in Image auf Transparenz prüfen Spiele- und Multimedia-Programmierung 6
G Bereich im Image löschen Spiele- und Multimedia-Programmierung 4
H image.setRGB() zeichnet falsch Spiele- und Multimedia-Programmierung 3
R Transparente Farbe von (Buffered) Image Spiele- und Multimedia-Programmierung 10
D Welcher Image Typ am besten für 2D-Spiele geeignet? Spiele- und Multimedia-Programmierung 5
F Image eines bestimmten Bereichs eines JPanels erstellen Spiele- und Multimedia-Programmierung 4
T Spiel als Vollbild starten mit Image als HIntergrund Spiele- und Multimedia-Programmierung 8
O transparente farbe in Image mit Graphics Spiele- und Multimedia-Programmierung 8
S Image to BufferedImage Spiele- und Multimedia-Programmierung 3
D Image.getGraphics() in einem Frame Spiele- und Multimedia-Programmierung 4
coolian opengl von scale in breite und höhe konvertieren Spiele- und Multimedia-Programmierung 23
G Paintsurface ins Bild konvertieren Spiele- und Multimedia-Programmierung 8

Ähnliche Java Themen

Neue Themen


Oben