Leider gibt es keinen einzigen Beitrag über Richtungscodes.
Ich habe keine Idee wie ich bei dieser Aufgabe vorgehen soll.
Sie lautet folgendermaßen:
Bestimmen Sie mit einem MATLAB-Programm den Richtungscode für den blauen Kreis. Skizzieren Sie den ermittelten Umfang (Kreis) in das Bild rot ein.
Ich füge noch das Bild mit dem blauen Kreis ein und bitte euch freundlich um Hilfe.
Gehe bitte nicht davon aus, dass alle Leute wissen, was mit dem was du suchst, gemeint ist. Beschreibe also bitte erstmal, was überhaupt ein Richtungscode ist.
Was hast du ansonsten schon versucht? Wo genau sind die Probleme? Code?
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
hat sich schon erledigt...ich habe die aufgabe so gut wie gelöst...naja wer sich damit beschäftigt, der wird schon wissen, worum es hier geht...für die jenigen, die sich mit einer solchen Aufgabe beschäftigen werden, füge ich noch meinem Matlab-Skript hinzu...
Code:
Bild= im2bw(imread('blauer_Kreis.bmp'));%Das Farbbild eingelesen und in Schwarz-Weiß konvertiert
%Für die Bestimmung des Richtungscodes sowie die Umrandung des Kreises muss
%das Bild um Zeilen erweitert werden. Dazu wird der Matlab-Befehl
%"vertcat" benötigt, der die Matrix Bild (das Bild) ober- und unterhalb des
%Kreises um 30 Zeilen mit Einsen erweitert.
y=ones(30,320);%erzeugt eine 30x320-Matrix, die der Matrix Bild hinzugefügt werden soll
k=ones(30,320);%------------------------" "------------------------------------
x=vertcat(y,Bild);%fügt y in Bild ein
z=vertcat(x,k);%fügt x in k ein
% find start point [r,c] = find(z);
start = [r(31),c(140)];
% trace boundary
B = bwtraceboundary(z,start,'NW',8,inf,'counterclockwise');
% convert to chain code
code = [3,2,1;4,nan,0;5,6,7]; % Lookup table
B = diff(B)+2;
idx = sub2ind(size(code),B(:,1),B(:,2));
C = code(idx); %gesuchte Richungscode
[B,L,N,A] = bwboundaries(z); %Kreis rot umranden!!
figure; imshow(z); hold on;
for k=1:length(B),
if(~sum(A(k,:)))
boundary = B{k};
plot(boundary(:,2),...
boundary(:,1),'w','LineWidth',2);% for l=find(A(:,k))'
boundary = B{l};
plot(boundary(:,2),...
boundary(:,1),'r','LineWidth',2);
end end end
ungerade = find(mod(C,2) ~= 0);
gerade = find(mod(C,2) == 0);
AnzahlUngerade=0;
for i=1:1:size(C) if C(i)~=mod(C,2) %Finde die ungeraden Zahlen
AnzahlUngerade=AnzahlUngerade+1;
end end
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.