bonjour,
Je suis une débutante qui aimerais bien transformer ce code Matlab en c:
mersi de m'aider.
% Auffinden der Maximas in einem Vekor zum bestimmen der Eckpunkte eines
% Vektors
%
% Aufruf: Pos_MSeq(Pict_2D)
% Vektor_1D = 1D Vektor des Bildes
% return: Vektor in der Form (x1,y1,x2,y2)
% (entspricht den start und endpunkten der M-Sequenzen)
function pos = Pos_MSeq(Pict_2D)
% Mittelwertbildung in 2 Richtungen
D = size(Pict_2D); %groesse des Bildes in angabe y,x
Pict_2Do = Pict_2D(1:fix(D(1)/2),:); %teilen des bildes in oberen und unteren teil
Pict_2Du = Pict_2D(fix(D(1)/2)+1:D(1),:);
figure; imagesc(Pict_2Do);
X_Mean = mean(Pict_2Do);
Y_Mean = mean(Pict_2Do');
%Bestimmung der Länge des Vektors
vektor_length_x = length(X_Mean);
vektor_length_y = length(Y_Mean);
%Halbieren des Bildes in left und right teil zum einfacheren Finden der
%Maximas
%Teilen des Vektors in left und right ...in jedem Bereich befindet sich
%ein Maximum !
for i = 30:(vektor_length_x/3)
vektor_1D_half_lo(i) = (X_Mean(i));
vektor_1D_half_ro(i) = (X_Mean(vektor_length_x - i));
end
%Teilen des Vektors in oben und unten ...in jedem Bereich befindet sich
%ein Maximum !
for i = 30:(vektor_length_y - 1)
vektor_1D_half_o(i) = (Y_Mean(i));
vektor_1D_half_u(i) = (Y_Mean(vektor_length_y - i));
end
%Finden des Maximums in der jeweiligen Bildhälfte
[max_l,id_id1] = max((vektor_1D_half_lo));
[max_r,id_id2] = max((vektor_1D_half_ro));
[max_o,id_id3] = max((vektor_1D_half_o));
[max_u,id_id4] = max((vektor_1D_half_o));
%Anpassung des Indexes, da es sich um die right Bildhälfte handelt
id_id2 = (vektor_length_x) - id_id2;
%Anpassung des Indexes, da es sich um die right Bildhälfte handelt
%id_id4 = (vektor_length_y) - id_id4;
%Selbe aktion für Pict_2D_u
Pict_2Du = flipud(Pict_2Du);
figure; imagesc(Pict_2Du);
X_Mean = mean(Pict_2Du);
Y_Mean = mean(Pict_2Du');
%figure; plot(X_Mean);
%figure; plot(Y_Mean);
%Bestimmung der Länge des Vektors
vektor_length_x = length(X_Mean);
vektor_length_y = length(Y_Mean);
%Halbieren des Bildes in left und right teil zum einfacheren Finden der
%Maximas
%Teilen des Vektors in left und right ...in jedem Bereich befindet sich
%ein Maximum !
for i = 1:(vektor_length_x/3)
vektor_1D_half_lo(i) = (X_Mean(i));
vektor_1D_half_ro(i) = (X_Mean(vektor_length_x - i));
end
%Teilen des Vektors in oben und unten ...in jedem Bereich befindet sich
%ein Maximum !
for i = 1:(vektor_length_y/3)
vektor_1D_half_o(i) = (Y_Mean(i));
vektor_1D_half_u(i) = (Y_Mean(vektor_length_y - i));
end
%Finden des Maximums in der jeweiligen Bildhälfte
[max_l,id_id5] = max((vektor_1D_half_lo));
[max_r,id_id6] = max((vektor_1D_half_ro));
[max_o,id_id7] = max((vektor_1D_half_o));
[max_u,id_id8] = max((vektor_1D_half_o));
%Anpassung des Indexes, da es sich um die right Bildhälfte handelt
id_id6 = (vektor_length_x) - id_id6;
id_id7 = (D(1)) - id_id7;
%Anpassung des Indexes, da es sich um die untere,right Bildhälfte handelt
%id_id8 = (vektor_length_y) - id_id8;
%HIER IST ETWAS FAUL IM STAATE DAENEMARK!!!!
id_id8 = fix(D(1)) - id_id8;
%Koordinaten:
pos = [id_id1, id_id3, id_id2, id_id4, id_id5, id_id7, id_id6, id_id8];
%sortieren der Positionen
%pos = sort(pos);