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

Red Obj. finden u. rückgabewert falls rotes Objekt gefunden

 

Uchiha
Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 20.08.14
Wohnort: warstein
Version: ---
     Beitrag Verfasst am: 08.12.2014, 02:10     Titel: Red Obj. finden u. rückgabewert falls rotes Objekt gefunden
  Antworten mit Zitat      
Hey ho.

ich habe hier diesen Algorithmus der mir alles rote in einem Bild anzeigt und den rest einfach schwarz macht.

wie im anhang das bild ( da zeigt er mir mein rotes feuerzeug bzw die roten elemente daraus.) vll noch ein bisschen unsauber aber darum gehts nicht. Ich bin wie immer gesagt ein matlab newbie und deswegen komm ich auch nun nicht weiter.

ich brauche nun( wie schonmal bei einem algorithmus ) einen RÜCKGABEWERT wenn er was rotes gefunden hat. ich habe sch0n mit allen variablen aus diesem c0de versuch was zu machen aber ich bek0mme es nich hin =(

Code:
obj = videoinput('winvideo', 1);
   pause(2);                      
   a = getsnapshot(obj);        
                     
   subplot ( 3,4,1);
   imshow(a);
  % Konvertieren zu HSV
   hsvImage = rgb2hsv(a);
   % h,s und v extrahieren und individuell anzeigen
   hImage = hsvImage(:,:,1);
   sImage = hsvImage(:,:,2);
   vImage = hsvImage(:,:,3);
   
        % Histogramm H
        hHuePlot = subplot(3, 4, 6);
   [hueCounts, hueBinValues] = imhist(hImage);
   maxCountHue = max(hueCounts);
   bar(hueBinValues, hueCounts, 'r');
   grid on;
   xlabel('Hue Value');
   ylabel('Pixel Count')
   
    % histogramm S
   
        hSaturationPlot = subplot(3, 4, 7);
   [saturationCounts, saturationBinValues] = imhist(sImage);
   maxCountSaturation = max(saturationCounts);
   bar(saturationBinValues, saturationCounts, 'g', 'BarWidth', 0.95);
   grid on;
   xlabel('Saturation Value');
   ylabel('Pixel Count');
   
    %histogramm V
   hValuePlot = subplot(3, 4, 8);
   [valueCounts, valueBinValues] = imhist(vImage);
   maxCountValue = max(valueCounts);
   bar(valueBinValues, valueCounts, 'b');
   grid on;
   xlabel('Value Value');
   ylabel('Pixel Count');
   
    maxCount = max([maxCountHue,  maxCountSaturation, maxCountValue]);
   axis([hHuePlot hSaturationPlot hValuePlot], [0 1 0 maxCount]);
   
   
   
    % Werte  um rote 0bjekte zu erkennen
   hueThresholdLow = 0.05;
   hueThresholdHigh = 0.97;  
   saturationThresholdLow = 0.3;    
   saturationThresholdHigh = 1.0;
   valueThresholdLow = 0.1;    
   valueThresholdHigh = 1.0;
   
   
    hueMask = (hImage <= hueThresholdLow) | (hImage >= hueThresholdHigh);
   saturationMask = (sImage >= saturationThresholdLow) & (sImage <= saturationThresholdHigh);
   valueMask = (vImage >= valueThresholdLow) & (vImage <= valueThresholdHigh);
   
   
       
    redObjectsMask = hueMask & saturationMask & valueMask;
   
    yellowObjectsMask = uint8(hueMask & saturationMask & valueMask);
   subplot(3, 4, 9);
   imshow(yellowObjectsMask, []);
   
    if(hueThresholdLow == 0.05 && hueThresholdHigh == 0.97 && saturationThresholdLow == 0.3 )
       
        d=1;    % funktioniert so nich , war nur einer meiner versuche
       
    end
   
        figure;  
   set(gcf, 'Position', get(0, 'ScreenSize'));
   
    yellowObjectsMask = cast(yellowObjectsMask, class(a));
   
    maskedImageR = yellowObjectsMask .* a(:,:,1);
   maskedImageG = yellowObjectsMask .* a(:,:,2);
   maskedImageB = yellowObjectsMask .* a(:,:,3);
   
   
   
   .
   maskedRGBImage = cat(3, maskedImageR, maskedImageG, maskedImageB);
   
   figure;
   imshow(maskedRGBImage);
   
   
   
   
   
  end


wisst ihr welche variable ich nutzen könnte bzw was ich hinzufuegen könnte damit ich einen rückgabewert bekomm ?

please help

kkk.png
 Beschreibung:

Download
 Dateiname:  kkk.png
 Dateigröße:  54.59 KB
 Heruntergeladen:  482 mal
Private Nachricht senden Benutzer-Profile anzeigen


Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 08.12.2014, 10:39     Titel:
  Antworten mit Zitat      
Moin,

irgendwie finde ich deinen Code sehr "mühsam" um ein rotes Objekt zu detektieren. Wenn ich das Bild in ycbcr wandel, dann erwarte ich im Chromakanal-Rot hohe Werte, also mind. über 240. Auf diese Werte kann man einen Rückgabewert festlegen. Oder benötigst du die imhist-Werte für andere Zwecke?

Grüße - Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
Uchiha
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 20.08.14
Wohnort: warstein
Version: ---
     Beitrag Verfasst am: 08.12.2014, 12:25     Titel:
  Antworten mit Zitat      
Ja genau sowas suche ich . Ich denke, das der code so muehselig ist liegt daran das ich wirklich noch ziemlich unerfahren bin. ich dachte mir auch die ganze zeit, das es doch noch leichtere wege geben muesste um ein rotes objekt zu finden.

nein die histogramme brauche ich eigentlich nicht. ich habe mir den wissensstand so wie er jetzt da steht ergoogelt und ehrlich gesagt selber keine bessere variante gefunden. ich hatte halt versucht aus den histogramm werten irgendeine loesung zu finden aber das geht glaub ich nicht.

Haben sie vll irgendeinen link oder wissen Sie ein tutorial mit einer einfacheren loesung ? also vll mit einem generell einfacheren loesungsweg wie Sie ihn angesprochen haben ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 08.12.2014, 12:40     Titel:
  Antworten mit Zitat      
Versuche mal folgendes:

Code:
a1=rgb2ycbcr(a);
y=a1(:,:,1);
cb=a1(:,:,2);
cr=a1(:,:,3);   % Chroma Rot
ind=(cr<240); % Schwelle bei Dichte 240 (an Originalbild anpassen)
cr(ind)=0;   % alles unter 240 wird zu schwarz
figure; imshow(cr)  % zeigt nur noch Rot
if cr(cr>240)
display 'Rot gefunden'
end
 

Die absoluten werte können aus "cr" gelesen werden
Private Nachricht senden Benutzer-Profile anzeigen
 
Uchiha
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 20.08.14
Wohnort: warstein
Version: ---
     Beitrag Verfasst am: 09.12.2014, 23:04     Titel:
  Antworten mit Zitat      
Hallo Hubertus. Irgendwie klappt das nicht ganz. Mein bild ist ganz schwarz.

wenn ich

Code:
cr(ind)=0;   % alles unter 240 wird zu schwarz
 
rauslasse gibt er mir dieses schwarz weiss bild. (anhang)

wenn ich mir cr zurueck geben lasse bekomme eine riesen matrix. (das is nur ein ausschnitt)

Code:
121  121  120  120  119  119  119  119  118  118  119  119  120  120  120  120  121  121  120  120  120  120  118  118  118  118
  121  121  120  120  119  119  119  119  118  118  118  118  119  119  120  120  120  120  120  120  119  119  118  118  119  119
  120  120  120  120  118  118  119  119  118  118  118  118  118  118  119  119  119  119  120  120  119  119  118  118  119  119
  120  120  119  119  118  118  119  119  118  118  118  118  118  118  118  118  119  119  119  119  119  119  118  118  119  119
  120  120  119  119  118  118  119  119  119  119  119  119  119  119  119  119  119  119  119  119  118  118  118  118  119  119
  120  120  118  118  118  118  119  119  119  119  119  119  119  119  119  119  119  119  119  119  118  118  118  118  119  119
  120  120  118  118  118  118  119  119  119  119  120  120  120  120  120  120  120  120  119  119  118  118  118  118  119  119
  119  119  118  118  118  118  120  120  120  120  120  120  120  120  120  120  119  119  118  118  118  118  119  119  120  120
  119  119  118  118  119  119  120  120  120  120  120  120  120  120  119  119  119  119  118  118  118  118  119  119  119  119
  120  120  119  119  120  120  120  120  121  121  120  120  120  120  119  119  119  119  118  118  118  118  119  119  119  119
  120  120  120  120  120  120  121  121  121  121  121  121  120  120  120  120  119  119  118  118  118  118  119  119  119  119
  120  120  121  121  122  122  123  123  123  123  122  122  121  121  121  121  120  120  118  118  118  118  118  118  119  119
  119  119  122  122  122  122  122  122  123  123  123  123  121  121  120  120  120  120  118  118  118  118  118  118  119  119
  119  119  121  121  121  121  121  121  121  121  121  121  120  120  119  119  118  118  118  118  118  118  118  118  119  119
  119  119  120  120  121  121  121  121  121  121  120  120  119  119  118  118  117  117  118  118  118  118  118  118  118  118
  119  119  120  120  120  120  120  120  120  120  120  120  119  119  118  118  118  118  117  117  118  118  119  119  120  120
  118  118  120  120  120  120  120  120  120  120  120  120  119  119  118  118  118  118  118  118  118  118  119  119  120  120
  117  117  119  119  119  119  120  120  120  120  120  120  119  119  119  119  118  118  118  118  118  118  119  119  120  120
  115  115  118  118  118  118  119  119  119  119  119  119  119  119  118  118  118  118  118  118  118  118  118  118  120  120
  114  114  116  116  117  117  117  117  118  118  119  119  119  119  118  118  118  118  119  119  118  118  118  118  119  119
  114  114  116  116  116  116  116  116  117  117  118  118  118  118  118  118  118  118  118  118  118  118  118  118  118  118
  114  114  114  114  114  114  115  115  116  116  117  117  117  117  118  118  118  118  120  120  118  118  117  117  118  118
  114  114  112  112  113  113  114  114  115  115  116  116  117  117  117  117  117  117  120  120  118  118  117  117  118  118
  115  115  116  116  115  115  115  115  115  115  115  115  117  117  119  119  120  120  119  119  119  119  119  119  119  119
  114  114  116  116  115  115  115  115  116  116  116  116  117  117  119  119  119  119  119  119  119  119  119  119  119  119
  114  114  114  114  115  115  116  116  117  117  118  118  119  119  119  119  119  119  117  117  117  117  118  118  118  118
  114  114  114  114  115  115  117  117  119  119  120  120  120  120  119  119  118  118  116  116  117  117  117  117  117  117
  115  115  115  115  116  116  118  118  120  120  120  120  120  120  119  119  118  118  116  116  116  116  116  116  116  116
  117  117  117  117  118  118  119  119  120  120  121  121  120  120  119  119  118  118  117  117  117  117  116  116  116  116
  119  119  120  120  120  120  120  120  120  120  120  120  120  120  119  119  119  119  118  118  117  117  116  116  116  116
  120  120  120  120  121  121  120  120  120  120  120  120  119  119  119  119  119  119  119  119  118  118  117  117  116  116
  121  121  120  120  119  119  119  119  119  119  119  119  119  119  120  120  120  120  118  118  118  118  119  119  119  119
  120  120  120  120  119  119  119  119  119  119  119  119  119  119  120  120  120  120  118  118  119  119  119  119  119  119
  120  120  120  120  119  119  119  119  119  119  119  119  120  120  120  120  120  120  119  119  119  119  119  119  119  119
  119  119  120  120  120  120  120  120  120  120  120  120  120  120  120  120  120  120  120  120  120  120  119  119  118  118
  119  119  120  120  120  120  120  120  120  120  120  120  120  120  120  120  120  120  120  120  119  119  118  118  118  118
  119  119  120  120  120  120  120  120  120  120  120  120  120  120  120  120  119  119  119  119  118  118  117  117  116  116
  120  120  120  120  120  120  120  120  120  120  120  120  120  120  119  119  119  119  118  118  117  117  116  116  115  115
  120  120  120  120  120  120  120  120  120  120  120  120  120  120  119  119  119  119  118  118  116  116  115  115  114  114
  120  120  119  119  119  119  120  120  121  121  121  121  121  121  121  121  121  121  119  119  118  118  119  119  119  119
  119  119  119  119  119  119  120  120  120  120  121  121  121  121  121  121  120  120  118  118  119  119  119  119  119  119
  117  117  119  119  119  119  120  120  120  120  120  120  120  120  120  120  120  120  118  118  119  119  118  118  118  118
  117  117  119  119  119  119  120  120  120  120  120  120  120  120  120  120  120  120  118  118  118  118  118  118  117  117
  118  118  119  119  119  119  120  120  120  120  120  120  120  120  120  120  120  120  118  118  118  118  118  118  117  117
  119  119  119  119  119  119  120  120  120  120  120  120  120  120  120  120  119  119  119  119  118  118  118  118  117  117
  118  118  119  119  119  119  120  120  120  120  120  120  120  120  119  119  119  119  119  119  119  119  118  118  117  117
  118  118  119  119  119  119  120  120  120  120  120  120  120  120  119  119  119  119  120  120  119  119  118  118  117  117
  120  120  119  119  119  119  118  118  118  118  118  118  119  119  120  120  120  120  119  119  119  119  119  119  118  118
  121  121  119  119  118  118  118  118  117  117  117  117  118  118  119  119  120  120  119  119  119  119  118  118  118  118
  120  120  119  119  118  118  117  117  117  117  117  117  118  118  119  119  119  119  119  119  118  118  118  118  117  117
  121  121  120  120  119  119  118  118  118  118  118  118  118  118  119  119  119  119  118  118  118  118  117  117  117  117
  120  120  121  121  120  120  120  120  119  119  119  119  119  119  120  120  120  120  118  118  118  118  117  117  116  116
  120  120  122  122  121  121  120  120  120  120  120  120  120  120  120  120  120  120  119  119  118  118  117  117  116  116
  120  120  123  123  121  121  120  120  120  120  119  119  119  119  120  120  120  120  119  119  119  119  117  117  117  117
  120  120  121  121  120  120  120  120  119  119  118  118  119  119  119  119  119  119  120  120  119  119  118  118  117  117
  121  121  120  120  120  120  118  118  117  117  116  116  117  117  118  118  119  119  120  120  120  120  120  120  120  120
  121  121  120  120  120  120  118  118  117  117  116  116  117  117  118  118  119  119  120  120  120  120  120  120  120  120
  120  120  121  121  120  120  119  119  117  117  117  117  117  117  118  118  119  119  120  120  120  120  120  120  120  120
  119  119  120  120  120  120  119  119  118  118  118  118  118  118  118  118  119  119  120  120  120  120  120  120  120  120
  118  118  120  120  120  120  119  119  119  119  119  119  119  119  119  119  119  119  120  120  120  120  119  119  119  119
  118  118  119  119  119  119  120  120  120  120  119  119  119  119  119  119  119  119  120  120  119  119  118  118  118  118
  118  118  119  119  119  119  120  120  120  120  120  120  120  120  119  119  119  119  119  119  119  119  117  117  116  116
  118  118  119  119  119  119  120  120  120  120  120  120  120  120  119  119  118  118  119  119  118  118  117  117  116  116
  117  117  118  118  120  120  121  121  123  123  123  123  120  120  119  119  117  117  117  117  116  116  116  116  114  114
  117  117  118  118  119  119  120  120  122  122  122  122  121  121  119  119  117  117  116  116  115  115  114  114  114  114
  117  117  116  116  118  118  120  120  120  120  121  121  120  120  119  119  118  118  115  115  114  114  113  113  114  114
  115  115  114  114  115  115  117  117  118  118  120  120  118  118  118  118  117  117  114  114  114  114  114  114  114  114
  113  113  112  112  114  114  115  115  116  116  117  117  117  117  117  117  116  116  115  115  114  114  114  114  114  114
  114  114  113  113  113  113  114  114  115  115  116  116  116  116  116  116  116  116  117  117  116  116  116  116  115  115
  114  114  114  114  114  114  115  115  116  116  116  116  117  117  117  117  117  117  119  119  118  118  118  118  118  118
  114  114  115  115  116  116  116  116  117  117  117  117  118  118  118  118  118  118  121  121  120  120  120  120  119  119
  116  116  117  117  118  118  118  118  118  118  118  118  118  118  118  118  118  118  119  119  120  120  120  120  120  120
  116  116  118  118  118  118  118  118  118  118  118  118  118  118  118  118  118  118  119  119  120  120  120  120  120  120
  117  117  118  118  119  119  119  119  119  119  119  119  119  119  119  119  119  119  119  119  119  119  120  120  120  120
  118  118  119  119  119  119  119  119  119  119  119  119  120  120  120  120  120  120  120  120  119  119  119  119  119  119
  119  119  119  119  119  119  119  119  119  119  119  119  120  120  120  120  120  120  120  120  120  120  119  119  119  119
  120  120  119  119  119  119  119  119  119  119  119  119  120  120  120  120  120  120  121  121  120  120  119  119  118  118
  120  120  119  119  119  119  118  118  118  118  119  119  120  120  120  120  121  121  121  121  120  120  120  120  119  119
  120  120  119  119  119  119  118  118  118  118  118  118  119  119  120  120  121  121  122  122  121  121  120  120  119  119
  121  121  120  120  120  120  120  120  119  119  119  119  120  120  120  120  121  121  122  122  122  122  121  121  120  120
  121  121  121  121  120  120  119  119  119  119  119  119  119  119  120  120  120  120  121  121  121  121  120  120  119  119
  120  120  120  120  119  119  119  119  118  118  118  118  119  119  119  119  120  120  119  119  119  119  119  119  118  118
  120  120  118  118  119  119  119  119  119  119  118  118  118  118  119  119  119  119  118  118  118  118  118  118  118  118
  120  120  119  119  119  119  119  119  119  119  119  119  119  119  119  119  118  118  118  118  118  118  119  119  119  119


ich habe verschiedene rote objekte vorgehalten und immer das gleiche =(
und rot gefunden wird mir auch nie ausgegeben =(

hi.png
 Beschreibung:

Download
 Dateiname:  hi.png
 Dateigröße:  132.41 KB
 Heruntergeladen:  459 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 10.12.2014, 07:23     Titel:
  Antworten mit Zitat      
Ich kenne dein Eingangsbild nicht und versuche daher, über Bilder mit eindeutigem "Rot" eine Lösung herbeizuführen. Besser wäre es, dieses Bild anzuhängen, damit man gezielter einen Lösungsweg vorbereiten kann.

Rot wird in ycbcr, zumindest bei meinen Vergleichsbildern, deutlich differenzierter dargestellt als in Lab oder RGB. Rotwerte sollten im "cr-Kanal" deutlich heller sein als nichtrote Werte. Alle anderen "nichtroten" Werte können auf Null reduziert werden. Damit das gelingt, musst du die gesuchten Rotwerte in ihrer Dichte messen. Ich habe das extra vermerkt:

Zitat:
ind=(cr<240); % Schwelle bei Dichte 240 (an Originalbild anpassen)


Dann kann kein schwarzes Bild entstehen, weil der gesuchte Rotbereich nicht reduziert wird!! Die Dichtewerte müssen natürlich auch zur Meldung passen, sonst wird diese auch nicht ausgegeben.
Private Nachricht senden Benutzer-Profile anzeigen
 
Uchiha
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 20.08.14
Wohnort: warstein
Version: ---
     Beitrag Verfasst am: 10.12.2014, 10:24     Titel:
  Antworten mit Zitat      
Ich habe nun bei den werten mal 150 eingetragen nun zeigt er mir auch wirklich nur die roten sachen an !!! (anhang)
aber "farbe gefunden gibt er mit immer noch nich aus Confused

ich habe auch mal

Code:
if (cr>1)
display 'Rot gefunden'
end


ausprobiert muesste er mir da nich immer "rot gefunden" dann anzeigen ?

b.png
 Beschreibung:

Download
 Dateiname:  b.png
 Dateigröße:  449.54 KB
 Heruntergeladen:  504 mal
a.png
 Beschreibung:

Download
 Dateiname:  a.png
 Dateigröße:  70.41 KB
 Heruntergeladen:  463 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 10.12.2014, 10:37     Titel:
  Antworten mit Zitat      
Das sollte heißen: if cr(cr>1) oder ist die Codezeile nur ein Tippfehler?
Private Nachricht senden Benutzer-Profile anzeigen
 
Uchiha
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 20.08.14
Wohnort: warstein
Version: ---
     Beitrag Verfasst am: 10.12.2014, 10:50     Titel:
  Antworten mit Zitat      
oh jaaa da hatte ich mich vertippt danke Smile ich mache ungerne einfach copy paste und schreibe das lieber ab danke Smile ich hoffe nun klappt alles =)
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.