Clear Filters
Clear Filters

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 view (last 30 days)
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

Answers (0)

Categories

Find more on Programming in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!