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

Pixel-Werte im RGB Bild richtig abfragen

 

Matlab_error
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 18.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.01.2018, 17:48     Titel: Pixel-Werte im RGB Bild richtig abfragen
  Antworten mit Zitat      
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();

% binäre Bildmaske erstellen
binaryImage = hFH.createMask();

% Koordinaten des Bereichs
structBoundaries = bwboundaries(binaryImage);
xy=structBoundaries{1}; % Get n by 2 array of x,y coordinates.
x = xy(:, 2);
y = xy(:, 1);

burnedImage = grayImage;
burnedImage(binaryImage) = 255;

% nur den inneren Teil der Maske anzeigen
blackMaskedImage = grayImage;
blackMaskedImage(~binaryImage) = 0;

%weissen Bereich in schwarz ändern
insideMasked = grayImage;
insideMasked(binaryImage) = 0;

% ausgeschnittenen Bereich anzeigen
topLine = min(x);
bottomLine = max(x);
leftColumn = min(y);
rightColumn = max(y);
width = bottomLine - topLine + 1;
height = rightColumn - leftColumn + 1;
croppedImage = imcrop(blackMaskedImage, [topLine, leftColumn, width, height]);

% cropped image anzeigen
figure;
imshow(croppedImage);
set(gcf, 'Position', get(0,'Screensize')); % Maximize figure.

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

%Bereich für die roten Pixel festlegen
rotrot_min = min( min (rot));
rotrot_max = max(max (rot));
rotgruen_min = min(min (gruen));
rotgruen_max = max(max (gruen));
rotblau_min = min( min (blau));
rotblau_max = max(max (blau));


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:

Code:
grayImage(67,109,:)

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.

imfreehand.JPG
 Beschreibung:

Download
 Dateiname:  imfreehand.JPG
 Dateigröße:  29.7 KB
 Heruntergeladen:  292 mal
ausgeschnittener Bereich.JPG
 Beschreibung:

Download
 Dateiname:  ausgeschnittener Bereich.JPG
 Dateigröße:  8.48 KB
 Heruntergeladen:  318 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.