这是个matlab关于添加水印的程序,帮忙看看错在哪

%embed.m%清除workspace的变量clearall;%打开计时器tic%在第十段嵌入N=10;%段的大小framesize=32;%水印的大小watersiz... %embed.m
%清除workspace的变量
clear all;
%打开计时器
tic
%在第十段嵌入
N=10;
%段的大小
framesize=32;
%水印的大小
watersize=1024;
%读取原图像,并归一化
im1=double(rgb2gray(imread('C:\MATLAB6p5\work\图片1.png')))./255;
%原图像行列数
[Mc Nc]=size(im1);
%读取水印,并归一化
im2=double(rgb2gray(imread('C:\MATLAB6p5\work\图片3.png')))./255;
%水印行列数
[Mm Nm]=size(im2);
%得到原图像的频谱
im1f=fft2(im1);
%得到水印频谱
im2f=fft2(im2);
%得到原图像频谱的上半部分
%只对频谱的上半部分处理
%减小负频率部分对频谱的干扰
im1fp=im1f(1:end/2+1,:);
%排序
[xp yp]=sort(abs(im1fp(:)));
im1fps=im1fp(yp);
%在指定的段加入水印
im1fps(N*framesize+1:N*framesize+watersize)=im2f(:);
%恢复到排序之前的顺序
im3fp(yp)=im1fps;
%还原成矩阵形态
im3fp=reshape(im3fp,Mc/2+1,Nc);
%构造频域的下半部分
im3fn=conj(im3fp(end-1:-1:2,:));
im3fn(:,2:end)=im3fn(:,end:-1:2);
%合并得到完整的图像频谱
im3f=[im3fp;im3fn];
%反变换得到空域图像
%加入水印时引起的频谱不对称会导致反变换结果为复数
%取其实部
im3=real(uint8(ifft2(im3f).*255));
%显示图像
figure;
imshow(im3);
title('添加了水印的图像');
%保存图像
imwrite(im3,'dft2_watermarked.bmp','bmp');

下面是运行时的错误提示
Warning: Integer operands are required for colon operator when used as index.
> In C:\MATLAB6p5\work\embed.m at line 27
??? In an assignment A(I) = B, the number of elements in B and
I must be the same.

Error in ==> C:\MATLAB6p5\work\embed.m
On line 32 ==> im1fps(N*framesize+1:N*framesize+watersize)=im2f(:);
展开
 我来答
酷呆爱死呆
2011-05-04 · TA获得超过4240个赞
知道大有可为答主
回答量:507
采纳率:100%
帮助的人:1147万
展开全部
%在指定的段加入水印
im1fps(N*framesize+1:N*framesize+watersize)=im2f(:);%%这里,im1fps的大小为33024*1,那么指定的段为321-1344总长度为1024.而im2f(:)的长度为65536*1,你让im1fps的第321行到1344行,等于im2f的65536行,明显不对。
改为下面的形式:
im2ff=im2f(:);%%转化成列向量
im1fps(N*framesize+1:N*framesize+watersize)=im2ff(N*framesize+1:N*framesize+watersize);%%给指定的段加水印
%%%%%%%%%%%%%%改后运行即可!
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
nizy2
2011-05-04
知道答主
回答量:21
采纳率:0%
帮助的人:9.1万
展开全部
matlab告诉你了啊,A(I) = B, the number of elements in B and
I must be the same,就是说B和I中的元素数量必须是一样的,不然就出错
追问
想知道要怎么改,。谢谢
追答
把出错的那行找到,然后单步运行到那一行,再在命令窗口分别看等号左边和右边的两个矩阵,你就知道该怎么改了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式