永发信息网

麻烦帮我解释下matlab数字水印程序

答案:1  悬赏:70  手机版
解决时间 2021-05-25 07:36
麻烦帮我解释下matlab数字水印程序
这是所有的程序:
M=256; N=32; K=8; I=zeros(M,M); J=zeros(N,N);
BLOCK=zeros(K,K);
subplot(1,8,2); J=imread('C:\new\3.jpg'); imshow(J); title('水印图像'); subplot(1,3,2); I=imread('C:\new\2.jpg'); imshow(I); title('原始图像');
tem=1;
for p=1:N
for q=1:N
x=(p-1)*K+1; y=(q-1)*K+1;
BLOCK=I(x:x+K-1,y:y+K-1);
BLOCK=dct2(BLOCK);
if J(p,q)==0
a=-1;
else
a=1;
end
BLOCK(2,1)=BLOCK(2,1)*(1+a*0.01);
BLOCK=idct2(BLOCK);
I(x:x+K-1,y:y+K-1)=BLOCK;
end
end
subplot(1,3,3);
imshow(I); title('嵌入水印后的图像'); imwrite(I,'C:\new\4.bmp');
麻烦主要解释下这几段:
tem=1;
for p=1:N
for q=1:N
x=(p-1)*K+1; y=(q-1)*K+1;
BLOCK=I(x:x+K-1,y:y+K-1);
BLOCK=dct2(BLOCK);
if J(p,q)==0
a=-1;
else
a=1;
end
BLOCK(2,1)=BLOCK(2,1)*(1+a*0.01);
BLOCK=idct2(BLOCK);
I(x:x+K-1,y:y+K-1)=BLOCK;
end
麻烦帮解释下上面的主要几段
最佳答案

对256*256大小的图像进行8*8DCT分块,就是把图像分成32*32个8*8大小的图像块,
for p=1:N
for q=1:N
x=(p-1)*K+1; y=(q-1)*K+1;
BLOCK=I(x:x+K-1,y:y+K-1); 这一部分程序就是对图像进行分块,每个块用BLOCK表示,
BLOCK=dct2(BLOCK); 是对每块进行DCT变换,这时候的BLOCK表示的是每块经过DCT变换后的系数块
if J(p,q)==0
a=-1;
else
a=1;
end
这段程序是,J(p,q)代表的二值水印图像,二值水印图像的像素值只有0和1,所以if J(p,q)==0,a=-1 ,是如果水印图像像素值是0的话,让a=-1,当水印像素值为1的话,让a=1,我个人认为是为了提取时候好提取,因为下面的这句 BLOCK(2,1)=BLOCK(2,1)*(1+a*0.01)是水印嵌入的一个公式,是将水印信息嵌入到每块的低频系数(2,1)里,0.01是嵌入强度,是个固定值,你可以自己取,取太大的话对图像影响比较大,效果不太好,嵌入水印后的图像不清晰了,a代表的是水印信息,这句就是个嵌入公式的套用,BLOCK=idct2(BLOCK); 这个是你开始对图像进行DCT变换了,现在需要反变换才能得到原来的图像,I(x:x+K-1,y:y+K-1)=BLOCK; 这句是用变换后的区域取代原先的区域,这样水印才算嵌入进去了,这是我的理解,希望说明白了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
郧县十堰中国邮政储蓄银行ATM地址是什么,有
咨询一下齐鲁和招商的怎么样?
电脑怎么检测硬盘问题,怎么样检测电脑硬盘有
孝南区孝感优稶手工烘焙地址在哪里啊
李石匠圪旦我想知道这个在什么地方
烫伤后,出现水泡并破裂后,该如何处理
'我多想回到家乡,回到他的身旁。这两句
东安区牡丹江盛源鸡蛋灌饼(东三分店)地址在哪
京山靓妆养生美容生活馆地址在什么地方,想过
常温常压下,H2和O2混合气体aL在密闭容器中引
卧龙区南阳高新区钢材市场地址在哪,我要去那
《死亡笔记》的主题曲叫什么名字
莆田什么地方有过塑本
非主流的歌
香坊区哈尔滨香坊区成高子镇黄河村村民委员会
推荐资讯
天元区株洲饱食捷(河西工大店)怎么去啊,谁知
N95最少多少钱可以卖!
韧带拉伤会怎样。
请写出有关雪的排比句,
精(?)神(?)、穷(?)极(?)、天(?)天(?),
华强北怎么去?
雨湖区湘潭吉祥茶楼(韶山西路店)在哪里啊,我
蓝钻打卡处我已经有了全部的牌为什么不能合成
天津哪有修理ZIPPO的!?
男孩5岁突然半夜腿疼,第2天不敢下地走路,咋回
816烧烤在什么地方啊,我要过去处理事情
为什么大家喜欢用猪来骂人?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?