Spielfeldmarkierungen: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
|||
Zeile 16: | Zeile 16: | ||
clear all | clear all | ||
</source> | </source> | ||
<li value="2">drei Laden Sie das Bild des Spielfeldes über einen interaktiven Dialog.</li> | #<li value="2">drei Laden Sie das Bild des Spielfeldes über einen interaktiven Dialog.</li> | ||
#:[[Datei:Spielfeld 02.png|400px|Bild des Spielfeldes mit einer Deckenkamera aufgenommen]] | #:[[Datei:Spielfeld 02.png|400px|Bild des Spielfeldes mit einer Deckenkamera aufgenommen]] | ||
<source lang="matlab" style="font-size:medium"> | <source lang="matlab" style="font-size:medium"> | ||
Zeile 39: | Zeile 39: | ||
% Bild laden | % Bild laden | ||
Originalbild = imread([pathname, filename]); | Originalbild = imread([pathname, filename]); | ||
</source> | |||
# Bild in Graustufen Wandeln und die Grüße bestimmen | |||
<source lang="matlab" style="font-size:medium"> | |||
% Bild in Graustufen wandeln | |||
Grauwertbild = rgb2gray(Originalbild); | |||
% Bildgröße bestimmen | |||
[m,n] = size(Grauwertbild); % z.B. HxB = mxn = XxY 326x485 Pixel^2 | |||
</source> | |||
# Kanten erkennen | |||
<source lang="matlab" style="font-size:medium"> | |||
% Kantenerkennung | |||
Kantenbild = edge(Grauwertbild,'sobel'); | |||
figure | |||
imshow(Kantenbild) | |||
title('Sobel') | |||
</source> | |||
# Linien aus dem Kantenbild im Hough-Rau lesen | |||
<source lang="matlab" style="font-size:medium"> | |||
% Berechnung der Hough Transformation | |||
[H,theta,rho] = hough(Kantenbild); | |||
% Maxima im Houghraum suchen | |||
P = houghpeaks(H,10,'threshold',ceil(0.4*max(H(:)))); | |||
% Linien im Bildraum generieren | |||
lines = houghlines(Kantenbild,theta,rho,P,'FillGap',20,'MinLength',40); | |||
</source> | </source> | ||
<source lang="matlab" style="font-size:medium"> | |||
</source> | |||
<source lang="matlab" style="font-size:medium"> | |||
</source> | |||
<source lang="matlab" style="font-size:medium"> | |||
</source> | |||
---- | ---- | ||
→ zurück zum Hauptartikel: [[Bild-_und_Signalverarbeitung_mit_MATLAB|Bild- und Signalverarbeitung mit MATLAB]] | → zurück zum Hauptartikel: [[Bild-_und_Signalverarbeitung_mit_MATLAB|Bild- und Signalverarbeitung mit MATLAB]] |
Version vom 25. Mai 2014, 11:42 Uhr
Autor: Prof. Schneider
Aufgabe
- Bestimmen Sie die Ausrichtung des Spielfeldes mit Matlab.
- Zeichnen Sie die Feldmarkierungen eines Fußballfeldes als Overlay ins Videobild ein.
Tipp: Nutzen Sie die Image Processing Toolbox von Matlab.
Musterlösung
- Initialisierung von Matlab
% Comand Window löschen
clc
% Alle Figuren schließen
close all
% Alle Variablen im Workspace löschen
clear all
% Schalter um das Lade-GUI zu umgehen
bShortCut=true;
if (bShortCut==true)
% alternative Bilddatei laden
filename = 'Spielfeld_02.png';
pathname = [cd,'\'];
disp(['Alternatives Bild laden: ', fullfile(pathname, filename)])
else
% Interaktiven Dialog starten
[filename, pathname] = ...
uigetfile({'*.png';'*.*'},'File Selector'); % Fokus auf Dateiendung '*.png'
if isequal(filename,0)
disp('User selected Cancel')
else
disp(['User selected', fullfile(pathname, filename)])
end
end
% Bild laden
Originalbild = imread([pathname, filename]);
- Bild in Graustufen Wandeln und die Grüße bestimmen
% Bild in Graustufen wandeln
Grauwertbild = rgb2gray(Originalbild);
% Bildgröße bestimmen
[m,n] = size(Grauwertbild); % z.B. HxB = mxn = XxY 326x485 Pixel^2
- Kanten erkennen
% Kantenerkennung
Kantenbild = edge(Grauwertbild,'sobel');
figure
imshow(Kantenbild)
title('Sobel')
- Linien aus dem Kantenbild im Hough-Rau lesen
% Berechnung der Hough Transformation
[H,theta,rho] = hough(Kantenbild);
% Maxima im Houghraum suchen
P = houghpeaks(H,10,'threshold',ceil(0.4*max(H(:))));
% Linien im Bildraum generieren
lines = houghlines(Kantenbild,theta,rho,P,'FillGap',20,'MinLength',40);
→ zurück zum Hauptartikel: Bild- und Signalverarbeitung mit MATLAB