Referenztypen Teil 2

Ähnliche Dokumente
Virtuelle Lehrerweiterbildung Informatik in Niedersachsen

Datenbanken unter J++ - Teil 2

Einführung in die Informatik - Teil 6a -

Created by Michael Kirsch & Beat Rossmy

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

import java.applet.applet; import java.awt.*; public class Grow extends Applet { public void start() { setbackground(color.orange); } public void

3.8 Objekttypen und Arrays. Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen.

Vorkurs Informatik WiSe 16/17

Einstieg in die Informatik mit Java

Aufgabenblatt 4. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt:

Einführung in die Informatik - Teil 4b - Zeichnen mit der Maus im JBuilder

Städtisches Gymnasium Olpe Java Ht Informatik - Q1 Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode

Objekttypen. Referenzen, Objekte, Gleichheit, Wrapper, Arrays, mehr-dimensionale Arrays, Bildbearbeitung, krumme Arrays

3. Aufgabe: Bitmap-Datei

Vorkurs Informatik WiSe 17/18

Informatik II. Woche 15, Giuseppe Accaputo

Beispiel zum Schaltungsentwurf mithilfe endlicher Automaten Ein Zähler modulo 3 mit Reset

Arbeitsblatt 6: Programmierung geometrischer Figuren

JAVA für Nichtinformatiker - Probeklausur -

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Probeklausur Informatik 2 Sommersemester 2013

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

Beispiel zum Schaltungsentwurf mithilfe endlicher Automaten Ein Zähler modulo 3 mit Reset

import JavaKaraProgram; public class Quadrat extends JavaKaraProgram { // Anfang von Quadrat void turnaround() { kara.turnleft(); kara.

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu!

Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java

public class SternchenRechteckGefuellt {

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

10. Felder (Arrays) Teil 2. Java-Beispiele: Echo.java Primzahlen.java Monate.java. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

Man kann bei der Deklaration einen Wert der Variablen angeben oder später den Wert zuweisen. Beide Befehlsfolgen leisten dasselbe:

Bru ckenkurs Programmieren

Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang. WS 07/08

Programmiertechnik Klassen

Felder. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Reihungen. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang

1. Laboraufgabe. Grafische Nutzerschnittstellen. Studiengang I / IEA / SAT

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

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

PR1-MB, SS10 Seite 1 Nachklausur, geschrieben am Do

Einstieg in die Informatik mit Java

Einführung in die Informatik - Teil XIX Kellerautomaten

Kapitel 10 Mampfi im Labyrinth

Objektorientierte Programmierung

Algorithmen und Datenstrukturen Sommersemester Übung Abgabe bis , 10:00 Uhr

Einführung in die Informatik - Teil 5 -

Einführung in die Programmierung für NF. Arrays

Die Menue-Struktur. Vitaloop. Die meisten Menue-Punkte sind selbsterklärend. Datei

Greenfoot: Verzweigungen Nicolas Ruh und Dieter Koch

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Selbststudium OOP1 SW Programmieren 1 - H1103 Felix Rohrer

Informatik II Musterlösung

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 3

Hüllklassen. Gerd Bohlender. 25. Juni Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Programmiertechnik Klassenvariablen & Instantiierung

IT Basics 2 Handout u

Softwareentwicklung II (IB) Enum-Klassen. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Created by Michael Kirsch & Beat Rossmy

Grundlagen der Bildbearbeitung

Java Kurzreferenz Für Fortgeschrittene

Einstieg in die Informatik mit Java

Greenfoot: Verzweigungen

Linux-Camp: Multimedia I

Anweisungen zur Ablaufsteuerung

Programmieren: Bildbearbeitung

Einstieg in die Informatik mit Java

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

A&R TECH C++ Chess Challenge

Übungen zum Bioinformatik-Tutorium. Blatt 3

Gegeben sind die folgenden Programmausschnitte: I. Programmausschnitt: II. Programmausschnitt: III. Programmausschnitt: IV. Programmausschnitt:

Java Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

version 23 photo Stand: Neuste Version: ftp://ftp.cadwork.ch/cadwork.ftp/i386-nt/exe_ing/manuals

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Informatik. Strukturen und Aufzählungstypen. Vorlesung

Anregungen zu Übung 2

Algorithmen, Datenstrukturen und Programmieren I WS 2001/2002

Bru ckenkurs Programmieren

7. Organisation von Informationen

Felder. Inhaltsverzeichnis. M. Jakob. 28. April Begriffsbildung. Verwendung von Feldern. Gymnasium Pegnitz

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

Musterlösung Stand: 5. Februar 2009

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

2015 Sebastian Wahner - Die teilweise oder vollständige Weiterverbreitung dieses Werkes ist ohne Einverständnis des Autors

Felder. M. Jakob. 28. April Gymnasium Pegnitz

Einführung in die Informatik - Teil 3b -

Handbuch V. 6oV Einfach surfen. Einfach klicken. Einfach bloggen.

Tag 8 Repetitorium Informatik (Java)

Einführung in die Programmierung I. 2.4 Felder. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe

GISLUPE. Diese Angaben sind unbedingt einzuhalten, damit später die Informationen auch wieder abgerufen werden können.

Informatik Klasse 7 Arbeitsmaterialien und Übungen

Enum-Klassen. Softwareentwicklung II (IB) Prof. Dr. Oliver Braun Letzte Änderung: :36. Enum-Klassen 1/12

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

Visualiserung des Prinzips von virtuellem Speicher

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

Kapitel

Programmierstarthilfe SS 2010 Fakultät für Ingenieurwissenschaften und Informatik 6. Blatt Für die Woche vom bis zum 4.6.

Einführung in die Informatik I Informatik I/A

Transkript:

Eckart Modrow Referenztypen S. 1 Referenztypen Teil 2 Inhalt: 7. Beispiel: Zugriff auf Pixel bei Anwendungen Bezug: G. Krüger, GotoJava 2 HTML-Version: Kapitel 4.2, 4.4, 4.5 Kapitel 11.3

Eckart Modrow Referenztypen S. 2 7. Beispiel: Zugriff auf Pixel bei Anwendungen Wir wollen den schon bekannten BMP-Bildbetrachter noch etwas erweitern. Er soll mit der Fähigkeit ausgestattet werden, geladene Bilder grob zu rastern, ähnlich wie in Filmen, auf denen ein Gesicht unkenntlich gemacht werden soll. vorher nachher Dazu vereinbaren wir einige Größen, Bitmap bmp; boolean bildgeladen = false; int raster = 10; und laden eine Bitmap-Datei: private void menuitem2_click(object source, Event e) ofd.setfilename ("*.bmp"); ofd.setfilter("bmp-dateien (*.bmp) *.bmp"); int result = ofd.showdialog(); if (result == DialogResult.OK ) String filename = ofd.getfilename(); bmp=new Bitmap(fileName); bild.setimage(bmp); bildgeladen = true; ofd ist eine OpenFileDialog-, bild ist eine PictureBox- Komponente Jetzt müssen die Bildwerte verändert werden. Wir bestimmen dazu die mittleren Rot-, Grünund Blauwerte innerhalb eines Quadrats, dessen Seitenlängen durch die (veränderbare) Variable raster gegeben ist. Danach färben wir diesen Bereich mit einer mittleren Farbe ein.

Eckart Modrow Referenztypen S. 3 private void menuitem3_click(object source, Event e) if (bildgeladen) Graphics g = bmp.getgraphics(); Color c; int w = bmp.getsize().x; int h = bmp.getsize().y; int schrittex = (int)math.floor(w/raster); int schrittey = (int)math.floor(h/raster); int R,G,B; int rq = raster*raster; for (int i=0;i<schrittex;i++) for (int j=0;j<schrittey;j++) R = 0; G = 0; B = 0; for (int ii=0;ii<raster;ii++) for (int jj=0;jj<raster;jj++) if (((raster*i+ii)<w) ((raster*j+jj)<h)) c = g.getpixel(raster*i+ii,raster*j+jj); R = R + c.getred(); G = G + c.getgreen(); B = B + c.getblue(); R = Math.round(R/rq); G = Math.round(G/rq); B = Math.round(B/rq); c = new Color(R,G,B); g.setbrush(new Brush(c)); g.setpen(new Pen(c)); g.drawrect(raster*i,raster*j,raster,raster); bild.setimage(bmp); Grafikkontext des Bildes mit allen Rasterwerten tue... und mitteln geändertes Bild anzeigen Bildgröße bestimmen... RGB-Werte der Bildpunkte im Rechteck berechnen...... Zeichenwerkzeuge pen und brush auf die mittlere Farbe einstellen... Rechteck färben private void edit1_textchanged(object source, Event e) String h = edit1.gettext(); char c; int z,r = 0; boolean fertig = false; for(int i=0;i<h.length();i++) c = h.charat(i); z = (int)c-(int)'0'; if ((z<0) (z>9)) fertig = true; if (!fertig) r = 10*r + z; if(r<1) r = 10; raster = r; edit1.settext(string.valueof(raster)); hier wird bei Änderungen im Textfeld versucht, die neu eingegebene Rasterweite zu bestimmen

Eckart Modrow Referenztypen S. 4 Und noch mal, weil es so schön ist!

Aufgaben: Virtuelle Lehrerweiterbildung Informatik in Niedersachsen Eckart Modrow Referenztypen S. 5 1. Führen Sie eine Möglichkeit ein, die Bildpunkte nur in einem z. B. mit der Maus auszuwählenden Bereich zu rastern. 2. Im Beispielprogramm wird das ursprüngliche Bild durch das gerasterte überschrieben. Ändern Sie das Programm so, dass das Ursprungsbild erhalten bleibt. Die Rasterwerte sollen in ein zweidimensionales Feld geschrieben werden, das bei Bedarf in einem anderen Grafikkontext dargestellt wird. Jetzt können Bilder mehrfach gerastert werden. 3. a: Fotografieren Sie mit einer Digitalkamera Gegenstände, die im Bild als Rechtecke erscheinen. (Sie können die Bilder auch von einem Scanner holen.) Speichern Sie die Bilder als Bitmap-Dateien ab. b: Informieren Sie sich z. B. aus Biologiebüchern über Verfahren, mit denen die ersten Neuronenschichten des Auges Kanten und andere Charakteristika (z. B. Bewegungen) erkennen. Grafikprogramme verfügen oft auch über entsprechende Verfahren. c: Wenden Sie ein Kantenverstärkungsverfahren auf Ihre Rechteckbilder an. Lassen Sie die Koordinaten der gefundenen Rechtecke bestimmen und ausgeben. Dürfen sich Rechtecke überlappen? Sind Kanten immer lückenlos? d: Diskutieren Sie Möglichkeiten, Ihre Verfahren in Echtzeit auf bewegte Bilder anzuwenden, z. B. um einen Roboter zu überwachen oder Fahrzeuge auf einer Strasse zu leiten. 4. a: Bestimmen Sie die mittlere Helligkeit eines Bildes. b: Besorgen Sie sich Aufnahmen der gleichen Szene unter verschiedenen Lichtverhältnissen. Versuchen Sie die Bilder so zu bearbeiten, dass die Unterschiede ausgeglichen werden. c: Suchen Sie verschiedene Aufnahmen der gleichen astronomischen Objekte im Internet. Gleichen Sie die Lichtverhältnisse auf den Aufnahmen einander an (bestimmen Sie also den sky ). Ziehen Sie dann die veränderten Bilder von einander ab. (Im Idealfall sollte das Bild jetzt schwarz sein.) Unterschiede in den Aufnahmen treten jetzt stärker hervor, z. B. Objekte, die ihren Ort verändert haben. Auf diese Art kann man Kandidaten für Supernovae bestimmen.