Frage

Ich erhalte eine RGB-Matrix aus einem Mikroprozessor, der ein Bild in RGB565-Format ausgibt. Ich möchte dies in MATLAB lesen, wandeln es in RGB24-Format und gibt das Bild. Wie kann ich das tun?

War es hilfreich?

Lösung

Sie müssen Ihre Daten aus der Textdatei in eine Matrix in MATLAB lesen. Da ich nicht weiß, in welchem ??Format der Textdatei in ist, kann ich nur empfehlen, dass Sie wahrscheinlich benötigen, um die Funktion fscanf in all Ihren Werten (wahrscheinlich vom Typ uint16 ), dann werden Sie wahrscheinlich die Werte in eine N-von-M Bildmatrix mit der Funktion reshape .

Nehmen wir an, Sie getan haben alles, und Sie haben jetzt eine N-mal-M-Matrix img von unsigned 16-Bit-Integer. Erstens können Sie die Funktion verwenden bitand die Bits für die extrahieren rot, grün und blau-Komponenten, deren Positionen in der 16-Bit-integer hier dargestellt sind:

alt text

Als nächstes können Sie die Funktion verwenden bitshift und Multiplikation mit ein Skalierungsfaktor die Rot-, Grün- und blau-Wert zu einem Bereich von 0 bis 255, dann wandelt sie in eine unsigned 8-Bit-Ganzzahl mit der Funktion uint8 . Dies gibt Ihnen drei Farbkomponenten-Matrizen, die die gleiche Größe wie img:

imgR = uint8((255/31).*bitshift(bitand(img, 63488), -11));  % Red component
imgG = uint8((255/63).*bitshift(bitand(img, 2016), -5));    % Green component
imgB = uint8((255/31).*bitand(img, 31));                    % Blue component

Nun können Sie die Funktion cat die drei platzieren Farbkomponenten in eine N-mal-M-mal-3-RGB-Bildmatrix, dann speichert das Bild in eine RGB24 Bitmap-Datei mit der Funktion imwrite :

imgRGB = cat(3, imgR, imgG, imgB);  % Concatenate along the third dimension
imwrite(imgRGB, 'myImage.bmp');     % Output the image to a file

Beispiel:

eine zufällig erzeugte 100-by-100-Matrix von uint16 Werten verwenden und die oben genannten Umwandlungen Anwendung, hier sind die Ergebnisse:

img = randi([0 65535], 100, 100, 'uint16');
% Perform the above conversions to get imgRGB
subplot(1, 2, 1);
imshow(img);
title('Random uint16 image');
subplot(1, 2, 2);
imshow(imgRGB);
title('Corresponding RGB image');

alt text

Andere Tipps

RGB565 Mittel 5-Bit-rot, 6-Bit-grün und 5-Bit-blau. RGB24 ist aus 8-Bit-rot, 8-Bit-grün und 8-Bit-blau.

Mit bitget und bitset Sie Ihre Daten konvertieren kann.

http://www.mathworks.de/access /helpdesk/help/techdoc/ref/bitget.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top