帮我翻译一个matlab 的程序 告诉那句话是干什么的就行了 高分 可以追加

lsh6688 2010-12-10 05:20:56
clear;
%装入原图像1
load woman;
I=X;

%小波函数
type = 'db1';

% 2维离散Daubechies小波变换
[CA1, CH1, CV1, CD1] = dwt2(I,type);
C1 = [CH1 CV1 CD1];

%系数矩阵大小
[length1, width1] = size(CA1);
[M1, N1] = size(C1);

% 定义阈值T1
T1 =50;
alpha = 0.2;

%在图像中加入水印
for counter2 = 1: 1: N1
for counter1 = 1: 1: M1
if( C1(counter1, counter2) > T1 )
marked1(counter1,counter2) = randn(1,1);
NEWC1(counter1, counter2) = double( C1(counter1, counter2) ) +alpha * abs( double( C1(counter1, counter2) ) ) * marked1(counter1,counter2) ;
else
marked1(counter1, counter2) = 0;
NEWC1(counter1, counter2) = double( C1(counter1, counter2) );
end;
end;
end;

%重构图像
NEWCH1 = NEWC1(1:length1, 1:width1);
NEWCV1 = NEWC1(1:length1, width1+1:2*width1);
NEWCD1 = NEWC1(1:length1, 2*width1+1:3*width1);

R1 = double( idwt2(CA1, NEWCH1, NEWCV1, NEWCD1, type) );

%分离水印
watermark1 = double(R1) - double(I);

figure(1);
subplot(1,2,1);
image(I);
axis('square');
title('原始图像');
subplot(1,2,2);
imshow(R1/250);
axis('square');
title('Daubechies小波变换后图像');

figure(2);
imshow(watermark1*10^16);
axis('square');
title('水印图像');

% 水印检测
newmarked1 = reshape(marked1, M1*N1, 1);
% 检测阈值
T2 = 60;
for counter2 = 1: 1: N1
for counter1 = 1: 1: M1
if( NEWC1(counter1, counter2) >T2 )
NEWC1X(counter1, counter2) = NEWC1(counter1, counter2);
else
NEWC1X(counter1, counter2) = 0;
end;
end;
end;

NEWC1X = reshape(NEWC1X, M1*N1, 1);

correlation1 = zeros(1000,1);
for corrcounter = 1: 1: 1000
if( corrcounter == 500)
correlation1(corrcounter,1) = NEWC1X'*newmarked1 / (M1*N1);
else
rnmark = randn(M1*N1,1);
correlation1(corrcounter,1) = NEWC1X'*rnmark / (M1*N1);
end;
end;

% 计算阈值
originalthreshold = 0;
for counter2 = 1: 1: N1
for counter1 = 1: 1: M1
if( NEWC1(counter1, counter2) > T2 )
originalthreshold = originalthreshold + abs( NEWC1(counter1, counter2) );
end;
end;
end;
originalthreshold = originalthreshold * alpha / (2*M1*N1);

corrcounter = 1000;
originalthresholdvector = ones(corrcounter,1) * originalthreshold;

figure(3);
plot(correlation1, '-');
hold on;
plot(originalthresholdvector, '--');
title('原始的加水印图像');
xlabel('水印');
ylabel('检测响应');


也可以翻译一段 第一句我就不明白 我还是有一点基础的 简单的就不用翻译了 谢谢
...全文
501 33 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
wq343179294 2012-04-04
  • 打赏
  • 举报
回复
>> A=imread('3.jpg');
>> imshow(A);
>> B=rgb2gray(A);
>> imshow(B);
>> I=B;
以后照抄就行了
转一个灰度
wq343179294 2012-04-04
  • 打赏
  • 举报
回复
同学。。。。
这个我纠结了几个小时
结果最终发现原来就是那么个小问题。。。。
就是你的图片要转成灰度的。。。
你试试吧
我已经运行出了用自己的图片
wangjiazaizai 2011-05-30
  • 打赏
  • 举报
回复
我也做这个 不会呀
他来自江湖 2011-01-19
  • 打赏
  • 举报
回复
clear;
%装入原图像1
X=imread('rice.tif');
%load woman;
I=X;
其他的和你的一样啊,就ok了啊
NYN 2010-12-17
  • 打赏
  • 举报
回复
clear;
第一段第一句,这个是清楚以前ml中的残留数据的。
  • 打赏
  • 举报
回复
学过数值计算,中个用matlab,现在忘光光
leihelin5201314 2010-12-17
  • 打赏
  • 举报
回复
不懂··帮顶··
lsh6688 2010-12-17
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 lichunli1022 的回复:]
引用 13 楼 lsh6688 的回复:
引用 11 楼 lichunli1022 的回复:
引用 9 楼 lsh6688 的回复:
引用 8 楼 lichunli1022 的回复:
第一句就是清除变量,整个程序是对一幅图像进行处理,具体变化可以运行一下看看效果
如果我想换我自己的图片 怎么换


load那句话是导入图像的,你可以把你的图片放在work目录下,然后使用load
……
[/Quote]
我换了哥程序 你看看
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') ;
怎么改啊 谢谢
LICHUNLI1022 2010-12-11
  • 打赏
  • 举报
回复
出现问题的话 把问题贴出来吧
lsh6688 2010-12-11
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 lichunli1022 的回复:]
引用 13 楼 lsh6688 的回复:
引用 11 楼 lichunli1022 的回复:
引用 9 楼 lsh6688 的回复:
引用 8 楼 lichunli1022 的回复:
第一句就是清除变量,整个程序是对一幅图像进行处理,具体变化可以运行一下看看效果
如果我想换我自己的图片 怎么换


load那句话是导入图像的,你可以把你的图片放在work目录下,然后使用load
……
[/Quote]格式没问题 是jpg的 我再看看
Eastguest 2010-12-11
  • 打赏
  • 举报
回复
小波分解和重构
LICHUNLI1022 2010-12-11
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 lsh6688 的回复:]
引用 11 楼 lichunli1022 的回复:
引用 9 楼 lsh6688 的回复:
引用 8 楼 lichunli1022 的回复:
第一句就是清除变量,整个程序是对一幅图像进行处理,具体变化可以运行一下看看效果
如果我想换我自己的图片 怎么换


load那句话是导入图像的,你可以把你的图片放在work目录下,然后使用load
也可以在LOAD后面写上完整的路径名
建议……
[/Quote]文件格式对了没?出现什么错误?
lsh6688 2010-12-11
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lichunli1022 的回复:]
引用 9 楼 lsh6688 的回复:
引用 8 楼 lichunli1022 的回复:
第一句就是清除变量,整个程序是对一幅图像进行处理,具体变化可以运行一下看看效果
如果我想换我自己的图片 怎么换


load那句话是导入图像的,你可以把你的图片放在work目录下,然后使用load
也可以在LOAD后面写上完整的路径名
建议第一种
[/Quote]我用例 load 图片名称
路径也对 不行呀 卫生么 那个woman是系统自己的 我的可以这么做吗
lsh6688 2010-12-11
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lichunli1022 的回复:]
引用 9 楼 lsh6688 的回复:
引用 8 楼 lichunli1022 的回复:
第一句就是清除变量,整个程序是对一幅图像进行处理,具体变化可以运行一下看看效果
如果我想换我自己的图片 怎么换


load那句话是导入图像的,你可以把你的图片放在work目录下,然后使用load
也可以在LOAD后面写上完整的路径名
建议第一种
[/Quote]我用了 load 我的图片名称
但是不行呀
lsh6688 2010-12-11
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lichunli1022 的回复:]
引用 9 楼 lsh6688 的回复:
引用 8 楼 lichunli1022 的回复:
第一句就是清除变量,整个程序是对一幅图像进行处理,具体变化可以运行一下看看效果
如果我想换我自己的图片 怎么换


load那句话是导入图像的,你可以把你的图片放在work目录下,然后使用load
也可以在LOAD后面写上完整的路径名
建议第一种
[/Quote]我用了 load 我的图片名称
但是不行呀
LICHUNLI1022 2010-12-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lsh6688 的回复:]
引用 8 楼 lichunli1022 的回复:
第一句就是清除变量,整个程序是对一幅图像进行处理,具体变化可以运行一下看看效果
如果我想换我自己的图片 怎么换
[/Quote]

load那句话是导入图像的,你可以把你的图片放在work目录下,然后使用load
也可以在LOAD后面写上完整的路径名
建议第一种
LICHUNLI1022 2010-12-11
  • 打赏
  • 举报
回复
先对图像进行小波变换,添加水印,然后重构图形象,再对重构之后的水印图像进行检测
lsh6688 2010-12-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lichunli1022 的回复:]
第一句就是清除变量,整个程序是对一幅图像进行处理,具体变化可以运行一下看看效果
[/Quote]如果我想换我自己的图片 怎么换
LICHUNLI1022 2010-12-11
  • 打赏
  • 举报
回复
第一句就是清除变量,整个程序是对一幅图像进行处理,具体变化可以运行一下看看效果
LICHUNLI1022 2010-12-11
  • 打赏
  • 举报
回复
load woman;
I=X;

这两句话可以用I=imread('my.jpg')代替
加载更多回复(13)

662

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧