Medientechnik. Übung 4 Java Bildbearbeitung - Teil 1

Ähnliche Dokumente
Medientechnik. Übung Java-Bildbearbeitung

Medientechnik. Übung 5 Java Bildbearbeitung - Teil 2

Medientechnik. Übung 2 Java Swing

Medientechnik. Übung 3 MVC & Observer

Medientechnik Sommersemester 2016

Medientechnik. Übung 6 Videotechnik/-Analyse

Einführung in die Programmierung mit Java

Datenbanksysteme 2 Fachbereich Angewandte Informatik WS 11/12 Dipl.-Inf. Christian Pape. 6. Übung

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Java Einführung Exception Handling. Kapitel 17

Kurzanleitung RMI-Beispiel: gettime Seite 1 / 7. RMI Projekt gettime 1

Exceptions - Klausuraufgaben

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Tipps und Hinweise zum Bezug der Beitragssatzdatei V5.0

Arten von Streams. Daten. Bytes (8-Bits) Java Programm. Daten. Java Programm. Characters (16 - Bits)

Ausnahmen. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Lösungshinweise/-vorschläge zum Übungsblatt 11: Software-Entwicklung 1 (WS 2017/18)

Konstruktoren, Packages und Scopes

Ausnahmen. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

B3. Digitale Bildbearbeitung mit Java

Maschinenlernen mit XML-Daten. und Weka

Programmieren in Java

Dokumentenstrukturen

Problemstellung. Object1:Klasse1. Object2:Klasse2 att1: Klasse1 att2: 9. att1: att2: 17. Klasse1 att1 att2 Klasse2 att1 att2

Ausnahmen. Dr. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Handbuch konsultieren!

Ausnahmebehandlung. Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren. Ausnahmen abfangen. Ausnahmen definieren

Ausnahmen. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

boolean ispalindrome = word.equalsignorecase(reverse.tostring());

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Application Frameworks and Componentware Wintersemester 2002/03. Komponentenbasierte Programmierung in Java

Exceptions und Zugriffsmodifikatoren

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Ausnahmen

Kapitel 12: Ausnahmen und Ausnahmebehandlung

Programmierung für Mathematik (HS13)

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer

Programmierung für Mathematik HS10

JUnit 4 Tutorial. Wolfgang Stöttinger

Programmiertechnik Ausnahmen

Ausnahmen. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Medientechnik Sommersemester 2016

Images. Kommen auf zweierlei Weise zur Anwendung. Darstellung von Pixelbildern(.jpg,.gif,.png) Bilden die Grundlage für Offscreendrawing

Programmieren I. Fehlerbehandlung Exceptions. Heusch 2. Bd, 3 Ratz 10. Institut für Angewandte Informatik

Java - Programmierung - Prozedurale Programmierung 1

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben

Versuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore.

Distributed Computing Group

Eingabe und Ausgabe in Java. Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. Juni 2004

TCP/IP Programmierung. C# TimeServer Java6 TimeClient

Java Fehlerbehandlung

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Übung zur Vorlesung Programmierung

7.1.5 Java RMI Remote Method Invocation ( (

Java-Einführungskurs Informatik II für D-ITET, FS 2013, ETH Zürich. Simon Mayer

Schritt 4: Hallo Enterprise Bean

Java-Einführungskurs Informatik II für D-ITET FS 2014, ETH Zürich

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2016/17. Vorbereitende Aufgaben

Kapitel 4: Klassen und Unterklassen

Programmierung für Mathematik HS10 Übung 8

Programmieren-Tutorium Nr. 10 bei Martin Thoma

Java II - Übungsgruppe

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

7 Praktische Aspekte (Wie mache ich...)

Ausnahmen. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik

Software Engineering II

12. Java Klassen. Klassen - Technisch. Beispiel: Erdbebendaten. Klassen - Konzeptuell

Übungen zur Vorlesung Softwaretechnologie - Wintersemester 2018/19 - Dr. Günter Kniesel. Übungsblatt 10 Lösungen

Programmiermethodik. Übung 10

Einführung in die Programmierung I. 1.0 EBNF 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Ausnahmebehandlung PK11W-16,

Übung Informatik I - Programmierung - Blatt 6

Informatik II Aufgabenblatt 6

Komponententechnologien Winter 2016/17. Komponenten. 2. Die Anfänge. Peter Sturm, Universität Trier 1

Einstieg in die Informatik mit Java

Übungsstunde 9. Einführung in die Programmierung

Übungsstunde 9. Einführung in die Programmierung I

MEC: Objektorient. Programmierung - Prüfung

Liste Programmieren Java Überblick

Programmieren in Java

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen

6. Digitale Bildverarbeitung

Kurzanleitung Eclipse

Multimedia im Netz Wintersemester 2012/13

JDBC. Java DataBase Connectivity

Informatik II. Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rossmannek, David Sidler, Thilo Weghorn FS 2017

ÜBUNGS-BLOCK 8 AUFGABEN

Einführung OWB Java API

Beispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme

Informatik 1 - Translation Studies in Information Technology. Musterlösung zum Aufgabenblatt der ersten Pflichtübung im Wintersemester 18/19

Info B VL 14: Java Collections/Reflections

Properties und Proxies

7. Java Fehler und Ausnahmen

Prozeduren vs. Funktionen

Programmierung für Mathematik HS11

Transkript:

Medientechnik Übung 4 Java Bildbearbeitung - Teil 1

Planung Nr Zeitraum Thema 1 20.04. 25.04. Bildretusche mit Gimp 2 27.04. 01.05. GUI Programmierung 3 04.05. 08.05. Model-View Controller 4 18.05. 22.05. Bildfilter Teil 1 5 26.05. 29.05. Video & Film Theorie Bildfilter Teil 2 6 01.06. 03.06. Audio-Aufnahme und Bearbeitung Video & Film Theorie 7 08.06. 11.06 Audio-Aufnahme und Bearbeitung LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 2

Java2D Bildbearbeitung Teil 1: Bilder laden Konvolution Filter von JH Labs Teil 2 (nächste Woche): Eigene Filter LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 3

Bilddateien per Code laden Einlesen von Bilddateien umfasst komplexe Algorithmen Decodieren des Bildformats Einlesen lokal aus Datei oder über eine URL Berücksichtigung von langsamen Festplattenund Netzzugriffen Observer-Modell: Anzeigefunktion wird wieder aufgerufen, wenn Daten nachgeladen sind LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 4

Bilder laden mit Java Java: Diverse Möglichkeiten zum Laden eines Bildes (Image) Standard-AWT-Methode (MediaTracker) Swing-Methode (ImageIcon) Laden eines BufferedImage: ImageIO Spezielle Codecs (Sun-JPEG-Codec meist in Standardinstallation enthalten) LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 5

BufferedImage laden Alternative 1 public BufferedImage loadimage(string filename) throws IOException{ return ImageIO.read(new File(filename)); } Alternative 2 import com.sun.image.codec.jpeg.jpegcodec; import com.sun.image.codec.jpeg.jpegimagedecoder; import sun.awt.image.imageformatexception; [ ] public BufferedImage loadimage(string filename) throws IOException, ImageFormatException { InputStream in = new FileInputStream(filename); JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(in); BufferedImage img = decoder.decodeasbufferedimage(); in.close(); return img; } LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 6

Fehlermeldung bei Sun imports aufgrund einer Eclipse-Einstellung werden teilweise Fehler ( Access restriction ) bei Verwendung der Sun Pakete angezeigt Lösung: Window Preferences Java Compiler Errors/Warnings Deprecated and restricted API auf Warning oder Ignore stellen LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 7

Java - Bildfilter LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 8

Konvolution Idee: Farbwert eines Pixels und umliegender Pixel wird kombiniert Die Kombination wird mit einer sog. Kernel Operation gemacht Matrix Berechnung Konvolution = Faltung Kernel = Faltungsmatrix LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 9

Konvolution: Allgemeines Beispiel https://developer.apple.com/library/ios/documentation/performance/conceptual/vimage/convolutionoperations/convolutionoperations.html LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 10

Kernel 1 0 0 0 1 0 0 0 1 LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 11

Identitäts-Kernel 4 12 0 0 1 0 0 0 45 0 1 0 0 1 0 = 1 Achtung: Identitäts-Kernel ist keine Identitätsmatrix! LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 12

Kantenerkennung Edge detection kernel (Beispiel): 1 1 1 1 8 1 1 1 1 Quelle: Michael Plotke, https://en.wikipedia.org/wiki/kernel_(image_processing) LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 13

Kantenerkennung Rechenbeispiel: 1 1 1 1 8 1 1 1 1 1 10 1 1 10 1 1 10 1 1 1 + 1 10 + 1 1 + 1 1 + 8 10 + 1 1 + 1 1 + 1 10 + 1 1 = 54 LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 14

Weitere Kernel Schärfen 0 1 0 1 5 1 0 1 0 Gaussscher Weichzeichner 1 1 2 1 2 4 2 16 1 2 1 Quelle: Michael Plotke, https://en.wikipedia.org/wiki/kernel_(image_processing) LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 15

Konvolution in der Praxis LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 16

Konvolution: Probleme Wie gehen wir mit dem Bildrand um? Ignorieren / Unverändert lassen Erweitern (Pixel wiederholen) Pixel von der gegenüberliegenden Seite verwenden. Bild zuschneiden Werte außerhalb des Farbraums? Normalisieren LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 17

Konvolution in Java ausführen Hilfsklasse für ConvolveOp (Konvultionsfilter in Java) 1. Werte Array anlegen: float[] values = { 1/9f, 1/9f, 1/9f, 1/9f, 1/9f, 1/9f, 1/9f, 1/9f, 1/9f }; 2. Kernel konstruieren mit Breite, Höhe und Werte Array: Kernel kernel = new Kernel(3,3,values); ConvolveOp cop= new ConvolveOp(kernel); 3. Filter anwenden: ConvolveOp convolutionfilter= new ConvolveOp(kernel); convolutionfilter.filter( sourceimage, destinationimage); LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 18

Material / Tutorials http://www.javaworld.com/article/2076764/javase/image-processing-with-java-2d.html http://www.tutorialspoint.com/java_dip/index.htm http://www.jhlabs.com/ip/blurring.html LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 19

Weitere Filter Beispiel JH Labs Color Adjustment Filters Distortion and Warping Filters Effects Filters Texturing Filters Blurring and Sharpening Filters Edge Detection Transitions Alpha Channel Filters Quelle: http://www.jhlabs.com/ip/filters/index.html LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 20

JHLabs Filter einbinden Filter.jar herunterladen http://www.jhlabs.com/ip/f ilters/download.html In Projekt einbinden neuer Ordner lib, jar reinkopieren Project Properties Java Build Path Add External Jar Filter aussuchen und verwenden LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 21

Filter verwenden Übersicht: http://www.jhlabs.com/ip/filters/index.html import com.jhlabs.image.solarizefilter; import javax.imageio.imageio; import java.awt.image.bufferedimage; import java.io.file; import java.io.ioexception; public class UseJHLabsFilterMain { public static void main(string[] args){ String filename = "test.jpg"; try { BufferedImage destimage = ImageIO.read(new File(filename)); BufferedImage tempimage = new BufferedImage( destimage.getcolormodel(), destimage.getraster(), destimage.getcolormodel().isalphapremultiplied(), null ); SolarizeFilter solarizefilter = new SolarizeFilter(); solarizefilter.filter(tempimage,destimage); } catch (IOException e) { e.printstacktrace(); } } } LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 22

Übungsblatt 3 Bildfilter Funktionalität implementieren Bildverarbeitung (Theorie) LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 23

Wrap-up Quiz 1. Was ist ein BufferedImage und warum wird es benötigt? 2. Woher kommt der Begriff Kernel? 3. Was bedeutet Konvolution auf Deutsch? 4. Was ist der Identitäts-Kernel? 5. Wie sieht ein Kernel aus, mit dem man ein Bild weichzeichnen kann? 6. Kann man per Konvolution Bilder in Schwarz-Weiß umwandeln? 7. Wie heißt die Klasse in Java, mit der die Konvolution durchgeführt wird? LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 24

Vielen Dank! WELCHE FRAGEN GIBT ES? LMU München - LFE Medieninformatik - Medientechnik Sommersemester 2015 25