SoSe24 - Praktikum Systementwurf - Inverse Perspektiventransformation (IPT): Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
KKeine Bearbeitungszusammenfassung |
(→Quelltext: Quelltext hinzugefügt) |
||
Zeile 66: | Zeile 66: | ||
== Quelltext == | == Quelltext == | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | {| role="presentation" class="wikitable mw-collapsible mw-collapsed" | ||
| <strong>startInversePerspektivenTransformation.m </strong> | | <strong>startInversePerspektivenTransformation.m </strong> | ||
|- | |- | ||
|<source line lang="matlab" style="font-size:medium"> | |<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> | </source> | ||
|} | |} |
Version vom 20. Juni 2024, 15:42 Uhr
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
- Parameter
- Nachweis der erfolgreichen Entzerrung
Für die Erstellung des kalibrierten Bildes wurden folgende von der App erstellten Parameter verwendet:
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 |
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
PAP Ihrer Lösung
Programmablaufplan |
Quelltext
startInversePerspektivenTransformation.m |
%****************************************************************
% 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);
|
Ergebnisse
- Darstellung der Ergebnisse
- Links zu den Arbeitsergebnissen
Analyse
Beschreibung | Das Problem ist.. | Das Problem ist nicht... |
---|---|---|
Was genau ist das Problem? | ||
Wo tritt das Problem auf? | Beispiel | Beispiel |
Wie zeigt sich das Problem? | Beispiel | Beispiel |
Wann tritt das Problem auf? | Beispiel | Beispiel |
Warum ist es ein Problem? | Beispiel | Beispiel |
Nr. | Beschreibung |
---|---|
1 | Warum? |
Nr. | Maßnahme | Verantwortung | Termin | Status |
---|---|---|---|---|
1 | Max Mustermann |
Hinweis: Die Maßnahmen müssen nicht umgesetzt werden.
Zusammenfassung
Beantwortung der Lernzielkontrollfragen
→ zurück zum Hauptartikel: Praktikum SDE | SDE-Team 2024/25 | Lernzielkontrolle 3