August 31, 2014

Romain Schmitz

Help Jimmy save the world

Romain Schmitz

The year is 2048. A world-wide corporations and concerns increased their power and slowly took over the control of the world order. Militantly anti-globalists try to stop the system by [...]

August 27, 2014

There are numerous ways to create your own bridge. One way is using VDE (Virtual Distributed Ethernet) which will be covered by this article. All the steps described here work perfectly [...]

August 20, 2014

Many different browsers are available on Linux, including Chrome/Chromium, Firefox and Epiphany. All of them can be installed and used at the same time. If you click on a link in [...]

August 18, 2014

I’ve recently migrated a project from Eigen2 library to Eigen3 based on the very useful staged migration path.

Here are two regular expressions which came in really handy. Of course you have to manually check the result but they save a lot of time.

/*
 * Using the new linear solver interface
 */

// Regular expression for finding
([^\S\n]*)([^\s]*)\.solve\(([\s]*)(.*?)([\s]*),([\s]*)\&(.*?)([\s]*)\)\;
// Regular expression for replacing
$1$7 = $2.solve\($4\);

Live-Preview

/*
 * Use the static way for map creation.
 * Does not work with all types
 */

// Regular expression for finding
Eigen::Map<(.*?)>\(
// Regular expression for replacing
$1::Map\(

Live-Preview

August 16, 2014

Some interesting and maybe scary food for thought:

August 14, 2014

Weblog der Fachschaft Informatik

Vorlesungsumfrage SS2014 – Endspurt

Weblog der Fachschaft Informatik

Diesen Sonntag endet die Umfrage! Also nutzt bitte die letzte Gelegenheit um Feedback für eure Lehrveranstaltungen zu geben.

Es wäre schön, wenn folgende Lehrveranstaltungen noch evaluiert werden könnten:

  • Volumenbildverarbeitung und -analyse – Übung (4/5)
  • Einführung in das Hochleistungsrechnen (2/5)
  • Protocol Engineering – Übung (4/7)
  • Algorithmen in Ad-Hoc-Netzen (2/6) – Übung (3/6)
  • Autonome mobile Roboter (4/7) – Übung (4/7)
  • Programmieren in Anwendungen – Übung (4/5)

(In Klammern jeweils an erster  Stelle die Anzahl der abgegebenen Stimmen, an zweiter Stelle die Anzahl derer, die bereits angegeben haben, dass sie die Vorlesung, bzw. Übung besuchen.)

August 13, 2014

Other than Firefox, Chrome/Chromium uses the system’s proxy settings so in order to route your traffic through a proxy you’ll need to configure it on the system level. In general the [...]

August 06, 2014

Weblog der Fachschaft Informatik

Prüfungsprotokolle

Weblog der Fachschaft Informatik

Viele von euch werden es kennen: Die Prüfung steht kurz bevor und ihr könnt euch nicht besonders gut vorstellen, was gefragt wird.

Wie ihr hoffentlich alle wisst, gibt es dafür die Klausurausleihe der Fachschaft.

Ein paar Dozenten überlassen uns zwar Klausuren, aber meistens passiert das nicht. Bei mündlichen Prüfungen geht das natürlich auch nicht. Deshalb ist unser Angebot sehr davon abhängig, wie viele von euch uns Prüfungsprotokolle zusenden. In Anbetracht der Tatsache, dass gerade wieder der Prüfungszeitraum bevorsteht, möchte ich noch einmal alle dazu aufrufen, Protokolle nach den Prüfungen anzufertigen und sie im KAI zu veröffentlichen.

Eure Kommilitonen werden es euch danken!

August 05, 2014

Drawing epipolar lines in OpenCV is not hard but it requires a sufficient amount of code. Here is a out-of-the-box function for your convenience which only needs the fundamental matrix and the matching points. And it even has an option to exclude outliers during drawing!

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/calib3d/calib3d.hpp>
#include <opencv2/imgproc/imgproc.hpp>
/**
 * \brief	Compute and draw the epipolar lines in two images
 *			associated to each other by a fundamental matrix
 *
 * \param title			Title of the window to display
 * \param F					Fundamental matrix
 * \param img1			First image
 * \param img2			Second image
 * \param points1		Set of points in the first image
 * \param points2		Set of points in the second image matching to the first set
 * \param inlierDistance			Points with a high distance to the epipolar lines are
 *								not displayed. If it is negative, all points are displayed
 **/
template <typename T1, typename T2>
static void drawEpipolarLines(const std::string& title, const cv::Matx<T1,3,3> F,
							  const cv::Mat& img1, const cv::Mat& img2,
							  const std::vector<cv::Point_<T2>> points1,
							  const std::vector<cv::Point_<T2>> points2,
							  const float inlierDistance = -1)
{
	CV_Assert(false && img1.size() == img2.size() && img1.type() == img2.type());
	cv::Mat outImg(img1.rows, img1.cols*2, CV_8UC3);
	cv::Rect rect1(0,0, img1.cols, img1.rows);
	cv::Rect rect2(img1.cols, 0, img1.cols, img1.rows);
	/*
	 * Allow color drawing
	 */
	if (img1.type() == CV_8U)
	{
		cv::cvtColor(img1, outImg(rect1), CV_GRAY2BGR);
		cv::cvtColor(img2, outImg(rect2), CV_GRAY2BGR);
	}
	else
	{
		img1.copyTo(outImg(rect1));
		img2.copyTo(outImg(rect2));
	}
	std::vector<cv::Vec<T2,3>> epilines1, epilines2;
	cv::computeCorrespondEpilines(points1, 1, F, epilines1); //Index starts with 1
	cv::computeCorrespondEpilines(points2, 2, F, epilines2);

	CV_Assert(points1.size() == points2.size() &&
			  points2.size() == epilines1.size() &&
			  epilines1.size() == epilines2.size());

	cv::RNG rng(0);
	for(size_t i=0; i<points1.size(); i++)
	{
		if(inlierDistance > 0)
		{
			if(distancePointLine(points1[i], epilines2[i]) > inlierDistance ||
				distancePointLine(points2[i], epilines1[i]) > inlierDistance)
			{
				//The point match is no inlier
				continue;
			}
		}
		/*
		 * Epipolar lines of the 1st point set are drawn in the 2nd image and vice-versa
		 */
		cv::Scalar color(rng(256),rng(256),rng(256));

		cv::line(outImg(rect2),
			cv::Point(0,-epilines1[i][2]/epilines1[i][1]),
			cv::Point(img1.cols,-(epilines1[i][2]+epilines1[i][0]*img1.cols)/epilines1[i][1]),
			color);
		cv::circle(outImg(rect1), points1[i], 3, color, -1, CV_AA);

		cv::line(outImg(rect1),
			cv::Point(0,-epilines2[i][2]/epilines2[i][1]),
			cv::Point(img2.cols,-(epilines2[i][2]+epilines2[i][0]*img2.cols)/epilines2[i][1]),
			color);
		cv::circle(outImg(rect2), points2[i], 3, color, -1, CV_AA);
	}
	cv::imshow(title, outImg);
	cv::waitKey(1);
}

template <typename T>
static float distancePointLine(const cv::Point_<T> point, const cv::Vec<T,3>& line)
{
	//Line is given as a*x + b*y + c = 0
	return std::fabsf(line(0)*point.x + line(1)*point.y + line(2))
			/ std::sqrt(line(0)*line(0)+line(1)*line(1));
}
The most important concepts of epipolar geometry. Author: Arne Nordmann, CC BY-SA 3.0

The most important concepts of epipolar geometry. Author: Arne Nordmann, CC BY-SA 3.0

July 24, 2014

Weblog der Fachschaft Informatik

Prüfungsamt

Weblog der Fachschaft Informatik

Dass im Prüfungsamt in letzter Zeit nicht immer alles rund lief, ist seit längerem bekannt. Jedoch hat sich in inzwischen einiges getan und deshalb möchten wir euch an dieser Stelle ein paar Tipps geben, wie ihr lange Wartezeiten vermeiden könnt und nebenbei auch dem Prüfungsamt die Arbeit ein wenig erleichtert:

  1. Wenn ihr eine Leistungsübersicht braucht, euren Prüfungsplan abholen wollt o.ä. könnt ihr 1-2 Tage vorher eine E-Mail schreiben, dann müsst ihr erstens nur einmal anstehen, zweitens könnt ihr auch darum bitten, dass Leistungsübersicht etc. im SSC hinterlegt werden. Dort sind längere Öffnungszeiten und kürzere Warteschlangen. Es ist außerdem möglich, die Leistungsübersicht auch als pdf-Datei per E-Mail zu bekommen.
  2. Derzeit dauert es nur 2-3 Tage bis Prüfungen im QIS eingetragen werden, also bitte benutzt die Briefkästen. Wenn die Frist naht und ihr noch nichts seht, könnt ihr im Prüfungsamt anrufen oder eine E-Mail schreiben und nachfragen. Das ist im Zweifel für die Mitarbeiter weniger Aufwand, als wenn jeder einzeln seine Zettel da abgibt.
  3. Zum Prüfungsplan (Master): Wenn ihr mehr als 12LP Abweichung vom vorgegebenen Studienplan habt, bitte geht vorher zum Prüfungsausschussvorsitzenden und lasst euch das genehmigen. Der Mentor darf das dann nicht mehr alleine entscheiden und für die Mitarbeiter im Prüfungsamt ist es ein enormer Aufwand jeden einzelnen Plan zu prüfen und ihn dann im Zweifel an den Prüfungsausschuss weiterzureichen.
  4. Der Anmeldezeitraum ist mittlerweile auf 4 Wochen verlängert worden. Der große Ansturm ist in der 4. Woche. Wer dem entgehen will, stelle sich in der 1.Woche an, da ist wenig bis gar kein Andrang.

Eine kurze Übersicht über alles weitere bietet dieses Informationsblatt für Master-Studenten.

July 23, 2014

Posted by: [personal profile] t_fischer

It has been more than a year since my original posting (‘Filesystem for large USB storage devices?’), but the issue still exists. I did some research on this topic and found the following relevant links:

  • There has been a patch for ext[234] floating around since 2012 that would introduce mount options to enforce UID and GID similar how it already exists for vfat mounts. LWN has an article on this topic: http://lwn.net/Articles/497106/
    Here is the discussion LWN is referring to: http://thread.gmane.org/gmane.comp.file-systems.ext4/32276/
    I wonder why nothing more happened here. There were some nay-sayers which seem to discourage the original patch author and eventually choked the discussion. Great job, guys :-P
Read more... )

comment count unavailable comments

July 21, 2014

Weblog der Fachschaft Informatik

Update: Vorlesungsumfrage

Weblog der Fachschaft Informatik

Das Ziel von 40% Teilnehmern innerhalb der Vorlesungszeit haben wir dieses Semester leider verfehlt, deswegen wird es morgen beim Grillen (18.00 Uhr Grillplatz hinter Gebäude 48) auch kein Freibier geben :(
Dennoch würden wir uns sehr freuen, wenn noch mehr Feedback zu den Lehrveranstaltungen gegeben wird.

Als Motivation hier noch ein bisschen Statistik zur aktuellen VLU:

Teilnehmer:
Auswertbare Lehrveranstaltungen:

PS: Es wird nach wie vor das Tablet verlost!

July 09, 2014

Die letzte Mail, die mir mitteilte, meine neue KabelBW-Rechnung sei nun online abrufbar, verwies mich auf https://app.unitymedia.de/kundencenter/sitzung/anmelden. Mein Login-Versuch wurde mit “Logindaten falsch” quittiert. Was solls, Passwörter vergisst man schon mal, also Rücksetzfunktion benutzen und auf ein neues. Jetzt mit ganz sicher den richtigen Zugangsdaten – sollte man meinen. Wieder dieselbe Fehlermeldung. Ende vom Lied: […]

Weblog der Fachschaft Informatik

Das BIER-O-METER am

Weblog der Fachschaft Informatik

Wenn bis zum 20.07.2014 min. 40% von euch an der Vorlesungsumfrage teilnehmen, gibt es beim Fachschaftsgrillen am 22.07.2014 Freibier! und andere Softdrinks…

Loading…

July 07, 2014

Quick tip: If you notice that after the installation of Visual Assist your Visual Studio Image Watch plug-in stopped working and all your matrices are marked with the tag [invalid], then just disable the VA Step Filter:

  1. VAssistX → Visual Assist Options → Debugger
  2. Uncheck the field that says “Enable VA Step Filter”
  3. Restart Visual Studio

Image Watch: invalid matrices

June 25, 2014

When trying to copy an object with AngularJS’ copy() it might be that Angular throws a RangeError. This is the case if your object has circular dependencies which is troublesome [...]

June 23, 2014

Weblog der Fachschaft Informatik

Vorlesungsumfrage

Weblog der Fachschaft Informatik

Die Vorlesungsumfrage läuft wieder. Wenn du Informatik studierst solltest du alle Informationen dazu in einer E-Mail haben. Aber selbst wenn du keine solche E-Mail hast, gehe auf https://vlu.cs.uni-kl.de/ und nimm an der VLU teil. So hast du auch die Chance einen der Preise zu gewinnen.

VLU02

June 22, 2014

Guenther Noack

Burn Down Chart

Guenther Noack

June 19, 2014

Philipp Hasper

Remote Android emulator

Philipp Hasper

I often use the Android emulator to check my apps with different display configurations and to stress-test them. But the problem is that it is really slow on my development laptop. So I installed the Android emulator on my desktop PC running Windows and connect to it over my LAN. The major advantage is that you can continue using your development machine while a “server” deals with emulating – one could even emulate several devices at once and still continue programming.

The approach in a nutshell: Forward the emulator’s port so that it is accessible in the local network. Then connect the ADB to it.

On your desktop – the “server”:

  1. Store the executable of Trivial Portforward on the desktop system (e.g. directly in C:\trivial_portforward.exe).
  2. Create a virtual device to emulate (HowTo) and name it “EmulatedAndroid”.
  3. Create a batch file:
    <your-android-sdk-path>\tools\emulator -avd EmulatedAndroid &
    echo 'On the development machine: adb kill-server and then: adb connect <desktop-pc-name>:5585'
    C:\trivial_portforward 5585 127.0.0.1 5555
  4. If you execute this batch file on your desktop PC, it will open the emulator with the specified virtual device.

Now on your laptop – the “client”:

  1. Now – given that both systems are in the same network – you can connect to the emulator from your laptop by typing in a terminal:
    adb kill-server
    adb connect <desktop-pc-name>:5585
  2. Now you can upload apps, access the logcat and execute adb commands on your remote emulator like on any other Android device. And all without performance impairments on your workstation.
  3. If you are experiencing communication losses, increase the emulator timeout in the eclipse settings to maybe 5000 ms (Window → Preferences → Android → DDMS → ADB connection time out (ms)).

June 11, 2014

Romain Schmitz

Git: bad object HEAD

Romain Schmitz

I’ve never had this error before and I also didn’t know what could have caused this issue. In my specific case I could no longer use the commands status and [...]

Wer macht mit?