Восстановить искаженное изображение

#matlab #rgb

#matlab #rgb

Вопрос:

я написал этот код для искажения изображения, он работает хорошо, но возникла проблема с восстановлением этого искаженного изображения, запустив этот же код снова

 pic=imread('pepers.png');
[imr,imc,clr]=size(pic);
img2=pic;

v=66;
for row=1:imr

    for col=1:imc
        for k=1:clr

            img2(row,col,k)=bitxor(pic(row,col,k),v);
            v=img2(row,col,k);
        end
    end
end


imwrite(img2,'pic2.png');
imshow(img2);
  

Ответ №1:

Метод XOR преобразует каждое значение в кодировку предыдущего значения. Таким образом, обратная функция не совсем совпадает с функцией кодирования. Вы должны переключить присвоение v на закодированное значение, таким образом

 img2(row,col,k)=bitxor(pic(row,col,k),v);
v=pic(row,col,k);
  

для метода декодирования.