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))