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

源程序程序 你看看
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') ;
怎么改啊 谢谢
怎么把图形转换成二值图像 和八位灰度图像

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

我自己运行了一下完全正常,我用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位灰度图像

温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-18
24
相似回答