size=256; B=8; I_W=zeros(size);
P=imread('picture','jpg');
P=double(P)/256;
figure(1); imshow(P); title('原始公开图像');
W=imread('watermark','bmp');
figure(2); imshow(W); title('原始水印图像');
W=imresize(W,[32,32]);
W=im2double(W);
figure(3); imshow(W); title('调整后的水印图像');
%嵌入水印
for p=1:size/B
for q=1:size/B
x=(p-1) B+1; y=(q-1) B+1;
B_dct=P(x:x+B-1, y:y+B-1);
B_dct=dct2(B_dct);
if W(p,q)==0
a=-1;
else
a=1;
end
B_dct(1,1)=B_dct(1,1)(1+a001);
B_dct=idct2(B_dct);
I_W(x:x+B-1,y:y+B-1)=B_dct;
end
end
figure(4); imshow(I_W,[]); title('加入水印后的图像');
%提取水印
for p=1:size/B
for q=1:size/B
x=(p-1)B+1; y=(q-1)B+1;
if (I_W(x,y)-P(x,y))>0
F(p,q)=1;
else
F(p,q)=0;
end
end
end
figure(5); imshow(F,[]); title('提取出的水印');
我已经发布了一个视频,是关于Matlab如何调用dll文件的。
你可以这样想,任何能在windows下面运行的程序,都应该有相应的dll文件。
而Matlab是可以调用外部dll文件。
所以,只要你的程序能在windows下运行,matlab就可以调用。
常见的有:
matlab控制摄像头,控制DC电机,控制DAQ card等。
说点题外话:
最近有会员在知道投诉吧里投诉我,说我没有给大家提供完整程序,不配做Matlab专家。
不知道大家是怎么看待的,我认为我告诉你使用哪一个函数,然后你去Matlab里进行尝试,通过自己的努力,解决问题。
这样你不就是可以学到很多知识么?
这是一个学习进步的过程,作为Matlab专家,我本人不会给大家提供完整的程序。
而且由于专家条例,我也不可以把程序的链接放在这里。
你在使用过程中,遇到问题,欢迎你把错误信息贴出来,我会尽量告诉你怎么修改。
编写Gui时往往需要调用一些其他的外部程序。windows系统下,matlab可以用dos()或者
system()等命令来调用外部程序。
例如:dos(C:\Program Files\AA\XXXexe')
有时还需要在调用应用程序后,让应用程序再调用某些文件来执行。这时可以在dos()或者
system()中加入参数来实现:
比如:dos(C:\AA\XXXexe ABCtxt')%注意这里对空格的要求很严格。
在默认情形下,dos()或者system()打开了一个应用程序,知道这个应用程序结束了才执行后续
的命令,这里可以通过添加 & 的选项来实现打开应用程序后立即返回matlab,然后执行matlab
的后续命令,而不等待应用程序。
比如:dos('notepad filem &')%To open the Microsoft Notepad editor and return control
immediately to MATLAB。
由于安装应用程序的路径中往往有空格,使得dos()或者system()无法识别。因此可以在执行
dos()或者system()之前,先记住当前路径cd1=cd; 然后把当前路径改到应用程序所在的文件夹。
打开应用程序完成后,再改回cd1不影响后续程序的执行。
用matlab关闭应用程序时,可以调用tskillexe,tskillexe在关闭命令时,需要知道应用程序对应进程
的PID,有关用matlab读取PID的代码在网有下载。
以上就是关于求matlab 嵌入提取可见水印的程序全部的内容,包括:求matlab 嵌入提取可见水印的程序、MATLAB中怎么调用一个通用程序、matlab gui 可以调用其他的.exe程序么怎么用……很急等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)