Расширение палитры проиндексированных изображений в MATLAB

Я извлек цветовую палитру индексированного изображения - матрицу 256x3, продублировал палитру до матрицы 512x3 с дублирующимися значениями в каждой половине. То, что я хочу сделать, это стеганография. Когда бит секретного сообщения равен 0, я хочу обратиться к одной половине палитры, а к другой половине. Таким образом, мы можем получить стеганографию без потерь в индексированных изображениях!

Но когда я пытаюсь сохранить изображение как растровое изображение с новой картой цветов, он говорит, что файлы bmp/ ​​gif не могут содержать более 256 записей в цветовой палитре!

[im,map]=imread('mandril_color.gif');
nmap=zeros(512,3);
nmap(1:256,1:3)=map(1:256,1:3);
nmap(257:512,1:3)=map(1:256,1:3);
imwrite(im,nmap,'palette1.gif');

Выше был мой код, чтобы просто проверить, работает ли сохранение изображения с расширенной палитрой или нет... к сожалению, это не так. Как я могу избежать этой проблемы и иметь собственную палитру с более чем 256 значениями?

1 ответ

Решение

Стандарт для.bmp и.gif поддерживает только цветовые палитры длиной 256. Для вас это никак не обойти.

Чтобы использовать цветовые палитры с более чем 256 записями, вы можете использовать, например,.jpg. Убедитесь, что вы выбрали сжатие без потерь, так как в противном случае ваше сообщение будет зашифровано.

Другие вопросы по тегам