2015-03-16 2 views
-2

В настоящее время im участвует в проекте, где у меня есть двоичное (полутоновое) изображение lena, в котором я применил ниже функцию «randperm», чтобы переставить изображение.Как переставить пиксель бинарного изображения в matlab

wm_image = reshape(halftoned(randperm(numel(halftoned))),size(halftoned)); 

Теперь я хочу восстановить исходное полутоновое изображение. Если кто-нибудь может помочь с кодом matlab?

+1

Любые алгоритмические идеи о том, как вы хотите восстановить изображение? У вас есть предварительные знания (перестановка кодировки) или нет? –

ответ

0

Вам необходимо сохранить случайную перестановку, чтобы «инвертировать» ее.
Так перестановка делается:

rp = randperm(numel(halftoned)); %// save the permutation 
wm_image = reshape(hlaftoned(rp), size(halftoned)); 

И реконструкция

img(rp) = wm_image; 
img = reshape(img, size(halftoned)); 

Объясняя img(rp)=wm_image:
Предположим, у вас есть a векторною 1-на-2. Команда

a = [4,5]; 

в основном назначает 4 к a(1) и 5 к a(2), то есть, это короткая рука для

a([1,2]) = [4,5]; 

Теперь вы можете видеть, что есть отображение, которое говорит Matlab, где поставить правые элементы в левой стороне матрицы.
Вы можете изменить отображение:

a([2,1]) = [5,4]; 

ПРИВЕДЁТ с тем же a, но это делается по-разному.

Надеюсь, что это прояснит ситуацию.

+0

Спасибо, что работает сейчас. Я сомневаюсь, что в части восстановления, почему это 'img (rp) = wm_image;' .что оно делает? – STripathy

+0

@STripathy см. Мое редактирование. – Shai

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