i have problem when i applicated some attacks on a watermark video with lsb i c'ant the watermark please if you can help me?

1 visualización (últimos 30 días)
this is my code of detection watermark:
function varargout=dewatermarkimg(varargin)
% Cette fonction effectue l'opération d'extraction d'un filigrane
% Type d'image, insérée à travers la fonction watermark_img.
% Accepter moins un paramètre d'entrée et retourne un seul paramètre
% Sortie (précisément l'image). Peut accepter une touche numérique
% Également utilisé lors de l'étape de watermarking.
% = Img_log dewatermark_img (img_w, clé);
if length(varargin)==0 % Contrôler le nombre de paramètres transmis en entrée
return
elseif length(varargin)==2 %Si un deuxième paramètre est spécifié:
rand('seed',varargin{2}); %Fixe la graine du rand
p=randperm(32); %Je crée un vecteur d'indices pour les 32 premiers bits à lire
end
im_w=varargin{1}(:); %J'acquiers le premier paramètre d'entrée et de le mettre dans un vecteur de colonne
dim_l=0; %Je crée une variable qui va mettre la taille du filigrane
dim3_b=0; %Je crée une variable de soutien qui tiendra la troisième dimension du bit de filigrane
% Commencez à lire l'en-tête (taille du filigrane)
for j=1:2 %Pour chacune des deux premières dimensions
for i=1:15 %Pour chaque bit de la dimension j-ième
index=(j-1)*15 +i; %Calculer l'indice linéaire pour les pixels à lire
dim_b(i)=bitget(im_w(p(index)),1); %acquière le bit i-ième dimension de la j-ième p récupérer de l'indice pseudo-aléatoire
end
dim_l(j)=bin2dec(num2str(dim_b)); %Convertir en décimal à la dimension j-ième
%Acquisition du bit j-ième de la troisième dimension
dim3_b(j)=bitget(im_w(p(30+j)),1); %J'acquiers le bit j-ème de la troisième dimension de p récupérer de l'indice pseudo-aléatoire
end
%FIN lecture de l'en-tête (taille du filigrane)
dim_l(3)=bin2dec(num2str(dim3_b)); %Convertir en décimal la troisième dimension
len=prod(dim_l)+4; %Taille (en octets) du filigrane, y compris l'en-tête de 4 octets
im_log(prod(dim_l))=0; %Je crée un conteneur pour len-4 pixels du filigrane
k=4; % k=4 (32 bits déjà lu!)
if length(varargin)==2 %De contrôle si vous utilisez une clé:
p=randperm(prod(dim_l)*8)+32; %Calculer les indices pseudo-aléatoires pour des pixels ultérieurs
end
%COMMENCER lecture de l'image réelle
while k<len, %Fin quand lire tous les pixels de l'image marqué
k=k+1; %Mise à jour de k (+1 pixels)
for j=1:8 %Pour chaque bit (k-4) pixels -ème du filigrane
index=(k-1)*8 + j; %Calculer l'indice linéaire pour les pixels à lire
b=bitget(im_w(p(index-32)),1); %J'acquiers le bit j-ème du pixel à lire, la récupération de la p indice de pseudo-aléatoire
if b==1 %Si le bit acquis est égal à 1
im_log(k-4)=bitset(im_log(k-4),j); %met le bit j-ième pixel k-ème du filigrane (k-4).
end
end
end
%FIN image réelle lecture et son
im_log=uint8(im_log); %Converté valeurs im_log en tout
varargout{1}=reshape(im_log,dim_l(1),dim_l(2),dim_l(3)); %Reconstruire image tableaux filigrane
end
thats is the error thas i have:
Error using randperm
Maximum variable size allowed by the program is exceeded.
Error in dewatermarkimg (line 34)
p=randperm(prod(dim_l)*8)+32; %Calculer les indices pseudo-aléatoires
pour des pixels ultérieurs
Error in lsbextimg>pushbutton4_Callback (line 203)
wat=dewatermarkimg(imgwater,key);
Error in gui_mainfcn (line 96)
feval(varargin{:});
Error in lsbextimg (line 42)
gui_mainfcn(gui_State, varargin{:});
Error in @(hObject,eventdata)lsbextimg('pushbutton4_Callback',hObject,eventdata,guidata(hObject))
Error using drawnow
Error while evaluating uicontrol Callback error
Out of memory. Type HELP MEMORY for your options.
Error in dewatermarkimg (line 31)
im_log(prod(dim_l))=0; %Je crée un conteneur pour len-4 pixels du
filigrane

Respuestas (0)

Categorías

Más información sobre Programming en Help Center y File Exchange.

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by