Verfasst am: 26.11.2013, 14:46
Titel: Image Aquisition: Bildausschnitt wird zu Graustufenbild
Hallo
ich habe ein kleines Problem mit meinem Matlab Script. Es soll Münzen unterscheiden können. Ds geht auch soweit nur bei gleich großen habe ich ein Problem. Ich versuche anhand der Sättigung die Münzen zu unterscheiden.
Dazu will ich einen Ausschnitt aus dem Gesamtbild machen und davon das HSV-Bild erstellen. Nur wird der Ausschnitt aus einem Farbbild komischer weise in ein Graustufenbild ungewandelt. Was ich mir absolut nicht erklären kann.
Probiere schon eine weile daran herum das der Ausschnitt farbig wird aber ich finde den Fehler nicht.
Hat jemand von euch eine Idee?
Code:
closeall; % Hardreset clearall;
clc;
% v Unterhalb für "Offline-Modus" Auskommentieren
hwinfo = imaqhwinfo('winvideo');
device = hwinfo.DeviceInfo(1);
device.DefaultFormat;
device.SupportedFormats;
vid = videoinput('winvideo',1,'RGB24_1024x768');
src = getselectedsource(vid);
mitte = STATS(k).Centroid; % Mittelpunkt finden
X = mitte(1)-30; % Position für Text
Y = mitte(2); % Position für Text
boundary = B{k}; % Umrandet die objekte plot(boundary(:,2),boundary(:,1),'r','Linewidth',2)% Zeichnet die Umrandung
major = STATS(k).MajorAxisLength% Maximaler Durchmesser
minor = STATS(k).MinorAxisLength% Minimaler Durchmesser area = STATS(k).Area; % Flächeninhalt
area_calc = pi*(((major+minor)/4)^2);% Berechnet den Flächeninhalt (ohne Löcher)
if(minor > major*0.95 || major < minor*1.05)% Wenn min. Durchmesser viel vom max. Durchmesser abweicht, handelt es sich trotz gegebenenfalls identischem Flächeninhalt NICHT um eine Münze if(area > area_calc*0.90 && area < area_calc*1.10)% Wenn die berechnete Fläche, von der tatsächlichen Fläche abweicht, ist ein Loch in der "Münze" if(area>56000 && area<65000) text(X,Y,'2 Euro','color',[0,0,1],'fontsize',18,'FontWeight','bold') elseif(area>51000 && area<56000) if(S>65 && S<70) text(X,Y,'50 Cent','color',[0,0,1],'fontsize',18,'FontWeight','bold') elseif(S>70 && S<73) text(X,Y,'1 Franc','color',[0,0,1],'fontsize',18,'FontWeight','bold') else text(X,Y,'Fehler','color',[0,0,1],'fontsize',18,'FontWeight','bold') end elseif(area>49000 && area<51000) text(X,Y,'1 Euro','color',[0,0,1],'fontsize',18,'FontWeight','bold') elseif(area>41500 && area<49000) text(X,Y,'20 Cent','color',[0,0,1],'fontsize',18,'FontWeight','bold') elseif(area>37000 && area<41500) text(X,Y,'5 Cent','color',[0,0,1],'fontsize',18,'FontWeight','bold') elseif(area>32000 && area<37000) text(X,Y,'10 Cent','color',[0,0,1],'fontsize',18,'FontWeight','bold') elseif(area>25000 && area<32000) text(X,Y,'2 Cent','color',[0,0,1],'fontsize',18,'FontWeight','bold') elseif(area<25000 && area>15000) text(X,Y,'1 Cent','color',[0,0,1],'fontsize',18,'FontWeight','bold') else text(X-100,Y,'Keine bekannte Münze','color',[0,0,1],'fontsize',18,'FontWeight','bold') end else text(X-80,Y,'Keine Münze- Loch','color',[0,0,1],'fontsize',18,'FontWeight','bold') end else text(X-100,Y,'Keine Münze- unrund','color',[0,0,1],'fontsize',18,'FontWeight','bold') end
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.