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

Label rectangle

 

Jens A.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.04.2016, 10:50     Titel: Label rectangle
  Antworten mit Zitat      
Hallo liebe Nutzer,

ich habe ein Problem bei der Beschriftung meiner Rechtecke.
Ich will mit meinem Script in einem Bild (Aufnahme eines Raumausschnittes mit mehreren Lichtquellen) die vorhandenen Lichtquellen detektieren. Dies Ausgabe soll das Ausgangs-Bild mit den detektierten Objekten darstellen. Die Objekte sollen anhand von Rechtecken umrandet werden. Soweit funktioniert dies auch.
Jedoch bekomme ich leider die BEschriftung der Rechtecke nicht hin. Je nach Anzahl der detektierten Objekte soll jedes Objekt mit: Obj1,Obj2,... auf dem modifizierten Ausgangsbild visualisiert werden.
Ich habe dies schon mit den Funktionen annotation, set, insertObjectAnnotation,... versucht. Ich komme leider nicht auf das gewünschte Ergebnis.

Ich habe meine aktuelle Ausgabe und die Soll-Ausgabe zum besseren Verständnis angehängt.

Hier mein bisheriger Code:
Code:
%% Objekterkennung

%% Bild wird als binäres Bild (in Schwarz(0) und Weis(1)) dargestellt
level = graythresh(M_Ascii);    % Berechnung des Grenzwertes zwischen Vorder- und Hintergrund
M_BW = im2bw(M_Ascii,level);    % Erstellen eines Schwarz(0)-/Weis(1)-Bildes

%% "Objekte die kleiner SE sind werden rausgefiltert
SE = strel('disk',2);   %Erstellt eine "Scheibe" als Struktur-Element mit dem Radius von 2 Pixeln
M_BW_SE = imopen(M_BW,SE);  %Löscht "Objekte die kleiner als SE sind

%% Darstellung nach Umrechnung in SW mit level=grenzwert für Vorder-/Hintergrund
figure(20);
    subplot(1,2,1);
    imshow(M_BW);
        title('M-BW');
        ylabel('Zeile');
        xlabel('Spalte');
        axis on;
        grid on;
       
    subplot(1,2,2);
    imshow(M_BW_SE);
        title('M-BW-SE');
        ylabel('Zeile');
        xlabel('Spalte');
        axis on;
        grid on;

%%
%[M_BW_conncomp] = bwconncomp(M_BW_SE,4);   % bwconncomp ermittelt connected components der Matrix M_BW_SE mit einer mindestanzahl an 4 Pixeln. Jeder component wird ein wert(1,2,..) zugewiesen
[M_BW_conncomp,num_comp] = bwlabel(M_BW_SE,4);  % bwlabel ermittelt connected components der Matrix M_BW_SE mit einer mindestanzahl an 4 Pixeln. Jeder component wird ein wert(1,2,..) zugewiesen

%%
stats = regionprops(M_BW_conncomp,'Eccentricity','Area','BoundingBox');

%%
% Schleife für jedes Objekt(component), ermittelt die Lage der einzelnen
% Objekte und extrahiert diese ein eigenen Bilder
for n = 1:num_comp
    [row,col] = find(M_BW_conncomp == n);   %Liest die Zeile und Reihe jedes Elements eines Objekts aus
    hight = max(row) - min(row) + 1;    %Berechnet die Höhes des Objekts (als Rechteckig gedacht)
    width = max(col) - min(col) + 1;    %Berechnet die Weite des Objekts (als Rechteckig gedacht)
    target = uint8(zeros([hight,width]));   %Erstellt eine Matrix (target) aus "0" mit der Ermittelten Höhe und Weite
    sy = min(col) - 1;
    sx = min(row) - 1;
%     sy = min(col);
%     sx = min(row);
   
    % Schleife, die den Wert jedes Elements (für das jeweilige Objekt) aus
    % M_Ascii ausliest und in die Matrix (target) die der reinen
    % Objektgröße entspricht geschrieben werden
    for i = 1:size(row,1)
        x = row(i,1) - sx;  %Offset für unterschiedliche Matrixgröße
        y = col(i,1) - sy;  %Offset für unterschiedliche Matrixgröße
        target(x,y) = M_Ascii(row(i,1),col(i,1));
    end
    mytitle = strcat('Object Number: ',num2str(n));
    %figure,imshow(target);
    figure,image(target);
        title(mytitle);
       
    figure(20);
        subplot(1,2,2);
        hold on      
%         h = rectangle('Position',[x,y,width,hight],'LineWidth',2);
        h = rectangle('Position',stats(n).BoundingBox,'LineWidth',2);
        set(h,'EdgeColor',[0 0.75 0]);          
%         str = ('Objekt');
%         annotation('textbox',[.5,.5,.1,.1],'String',str);
             
        hold off
end


Soll.png
 Beschreibung:

Download
 Dateiname:  Soll.png
 Dateigröße:  514.62 KB
 Heruntergeladen:  307 mal
Ausgabe.PNG
 Beschreibung:

Download
 Dateiname:  Ausgabe.PNG
 Dateigröße:  13.14 KB
 Heruntergeladen:  268 mal


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.