| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1446 人关注过本帖
标题:[求助]求助求助
只看楼主 加入收藏
dh555
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-6-11
收藏
 问题点数:0 回复次数:1 
[求助]求助求助
clear all;
k=0.5; % 设置嵌入强度
blocksize=8; % 设置块的大小
midband=[0,0,0,1,1,1,1,0; % 定义DCT中频系数
0,0,1,1,1,1,0,0;
0,1,1,1,1,0,0,0;
1,1,1,1,0,0,0,0;
1,1,1,0,0,0,0,0;
1,1,0,0,0,0,0,0;
1,0,0,0,0,0,0,0;
0,0,0,0,0,0,0,0 ];

% 读入原始图像
file_name='lena.bmp';
cover_object=double(imread(file_name));
% 原始图像的行数与列数
Mc=size(cover_object,1); %原图的行数
Nc=size(cover_object,2); %原图的列数
c=Mc/8;d=Nc/8;m=c*d; %计算图象划分的图象块
% 确定可嵌入的最大信息量
max_message=Mc*Nc*22/(blocksize^2);
% 产生水印信息
x=-1:0.01:1;
%水印图像的行数与列数
Nm=size(x,2); %水印序列的个数

figure(1)
plot(x);
title('水印');

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

n=Nm/22;
n1=uint8(Nm/22);
if(n>n1)
n=n1+1;
else
n=n1;
end %计算要嵌入的块数
%计算宿主图象每一块的方差
xx=1;
for j=1:c
for i=1:d
qw(xx)=1/64*sum(sum(cover_object((1+(j-1)*8):j*8,(1+(i-1)*8):i*8))); %图像块的期望
fc(xx)=1/64*sum(sum((cover_object((1+(j-1)*8):j*8,(1+(i-1)*8):i*8)-qw(xx)).^2)); %图像块的方差
xx=xx+1;
end
end
A=sort(fc); %方差从小到大排序
%选取方差最大的前n块
fc_o=ones(1,m);
for g=m-n+1:m
for h=1:m
if A(g)==fc(h)
fc_o(h)=0; %如果是方差较大的前n块则fc_o设为0,表示可以嵌入水印
h=m;
end
end
end
运行之后出现
??? Error using ==> colon
Colon operands must be in range of the data type.
为什么说冒号运算要在数据范围之内?
改成下面的又可以了,这是为什么?
clear all;
k=0.5; % 设置嵌入强度
blocksize=8; % 设置块的大小
midband=[0,0,0,1,1,1,1,0; % 定义DCT中频系数
0,0,1,1,1,1,0,0;
0,1,1,1,1,0,0,0;
1,1,1,1,0,0,0,0;
1,1,1,0,0,0,0,0;
1,1,0,0,0,0,0,0;
1,0,0,0,0,0,0,0;
0,0,0,0,0,0,0,0 ];

% 读入原始图像
file_name='lena.bmp';
cover_object=double(imread(file_name));
% 原始图像的行数与列数
Mc=size(cover_object,1); %原图的行数
Nc=size(cover_object,2); %原图的列数
c=Mc/8;d=Nc/8;m=c*d; %计算图象划分的图象块
% 确定可嵌入的最大信息量
max_message=Mc*Nc*22/(blocksize^2);
% 产生水印信息
x=-1:0.01:1;
%水印图像的行数与列数
Nm=size(x,2); %水印序列的个数
figure(1)
plot(x);
title('水印');
% 检查水印信息是否过大
if (length(Nm) > max_message)
error('水印太大')
end
n=Nm/22;
n1=uint8(Nm/22);
if(n>n1)
n=n1+1;
else
n=n1;
end %计算要嵌入的块数
%计算宿主图象每一块的方差
xx=1;
for j=1:c
for i=1:d
qw(xx)=1/64*sum(sum(cover_object((1+(j-1)*8):j*8,(1+(i-1)*8):i*8))); %图像块的期望
fc(xx)=1/64*sum(sum((cover_object((1+(j-1)*8):j*8,(1+(i-1)*8):i*8)-qw(xx)).^2)); %图像块的方差
xx=xx+1;
end
end
A=sort(fc); %方差从小到大排序
%选取方差最大的前n块
fc_o=ones(1,m);
for g=1015:1024
for h=1:1024
if A(g)==fc(h)
fc_o(h)=0; %如果是方差较大的前n块则fc_o设为0,表示可以嵌入水印
h=m;
end
end
end
搜索更多相关主题的帖子: double 
2007-06-17 13:03
zhou
Rank: 1
等 级:禁止发言
帖 子:429
专家分:0
注 册:2006-6-16
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2008-03-30 17:51
快速回复:[求助]求助求助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016858 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved