2014-11-23 2 views
0

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

+2

Чтобы помочь вам, вы должны быть более конкретными в том, что вы подразумеваете под «скремблированием». –

+1

Что-то вроде [этого] (http://codegolf.stackexchange.com/a/35011)? –

+0

Кроме того, эти утверждения противоречат мне: 1. * не нужно разделяться на регионы и кричать * 2. * Общее изображение должно быть разрушено. *. –

ответ

1

Если вы что-то подразумеваете под «скремблированием», это случайное переустановка пикселей на вашем изображении, вы можете создать случайный вектор перестановки, равный общему количеству пикселей на вашем изображении, изменить его таким образом, чтобы оно того же размера, что и изображение, затем используйте его для индексации в него. В частности, используйте randperm, чтобы помочь вам в этом. Например, давайте использовать cameraman.tif, что является частью системного пути MATLAB. Сделайте что-то вроде этого:

im = imread('cameraman.tif'); 
vec = randperm(numel(im)); 
vec = reshape(vec, size(im)); 
out = im(vec); 

Если вы хотите отменить скремблирования, vec содержит столбцы показателей, где должны быть переназначены в исходном изображении пикселов. Поэтому просто выделите пустое изображение, затем используйте vec, чтобы индексировать это пустое изображение и скопировать out назад. Что это будет сделано, так это то, что он займет позиции в скремблированном изображении и скопирует их обратно в местоположения, индексированные vec. Это в основном отменяет скремблирование, которое мы делали раньше. Поэтому:

reconstruct = zeros(size(im), class(im)); 
reconstruct(vec) = out; 

Это исходное изображение:

enter image description here

Это то, что зашифрованное изображение выглядит как:

enter image description here

Конечно выглядит шумным ... и скремблировал ... по крайней мере, я так думаю. Делая реконструкцию, это то, что изображение выглядит следующим образом:

enter image description here


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

Удачи вам!

Смежные вопросы