Min/Max-Werte ermitteln

~DeD~

Lt. Commander
Registriert
Juni 2006
Beiträge
1.725
hi, folgendes problem:

ich bin gerade dabei etwas in matlab zu programmieren.
clear all
[name, path] = uigetfile('*.jpg', 'Select Data-File');
bildname = [path, name];
B = imread(bildname);
[n m l] = size(B);
I=B(:,:,1);
G = mat2gray(I); %Intensität auf 0-1 setzen
figure(3)
imshow(G)
%Linien setzen
[a d] = ginput(2);%Anzahl der eingaben in klammern
d(2,1)= d(1,1);
line(a,d)

Y=[a d];
X=size(G);
z=(X(1,1)-Y(1,2))/50;
k=floor(z);
M(:,1)=d;
hold on
for i=1:k
d=d+[50;50];
M(:,i+1)=d;
line(a,d)
end

j=ceil(sqrt(k+1));
figure(4)
for i=1:k+1
C=[M(1,i);M(2,i)];
subplot(j-1,j,i), plot((improfile(G,a,C)))
[max,min] = findpeaks(improfile(G,a,C),'minpeakdistance',30);
hold on;
N = [max,min]

end

ein bild wird eingelesen bissel gewandelt und am ende wird die intensität ermittelt und geplottet. was ich jetzt seit mitlerweile ner woche nicht hinbekomme ist es mir aus den intensitätsplots die min/max-werte heraus zuziehen und in ne matrix zu schreiben. in dem markierten teil habe ich eigentlich vor, die werte zu finden, wobei ein mindestabstand von 30 pixel dazwischen sein soll.
die bilder werden folgendermassen aussehen
interferenz1.jpg
in den intensitätskurven hat man dann links und rechts des gitters nur murks, das muss ich auch noch wegschneiden, was ich ja mit den 30 pixeln abstand bezwecke.

die werte sind alle zwischen 0 und 1. das bild ist ein idealbild, die echten sind noch schlimmer :D

so wie ich es habe, nimmt er aber nur die maximalwerte und schreibt mir die position dazu -.-

kennt sich da wer aus und kann mir weiterhelfen?
 
Zuletzt bearbeitet:
ach, ich habe schon so viele anmeldungen überall, dass ich versuche neue zu vermeiden.

mit dem kommilitonen sind wir grad dabei.

for i=1:k+1
C=[M(1,i);M(2,i)];
profile = improfile(G,a,C);
subplot(j-1,j,i), plot(profile)
[max,~] = findpeaks(profile,'minpeakdistance',30);
[min,~] = findpeaks(profile*-1,'minpeakdistance',30);
hold on;
if size(max)>=size(min)+1
for ii=1:size(min)
M(i)=(max(ii)-min(ii))/(max(ii)+min(ii));
M(i)=(max-min)/(max+min)
end


die schleife wird immer komplizierter :D
 
Zurück
Oben