Verfasst am: 01.12.2009, 19:14
Titel: Rückgabewert wird überschrieben! Problem mit for?
Hallo Leute
meine Funktion hat einen Fehler und der liegt 100% an der for schleife!
Ich gehe hier ein Bild durch in dem ich Stück für Stück per Imcrop einen Bildausschnitt betrachte. In diesem Bildausschnitt sollen die Pixel gezählt werden und falls es mehr als 20 pixel sind soll mein Rückgabewert Pic um 1 erhöht werden. Nun gibt die Funktion mir aber immer 0 zurück und ich weiß nicht wo der Fehler liegt! Könntet ihr mir vlt sagen wo der Fehler liegt? Kann es sein das Pic immer wieder überschrieben wird?
Code:
function Pic = MyPic(Dilatepic,m,n)
%
%m,n sind die länge bzw. breite des Bildes
Pic=0
MaskeX=70;
MaskeY=70;
I=imcrop(Dilatepic,[x,y,MaskeX,MaskeY]);
[row,col]=find(I);
Anzahl=[col(:)+x-1,row(:)+y-1];
AnzahlPix=size(Anzahl,1);
%wenn mehr als 20 dann zähle hoch
if(AnzahlPix>20)
Pic=Pic+1;
end end end
I=ones(70);
[row,col]=find(I);
Anzahl=[col(:)+x-1,row(:)+y-1];
AnzahlPix=size(Anzahl,1);
%wenn mehr als 20 dann zähle hoch
if(AnzahlPix>20)
Pic=Pic+1;
end end end
Habe statt der Funktion einfach ones(70) genommen. Dann funktionert alles, m und n müssen natürlich größer als 70 sein. Probier mal den Debugger und/oder die erste Zeile auskommentieren und Testwerte zu benutzen, wie ich das oben schon mal gemacht habe. Vielleicht sind die Werte in dem Bild auch nicht genau 1 sondern etwas weniger?
I=Dilatepic(x:x+MaskeX,y:y+MaskeY);
[row,col]=find(I);
Anzahl=[col(:)+x-1,row(:)+y-1];
AnzahlPix=size(Anzahl,1);
%wenn mehr als 20 dann zähle hoch
if(AnzahlPix>20)
Pic=Pic+1;
end end end
Ich habe jetzt deine Imcropersetzung probiert. Das Ergebnis:
Mein Bild ist 360x640 Groß Sprich 230400 Pixel
als Rückgabewert Pic bekomme ich 13487 zurück sind etwa 5% müsste doch hin kommen oder was meinst? habe mal das bild als bmp hochgeladen!
Ich weis nicht warum aber matlab speichert mir das Bild mit einem Weißen rand echt komisch! also denk einfach der weiße rand wäre nicht da
Dann liegts anscheinend doch an der cropimage funktion aber soweit ich das gelesen habe hast du die schon richtig verwendet. Spricht erstmal nichts dagegen die andere Variante zu benutzen aber es wäre natürlich auch schön rauszufinden. Warum cropimage nicht so funktioniert wie es sollte.
ahaa wer sucht der findet! cat macht das ))
_________________
MMAAAAAATTTTTLLAAAAABBBB
Einstellungen und Berechtigungen
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.