• 大小: 264KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-08-07
  • 语言: 其他
  • 标签: dct;  

资源简介

本文图像水印源代码,要是用的话请把里面的后缀为(.bmp)的图片变为自己的(.bmp)然后将源代码中在相关的代码变为对应的久可以

资源截图

代码片段和文件信息

clear all;

k=12;           %设置嵌入强度
blocksize=8;    % 设置块的大小

% 读入原图像
%file_name=‘lena.jpeg‘;
%cover_object=double(imread(file_name));
A=imread(‘lena.jpeg‘);
B=rgb2gray(A);
cover_object=double(B);

% 原图像的行数与列数
Mc=size(cover_object1);         %原图像行数
Nc=size(cover_object2);         %原图像列数

% 最大嵌入信息量
max_message=Mc*Nc/(blocksize^2);

% 读入水印图像
file_name=‘weili.bmp‘;
message=double(imread(file_name));
%%水印图像的行数与列数
Mm=size(message1);               %水印行数
Nm=size(message2);               %水印列数
 
% 重塑消息发送到一个载体
%message=round(message(:)./256);
%message=round(reshape(messageMm*Nm1)./256);
%[MmNm]=size(message);
%N=Mm*Nm;
%message=reshape(messageN1);
message=reshape(message1Mm*Nm);      

% 检查水印信息是否过大
if (length(message) > max_message)
    error(‘水印太大‘)
end

% 将message_vector置为全1向量,并将水印信息写入
message_pad=ones(1max_message);
message_pad(1:length(message))=message;

% 产生watermarked_image并写入原图信息
watermarked_image=cover_object;

% 将图像分块嵌入
% 当 (52) > (43) 且 message(kk)=0
% 当 (52) < (43) 且 message(kk)=1
%%经过分析可以得出结论:在提取水印时,如果dct_block(52)-dct_block(43)>=k便是嵌入了水印的黑色像素,
%%反之则是嵌入了白色像素
x=1;
y=1;
for kk = 1:length(message_pad)

    % 对块进行DCT变换
    dct_block=dct2(cover_object(y:y+blocksize-1x:x+blocksize-1));
    
    % 如果 message bit is black 
    if (message_pad(kk) == 0)

        % 且 (52) < (43) 交换它们
        if (dct_block(52) < dct_block(43))
                temp=dct_block(43);
                dct_block(43)=dct_block(52);
                dct_block(52)=temp;
        end
    
    % 如果 message bit is white 
    elseif (message_pad(kk) == 1)
        
        % 且 (52) > =(43) ,交换它们
        if (dct_block(52)>= dct_block(43))
                temp=dct_block(43);
                dct_block(43)=dct_block(52);
                dct_block(52)=temp;
        end
    end
      % 检查(52)与(4,3)的差值是否在k与2k之间,如果不是,通过以下算法,使其差值在其之间
    if dct_block(52) > dct_block(43)
        if dct_block(52) - dct_block(43) < k
            dct_block(52)=dct_block(52)+(k/2);
            dct_block(43)=dct_block(43)-(k/2);
         elseif dct_block(52) - dct_block(43) >2*k
             dct_block(52)=dct_block(52)-(k/2);
            dct_block(43)=dct_block(43)+(k/2);
        end
      
    else  if dct_block(43) - dct_block(52) < k
            dct_block(43)=dct_block(43)+(k/2);  
            dct_block(52)=dct_block(52)-(k/2);
            elseif dct_block(43)-dct_block(52) >2*k
             dct_block(52)=dct_block(52)+(k/2);
            dct_block(43)=dct_block(43)-(k/2);
         end
    end
   
        
    % 将块逆变换为空间域
    watermarked_image(y:y+blocksize-1x:x+blocksize-1)=idct2(dct_block);    
    
    % 移动到下一块
    if (x+blocksize) >= Nc
        x=1;
        y=y+blocksize;
    else
        x=x+blocksize;
    end
end

% 转换为uint8并写入 watermarked_image.bmp 
watermarked_image_int=uint8(watermarked_image);
imwrite(watermarked_image_int‘waterma

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-10-17 21:57  算法实现\
     文件       22625  2012-06-03 16:12  算法实现\JPEG.jpeg
     文件        3689  2012-06-03 16:03  算法实现\JPEG_embed.asv
     文件        3689  2012-06-05 15:59  算法实现\JPEG_embed.m
     文件        1421  2012-06-05 16:00  算法实现\JPEG_recover.m
     文件         122  2012-06-05 15:05  算法实现\Untitled.m
     文件         772  2012-05-30 10:18  算法实现\Untitled2.asv
     文件         772  2012-05-30 10:21  算法实现\Untitled2.m
     文件       15767  2012-06-03 16:12  算法实现\attackf.jpg
     文件        3729  2012-06-05 15:39  算法实现\croping.asv
     文件         349  2012-06-05 15:42  算法实现\croping.jpeg
     文件        3728  2012-06-05 15:42  算法实现\croping.m
     文件        1423  2012-06-05 15:25  算法实现\croping2.m
     文件        3309  2012-06-05 15:50  算法实现\dct1_embed.asv
     文件        3310  2012-06-05 15:48  算法实现\dct1_embed.m
     文件        1427  2012-06-05 15:48  算法实现\dct1_recover.m
     文件       83223  2012-06-03 15:09  算法实现\gaussian.jpeg
     文件        3424  2012-06-03 13:32  算法实现\gaussian_embed.asv
     文件        3481  2012-06-05 15:58  算法实现\gaussian_embed.m
     文件        1427  2012-06-05 15:58  算法实现\gaussian_recover.m
     文件       31531  2012-05-28 10:32  算法实现\lena.jpeg
     文件         473  2012-05-28 10:32  算法实现\nc.m
     文件       57358  2012-06-03 13:35  算法实现\noise.jpeg
     文件        3607  2012-06-05 16:01  算法实现\noise_embed.m
     文件        1422  2012-06-05 16:02  算法实现\noise_recover.m
     文件         478  2012-05-28 10:32  算法实现\psnr.m
     文件        3000  2012-06-05 15:06  算法实现\rotate.jpeg
     文件        3582  2012-06-02 21:17  算法实现\rotate_embed.asv
     文件        3419  2012-06-05 16:02  算法实现\rotate_embed.m
     文件        1423  2012-06-05 16:03  算法实现\rotate_recover.m
     文件         574  2012-06-02 16:29  算法实现\wangbo.bmp
............此处省略1个文件信息

评论

共有 条评论

相关资源