Tôi nhận được ma trận RGB từ bộ vi xử lý xuất ra hình ảnh ở định dạng RGB565. Tôi muốn đọc điều này vào MATLAB, chuyển đổi nó sang định dạng RGB24 và xuất hình ảnh. Làm thế nào để tôi làm điều này?Làm cách nào để chuyển đổi giữa các định dạng hình ảnh RGB565 và RGB24 trong MATLAB?
Trả lời
Trước tiên, bạn cần phải đọc dữ liệu từ tập tin văn bản vào một ma trận trong MATLAB. Vì tôi không biết định dạng tệp văn bản của bạn là gì, tôi chỉ có thể gợi ý rằng bạn có thể cần sử dụng hàm fscanf
để đọc tất cả các giá trị của bạn (có thể là loại uint16
), sau đó bạn có thể phải định lại lại các giá trị vào ma trận hình ảnh N-by-M bằng cách sử dụng hàm reshape
.
Giả sử bạn đã thực hiện tất cả điều đó và giờ đây bạn có ma trận N-by-M img
của số nguyên 16 bit chưa ký. Trước tiên, bạn có thể sử dụng chức năng bitand
để trích xuất các bit cho các thành phần màu đỏ, xanh lá cây, và màu xanh, có vị trí trong số nguyên 16-bit được minh họa ở đây:
Tiếp theo, bạn có thể sử dụng chức năng bitshift
và nhân với hệ số tỷ lệ để chia tỷ lệ các giá trị đỏ, xanh lá cây và xanh lam thành phạm vi từ 0 đến 255, sau đó chuyển đổi chúng thành số nguyên 8 bit không dấu bằng cách sử dụng hàm uint8
. Điều này sẽ cung cấp cho bạn ba thành phần màu ma trận cùng kích thước như 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
Bây giờ bạn có thể sử dụng chức năng cat
để đặt các thành phần ba màu vào một ma trận hình ảnh RGB N-by-M-by-3, sau đó lưu hình ảnh vào một tập tin bitmap RGB24 sử dụng chức năng imwrite
:
imgRGB = cat(3, imgR, imgG, imgB); % Concatenate along the third dimension
imwrite(imgRGB, 'myImage.bmp'); % Output the image to a file
VÍ DỤ:
sử dụng được tạo ngẫu nhiên 100-by-100 ma trận của uint16 giá trị và áp dụng các chuyển đổi ở trên, đây là kết quả:
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');
Câu trả lời hay nhất! Nó thực sự đã giúp! – NewImageUser
RGB565 có nghĩa là 5 bit đỏ, xanh lục 6 bit và xanh lam 5 bit. RGB24 được làm bằng màu đỏ 8 bit, xanh lá cây 8 bit và xanh lam 8 bit.
Sử dụng bitget và bitet bạn có thể chuyển đổi dữ liệu của mình.
http://www.mathworks.de/access/helpdesk/help/techdoc/ref/bitget.html
Vì vậy, một khi tôi đã chuyển đổi nó sang RGB24, làm thế nào tôi có thể làm cho MATLAB hiển thị nó như một hình ảnh? – NewImageUser
'imshow (rgbImage)' – Jonas
- 1. Làm cách nào để chuyển đổi chương trình xử lý hình ảnh MATLAB sang java?
- 2. Làm cách nào để chuyển đổi hình ảnh màu thành màu xám trong MATLAB?
- 3. chuyển đổi định dạng hình ảnh trong python
- 4. Làm thế nào để chuyển đổi hình ảnh giữa CMYK và RGB trong Coldfusion (Java)?
- 5. Java chuyển đổi hình ảnh GIF sang định dạng PNG
- 6. Trong MATLAB, làm cách nào để bạn lưu hình ảnh dưới dạng hình ảnh giống như cách sử dụng "Lưu dưới dạng ..." trong cửa sổ hình?
- 7. Làm thế nào để chuyển đổi hình ảnh JPEG sang định dạng SVG bằng ImageMagick?
- 8. Làm thế nào để chuyển đổi một chuỗi hình ảnh Base64 PNG các định dạng PNG trong C#
- 9. Làm cách nào để chuyển đổi LinearLayout thành hình ảnh?
- 10. Cách chuyển đổi tệp SVG sang các định dạng hình ảnh khác
- 11. Làm thế nào để chuyển đổi bytearray để hình ảnh hoặc hình ảnh để bytearray?
- 12. Cách nạp bộ đệm RGB565 vào ImageView
- 13. Tại sao có quá nhiều chuyển đổi giữa các định dạng hình ảnh cần thiết? (UIImage, CGImage, CIImage)
- 14. Làm thế nào để biết loại hình ảnh matlab
- 15. Khoảng cách giữa nhãn trục và trục trong hình MATLAB
- 16. Làm cách nào để phóng to hình ảnh và căn giữa hình ảnh?
- 17. Làm cách nào để chuyển đổi giữa Float và [Word8]?
- 18. Làm thế nào để chuyển đổi hình ảnh sang html?
- 19. Chuyển đổi chuỗi giữa định dạng thập phân và định dạng nhị phân
- 20. Nhận hình ảnh Blob và chuyển đổi hình ảnh đó thành hình ảnh Bitmap
- 21. Làm cách nào để thay đổi kích thước và chuyển đổi hình ảnh đã tải lên thành PNG bằng GD?
- 22. Làm cách nào để tạo các hoạt ảnh di chuyển/thay đổi kích thước trong Android?
- 23. Làm cách nào để thay đổi hình ảnh của PictureBox?
- 24. LÀM THẾ NÀO ĐỂ sử dụng Homography để chuyển đổi hình ảnh trong OpenCV?
- 25. Chuyển hình ảnh từ Matlab để một OpenCV IplImage
- 26. Làm cách nào để chuyển đổi các chuỗi giữa chữ hoa và chữ thường trong Java?
- 27. Làm cách nào để chuyển đổi giữa các dòng mới của Windows và UNIX trong Netbeans?
- 28. Làm thế nào để vẽ hình ảnh giữa các văn bản đa dạng với CoreText? (iOS)
- 29. Làm cách nào để chuyển đổi hình ảnh thành các phân đoạn ký tự?
- 30. Cách căn chỉnh hình ảnh - Matlab
Các bạn đã cố gắng đọc hình ảnh RGB565 của bạn vào MATLAB sử dụng [imread] (http://www.mathworks.com/access/helpdesk /help/techdoc/ref/imread.html)? Thông tin nào được liệt kê cho 'X' và' map' khi bạn làm điều này ?: '[X, map] = imread ('your_file.bmp'); whos' – gnovice
không có tệp.bmp. Đây là các giá trị RGB thô đến từ một uP – NewImageUser
Được rồi, vậy làm cách nào bạn nhận được các giá trị này vào MATLAB? Nếu bạn đã quản lý để đặt chúng trong một biến, các biến đó là gì? Có phải uint16 không? – gnovice