Giter Club home page Giter Club logo

ws16_mmp-video-1's Introduction

MMP WS2016 / 2017 - Video Übung 1

  • Robin Mehlitz (857946)
  • Tom Oberhauser (859851)

Änderungen

Aufgabe 1

Aufgabe 1a

Änderungen der Videoquellen in color.html von

<source src="../assets/v2b.webm" type="video/webm" />
<source src="../assets/v2b.mp4" type="video/mp4" />

zu

<source src="../assets/TV-100s-2110.podm.h264.webm" type="video/webm" />
<source src="../assets/TV-100s-2110.podm.h264.mp4" type="video/mp4" />

Aufgabe 1b

Einbinden von zusätzlichen Reglern in color.html

Brightness R: <input id="color_offset_r" type="range"  min="-100" max="100" onchange="processor.change_color_offset()"/>
Brightness G: <input id="color_offset_g" type="range"  min="-100" max="100" onchange="processor.change_color_offset()"/>
Brightness B: <input id="color_offset_b" type="range"  min="-100" max="100" onchange="processor.change_color_offset()"/>

und Erweiterung der processor.js

...
var config = {
	color_offset: 0,
	color_offset_r: 0,
	color_offset_g: 0,
	color_offset_b: 0,
	grayscale: false,
	sepia: false
};

var processor = {

	// "brightness" effect: change_color_offset: handled by html <input id="color_offset" ...
	change_color_offset: function() {
		// get color config value
		config.color_offset = document.getElementById("color_offset").value;
		this.log("color offset = "+config.color_offset);
		config.color_offset_r = document.getElementById("color_offset_r").value;
		this.log("color offset_r = "+config.color_offset_r);
		config.color_offset_g = document.getElementById("color_offset_g").value;
		this.log("color offset_g = "+config.color_offset_g);
		config.color_offset_b = document.getElementById("color_offset_b").value;
		this.log("color offset_b = "+config.color_offset_b);
	},
...
    computeFrame: function() {
    ...
        offset_r = parseInt(config.color_offset_r);
		offset_g = parseInt(config.color_offset_g);
		offset_b = parseInt(config.color_offset_b);
        ...
        r = r + offset + offset_r;
        g = g + offset + offset_g;
        b = b + offset + offset_b;
    }

Aufgabe 2

Regler in color.html einbinden

b/w: <input id="grayscale" type="checkbox" onchange="processor.change_color_filters()"/> <br/>
sepia: <input id="sepia" type="checkbox" onchange="processor.change_color_filters()"/><br/>

Aufgabe 2a

Graustufe durch gewichtete RGB Summe ermitteln

if (config.grayscale) {
    var Y = 0.3 * r + 0.59 * g + 0.11 * b;
    r = Y;
    g = Y;
    b = Y;
}

chroma key bw

Aufgabe 2b

if (config.sepia) {
	// https://www.cs.utexas.edu/~scottm/cs324e/Assignments/A5_Images.htm
	var R = (r * 0.393) + (g * 0.769) + (b * 0.189)
	var G = (r * 0.349) + (g * 0.686) + (b * 0.168)
	var B = (r * 0.272) + (g * 0.534) + (b * 0.131)
	r = R;
	g = G;
	b = B;
}

chroma key sepia

Aufgabe 3

  • Kopie der colorkey-green.html zu colorkey-blue.html
  • Kopie der processor.js zu processor-blue.js
  • Anpassung des gesuchten Farbwertes in processor-blue.js
if (r < 100 && g < 100 && b > 100) {
	// set "alpha" value to (0)
    frame.data[i * 4 + 3] = 0;
}

Aufgabe 4

Hierfür musste nur noch die camera.js ins Projekt 2a-colorfilter-brightness kopiert werden. Der Rest war bereits implementiert.

color key blue livecam

ws16_mmp-video-1's People

Contributors

devfoo-one avatar robme91 avatar

Watchers

James Cloos avatar  avatar  avatar

ws16_mmp-video-1's Issues

Hinweise Aufgabe 1

Hinweise:

für die lokale Arbeit auf der Festplatte (über file:// und nicht http://) müssen bestimmte Sicherheitsfunktionen der Browser ausgeschaltet werden:

Chrome starten mit:
chrome --allow-file-access-from-files

Firefox:
in der config setzen: ("about: config")
security.fileuri.strict_origin_policy = false

Abgabe:
Bitte bei allen Dateien diese Benamung benutzen:
mmp2016-name-aufgabe

Aufgabe 1

Aufgabe V1: Color Filter und Color Key

Video-A1: Color Filter und Color Key

Verwende das Muster "colorfilter brightness" für die Aufgabe.

Das Beispiel zeigt die Helligkeitsanpassung eines Videos mit HTML / Javascript

Aufgaben:

a) ersetze das Video durch den Clip "Tagesschau" (tv100s...)

b) Erweitere das Beispiel um separate Helligkeitsregler für die R,G,B-Kanäle

  1. Erweitere das Beispiel um zusätzlich einschaltbare Bildfilter:

    a) Umwandlung in s/w (Graustufen) - bitte auf korrekte Y-Berechnung der Graustufen beachten

    b) Verwendung eines "Sepia"-Bildfilters - bitte selbst nach Formel für Sepia-Effekt recherchieren

  2. Verwende das Beispiel "Color Key"

Erstelle eine Webseite colorkey-blue.html.

Verwende die Webseite colorkey-green.html als Grundlage

Passe den Javascript-Code in processor.js so an, dass der blaue Hintergrund als Key verwendet wird und durch die Hintergrundbilder ersetzt wird.

Online-Beispiel "colorkey-green":

http://141.64.64.17/dozweb/demo/html5/showcase2010/chroma_view/green5/green10.html

  1. Erweitere die Anwendung durch Einbindung einer Live-Kamera

Muster in camera.js

Einbindung in beide Beispiele (colorfilter und colorkey)

Für das Color Key Beispiel verwende einen Live-Hintergrund der geeignet für ein Key ist

(z.b. weiße Wand)

Es kommt in der Abgabe nicht auf die Genauigkeit des Keys hin, es müssen also nicht alle Bildteile "sauber" herausgeschnitten sein.

Abgabe:

  • Webseiten online (eigener server oder public-server bei Beuth)

  • vollständig im Browser lauffähiges ZIP-Paket

  • Screenshots von den Webseiten im Einsatz und einmal mit Live-Kamera

  • Beschreibung der Änderungen am Code

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.