错误:表达式或语句不正确 - 可能不平衡(,{,或[

时间:2013-04-15 07:59:48

标签: matlab

我在

面临问题
fw=D_w((IND(k,1),IND(k,2)); 
and W2(k)= ((D_w(IND(k,1),IND(k,2))/D(IND(k,1),IND(k,2))-1)*10)

水印提取过程中存在问题,并且最后一个代码存在错误。任何建议。都可以对其进行一些修改。

因此,我们必须保护它免受泄漏,因此,他们不会触及错误的人。我们必须找到负责数据泄漏的人。如果将数据分发给在公共领域发现的第三方,则可能对公司所有者构成非常严重的威胁。

I=imread('girl512.bmp');
subplot(2,3,1),imshow(I,[]),title('Original Image');
wmsz=1000;
I=I(:,:,1);
[r,c]=size(I);
D=dct2(I);
D_vec=reshape(D,1,r*c);
[D_vec_srt,Idx]=sort(abs(D_vec),'descend');  
W=randn(1,wmsz);
subplot(2,3,2),plot(W),title('Watermark');
Idx2=Idx(2:wmsz+1);%choosing 1000 biggest values other than the DC
%finding associated row-column order for vector values
IND=zeros(wmsz,2);
for k=1:wmsz
    x=floor(Idx2(k)/r)+1;%associated column in the image
    y=mod(Idx2(k),r);%associated row in the image
    IND(k,1)=y;
    IND(k,2)=x;
end
D_w=D;
%WATERMARK EMBEDDING
for k=1:wmsz
    fw=D_w((IND(k,1),IND(k,2));
    fw=fw+0.1*fw.*W(k);
end
I2=idct2(D_w);%inverse DCT to produce the watermarked asset
I2_int=uint8(I2);
imwrite(I2_int,'I2_watermarkedn.bmp','bmp');
subplot(2,3,3),imshow('I2_watermarkedn.bmp'),title('Watermarked Image');

%WATERMARK EXTRACTION 
W2=[];
for k=1:wmsz
    W2(k)=((D_w(IND(k,1),IND(k,2))/D(IND(k,1),IND(k,2))-1)*10);
end
subplot(2,3,4),plot(W2),title('Extracted Watermark');

1 个答案:

答案 0 :(得分:2)

让我们算一下:

      12   3        4        opens
fw=D_w((IND(k,1),IND(k,2));
               1        23   closes
      12   3   2     3  21   cumulative

所以,是的,他们 不平衡。你需要解决这个问题。我怀疑只需删除两个初始(字符中的一个就可以解决这个问题。


       12   3   4        5       6   7        8               opens
W2(k)= ((D_w(IND(k,1),IND(k,2))/D(IND(k,1),IND(k,2))-1)*10)
                    1        23          4        56  7   8   closes
       12   3   4   3    4   32  3   4   3    4   32  1   0   cumulative

就数量而言,那些不平衡。我无法保证展示位置,因为它相当复杂: - )