Archiv der Kategorie: Algorithmen

Hier kommen Beiträge zu Algorithmen rein

Artikelbild

Beitrag AVN – Analyse von Bildresiduen mit Machine-Learning im Rahmen von Kamera-Kalibrierungen

Autoren

Waldemar Kisser, Frank Boochs, Dietrich Paulus

Zusammenfassung

Photogrammetrie ermöglicht es Objekte mit Hilfe von Digitalbildern zu vermessen. Bei optimalen Messbedingungen sind Qualitätsunterschiede der abgeleiteten Maße vor allem auf die mathematische Modellierung des verwendeten Sensors und der Linse zurückzuführen. Photogrammetrische Kalibrierungen erfolgen meist mittels Bündelblockausgleichung. Diese gestattet es vielerlei statistische Kennzahlen abzuleiten. Eine tiefergehende Analyse der berechneten Parameter, Standardabweichungen, Korrelationen und deren Verteilungen kann Aufschluss darüber geben, ob das verwendete Kalibriermodell Schwächen aufweist. Solche Defizite können sich durch systematische Restfehler im Bild- oder Objektraum äußern. Da solche Restfehler auch zu Ungenauigkeiten in den daraus abgeleiteten Informationen führen können, ist deren mathematischer Nachweis und anschließende Kompensation zur Erzielung höchster Genauigkeiten unausweichlich. Neueste Ansätze nutzen Korrekturterme um Residuensystematiken schon während der Bündelblockausgleichung zu modellieren. Der vorliegende Beitrag beschreibt wie auch Machine-Learning Techniken dabei helfen können verbliebene systematische Abweichungen in Bildresiduen nachzuweisen, ohne dass hierzu ein Eingriff in die Bündelblockausgleichung notwendig ist. Dies wird im ersten Schritt anhand von Beispieldaten erläutert. Im zweiten Schritt wird die Wirkung dieser Vorgehensweise an einer realen Kamerakalibrierung verdeutlicht. Abschließend erfolgt eine Diskussion der im Zuge dieser Arbeit erzielten Resultate und möglicher Eignung dieses Verfahrens in der Praxis.

Dieser Beitrag wurde begutachtet in der Zeitschrift Allgemeine-Vermessungs-Nachrichten 3-2017 veröffentlicht:

Erstentwurf-Dokument: Analyse von Bildresiduen mit Machine-Learning im Kontext von Kamera-Kalibrierungen

Abstract

Image Residual Analysis with Machine-Learning within the context of Camera-Calibrations

Photogrammetry uses digital images to extract geometric object information. In case of optimal measurement conditions the result quality is determined by the mathematical model, sensor and lens configurations. Bundle adjustment is a wide used approach in order to carry out photogrammetric tasks as well as camera and lens calibrations. Additionally, it yields various statistic parameters. Further standard deviations, correlation coefficients and distribution analysis helps users to disclose insufficient mathematical modelling. These deficiencies can manifest themselves through residuals in the image or object space. Since they also lower the quality of all derived information, one should carefully track and compensate these remaining errors in order to achieve highest accuracies. Most recent approaches model such errors “on-the-fly” within the bundle adjustment by adding or altering parameters. This paper describes how machine learning techniques can be used to track systematic residual patterns without changes in the bundle adjustment source code. Initially the idea is described with tiny examples. The second step applies this technique to a real camera calibration scenario. Finally, the achieved results as well as the suitability and practicability of such methods are discussed.

This paper was published as peer reviewed in Allgemeine-Vermssungs-Nachrichten (AVN) 3-2017:

Early-Darft-Document: Analyse von Bildresiduen mit Machine-Learning im Kontext von Kamera-Kalibrierungen

Beitrag Oldenburger 3D Tage 2016 – Analyse von Bildresiduen mit Machine-Learning im Kontext von Kamera-Kalibrierungen

Autoren

Waldemar Mordwinzew, Frank Boochs, Dietrich Paulus

Zusammenfassung

Photogrammetrie ermöglicht es, Objekte mit Hilfe von Digitalbildern zu vermessen. Bei optimalen Messbedingungen sind Unterschiede in der Qualität der abgeleiteten Maße vor allem auf die mathematische Modellierung des verwendeten Sensors und der Linse zurückzuführen. Kalibrierungen erfolgen meist mittels Bündelblockausgleichung, die es gestattet, daraus vielerlei statistische Kennzahlen abzuleiten. Eine tiefergehende Analyse der berechneten Parameter, Standardabweichungen, Korrelationen und deren Verteilungen kann Aufschluss geben, ob das verwendete Kalibriermodell Schwächen aufweist. Solche Defizite können sich durch systematische Restfehler im Bild- oder Objektraum äußern. Da solche Restfehler zu Ungenauigkeiten in den daraus abgeleiteten Informationen führen können, ist deren mathematischer Nachweis und anschließende Kompensation zur Erzielung höchster Genauigkeiten unausweichlich. Neueste Ansätze nutzen Korrekturterme, um solche Systematiken schon während der Bündelblockausgleichung zu modellieren. Der vorliegende Beitrag beschreibt, wie auch Machine-Learning Techniken dabei helfen können, verbliebene systematische Abweichungen in Bildresiduen nachzuweisen, ohne dass hierzu ein Eingriff in die Bündelblockausgleichung notwendig ist. Dies wird im ersten Schritt anhand von Beispieldaten erläutert. Im zweiten Schritt wird die Wirkung dieser Vorgehensweise an einer realen Kamerakalibrierung verdeutlicht. Abschließend erfolgt eine Diskussion der im Zuge dieser Arbeit erzielten Resultate und möglicher Eignung dieses Verfahrens in der Praxis.

Vorgestellt wurde diese Arbeit während der Oldenburger 3D Tage 2016. Der Erstentwurf samt Folien, des später eingereichten Artikels kann hier heruntergeladen werden:

Dokument: Analyse von Bildresiduen mit Machine-Learning im Kontext von Kamera-Kalibrierungen

Folien: Analyse von Bildresiduen mit Machine-Learning im Kontext von Kamera-Kalibrierungen

Algorithmus zum sortieren eines Tripels

Die nachfolgende Publikation befasst sich mit dem sortieren von Tripeln T = {a,b,c}. Wobei a,b,c ihrer Größe nach sortiert werden sollen.

Angenommen es soll ein Array s[i] mit drei Elementen sortiert werden. Wobei i die aktuelle Position des Arrays von 0 bis 2 darstellen soll.

Dann ist der größte Betrag max:

max = (s[0] > s[1]) ? ( (s[0] > s[2]) ? s[0] : s[2] ) : ( (s[1] > s[2]) ? s[1] : s[2] );

mit der Position:

maxi = (s[0] > s[1]) ? ( (s[0] > s[2]) ? 0 : 2 ) : ( (s[1] > s[2]) ? 1 : 2 );

und der kleinste Betrag entsprechend:

min  = (s[0] < s[1]) ? ( (s[0] < s[2]) ? s[0] : s[2] ) : ( (s[1] < s[2]) ? s[1] : s[2]);

mit der Position:

mini =  (s[0] < s[1]) ? ( (s[0] < s[2]) ? 0 : 2 ) : ( (s[1] < s[2]) ? 1 : 2 );

Der die letzte gebliebene Position kann wie folgt ausgerechnet werden:

midi = 3 – (mini+maxi);

mit dem dazugehörigen Wert s[midi]

Beweis:

mini  = 0
maxi = 1
midi = 3 – (1+0) = 2
mini  = 1
maxi = 2
midi = 3 – (1+2) = 0
mini  = 2
maxi = 0
midi = 3 – (2+0) = 1

Code herunterladen:

maxmidmin.c
/*
	Mordwinzew Waldemar 31.10.2009
	Dieser Algorithmus gibt den groessten, 
	zweitgroessten und den kleinsten Wert aus.
 
	v1.01
 
	http://www.mordwinzew.de/artikel/algorithmen/tripel-sortieren
 
*/
 
#include <time.h>
#include <stdio.h>
 
int main()
{
	unsigned int mini,midi,maxi,min,mid,max;
	unsigned int s[3];
	srand(time(NULL));
	s[0] = rand() %100 +1;
	s[1] = rand() %100 +1; 
	s[2] = rand() %100 +1;
 
	// maximaler Betrag:
	max =   (s[0] > s[1]) ? ((s[0] > s[2]) ? s[0] : s[2]) : ((s[1] > s[2]) ? s[1] : s[2]);
	// Position:
	maxi =  (s[0] > s[1]) ? ((s[0] > s[2]) ? 0 : 2) : ((s[1] > s[2]) ? 1 : 2);
 
	// minimaler Betrag:
	min  =  (s[0] < s[1]) ? ((s[0] < s[2]) ? s[0] : s[2]) : ((s[1] < s[2]) ? s[1] : s[2]);
	// Position: 
	mini =  (s[0] < s[1]) ? ((s[0] < s[2]) ? 0 : 2) : ((s[1] < s[2]) ? 1 : 2);
 
	// Die uebriggebliebene Position kann wie folgt berechnet werden:
	midi = 3 - (mini+maxi);
	// mit dem dazugehoerigen Wert:
	mid = s[midi];
 
	printf("s[0]: %i\ns[1]: %i\ns[2]: %i\n\n",s[0],s[1],s[2]);
	printf("max: %i\t maxi: %i\n",max,maxi);
	printf("mid: %i\t midi: %i\n",mid,midi);
	printf("min: %i\t mini: %i\n",min,mini);
 
	// Warte auf die Eingabetaste
	setvbuf(stdin,NULL,_IONBF,0); 
	setvbuf(stdin,NULL,_IOFBF,BUFSIZ); 
	getchar(); 
 
	return 0;
}