24-битное преобразование RGB в 12-битное - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть изображение 640x480, которое мне нужно отобразить на VGA.Я должен прочитать это изображение с помощью команды matlab imread, затем преобразовать эту информацию RGB в двоичную и затем использовать эти двоичные данные в FPGA (плата Nexys 4 Artix 7) для отображения изображения на VGA.Но проблема в том, что VGA требует 12-битного RGB, а MATLAB считывает изображение в 24-битном RGB.Как мне сжать это изображение в 12-битном RGB?

1 Ответ

0 голосов
/ 08 февраля 2019

Вы уверены, что у вас 12-битный VGA?Обычно 24-битный RGB означает 8 бит для красного, 8 для зеленого и 8 для синего, что приводит к цветовому разрешению 2 ^ 24 = 16,8 млн. Цветов

Уменьшение цветового пространства до 12 бит приведет к цветуразрешение 4096 цветов, что является довольно слабым для современных мониторных устройств.

Если вы действительно хотите уменьшить масштаб с 24 до 12 бит, это зависит от кодировки цвета, которую вы должны сделать.Чаще всего используется MSB трех цветов, что приводит к битовому отображению, например

RGB12 = RGB24 [23:20] & RGB24 [15:12] & RGB24 [7: 4]

Edit: только что видел на схеме Nexys, что у вас действительно есть 12-битный VGA выход.Упомянутое битовое отображение должно быть действительным.Вы можете сделать это отображение с помощью VHDL

...
signal RGB24 : std_logic_vector(23 downto 0);
signal RGB12 : std_logic_vector(11 downto 0);
...

RGB12 <= RGB24(23 downto 20) & RGB24(15 downto 12) & RGB24(7 downto 4);

...