Spielfeldmarkierungen: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
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

  1. Initialisierung von Matlab
% Comand Window löschen
clc
% Alle Figuren schließen
close all
% Alle Variablen im Workspace löschen
clear all
  1. drei Laden Sie das Bild des Spielfeldes über einen interaktiven Dialog.
  2. Bild des Spielfeldes mit einer Deckenkamera aufgenommen
% 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]);
  1. 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
  1. Kanten erkennen
% Kantenerkennung
Kantenbild = edge(Grauwertbild,'sobel');
figure
imshow(Kantenbild)
title('Sobel')
  1. 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