Optical Flow im Browser - beschleunigt mit WebGL
|
|
- Helmuth Schulze
- vor 6 Jahren
- Abrufe
Transkript
1 Optical Flow im Browser - beschleunigt mit WebGL Michael Moese und Marvin Kampf Seminar: Multi-Core Architectures and Programming, SS13
2 Inhalt 1. Optischer Fluss mit der Census-Transformation 2. Parallele Implementierung im Browser mit Hilfe von WebGL 3. Demo 4. Evaluation 5. Quellen und Referenzen
3 Inhalt 1. Optischer Fluss mit der Census-Transformation 2. Parallele Implementierung im Browser mit Hilfe von WebGL 3. Demo 4. Evaluation
4 1 Optischer Fluss mit der Census-Transformation 1. Motivation 2. Schritte des Algorithmus a. Anwendung eines Weichzeichnungsfilters b. Bildsignatur durch Census-Transformation c. Vergleich mit Signatur des vorherigen Durchlaufs
5 1.1 Motivation Was ist der Optische Fluss? Vektorfeld, das Bewegungsrichtung und -Geschwindigkeit für jeden Bildpunkt einer Bildsequenz angibt. Kann verstanden werden als auf Ebene projizierte Geschwindigkeitsvektoren von sichtbaren Objekten (Quelle:
6 Eingabe für den Algorithmus: eine Folge von Bildern
7 Eingabe für den Algorithmus: eine Folge von Bildern
8 1.2.a Weichzeichner Weichzeichnen entspricht Mittelung des Farbwerts eines Pixels mit den gewichteten Farbwerten seiner Umgebung (Tiefpass-Filter): 1/16 1/ * 1/ * 1/8 110* 1/ * 1/8 80 * 1/4 110 * 1/8 80 * 1/16 60 * 1/8 115 * 1/4 1/16 1/8 1/4 1/ /16 1/8 1/ Filter-Koeffizienten Auszug aus Bilddaten Resultierender neuer Farbwert: 114. Berechnung
9 Anwendung eines Weichzeichners
10 1.2.b Generierung der Signaturen: Census-Transformation Die Census-Transformation bildet die Umgebung eines Bildpunktes auf einen binären String ab: Verdeutlicht an einem Beispiel:
11 Generierung der Signaturen: Census-Transformation Erweiterung der Transformation um einen Parameter Epsilon: Dadurch werden nicht nur identische, sondern ähnliche Punkte erfasst:
12 Bildsignatur - Illustration der Census-Transformation
13 1.2.c Der optische Fluss Um den optischen Fluss zwischen zwei Bildern zu bestimmen, wird folgendermaßen verfahren: Signaturberechnung für das 1. Bild Signaturdaten werden für die Bewertung des nächsten Bildes gespeichert Signaturberechnung für das zweite Bild Für jeden Signaturwert wird in den Signaturen des 1. Bildes nach Übereinstimmung gesucht Jedes so gefundene Paar wird als Vektor dargestellt
14 Der optische Fluss - dargestellte Vektoren
15 Inhalt 1. Optischer Fluss mit der Census-Transformation 2. Parallele Implementierung im Browser mit Hilfe von WebGL 3. Demo 4. Evaluation 5. Quellen und Referenzen
16 2. Parallele Implementierung im Browser mit WebGL 1. Native Implementierung in JavaScript 2. Beschleunigung durch WebGL 3. Implementierung der Kernel und Methoden a. b. c. d. e. grayscale() filter() generatesignature() generatevectors() drawvectors()
17 2.1 Native Implementierung im Browser Implementierung des Algorithmus im Browser per JavaScript Input-Stream per JavaScript durch Webcam (Stream-API) navigator.getusermedia({video: true}, handlevideo, videoerror); Dank HTML5 simple Anzeigemöglichkeit in einem Canvas canvas.src = window.url.createobjecturl(stream); Referenz-Implementierung: JavaScript sehr ähnlich zu C++ Jedoch geringe Performance! Beschleunigung mit WebGL
18 2.2 Beschleunigung durch WebGL Was ist WebGL? Shader-basierte 3D-Grafik-Schnittstelle für Webbrowser Auf Basis von OpenGL ES 2.0 Kernel werden in GLSL geschrieben Anzeige durch HTML5-Canvas Was ist GPGL? Wrapper for General Purpose Computing with WebGL API an OpenCL angelehnt Übernimmt Routineaufgaben bei der Initialisierung von WebGL, um General-Purpose-Aufgaben effizient und einfach zu realisieren
19 2.2 Beschleunigung durch WebGL Beispiel für Kernel-Ausführung mit GPGL: 1. Initialisierung von GPGL var gpgl = new GPGL(canvas); 2. Implementierung eines Web-GL-Kernels var kernel = gpgl.createkernel("void main() {... }"); 3. Übergabe eines Arguments an den Shader kernel.setargimage("img_in", gpgl.createimage2d(...)); 4. Ausführen des Kernels mit Rückgabe-Parameter kernel.run(img_out);
20 2.3 Implementierung der Kernel und Methoden a. grayscale() b. filter() c. generatesignature() d. generatevectors()
21 2.3.a grayscale() Konvertierung eines Eingabebildes (RGBA) in Graustufen Herausforderung: Abbildung einer Iteration der for-schleife im Shader Zugriff auf Pixelwert des Bildes Javascript: for (var i = 0; i < d_rgba.length; i += 4) d_gray[i/4] = 0.34 * d_rgba[i] * d_rgba[i + 1] * d_rgba[i + 2]; WebGL-Kernel: vec4 conv = vec4(0.299, 0.587, 0.114, 0.0 );\ float value = dot(texture2d(img_in, global_id_norm), conv);\ gl_fragcolor = vec4(value, value, value, 1.0);\
22 2.3.b filter() Anwendung eines Weichzeichnungsfilters (Herausforderung: Zugriff auf "fremde" Pixelwerte Schrittweite definieren) Javascript: for (var row = 1; row < height -1; ++row) for (var col = 1; col < width - 1; ++col) // row-1... // row c += 2 * data_process[row * c += 4 * data_process[row * c += 2 * data_process[row * // row+1... d_filt[row * width + col] = c/16; 1 { width + (col - 1)]; width + col]; width + (col + 1)]; } WebGL-Kernel: vec2 step = vec2(1.0, 1.0) / global_size;\ vec4 value = texture2d(img_in, global_id_norm - step) +\ dot(vec4(2.0), texture2d(img_in, global_id_norm + vec2(0, step.y))) +\ texture2d(img_in, global_id_norm + vec2(-step.x, step.y)) +\... gl_fragcolor = dot(value,vec4(1.0, 0.0, 0.0, 0.0) ) + vec4(0.0, 0.0, 0.0, 1.0);\
23 2.3.c generatesignature() Erstellen einer Signatur des gefilterten Bildes Herausforderung: Iterationsgrenzen der for-schleifen abbilden Definition einer Subroutine (Funktion) im Kernel-Code (kein Problem!) Javascript: ctn_t32 = function(...) {...}... for (var row = 4; row < height - 4; ++row) for (var col = 4; col < width - 4; ++col) {... c = ctn_t32(d_filt[(row - 4) * width + (col - 4)], z, c); WebGL-Kernel: float ctn_t32(...) {...}\ int width = int(global_size.x), height = int(global_size.y);\ int col = int(global_id_abs.x), row = int(global_id_abs.y);\ if(row < 4 row > height -4 col < 4 col > width - 4) { //return }\... c = ctn_t32(texture2d(img_in, global_id_norm - step4),...);\ }
24 2.3.d generatevectors() Vergleich der vorherigen Signatur mit der aktuellen Herausforderung: 4 verschachtelte for-schleifen abbilden Iterations-Schrittweite (i+=2) abbilden Javascript: for(var row = (WINDOW_SIZE_Y / 2); row < (height - (WINDOW_SIZE_Y / 2)); row += 2) for(var col = (WINDOW_SIZE_X / 2); col < (width - (WINDOW_SIZE_X / 2)); col += 2) for(var row_w = (row - (WINDOW_SIZE_Y / 2)); row_w <= (row + (WINDOW_SIZE_Y / 2)); row_w += 2) for(var col_w = (col - (WINDOW_SIZE_X / 2)); col_w <= (col + (WINDOW_SIZE_X / 2)); col_w += 2) WebGL-Kernel: if(mod(float(col), 2.0)!= mod(float(half_window_size_x), 2.0)... ) { //return }\ for(int i = -half_window_size_y; i <= half_window_size_y; i+=2)\ for(int j = -half_window_size_x; j <= half_window_size_x; j+=2) if(sig_last == sig_curr) { // vector found } if( // vector found ) { // return vector coords }\ {\ }\
25 3. Demo
26 Inhalt 1. Optischer Fluss mit der Census-Transformation 2. Parallele Implementierung im Browser mit Hilfe von WebGL 3. Demo 4. Evaluation 5. Quellen und Referenzen
27 4. Evaluation 1. Optimierung 2. Messdaten 3. Ausblick 4. Zusammenfassung der Ergebnisse
28 4.1 Optimierung Anfangs: folgender Rahmen in jedem Schritt des Optical Flow: var img_in = gpgl.createimage2d(width, height, gpgl.format.ubyte8888, data1); var img_out = gpgl.createimage2d(width, height, gpgl.format.ubyte8888); // Kernel Execution return data2 = img_out.readpixels(); Schlechte Idee! createimage2d(..., data1) und img_out.readpixels() bewegen Daten zwischen Grafikspeicher und Arbeitsspeicher. Device-Host-Transfer sehr teuer! Lösung: Globale Variablen, die 2D-Images zwischen den Schritten referenzieren. Nur finales Auslesen aus dem Grafikspeicher.
29 4.2 Messdaten Mittlere FPS2 Speedup3 JavaScript (nativ) JavaScript + WebGL (vor Optimierung) JavaScript + WebGL (nach Optimierung1) C++ (nicht im Browser) Variante Testsystem: Intel(R) Core(TM) i5 CPU 2.80GHz 3.04 GHz, 8 GB RAM, ATI Radeon HD 6870 mit 1024 MB GDDR5 1) Anzahl an Device-Host-Transfers wurde minimiert. 2) Arithmetisches Mittel nach 30s Anlaufzeit und 60s Messung 3) Speedup nach Formel S = T1 / Tp
30 4.3 Ausblick Weitere Optimierungsmöglichkeit Zwei Bilder innerhalb konfigurierbaren Zeitraums Δt aufnehmen Erst danach Anwendung des Algorithmus auf die beiden Bilder Folgen: Unabhängig der Rechenleistung werden Bewegungen erfasst Je nach Δt entfallen besonders schnelle / langsame Bewegungen Analogie: Tief-/Hochpass-Filter für Frequenzen Exklusive Erfassung von Bewegungen bestimmter Geschwindigkeit
31 4.4 Zusammenfassung der Ergebnisse Optical Flow Algorithmus besteht aus den Schritten: Graustufenkonvertierung Weichzeichnungsfilter Signaturberechnung Signaturvergleich Vektoren WebGL-Herausforderungen: Iterationsraum abbilden Zugriff auf Pixelwerte des übergebenen Bildes Umgang mit RGBA-Vektoren im Kernel Effizienter Umgang mit Device-Host-Transfers Speedup von ca. 21 durch WebGL-Beschleunigung Alternative Herangehensweise: Erst Aufnahme zweier Bilder innerhalb bestimmter Zeit, dann Anwendung des Algorithmus
32 Quellen und Referenzen Oliver Reiche, GPGL, Sascha Roloff, Referenzimplementierung OpticalFlow in C++ Marvin Kampf und Michael Moese, Optical Flow (WebGL), Khronos Group, WebGL, Fridtjof Stein, Efficient Computation of Optical Flow Using the Census Transform, In: Pattern Recognition, 3175, Springer, Berlin/Heidelberg 2004
33 Dankeschön! Michael Moese und Marvin Kampf Seminar: Multi-Core Architectures and Programming, SS13
Programmierbeispiele und Implementierung. Name: Michel Steuwer E-Mail: michel.steuwer@wwu.de
> Programmierbeispiele und Implementierung Name: Michel Steuwer E-Mail: michel.steuwer@wwu.de 2 > Übersicht > Matrix Vektor Multiplikation > Mandelbrotmenge / Apfelmännchen berechnen > Kantendetektion
MehrViola-Jones Gesichtserkennung mit WebGL
Viola-Jones Gesichtserkennung mit WebGL Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg 18. Juli 2013 Outline Motivation Viola-Jones Funktionsweise Blockbewertung
MehrOpenGL. (Open Graphic Library)
OpenGL (Open Graphic Library) Agenda Was ist OpenGL eigentlich? Geschichte Vor- und Nachteile Arbeitsweise glscene OpenGL per Hand Debugging Trend Was ist OpenGL eigentlich? OpenGL ist eine Spezifikation
MehrPraxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern
Praxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern Institut für Betriebssysteme und Rechnerverbund TU Braunschweig 25.10., 26.10.
MehrCUDA. Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Jürgen Pröll 1
CUDA Jürgen Pröll Multi-Core Architectures and Programming Jürgen Pröll 1 Image-Resize: sequentiell resize() mit bilinearer Interpolation leicht zu parallelisieren, da einzelne Punkte voneinander unabhängig
MehrDie Bildbearbeitungssprache Halide
Die Bildbearbeitungssprache Halide Dominik Danner 13.06.2013 Dominik Danner Die Bildbearbeitungssprache Halide 13.06.2013 1 / 30 Inhaltsverzeichnis 1 Einführung Die Domäne der Bildbearbeitung Einführungsbeispiel
MehrGPGPU-Architekturen CUDA Programmiermodell Beispielprogramm. Einführung CUDA. Ralf Seidler. Friedrich-Alexander-Universität Erlangen-Nürnberg
Einführung CUDA Friedrich-Alexander-Universität Erlangen-Nürnberg PrakParRA, 18.11.2010 Outline 1 GPGPU-Architekturen 2 CUDA Programmiermodell 3 Beispielprogramm Outlook 1 GPGPU-Architekturen 2 CUDA Programmiermodell
MehrOpenCL Implementierung von OpenCV Funktionen
Multi-Core Architectures and Programming OpenCL Implementierung von OpenCV Funktionen julian.mueller@e-technik.stud.uni-erlangen.de Hardware/Software Co-Design August 18, 2011 1 Table of content 1 OpenCL
Mehr1. Übung zu "Numerik partieller Differentialgleichungen"
1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:
MehrSeminar: Grafikprogrammierung
Game Developer Converence 08 Seminar: Grafikprogrammierung Alexander Weggerle 17.04.08 Seite 2 Einführung Themenüberblick Organisatorisches Seminarablauf liches Seite 3 Einführung Seminar Motivation Vorbereitung
MehrEinleitung. Komplexe Anfragen. Suche ist teuer. VA-File Verfeinerungen. A0-Algo. GeVAS. Schluß. Folie 2. Einleitung. Suche ist teuer.
Anwendung Input: Query-Bild, Ergebnis: Menge ähnlicher Bilder. Kapitel 8: Ähnlichkeitsanfragen und ihre effiziente Evaluierung Wie zu finden? Corbis, NASA: EOS Bilddatenbank Folie Folie 2 Ähnlichkeitssuche
MehrEffiziente Java Programmierung
Effiziente Java Programmierung Seminar Implementierung moderner virtueller Maschinen am Beispiel von Java SS 2009 von Reinhard Klaus Losse 20. Mai 2009 Gliederung Definition Effizienz Werkzeuge zum Messen
MehrGPGPU-Architekturen CUDA Programmiermodell Beispielprogramm Organiosatorisches. Tutorial CUDA. Ralf Seidler
Friedrich-Alexander-Universität Erlangen-Nürnberg 05.10.2010 Outline 1 GPGPU-Architekturen 2 CUDA Programmiermodell 3 Beispielprogramm 4 Organiosatorisches Outlook 1 GPGPU-Architekturen 2 CUDA Programmiermodell
MehrProgrammieren I. Kapitel 5. Kontrollfluss
Programmieren I Kapitel 5. Kontrollfluss Kapitel 5: Kontrollfluss Ziel: Komplexere Berechnungen im Methodenrumpf Ausdrücke und Anweisungen Fallunterscheidungen (if, switch) Wiederholte Ausführung (for,
MehrTHE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic
THE GO PROGRAMMING LANGUAGE Part 1: Michael Karnutsch & Marko Sulejic Gliederung Geschichte / Motivation Compiler Formatierung, Semikolons Variablen, eigene Typen Kontrollstrukturen Funktionen, Methoden
MehrMasterpraktikum Scientific Computing
Masterpraktikum Scientific Computing High-Performance Computing Thomas Auckenthaler Wolfgang Eckhardt Prof. Dr. Michael Bader Technische Universität München, Germany Outline Organisatorisches Entwicklung
MehrEinführung in den Einsatz von Objekt-Orientierung mit C++ I
Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen
MehrJavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.
JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung
MehrC.3 Funktionen und Prozeduren
C3 - Funktionen und Prozeduren Funktionsdeklarationen in Pascal auch in Pascal kann man selbstdefinierte Funktionen einführen: Funktionen und Prozeduren THEN sign:= 0 Funktion zur Bestimmung des Vorzeichens
Mehr20 Jahre. acadgraph CADstudio GmbH Fritz-Hommel-Weg 4 80805 München Seite 1 von 11
Seite 1 von 11 Inhaltsverzeichnis 1 - Features & Benefits... 3 1.1 Schnell und einfach Eye Checker erstellen... 3 1.2 Einfach zu erlernen... 3 1.3 Voll CAD-Kompatibel... 3 2 - Arbeitsweise... 3 2.1 Userinterface...
MehrOpenCL. OpenCL. Boris Totev, Cornelius Knap
OpenCL OpenCL 1 OpenCL Gliederung Entstehungsgeschichte von OpenCL Was, warum und überhaupt wieso OpenCL CUDA, OpenGL und OpenCL GPUs OpenCL Objekte Work-Units OpenCL Adressbereiche OpenCL API Codebeispiel
MehrApplication Note. Anbindung von Kunden-Software an SpiderControl Web Visualisierung
2015-02-25 1 of 6 Application Note Anbindung von Kunden-Software an SpiderControl Web Visualisierung Version ApplicationNote_AnbindungFremdsoftware /Version Seite 1 / 6 Version Datum Kommentar Autor 0.1
MehrEine Einführung Computergrafik SS14 Timo Bourdon
Eine Einführung Computergrafik SS14 Timo Bourdon Organisatorisches Übung am Freitag den 11. Juli entfällt! Zum OpenGL-Übungsblatt OpenGL 3.0 oder höher notwendig (Shading Language 1.50 oder höher) CIP
MehrWas ist SVG? Inhalt: Allgemeines zu SVG Besondere Merkmale Vor- und Nachteile Dateiformat Standardobjekte Koordinatensystem Beispiele Links
Was ist SVG? Was ist SVG? Inhalt: Allgemeines zu SVG Besondere Merkmale Vor- und Nachteile Dateiformat Standardobjekte Koordinatensystem Beispiele Links SVG: Allgemeines zu SVG SVG = Scalable Vector Graphics
MehrMethoden (fortgeschritten) in C# - 1
Methoden (fortgeschritten) in C# - 1 Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Opertatoren Überladung 2. delegate 3. Anonyme Methoden delegate Lamda Ausdruck-Lamdas Anweisung-Lamdas Variablenbereich
MehrTransparente Nutzung von Multi-GPU Cluster unter Java/OpenMP
Transparente Nutzung von Multi-GPU Cluster unter Java/OpenMP Dipl. Inf. Thorsten Blaß Programming Systems Group Martensstraße 3 91058 Erlangen Ausblick Motivation Einführung Java/OpenMP (JaMP) JaMP Sprache
MehrOpenCL. Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer tim.wiersdoerfer@student.uni-siegen.
OpenCL Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer tim.wiersdoerfer@student.uni-siegen.de Abstract: In diesem Dokument wird ein grundlegender Einblick in das relativ
MehrEinführung in die STL
1/29 in die STL Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/29 Outline 1 3/29 Inhaltsverzeichnis 1 4/29 Typisierung
MehrGrafikkarten-Architektur
> Grafikkarten-Architektur Parallele Strukturen in der GPU Name: Sebastian Albers E-Mail: s.albers@wwu.de 2 > Inhalt > CPU und GPU im Vergleich > Rendering-Pipeline > Shader > GPGPU > Nvidia Tesla-Architektur
MehrMAP CellSs Mapprakt3
MAP CellSs Mapprakt3 Andreas Fall, Matthias Ziegler, Mark Duchon Hardware-Software-Co-Design Universität Erlangen-Nürnberg Andreas Fall, Matthias Ziegler, Mark Duchon 1 CellSs Cell CPU (1x PPU + 6x SPU)
MehrGraphic Coding. Klausur. 9. Februar 2007. Kurs A
Graphic Coding Klausur 9. Februar 2007 Kurs A Name: Matrikelnummer: Hinweise - Es sind keine Hilfsmaterialien erlaubt. (Keine Bücher, Taschenrechner, Handys) - Sie haben zwei Stunden Zeit. - Insgesamt
MehrRACK4-ATX-Q77. Features
Produktinformation RACK4-ATX-Q77 Industriestraße 2 47638 Straelen Telefon: 0 28 34-77 93 0-0 Telefax: 0 28 34-77 93 0-49 E-Mail: Web: vertrieb@abeco.de www.abeco.de Features CPU Intel Core? i7-2600, 3.48GHz
MehrJava basierte Browser Plug-ins. Martin Kreis 3D-Graphik im Web WS 02/03. 27.01.2003 Java basierte Browser Plug-ins 1. Übersicht
Java basierte Browser Plug-ins Martin Kreis 3D-Graphik im Web WS 02/03 27.01.2003 Java basierte Browser Plug-ins 1 Übersicht Plug-ins 2D/3D Präsentationen und Animationen im Web Shout3D 3DAnywhere Anfy/Anfy3D
MehrVORKURS INFORMATIK EINE EINFÜHRUNG IN JAVASCRIPT
4. Oktober 2016 VORKURS INFORMATIK EINE EINFÜHRUNG IN JAVASCRIPT Benjamin Förster Institut für Informatik, Informations- und Medientechnik INHALT 1. HTML5 Einstieg HTML5 2. Einführung in JavaScript Zeichnen
Mehr12 == 12 true 12 == 21 false 4 === 7 true 4 === "vier" false 4 === 4.0 false 12!= 13 true 12!== 12 false 12!== 12.0 true. 1 < 3 true 3 < 1 false
Die if-anweisung if (Bedingung 1) { Code 1 else { Code 2 ; Anm.1: Das ; kann entfallen, da innerhalb { ein sog. Codeblock geschrieben wird. Anm.2: Es gibt noch andere Schreibweisen, aber wir wollen uns
MehrAqcuisition Processing Distribution Exploit/View
Rendering und Bereitstellung massiver Geodaten unter Verwendung von OpenWebGlobe und MapCache in der Cloud Robert Wüest, Martin Christen, Benjamin Loesch Fachhochschule Nordwestschweiz Aqcuisition Processing
MehrKapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
MehrBeispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme
Schwerpunkte 3. Grundlegende Sprachkonstruktionen imperativer Programme Java-Beispiele: Temperature.java Keyboard.java Imperative Programmierung Beispiel für ein Programm aus drei Komponenten Variable,
MehrUnterprogramme, Pointer und die Übergabe von Arrays
Unterprogramme, Pointer und die Übergabe von Arrays Unterprogramme Wie schon im Abschnitt über Funktionen erwähnt, versteht man unter einem Unterprogramm im engeren Sinn eine Prozedur, welche die Werte
MehrCPU-Caches. Christian Duße. Seminar Effiziente Programmierung in C
CPU-Caches Christian Duße Seminar Effiziente Programmierung in C Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität
MehrModellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {
MehrVorlesung Programmieren
Vorlesung Programmieren Programmierparadigmen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Programmiersprachen-Paradigmen Eine Programmiersprache
MehrGerät Preis* CPU, VGA, HD, RAM Ausstattung
1 PC Ultra 559.- CPU: Intel Core Duo ab 3,0 GHz RAM: 8 GB HD: 128 GB SSD + 1 TB HDD VGA: GeForce GTX 750 2GB GDDR5 robuster Verarbeitung. Neben starken verfügt der PC Ultra über eine hochwertige Grafikkarte
MehrInformatik B von Adrian Neumann
Musterlösung zum 7. Aufgabenblatt vom Montag, den 25. Mai 2009 zur Vorlesung Informatik B von Adrian Neumann 1. Java I Schreiben Sie ein Java Programm, das alle positiven ganzen Zahlen 0 < a < b < 1000
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrEinführung in OpenCV Motivation Anwenderfeatures GUI-Demo Architektur Dokumentation API Ausblick. CVVisual. Ein Debug-Framework für OpenCV
CVVisual Ein Debug-Framework für OpenCV Andreas Clara Erich Florian Johannes Nikolai Raphael 20. Juni 2014 Gliederung Einführung in OpenCV Motivation Anwenderfeatures Gui-Demo Architektur Dokumentation
MehrCross-Platform Mobile Apps
Cross-Platform Mobile Apps 05. Juni 2013 Martin Wittemann Master of Science (2009) Arbeitet bei 1&1 Internet AG Head of Frameworks & Tooling Tech Lead von qooxdoo Plattformen Java ME 12 % Rest 7 % Android
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 06: Arrays Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Arrays Motivation und Eigenschaften Deklaration, Erzeugung und Initialisierung
MehrGrafikprozessor Grafikspeicher Taktung Kühlung Schnittstellen Ausgänge Treiber Crossfire & SLI ATI Nvidia Matrox PowerVR Technologies Inhaltsverzeichn
Grafikprozessor Grafikspeicher Taktung Kühlung Schnittstellen Ausgänge Treiber Crossfire & SLI ATI Nvidia Matrox PowerVR Technologies Inhaltsverzeichnis Grafikprozessor Der Grafikprozessor dient zur Berechnung
MehrKlausur zu High Performance Computing 09. Juli 2011, SS 2011
Alexander Vondrous, Britta Nestler, Fakultät IWI, Hochschule Karlsruhe Klausur zu High Performance Computing 09. Juli 2011, SS 2011 Es sind keine Hilfsmittel zugelassen. Bearbeitungszeit: 90 Minuten Aufgabe
Mehrphp Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...
php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...7 3.Zugriff auf mysql Daten...11 Verteilte Systeme: php.sxw Prof.
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren Teilnehmerkreis und Voraussetzungen Studiengänge
MehrRalf Wondratschek adorsys GmbH & Co. KG. Bildbearbeitung für Android mit OpenCV
Ralf Wondratschek adorsys GmbH & Co. KG Bildbearbeitung für Android mit OpenCV Inhalt OpenCV API Pixel Zugriff Effektbeispiele Inhalt Einbindung in Android Kamerazugriff bei Android Best Practices cv::scalar
MehrAssembler - Einleitung
Assembler - Einleitung Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Einleitung 1/19 2008-04-01 Teil 1: Hochsprache
MehrStudiengang Informatik der FH Gießen-Friedberg. Sequenz-Alignment. Jan Schäfer. WS 2006/07 Betreuer: Prof. Dr. Klaus Quibeldey-Cirkel
Studiengang Informatik der FH Gießen-Friedberg Sequenz-Alignment Jan Schäfer WS 2006/07 Betreuer: Prof. Dr. Klaus Quibeldey-Cirkel Überblick Einführung Grundlagen Wann ist das Merkmal der Ähnlichkeit erfüllt?
MehrProgrammieren in C++ Arrays, Strings und Zeigerarithmetik
Programmieren in C++ Arrays, Strings und Zeigerarithmetik Inhalt Eindimensionale C-Arrays C-Strings und Strings (Mehrdimensionale C-Arrays) Arrays und Vektoren (C++) Unique Pointers (C++11) Zeigerarithmetik
MehrJavakurs 2013 Objektorientierung
Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
MehrWeb und Mobile Apps Programmieren mit Dart
Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013. ZIEL attraktiv aktuell Programmierunterricht wenig Hürden Inhalt Weshalb Web und Mobile im Unterricht? aktuelle
MehrFunktionen in PHP 1/7
Funktionen in PHP 1/7 Vordefinierte Funktionen in PHP oder vom Entwickler geschriebene Funktionen bringen folgende Vorteile: gleiche Vorgänge müssen nur einmal beschrieben und können beliebig oft ausgeführt
MehrAdvanced Programming in C
Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer
MehrGridMate The Grid Matlab Extension
GridMate The Grid Matlab Extension Forschungszentrum Karlsruhe, Institute for Data Processing and Electronics T. Jejkal, R. Stotzka, M. Sutter, H. Gemmeke 1 What is the Motivation? Graphical development
MehrKunst der Spieleprogrammierung. The END. Playful Design. (c) 2013, Peter Sturm, Universität Trier
The END Playful Design 1 Gamification bzw. Playful Design Motivation Bedienungsfreundlichkeit ZENTRALES Element der Spieleentwicklung Software wird meist freiwillig genutzt J Spiele waren immer wichtig
MehrUIKit (Cocoa Touch) Framework für ios Apps. Objective C. Model View Controller Pattern
ios Rendering ios Architektur UIKit (Cocoa Touch) A composable, reusable, declarative, real-world inspired animation, and interaction system Framework für ios Apps Objective C Model View Controller Pattern
MehrStandardsoftware für die Industrielle Bildverarbeitung
Standardsoftware für die Industrielle Bildverarbeitung Der elegante Weg zur Performanzsteigerung Dr. Olaf Munkelt MVTec Software GmbH MVTec Software GmbH Firma konzentriert sich auf Building Vision for
MehrAPEX und Phonegap? Das kann APEX doch mit HTML5! APEX connect Düsseldorf, 10. Juni 2015 Daniel Horwedel. APEX und Phonegap?
Das kann APEX doch mit HTML5! APEX connect Düsseldorf, 10. Juni 2015 Daniel Horwedel WGV-Horwedel, 10.06.2015 Agenda Vorstellung Strategien zur Entwicklung mobiler Anwendungen HTML 5 Elemente APIs Kamera
MehrOptimierung eines neuen Logarithmic-Search-Verfahrens zum Image Mosaicing unter Einsatz des CUDA-Frameworks
Fachhochschule Köln, Campus Gummersbach Optimierung eines neuen Logarithmic-Search-Verfahrens zum Image Mosaicing unter Einsatz des CUDA-Frameworks 03.06.2009 Eugen Sewergin, B. Sc. Erstprüfer: Prof. Dr.
MehrThema: Hardware-Shader
Seminar Grafikprogrammierung Thema: Hardware-Shader Christian Bauer 03.07.08 Überblick Entwicklung Die Shader im Detail Programmierung GPGPU Zusammenfassung & Ausblick 1/19 Entwicklung (1) Früher: Berechnung
MehrWorld of Warcraft. Mindestvoraussetzungen
World of Warcraft Betriebssystem Windows XP / Windows Vista / Windows 7 Windows 7 / Windows 8 64-bit mit Windows 8 mit aktuellstem Servicepack aktuellstem Servicepack Prozessor Intel Core 2 Duo E6600 oder
MehrMethoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only
Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer
MehrDataTables LDAP Service usage Guide
DataTables LDAP Service usage Guide DTLDAP Usage Guide thomasktn@me.com / www.ktn.ch Benutzung des DTLDAP Service DataTables Der Service stellt einen JSON Feed für DataTables (http://www.datatables.net)
MehrÜbersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15
Übersicht Schleifen Schleifeninvarianten Referenztypen, Wrapperklassen und API CoMa I WS 08/09 1/15 CoMa I Programmierziele Linux bedienen Code umschreiben strukturierte Datentypen Anweisungen und Kontrollstrukturen
MehrÜbersicht. 4.1 Ausdrücke. 4.2 Funktionale Algorithmen. 4.3 Anweisungen. 4.4 Imperative Algorithmen Variablen und Konstanten. 4.4.
Übersicht 4.1 Ausdrücke 4.2 Funktionale Algorithmen 4.3 Anweisungen 4.4 Imperative Algorithmen 4.4.1 Variablen und Konstanten 4.4.2 Prozeduren 4.4.3 Verzweigung und Iteration 4.4.4 Globale Größen Einführung
MehrXPages Good to know. Benjamin Stein & Pierre Hein Stuttgart 7. Mai 2015
XPages Good to know Benjamin Stein & Pierre Hein Stuttgart 7. Mai 2015 Agenda 1. Einführung Was sind XPages? 2. Allgemeine Tipps Allgemeine Tipps für die Verwendung von XPages 3. Designer Tipps Tipps für
MehrInformatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-
Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik
MehrDistributed Computing Group
JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird
MehrXojo für FileMaker Entwickler
Ein Blick über den Tellerrand Was ist Xojo? Xojo ist eine Objektorientiertes Entwicklungswerkzeug zum Bau von Crossplattform Lösungen Objektorientierte Programmiersprache Kompiler für native Anwendungen
MehrApplets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer
Applets Belebung von Webseiten Dipl.-Ing. Wolfgang Beer Was sind Applets? Java Klassen, die spezielle Richtlinien befolgen, um: "in Internet-Browsern lauffähig zu sein" Somit ist, komplexere Funktionalität,
MehrEs ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.
Ziele sind das Arbeiten mit Funktionen und dem Aufzählungstyp (enum), sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 3: Diese Aufgabe
MehrXML Technologien Seminar WS 2011/2012. 01.04.12 Einführung in HTML5 1
XML Technologien Seminar WS 2011/2012 01.04.12 Einführung in HTML5 1 EINFÜHRUNG IN HTML5 Eine kurze historische Einführung HTML5 Ausblick und kritische Reflexion 01.04.12 Einführung in HTML5 2 Eine kurze
MehrBei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife
303 Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife durchgeführt wird. 304 305 for-schleifen sind in Aktivitätsdiagrammen
MehrDarstellung komplexer 3D-Stadtmodelle im (mobilen) Webbrowser mittels bildbasiertem Rendering
Darstellung komplexer 3D-Stadtmodelle im (mobilen) Webbrowser mittels bildbasiertem Rendering Martin Christen FHNW Hochschule für Architektur, Bau und Geomatik Institut Vermessung und Geoinformation martin.christen@fhnw.ch
MehrTheorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
MehrLeistungs- und Geschwindigkeitssteigerung. Dipl.-Ing. Sebastian F. Kleinau Applikationsingenieur
Leistungs- und Geschwindigkeitssteigerung von LabVIEW-Projekten Dipl.-Ing. Sebastian F. Kleinau Applikationsingenieur Agenda 1. Einführung 2. Hilfreiche Werkzeuge zur Codeanalyse 3. Benchmarks für LabVIEW-VIs
MehrApp-Entwicklung mit Titanium
App-Entwicklung mit Titanium Masterstudienarbeit von Betreuung Prof. Dr. M. von Schwerin App-Entwicklung mit Titanium 1 Gliederung 1.Titanium Eine Einführung 2.Programmierschnittstelle (API) 3.Module 4.App
MehrComputergrafik SS 2010 Oliver Vornberger. noch Kapitel 10: 2D-Grafik im Web. Vorlesung vom 11.05.2010
Computergrafik SS 2010 Oliver Vornberger noch Kapitel 10: 2D-Grafik im Web Vorlesung vom 11.05.2010 1 Webseite SVG-Beispiel
Mehr3. Grundlegende Sprachkonstruktionen imperativer Programme
3. Grundlegende Sprachkonstruktionen imperativer Programme Java-Beispiele: Temperature.java Keyboard.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 4. Nov. 2015 2 Schwerpunkte
MehrGrundlagen: Bildbearbeitung / Objekterkennung. Julia Peterwitz zum Seminar: Videobasierte Erkennung und Analyse menschlicher Aktionen
Grundlagen: Bildbearbeitung / Objekterkennung Julia Peterwitz zum Seminar: Videobasierte Erkennung und Analyse menschlicher Aktionen Videoerkennung! Warum? Live-Übertragung von Veranstaltungen Überwachung
MehrJavaScript und PHP-Merkhilfe
JavaScript und PHP-Merkhilfe David Vajda 10. November 2016 1 JavaScript 1. Einbinden von JavaScript in das HTML-Dokument
MehrEinstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
MehrDigitale Whiteboard-Software mit HTML5, SVG und WebSockets
Digitale Whiteboard-Software mit HTML5, SVG und WebSockets Webprogrammierung und Web 2.0-Technologien 30.11.2011 Jan Teske, Peter Weigt, Philipp Nagy, Daniel Hoffmann Gliederung 2 1. Aufgabenstellung 2.
MehrKontrollstrukturen MySQL Funktionen. MySQL 4, 5. Kapitel 20a: PHP Teil 2. Marcel Noe
MySQL 4, 5 Kapitel 20a: PHP Teil 2 Gliederung 1 2 Gliederung 1 2 Die ermöglicht ein Bedingtes Ausführen von Code-Abschnitten. Nur wenn die Bedingung erfüllt ist wird der Block hinter if ausgeführt. Ist
MehrTesten von SOA-Anwendungen mit dem BPEL Testframework
Testen von SOA-Anwendungen mit dem BPEL Testframework Stefan Kühnlein IBM Deutschland Enterprise Application Solution GmbH Hollerithstr. 1 81829 München 0160/8848611 Stefan.Kuehnlein@de.ibm.com IBM Deutschland
MehrSemTalk Services. SemTalk UserMeeting 29.10.2010
SemTalk Services SemTalk UserMeeting 29.10.2010 Problemstellung Immer mehr Anwender nutzen SemTalk in Verbindung mit SharePoint Mehr Visio Dokumente Viele Dokumente mit jeweils wenigen Seiten, aber starker
MehrBinäre lineare Optimierung mit K*BMDs p.1/42
Binäre lineare Optimierung mit K*BMDs Ralf Wimmer wimmer@informatik.uni-freiburg.de Institut für Informatik Albert-Ludwigs-Universität Freiburg Binäre lineare Optimierung mit K*BMDs p.1/42 Grundlagen Binäre
MehrFunktionale Programmiersprachen
Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte
Mehrtechnische universität dortmund Lehrstuhl für Hochfrequenztechnik Übertragungssysteme
Lehrstuhl für Hochfrequenztechnik GPU-beschleunigte numerische Simulation faseroptischer Übertragungssysteme, Marius Helf, Peter Krummrich Übersicht Motivation Split-Step p Fourier Methode Ansätze für
MehrSharePoint Erfahrungen, Möglichkeiten und Grenzen
SharePoint Erfahrungen, Möglichkeiten und Grenzen Dipl.-Kfm. Markus Kersting Medizinische Hochschule Hannover kersting.markus@mh-hannover.de Tel:: +49 (511) 532-4509 DGTI/ADP Treffen 2010, Hannover 02.02.2010,
MehrInteraktion Java und JavaScript
Interaktion Java und JavaScript Eliane Müller Inhalt JavaScript LiveConnect Aufruf von Java aus JavaScript via client-side LiveConnect Aufruf von JavaScript aus Java via client-side LiveConnect Anwendung:
MehrInformatik II Musterlösung
Ludwig-Maximilians-Universität München SS 2006 Institut für Informatik Übungsblatt 4 Prof. Dr. M. Wirsing, M. Hammer, A. Rauschmayer Informatik II Musterlösung Zu jeder Aufgabe ist eine Datei abzugeben,
MehrMultimediale Web-Anwendungen. JavaScript. Einführung. MWA JavaScript-Einführung Dr. E. Schön Sommersemester 2015 Folie 1.
Multimediale Web-Anwendungen JavaScript Einführung MWA JavaScript-Einführung Dr. E. Schön Sommersemester 2015 Folie 1 Entstehungsgeschichte: JavaScript 1995 Netscape Communications Corp. (Brendan Eich)
Mehr