Как встроить объединить изображения - PullRequest
4 голосов
/ 07 марта 2011

Возможно ли с помощью некоторого преобразования, например, Фурье и т. Д., Объединить несколько файлов изображений (3D) в один файл, например, в цифровой альбом. Такое объединение файлов должно быть обратимой операцией, чтобы отдельные изображения можно было разделять.

Я пытался это сделать, но я уверен, что это ничто близко к тому, что должно быть:

img1=imread('lena_gray.jpg');
img2=imread('pic1.jpg');
img3=imread('pic2.jpg');

defimage=pow2(get(0,'DefaultImageCData'),47);
mag=200;
imshow(bitslice(defimage,47,51),'initialmag',mag);
r=bitslice(img1,50,50);
g=bitslice(img2,50,60);
b=bitslice(img3,100,100);
imshow(cat(3,r,g,b),'initialmag',mag);

Это, очевидно, приводит к ошибке!

Кроме того, как добиться обратной операции? Поможет ли обратное правило Крамера в демультиплексировании объединенных изображений? Если да, то как использовать правило Крамера на изображениях RGB?

Ответы [ 3 ]

1 голос
/ 07 марта 2011

Если ваши изображения, скажем, 8-разрядные целые числа без знака, вы можете хранить несколько изображений в незначащих битах. См. это сообщение в блоге Стива Эддинса для примера.

1 голос
/ 07 марта 2011

Я думаю, вы пытаетесь добиться мультиплексирования и демультиплексирования. Попробуйте преобразование Френеля вместо Фурье

0 голосов
/ 08 марта 2011

На основании предоставленной вами информации я могу предложить вам несколько подходов:

  • Храните каждое изображение в отдельном цветном канале. Это, безусловно, самый простой подход. Таким способом вы можете сохранить до 3 изображений (одно для RGB или YUV). Если ваш формат файла поддерживает альфа-канал, вы можете сохранить 4 изображения. Это предполагает, что вы работаете с 8 битами на пиксель.
  • Чересстрочная ваши изображения. Если вы сделаете это без потерь, размеры выходного изображения увеличатся (умноженные на количество изображений, которые вы комбинируете). Если вы делаете это с потерями, вы потеряете пространственное разрешение (например, если вы чередуете две линии сканирования, то вертикальное разрешение будет уменьшено до половины его исходного значения).
  • Джонас уже предложил скрывать данные в младших разрядах, поэтому я не буду вдаваться в подробности, кроме как скажу, что это подход с потерями
  • Посмотрите на случайную перетасовку пикселей изображения, чтобы замаскировать объединенные изображения. Ссылка для Python, но у matlab должно быть что-то похожее.

По сути, ваша проблема заключается в том, чтобы найти компромисс между следующим:

  • Размер выходного изображения. Тривиальный случай - это просто мозаика изображений в сетке. Это полностью восстановимо, полностью без потерь, но также чрезвычайно очевидно, и, следовательно, вероятно, бесполезно.
  • Потери против потерь. Подходы с потерями позволят вам получить меньшие размеры выходного изображения.
  • Видимость против восстанавливаемости. Чем больше видимых встроенных данных, тем легче их восстановить (или, по крайней мере, обнаружить, что что-то есть). Менее видимая внедренная информация обычно более хрупка для таких вещей, как аффинные преобразования и обычные операции обработки изображений, такие как размытие. Подробнее о водяных знаках .

Этого должно быть достаточно, чтобы начать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...