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

Image Acquisition T.: Farbe & Lage von Objekten erkennen

 

Becks_jn
Forum-Anfänger

Forum-Anfänger


Beiträge: 46
Anmeldedatum: 02.09.11
Wohnort: ---
Version: R2018
     Beitrag Verfasst am: 02.04.2013, 10:46     Titel: Image Acquisition T.: Farbe & Lage von Objekten erkennen
  Antworten mit Zitat      
Hallo Liebe Matlab-User,

ich habe ein Problem:

Ich möchte gerne Duplo-Steine mit Matlab erkennen.
Und zwar habe ich braue und gelbe Steine. (Siehe Foto)
Ich habe diese Steine auch schon mit Matlab erkennen können,
meinen Quellcode füge ich bei.

Doch leider bekomme ich nicht hin, dass er mir anzeigt, welche Farbe jetzt der Stein hat (blau oder gelb). Und dann würde ich noch gerne die Pixelzahl in x und y haben, damit ich weiß wo genau der Stein ist.

Ich hoffe ihr könnt mir helfen.

Lg,
Becks_jn

Code:

%%
RGB = imread('Foto.jpg');
imshow(RGB);
%%
I = rgb2gray(RGB);
threshold = graythresh(I-100);
bw = im2bw(I,threshold);
imshow(bw)
%%
% remove all object containing fewer than 30 pixels
bw = bwareaopen(bw,30000);
%
% fill a gap in the pen's cap
se = strel('disk',2);
bw = imclose(bw,se);
%
% fill any holes, so that regionprops can be used to estimate
% the area enclosed by each of the boundaries
bw = imfill(bw,'holes');
%
imshow(bw)
%%
[B,L] = bwboundaries(bw,'noholes');
% Display the label matrix and draw each boundary
imshow(label2rgb(L, @jet, [.5 .5 .5]))
hold on
for k = 1:length(B)
  boundary = B{k};
  plot(boundary(:,2), boundary(:,1), 'w', 'LineWidth', 2)
end
%%
stats = regionprops(L,'Area','Centroid');
threshold = 0.94;
% 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;
  % display the results
  metric_string = sprintf('%2.2f',metric);
  % mark objects above the threshold with a black circle
  if metric > threshold
    centroid = stats(k).Centroid;
    plot(centroid(1),centroid(2),'ko');
  end
  text(boundary(1,2)-35,boundary(1,1)+13,metric_string,'Color','y',...
       'FontSize',14,'FontWeight','bold');
end
title(['Metrics closer to 1 indicate that ',...
       'the object is approximately round']);
 


Foto.JPG
 Beschreibung:

Download
 Dateiname:  Foto.JPG
 Dateigröße:  1.68 MB
 Heruntergeladen:  861 mal
Private Nachricht senden Benutzer-Profile anzeigen


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 - 2024 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.