www.pudn.com > audioLSB.rar > LSB.asv


 % Step 1 : Get the audio source wav. 
  
 [music_sample,ns,nbits] = wavread('music.wav'); 
  
 
%  for j=10001:14096 
%  music_sample_copy(j)=0;end 
  
%  subplot(2,1,1); plot(music_sample) 
%  subplot(2,1,2); plot(music_sample_copy) 
  
 % Step 2 : Divide the audio source into pieces for 256 points per 
 % pieces.It cost 11 ms. 
  
[total_points,cs] = size(music_sample) ; 
points_per_piece = 256  ; 
piece_count = floor(total_points / points_per_piece)+1; 
 
% music_sample_watermarked_obj=zeros(total_points,1); 
 
% Step 3 : Quantized all points. 
music_Quantized = zeros(total_points,1); 
music_sample_embeded = zeros(total_points,1); 
music_sample_signal = zeros(total_points,1); 
 for j=1:total_points 
      if (music_sample(j) >= 0) 
          music_sample_signal(j) = 1; 
          music_Quantized(j) = music_sample(j)*2^15 ; 
      else 
          music_Quantized(j) = music_sample(j)*2^15 *(-1); 
      end;     
 end; 
 
for k=1:piece_count-1 
    music_Quantized_Piece = zeros(points_per_piece,1); 
    for j=1:points_per_piece 
        music_Quantized_Piece(j) = music_Quantized((k-1)*points_per_piece+j); 
    end; 
    % Step 4 : . 
     
    for j=1:points_per_piece 
 
        music_Quantized_Piece_LSBZero(j) = bitand(music_Quantized_Piece(j),65534); 
 
    end; 
 
    % Step 5 : DCT transfer 
    music_Quantized_Piece_LSBZero_dct = zeros(points_per_piece,1); 
    music_Quantized_Piece_LSBZero_dct = round(dct(music_Quantized_Piece_LSBZero)); % round to get integer 
 
    % Step 6 : Produced watermark. 
    music_piece_watermark = zeros(points_per_piece,1); 
    [m,n]=sort(music_Quantized_Piece_LSBZero_dct); 
    music_piece_watermark_serial = zeros(16,1); 
    i=1; 
    for j=(points_per_piece-7):points_per_piece 
        music_piece_watermark(n(j))=m(j); 
        music_piece_watermark_serial(i)=m(j);  % dct xishu 
        music_piece_watermark_serial(i+1)=n(j); %dct xishu position 
        i=i+2; 
    end; 
 
    % Step 7 : embeded watermark. 
    music_Quantized_Piece_LSB_embeded = zeros(points_per_piece,1); 
    embeded_index = 1; 
    for j=1:(points_per_piece/16) 
        for i=1:16 
            music_Quantized_Piece_LSB_embeded(embeded_index) = bitor(music_Quantized_Piece_LSBZero(embeded_index) , bitget(music_piece_watermark_serial(j),i) ); 
            embeded_index = embeded_index +1 ; 
        end; 
    end; 
 
    for j=1:points_per_piece 
        music_Quantized_Piece_LSB_embeded(j) = music_Quantized_Piece_LSB_embeded(j) / 2^15; 
    end; 
      
%   output to result 
 
    for j=1:points_per_piece 
        music_sample_embeded((k-1)*points_per_piece+j) = music_Quantized_Piece_LSB_embeded(j); 
    end; 
   
end; 
 
for j=1:total_points 
    if (music_sample_signal(j) < 1 ) 
        music_sample_embeded(j)=music_sample_embeded(j) * (-1); 
    end; 
end; 
 
%  subplot(4,1,1); plot(music_Quantized_Piece_LSBZero) 
%  subplot(4,1,2); plot(music_Quantized_Piece_LSBZero_dct) 
wavwrite(music_sample_embeded,22050,16,'music_sample_embeded.wav'); 
% Step final : display result. 
%  subplot(4,1,1); plot(music_Quantized_Piece_LSBZero) 
%  subplot(4,1,2); plot(music_Quantized_Piece_LSBZero_dct) 
%  subplot(4,1,3); plot(music_piece_watermark) 
%  subplot(4,1,4); plot(idct(music_piece_watermark))