WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Hilfe beim Verstehen des Programmes

 

Anfäner
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 16.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2012, 10:31     Titel: Hilfe beim Verstehen des Programmes
  Antworten mit Zitat      
Hi zusammen,

ich habe ein Programmcode dies muss ich analysieren, habe schon einiges verstanden, wollte aber etwas detaillierte wissen was es macht, könnte da mir bitte jemand in einigen Sätzen sagen was es macht?

Code:

% Remove all object containing fewer than 1 pixels
bw = bwareaopen(d,1);  
%  ---->  Was macht das bwareaopen(d,1)?


%  fill a gap in the pen's cap
se = strel('disk',1);        
%  ---->  Was macht das strel('disk',1)?


bw = imclose(bw,se);        
 % ---->  Was macht das imclose(bw,se)?


%Trace region boundaries in binary image
[B,L] = bwboundaries(bw,'holes');  
% ---->  Was macht das bwboundaries(bw,holes)


%Measure properties of image regions
stats = regionprops(L,'Area','Centroid');  
% ---->  Was macht das regionprops(L,'Area','Centroid')


%Threshold to consider as circle
threshold = 0.9;


% loop over the boundaries  
for k = 1:length(B)   % ---->  Was bewirkt die schleife step to step
   
    % obtain (X,Y) boundary coordinates corresponding to label 'k'
    boundary = B{k};
   
    % compute a simple estimate of the object's perimeter
    delta_sq = diff(boundary).^2;
    perimeter = sum(sqrt(sum(delta_sq,2)));
   
    % obtain the area calculation corresponding to label 'k'
    area = stats(k).Area;
    % compute the roundness metric
    metric = 4*pi*area/perimeter^2;
   
    % mark objects above the threshold with a black circle
    if metric > threshold
        centroid = stats(k).Centroid;
    end
   

    if(k==2)      %  ---->  Was bedeutet / was macht es hier und warum 2
        area1 = stats(k).Area;
        r1 = sqrt(area1/pi);
        for a = 1:size(boundary(:,1))
            y1(a) = boundary(a,2);
            x1(a) = boundary(a,1);
        end
       
       
    end
   
if(k==3)      %  ---->  Was bedeutet / was macht es hier und warum 3
         area2 = stats(k).Area;
         r2 = sqrt((area1 + area2)/pi);
        for a = 1:size(boundary(:,2))
            y2(a) = boundary(a,2);
            x2(a) = boundary(a,1);
        end
       
       
    end
   
end

%Mean radius
radius = (r1 + r2)/2;

yr(1) = centroid(2) - radius;      % ---->  Was macht es hier?
yr(2) = centroid(2);
xr(1) = centroid(1);
xr(2) = centroid(1);


%Radius in metric unit
r = radius*(convert);
r1 = r1*(convert);
r2 = r2*(convert);
 


Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 09.10.2012, 11:42     Titel:
  Antworten mit Zitat      
Um mit der ersten Zeile anzufangen:

Code:

% Remove all object containing fewer than 1 pixels
bw = bwareaopen(d,1);  
%  ---->  Was macht das bwareaopen(d,1)?
 


Was gibt es denn hier noch Unklares? "Remove all object containing fewer than 1 pixels" könnte ich nicht anders ausdrücken.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Anfäner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 16.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2012, 09:46     Titel:
  Antworten mit Zitat      
Hi Andreas,

danke erstmal für deine Antwort, sicherlich ist es mir in der ersten Zeile bekannt das es "Entfernen alle Objekte mit weniger als 1 Pixel" bedeutet, war mein Fehler hier die Frage zu stellen, aber bei den anderen Zeilen ist es leider nicht der Fall das es so deutlich zu verstehen ist.
Deswegen wäre es super eventuell bei den nächsten Zeilen mir behilflich zu sein.


Mfg
Hasan
Private Nachricht senden Benutzer-Profile anzeigen
 
Trimax
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 54
Anmeldedatum: 09.04.09
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 10.10.2012, 10:41     Titel:
  Antworten mit Zitat      
Hallo,

dann mache ich mal mit der nächsten Zeile weiter

Code:
%  fill a gap in the pen's cap
se = strel('disk',1);        
%  ---->  Was macht das strel('disk',1)?


Dürfte auch selbsterklärend sein Smile

Im ernst: Vielleicht ist es einfacher, wenn du die Zeilen, die du nicht verstehst irgendwie markierst Wink Sonst wird das hier sehr lange dauern!

Grüße
Trimax
Private Nachricht senden Benutzer-Profile anzeigen
 
Anfäner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 16.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2012, 15:04     Titel:
  Antworten mit Zitat      
Also ich habe jetzt direkt rausgeschrieben was ich nicht so ganz versthe, hoffe jetzt wird es verständlicher Very Happy



Code:

%  fill a gap in the pen's cap
se = strel('disk',1);        
%  ---->  Was heist eine Lücke in der pen kappe?


bw = imclose(bw,se);        
 % ---->  Was macht das imclose(bw,se)?


%Trace region boundaries in binary image
[B,L] = bwboundaries(bw,'holes');  
% ----> Trace Bereichsgrenzen im Binärbild, was heist es?


%Measure properties of image regions
stats = regionprops(L,'Area','Centroid');  
% ---->  Was heißt Eigenschaften von Bildbereichen


%Threshold to consider as circle    % ---> Warum hier threshold = 0.9?
threshold = 0.9;


% loop over the boundaries  
for k = 1:length(B)  

   
    % obtain (X,Y) boundary coordinates corresponding to label 'k'
    boundary = B{k};
   
    % compute a simple estimate of the object's perimeter
    delta_sq = diff(boundary).^2;
    perimeter = sum(sqrt(sum(delta_sq,2)));
   
    % obtain the area calculation corresponding to label 'k'
    area = stats(k).Area;
    % compute the roundness metric
    metric = 4*pi*area/perimeter^2;
   
    % mark objects above the threshold with a black circle
    if metric > threshold
        centroid = stats(k).Centroid;
    end
   

    if(k==2)      %  ---->  Was macht die Schleife hier und warum 2        
        area1 = stats(k).Area;
        r1 = sqrt(area1/pi);
        for a = 1:size(boundary(:,1))
            y1(a) = boundary(a,2);
            x1(a) = boundary(a,1);
        end
       
       
    end
   
if(k==3)      %  ---->  Was macht die Schleife hier und warum 3
         area2 = stats(k).Area;
         r2 = sqrt((area1 + area2)/pi);
        for a = 1:size(boundary(:,2))
            y2(a) = boundary(a,2);
            x2(a) = boundary(a,1);
        end
       
       
    end
   
end



yr(1) = centroid(2) - radius;      % ---->  Was macht es hier?
 




Mfg
Hasan
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 11.10.2012, 08:00     Titel:
  Antworten mit Zitat      
Zu STREL und IMCLOSE. Ich denke in der Doku von IMCLOSE kommt es gut raus. Wenn man mehere Obejkte hat die nah aneinanderliegen und sich überlagern, dann gib es Anwendungen wo man z. B: Gesamtumfang oder Gesamtfläche bestimmen möchten. Da stören manchmal die Lücken zwischen den Objeckten. IMCLOSE schlliesst diese Lücken aus und mit STREL definiert man Form und Grösse des Musters.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Anfäner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 16.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.10.2012, 10:36     Titel:
  Antworten mit Zitat      
hi andreas,

danke vielmals besser könnte es nicht erklärt werden Very Happy . Könntest du mir auch sagen warum threshold = 0.9?


beste Grüße
Hasan
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 16.10.2012, 14:18     Titel:
  Antworten mit Zitat      
So was hängt immer vom Bild, bzw. der Gruppe von Bildern ab -> Nein.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.