Hallo liebe Matlaber
Ich bin in der Programmierung mit Matlab ein Anfänger und komme mit folgender Thematik nach ewig langer Suche einfach nicht mehr weiter und hoffe auf eure Unterstützung:
Ich will mit einer Routine die Farbbereiche für grün, blau und rot definieren und anhand dieser Bereiche verschiedene Pixel einer Farbe zuordnen.
Ich schneide mir mit "imfreehand" einen Farbbereich aus (siehe Bilder) und suche mir das Minimum und Maximum des Bereichs. Diese Grenzen nutze ich um die Pixel später zuzuordnen.
Das funktioniert auch ganz gut.
Das Problem ist jetzt, dass die Pixel, die ich zuordnen will, und die definitiv aus dem ausgeschnittenen Bereich kommen, einen ganz anderen Wert aufweisen.
Ich habe die Pixelwerte mit dem Befehl "impixelinfo" überprüft. Meine Bereiche sind definitiv richtig.
Mein Code sieht folgendermaßen aus:
"pd_color" ist ein ausgeschnittenes Bild aus einem Video. Format: 155x156x3 double
Code:
grayImage = pd_color;
imshow(grayImage);
set(gcf, 'Position', get(0,'Screensize'));
message = sprintf('Linksklick um den Bereich zu zeichnen.');
uiwait(msgbox(message));
hFH = imfreehand();
% Koordinaten des Bereichs
structBoundaries = bwboundaries(binaryImage);
xy=structBoundaries{1}; % Get n by 2 array of x,y coordinates.
x = xy(:, 2);
y = xy(:, 1);
rot = croppedImage(:,:,1);
rot(rot == 0) = NaN;%Nullen aus Matrix entfernen und durch NaN ersetzen
gruen = croppedImage(:,:,2);
gruen(gruen == 0) = NaN;%Nullen aus Matrix entfernen und durch NaN ersetzen
blau = croppedImage(:,:,3);
blau(blau == 0) = NaN;%Nullen aus Matrix entfernen und durch NaN ersetzen
Wenn ich mir jetzt z.B. mit "impixelinfo" die Werte einer Koordinate (67,109) im roten Bereich von "grayImage" anschaue, werden mir die Werte [0.68 0.25 0.06] angezeigt. Genau in diesem Bereich sollten sie auch liegen.
Wenn ich die Werte aber mit folgenden Befehl abfrage:
bekomme ich [1.4824 1.8118 0.9333] als Ergebnis.
Wo liegt denn mein Fehler?
Liegt es vielleicht an der Struktur der Bilder oder an meiner Art wie ich die Werte versuche abzufragen?
Ich hoffe ich konnte das halbwegs verständlich darlegen und bin für jeden Tipp dankbar.
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.