SoSe24 - Praktikum Systementwurf - Inverse Perspektiventransformation (IPT): Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(19 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Datei:PolynomVorKalman.gif|600px|thumb|right|Abb. 1: Fügen Sie hier ein animiertes GIF Ihres Ergebnisses ein.]]
[[Datei:GeradeInKurve IPT.gif|gerahmt|rechts|Abbildung 1: GeradeInKurve in BirdeyeView Perspektive]]
{| class="wikitable"
{| class="wikitable"
|-
|-
| '''Autoren:'''  || Daniel Block, Paul Janzen
| '''Autoren:'''  || Daniel Block, Paul Janzen
|-
|-
| '''Thema:''' || Inverse Perspektiventransformation (IPT)
| '''Thema:''' || [[SoSe24_-_Praktikum_Systementwurf_-_Spurerkennung_mit_Kamera_(Modul_OSE)#Aufgabe_9.4:_Inverse_Perspektiventransformation_(IPT)|Inverse Perspektiventransformation (IPT)]]
|-
|-
| '''Workshoptermin 9:'''  || 20.06.2024
| '''Workshoptermin 9:'''  || 20.06.2024
Zeile 12: Zeile 12:


== Einleitung ==
== Einleitung ==
In diesem Wikiartikel wird dargestellt, wie wir eine Inverse Perspektiventransformation (IPT) auf ein Bild und ein Video angewendet haben. Die angewendete IPT war eine sogenannte Bird's Eye View-Transformation. Diese Technik bietet eine unverzerrte Draufsicht, die die Erkennung und Verfolgung von Fahrspuren erheblich erleichtert, da die Linien parallel und gleichmäßig erscheinen.


== Kalibrierung der Kamera ==
== Kalibrierung der Kamera ==
* Parameter
[[Datei:Original und EntzerrtesBild.jpg|800px|thumb|right|Abbildung 2: Original und entzerrtes Bild]]
* Nachweis der erfolgreichen Entzerrung
 
Für die Erstellung des kalibrierten Bildes wurden folgende von der App erstellten Parameter verwendet:
{| class="wikitable"
|+ style = "text-align: left"|Tabelle 1: Erzeugte Parameter der Matlab Calibrator App
|-
! Parameter !! Wert
|-
| FocalLength || [472.3687, 473.2485]
|-
| ImageSize  || [478, 752]
|-
| RadialDistortion  || [-0.3437, 0.1698, -0.0485]
|-
| TangentialDistortion  || [0.0016, -0.0018]
|-
| PrincipalPoint  || [386.103, 228.4705]
|-
| MeanReprojectionError || 0.1542
|}
 
{| class="wikitable"
|+ style = "text-align: left"|Tabelle 2: Extrinsische Kameraparameter
|-
! Parameter !! Wert
|-
| Kameraneigung || 10°
|-
| Kamerahöhe über Boden  || 27,5cm
|-
| Fahrzeugfront bis Kamera  || 27cm
|-
| Fahrzeuglänge  || 41cm
|-
| Fahrzeugbreite  || 20cm
|}


== Inversen Perspektiventransformation ==
== Inversen Perspektiventransformation ==
Zeile 21: Zeile 56:


== PAP ==
== PAP ==
PAP Ihrer Lösung
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Programmablaufplan&thinsp;</strong>
|-
| [[Datei:StartInversePerspektivenTransformation_JB.png|600px|thumb|right|Abb. 10: PAP der Inverse Perspektiventransformation]]
|}


== Quelltext ==
== Quelltext ==
*MATLAB Quelltext Ihrer Lösung mit Header  und Kommentaren.
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
* Beachten Sie die [[Medium:Programmierrichtlinien_für_Matlab.pdf|Programmierrichtlinien für MATLAB<sup>®</sup>]].
| <strong>startInversePerspektivenTransformation.m&thinsp;</strong>
|-
|<source line lang="matlab" style="font-size:medium">
%****************************************************************
%                  Hochschule Hamm-Lippstadt                  *
%****************************************************************
% Modul           : SDE-Praktikum                              *
%                                                              *
% Datum          : 20.06.2024                                  *
%                                                              *
% Funktion        : Inverse Perspektiventransformation          *
%                                                              *
% Implementation  : MATLAB 2023a                                *
%                                                              *
% Req. Toolbox    : Image Processing Toolbox                    *
%                  Computer Vision Toolbox                    *
%                  Automated Driving Toolbox                  *
%                                                              *
% Author          : Paul Janzen, Daniel Block                  *
%                                                              *
% Bemerkung      :                                            *
%                                                              *
% Letzte Änderung : 20.06.2024                                  *
%                                                              *
%***************************************************************/
%% Matlab vorbereiten
clear all
close all
clc
 
%% Pfade einstellen und Parameter laden
addpath 'D:\SVN\SDE_Praktikum_trunk\_Semesterordner\SS2024\Team_1_Block_Janzen\Termin_9\Aufgabe_9_1'
addpath 'D:\SVN\SDE_Praktikum_trunk\_Semesterordner\SS2024\Team_1_Block_Janzen\Termin_9\Bilder'
load('cameraParams.mat')
 
 
%% Bild laden
inputImage = imread('Geradeaus.png');
%inputImage = imread('Linkskurve.png');
 
%% Einstellen der notwendigen Parameter
% Intrinsischen Parameer
camIntrinsics = cameraIntrinsics(cameraParams2.FocalLength,cameraParams2.PrincipalPoint,cameraParams2.ImageSize);
 
% Extrinsischen Parameter
height = 0.275;
pitch = 10;
sensor = monoCamera(camIntrinsics,height,'Pitch',pitch);
 
% Einstellen der Sichtweite
distAhead = 3;
spaceToOneSide = 0.8;
bottomOffset = 0.275;
outView = [bottomOffset,distAhead,-spaceToOneSide,spaceToOneSide];
 
% IPT am Bild anwenden
outImageSize = [NaN,250];
birdsEyeConfig = birdsEyeView(sensor, outView, outImageSize);
outputImage = transformImage(birdsEyeConfig, inputImage);
 
%% Darstellung des Bildes in BirdeyeView
figure
imshow(outputImage);
title('Geradeaus in BirdeyeView')
 
 
%% Video laden
video = VideoReader('GeradeInKurve.mp4');
 
% Video Writer initialisieren
outputVideoFile = 'GeradeInKurve_IPT.mp4'; % Speichername des Bearbeiteten Videos festlegen
outputVideo = VideoWriter(outputVideoFile, 'MPEG-4'); % Datentyp des Neuen Videos festlegen
outputVideo.FrameRate = video.FrameRate; % Festlegen der gleichen Bildrate wie das Originalvideo
open(outputVideo);
 
% Frames extrahieren, bearbeiten und in das neue Video schreiben
while hasFrame(video)
    frame = readFrame(video); % Einlesen der einzelnen Frames
   
    % Frame bearbeiten
    processedFrame = transformImage(birdsEyeConfig, frame); % Frame mit der IPT transformeieren
    processedFrame = rgb2gray(processedFrame); % Bild in ein Graubild umwandeln
    processedFrame = imbinarize(processedFrame); % Bild in ein Binärbild umwandeln
 
    % Bearbeitete Frames in das neue Video schreiben
    writeVideo(outputVideo, im2uint8(processedFrame));
end
 
% Video Writer schließen
close(outputVideo);
 
</source>
|}


== Ergebnisse ==
== Ergebnisse ==
* Darstellung der Ergebnisse
[[Datei:Geradeaus.png|500px|mini|links|Abbildung 3: Original Bild von Geradeaus]]
* Links zu den Arbeitsergebnissen
[[Datei:Geradeaus IPT.jpg|170px|mini|zentriert|Abbildung 4: In BirdeyeView Umgewandeltes Bild ]]
<br clear="all">
 
'''Links zu den Arbeitsergebnissen in SVN fehlen!!'''


== Analyse ==
== Analyse ==
Zeile 35: Zeile 169:
|+ Tabelle 1: Problembeschreibung
|+ Tabelle 1: Problembeschreibung
|-
|-
! Beschreibung !! Das Problem ist.. !! Das Problem ist nicht...
! Beschreibung !! Das Problem ist..  
|-
|-
| Was genau ist das Problem? || ||
| Was genau ist das Problem? || Neben der Fahrbahn werden auch Störelemente aufgenommen
|-
|-
| Wo tritt das Problem auf? || Beispiel || Beispiel
| Wo tritt das Problem auf? || Die Kamera zeichnet die Störquellen mit auf
|-
|-
| Wie zeigt sich das Problem?|| Beispiel || Beispiel
| Wie zeigt sich das Problem?|| Zusätzliche Kanten und Muster werden in den transformierten Bildern angezeigt
|-
|-
| Wann tritt das Problem auf?|| Beispiel || Beispiel
| Wann tritt das Problem auf?|| Bei jedem aufgenommenen Bild
|-
|-
| Warum ist es ein Problem?|| Beispiel || Beispiel
| Warum ist es ein Problem?|| Bei der Weiterarbeitung und Verwendung kann dies zu Fehl Schlüssen führen
|}
|}
{| class="wikitable"
{| class="wikitable"
Zeile 52: Zeile 186:
! Nr. !! Beschreibung  
! Nr. !! Beschreibung  
|-
|-
| 1 ||  Warum?
| 1 ||  Licht Empfindlichkeit der Kamera ist zu hoch eingestellt
|-
| 2 ||  Ungünstiger Lichteinfall zur Bildaufnahme
|-
| 3 ||  Objekte neben der Fahrbahn
|}
|}
{| class="wikitable"
{| class="wikitable"
Zeile 59: Zeile 197:
! Nr. !! Maßnahme !! Verantwortung !! Termin !! Status
! Nr. !! Maßnahme !! Verantwortung !! Termin !! Status
|-
|-
| 1 ||   || Max Mustermann || ||  [[Datei:Status 0.jpg|ohne|20px]]
| 1 || Auseinandersetzen mit den Kamera Einstellungen  || Block, Janzen || 04.07.2024 ||  [[Datei:Status 0.jpg|ohne|20px]]
|-
| 2 || Abdunkeln der Fenster  || Block, Janzen || 04.07.2024 ||  [[Datei:Status 0.jpg|ohne|20px]]
|-
| 3 || Bewegliche Objekte aus der Kamerasicht entfernen. Nicht bewegliche Objekte abdecken  || Block, Janzen || 04.07.2024 ||  [[Datei:Status 0.jpg|ohne|20px]]
|}
|}
Hinweis: Die Maßnahmen müssen nicht umgesetzt werden.
Hinweis: Die Maßnahmen müssen nicht umgesetzt werden.


== Zusammenfassung ==
== Zusammenfassung ==
In diesem Praktikum zum Systementwurf und zur inversen Perspektiventransformation (IPT) wird die Kalibrierung der Kamera, die Transformation von Bildern und Videos in eine Vogelperspektive sowie die Analyse der Ergebnisse beschrieben. Die Kalibrierung der Kamera umfasst die Ermittlung intrinsischer und extrinsischer Parameter. Durch die Anwendung der IPT werden Bilder entzerrt, um die Verfolgung von Fahrspuren zu erleichtern. Die Analyse identifiziert Probleme wie Störelemente in Bildern und schlägt Maßnahmen zur Verbesserung der Bildqualität vor. Die Bearbeitung und Transformation von Videomaterial wird ebenfalls detailliert erläutert.


== Beantwortung der Lernzielkontrollfragen ==
== Beantwortung der Lernzielkontrollfragen ==
===Wofür werden die Kamerakalibrierparameter verwendet?===
Kamerakalibrierparameter werden verwendet, um die Verzerrungen einer Kamera zu korrigieren. Diese Parameter beinhalten sowohl intrinsische Parameter (wie Brennweite und optischer Mittelpunkt) als auch extrinsische Parameter (wie Rotation und Translation der Kamera im Raum).
===Was ist ein Region-of-Interest (ROI)? Wie wird dieser gewählt?===
Ein Region-of-Interest (ROI) ist ein spezifischer Bereich eines Bildes, der für die Analyse ausgewählt wird. Dieser wird basierend auf der Relevanz für die aktuelle Aufgabe gewählt, um Rechenressourcen zu sparen und die Analyse zu fokussieren. Kriterien können die Position von Objekten, Bewegungen oder andere relevante Merkmale sein.
===Wie führt man eine effektive Binarisierung durch?===
Um eine effektive Binarisierung durchzuführen muss das Bild erst in ein Graubild umgewandelt werden. Um das Graubild in ein Binärbild umzuwandeln stellt Matlab die Funktion "imbinarize" zur Verfügung.
Mithilfe dieser Funktion, welche das Graubild als Eingang benötigt, können Bilder in Binärbilder umgewandelt werden.


===Welche Fehler zeigen sich im Binärbild? Wie lassen sich diese beheben?===
Typische Fehler im Binärbild umfassen Rauschen, unvollständige Segmentierung und fehlerhafte Kanten. Diese lassen sich durch Vorverarbeitungsschritte wie Filterung (z.B. Median- oder Gauss-Filter) beheben.


SoSe24_-_Praktikum_Systementwurf_-_Lernzielkontrolle_3
----
→ zurück zum Hauptartikel: [[Praktikum_SDE|Praktikum SDE]] | [[SDE-Team 2024/25]] | [[SoSe24_-_Praktikum_Systementwurf_-_Lernzielkontrolle_3|Lernzielkontrolle 3]]

Aktuelle Version vom 21. Juni 2024, 08:29 Uhr

Abbildung 1: GeradeInKurve in BirdeyeView Perspektive
Autoren: Daniel Block, Paul Janzen
Thema: Inverse Perspektiventransformation (IPT)
Workshoptermin 9: 20.06.2024
Lernzielkontrolle 3: 04.07.2024

Einleitung

In diesem Wikiartikel wird dargestellt, wie wir eine Inverse Perspektiventransformation (IPT) auf ein Bild und ein Video angewendet haben. Die angewendete IPT war eine sogenannte Bird's Eye View-Transformation. Diese Technik bietet eine unverzerrte Draufsicht, die die Erkennung und Verfolgung von Fahrspuren erheblich erleichtert, da die Linien parallel und gleichmäßig erscheinen.

Kalibrierung der Kamera

Abbildung 2: Original und entzerrtes Bild

Für die Erstellung des kalibrierten Bildes wurden folgende von der App erstellten Parameter verwendet:

Tabelle 1: Erzeugte Parameter der Matlab Calibrator App
Parameter Wert
FocalLength [472.3687, 473.2485]
ImageSize [478, 752]
RadialDistortion [-0.3437, 0.1698, -0.0485]
TangentialDistortion [0.0016, -0.0018]
PrincipalPoint [386.103, 228.4705]
MeanReprojectionError 0.1542
Tabelle 2: Extrinsische Kameraparameter
Parameter Wert
Kameraneigung 10°
Kamerahöhe über Boden 27,5cm
Fahrzeugfront bis Kamera 27cm
Fahrzeuglänge 41cm
Fahrzeugbreite 20cm

Inversen Perspektiventransformation

Beschreibung der MATLAB Funktion(en), Eingangs- und Ausgangsparameter

PAP

Quelltext

Ergebnisse

Abbildung 3: Original Bild von Geradeaus
Abbildung 4: In BirdeyeView Umgewandeltes Bild


Links zu den Arbeitsergebnissen in SVN fehlen!!

Analyse

Tabelle 1: Problembeschreibung
Beschreibung Das Problem ist..
Was genau ist das Problem? Neben der Fahrbahn werden auch Störelemente aufgenommen
Wo tritt das Problem auf? Die Kamera zeichnet die Störquellen mit auf
Wie zeigt sich das Problem? Zusätzliche Kanten und Muster werden in den transformierten Bildern angezeigt
Wann tritt das Problem auf? Bei jedem aufgenommenen Bild
Warum ist es ein Problem? Bei der Weiterarbeitung und Verwendung kann dies zu Fehl Schlüssen führen
Tabelle 2: Ursachenanalyse
Nr. Beschreibung
1 Licht Empfindlichkeit der Kamera ist zu hoch eingestellt
2 Ungünstiger Lichteinfall zur Bildaufnahme
3 Objekte neben der Fahrbahn
Tabelle 3: Maßnahmen zur Beseitigung der identifizierten Ursache(n)
Nr. Maßnahme Verantwortung Termin Status
1 Auseinandersetzen mit den Kamera Einstellungen Block, Janzen 04.07.2024
2 Abdunkeln der Fenster Block, Janzen 04.07.2024
3 Bewegliche Objekte aus der Kamerasicht entfernen. Nicht bewegliche Objekte abdecken Block, Janzen 04.07.2024

Hinweis: Die Maßnahmen müssen nicht umgesetzt werden.

Zusammenfassung

In diesem Praktikum zum Systementwurf und zur inversen Perspektiventransformation (IPT) wird die Kalibrierung der Kamera, die Transformation von Bildern und Videos in eine Vogelperspektive sowie die Analyse der Ergebnisse beschrieben. Die Kalibrierung der Kamera umfasst die Ermittlung intrinsischer und extrinsischer Parameter. Durch die Anwendung der IPT werden Bilder entzerrt, um die Verfolgung von Fahrspuren zu erleichtern. Die Analyse identifiziert Probleme wie Störelemente in Bildern und schlägt Maßnahmen zur Verbesserung der Bildqualität vor. Die Bearbeitung und Transformation von Videomaterial wird ebenfalls detailliert erläutert.

Beantwortung der Lernzielkontrollfragen

Wofür werden die Kamerakalibrierparameter verwendet?

Kamerakalibrierparameter werden verwendet, um die Verzerrungen einer Kamera zu korrigieren. Diese Parameter beinhalten sowohl intrinsische Parameter (wie Brennweite und optischer Mittelpunkt) als auch extrinsische Parameter (wie Rotation und Translation der Kamera im Raum).

Was ist ein Region-of-Interest (ROI)? Wie wird dieser gewählt?

Ein Region-of-Interest (ROI) ist ein spezifischer Bereich eines Bildes, der für die Analyse ausgewählt wird. Dieser wird basierend auf der Relevanz für die aktuelle Aufgabe gewählt, um Rechenressourcen zu sparen und die Analyse zu fokussieren. Kriterien können die Position von Objekten, Bewegungen oder andere relevante Merkmale sein.

Wie führt man eine effektive Binarisierung durch?

Um eine effektive Binarisierung durchzuführen muss das Bild erst in ein Graubild umgewandelt werden. Um das Graubild in ein Binärbild umzuwandeln stellt Matlab die Funktion "imbinarize" zur Verfügung. Mithilfe dieser Funktion, welche das Graubild als Eingang benötigt, können Bilder in Binärbilder umgewandelt werden.

Welche Fehler zeigen sich im Binärbild? Wie lassen sich diese beheben?

Typische Fehler im Binärbild umfassen Rauschen, unvollständige Segmentierung und fehlerhafte Kanten. Diese lassen sich durch Vorverarbeitungsschritte wie Filterung (z.B. Median- oder Gauss-Filter) beheben.


→ zurück zum Hauptartikel: Praktikum SDE | SDE-Team 2024/25 | Lernzielkontrolle 3