帮我解决一个matlab问题 高分 100!!!!!!!!!!!!!!!!!!!!!!!!!

源程序程序你看看clearall;closeall;clc;M=256;%原图像长度N=64;%水印长度[filename1,pathname]=uigetfile('*... 源程序程序 你看看
clear all; close all; clc;
M=256;%原图像长度
N=64; %水印长度
[filename1,pathname]=uigetfile('*.*','select the image');
image1=imread(num2str(filename1));
subplot(2,2,1);imshow(image1); title('original image'); % orginal image for watermarking
image1=double(image1);
imagew=imread('dmg2.bmp');
subplot(2,2,2);imshow(imagew);title('original watermark'); %original watermark
%嵌入水印
[ca,ch,cv,cd] = dwt2(image1,'db1');
[cas,chs,cvs,cds] = dwt2(ca,'db1');
for i=1:N
for j=1:N
if imagew(i,j)==0
a=-1;
else
a=1;
end
Ca(i,j)=cas(i,j)*(1+a*0.03);
end
end
IM= idwt2(Ca,chs,cvs,cds,'db1') ;
markedimage=double(idwt2(IM,ch,cv,cd,'db1'));
%显示嵌入后水印图像
subplot(2,2,3);colormap(gray(256));image(markedimage);title('marked image');
imwrite(markedimage,gray(256),'watermarked.bmp','bmp');

%提取水印
image1=imread(num2str(filename1));image1=double(image1);
imaged=imread('watermarked.bmp');
[ca,ch,cv,cd] = dwt2(image1,'db1');
[cas,chs,cvs,cds]=dwt2(ca,'db1');
[caa,chh,cvv,cdd]=dwt2(imaged,'db1');
[caas,chhs,cvvs,cdds]=dwt2(caa,'db1');
for p=1:N
for q=1:N
a=caas(p,q)/cas(p,q)-1;
if a<0
W(p,q)=0;
else
W(p,q)=255;
end
end
end
%显示提取的水印
subplot(2,2,4);
colormap(gray(256));image(W);title('从含水印图像中提取的水印');
imwrite(W,gray(256),'watermark.bmp','bmp');

但是运行的时候就是说这个
??? Error using ==> plus
Matrix dimensions must agree.

Error in ==> idwt2 at 90
x = upsconv2(a,{Lo_R,Lo_R},sx,dwtEXTM,shift)+ ... % Approximation.

Error in ==> water at 23
IM= idwt2(Ca,chs,cvs,cds,'db1') ;
怎么改啊 谢谢
怎么把图形转换成二值图像 和八位灰度图像
展开
 我来答
傅映阳U0
2010-12-18 · TA获得超过1619个赞
知道小有建树答主
回答量:1126
采纳率:0%
帮助的人:904万
展开全部

同学你这个程序应该没问题,不过效果不是太好。我把你程序运行的效果,和我用的测试图片水印图片传到我的百度空间相册你看看

我自己运行了一下完全正常,我用matlab自带的cameraman.tif图像,根据你的程序自己用程序附件里的画图做了个64*64的二值水印图像,程序完全可用。

我以前也研究过图像水印。最好你在掌握理论的基础上再仿真这样你就知道问题出在哪了。图书馆有西电出的《MATLAB小波分析高级技术》和《基于MATLAB 7.x的系统分析与设计——小波分析(第三版)》上有图像小波水印的章节望你细心查阅,再多问题亦可解决!

祝好!

Matrix dimensions must agree.

Error in ==> idwt2 at 90

x = upsconv2(a,{Lo_R,Lo_R},sx,dwtEXTM,shift)+ ... % Approximation.

Error in ==> water at 23

IM= idwt2(Ca,chs,cvs,cds,'db1') ;

这个问题是idwt2函数使用上的问题  Matrix dimensions must agree 提示矩阵维数必须是允许的

说明idwt2函数的参数有问题,请你仔细看看,你的水印图像是不是二值图像、你的水印载体图像是不是8位灰度图像

百度网友078fe8ed6
2010-12-18 · TA获得超过323个赞
知道答主
回答量:69
采纳率:0%
帮助的人:34.4万
展开全部
24
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式