matlab匹配问题 dtw算法

matlab匹配问题 dtw算法,第1张

我看了一下你的链接和程序.

这是你没定义dtwOptSet,当然dtw和dtwOptSet都是作者自定义的函数,不在matlab的标准库里,这个图也是明显用了3个subplot画的

如果你想运行这个,请去作者推荐的

http://mirlab.org/jang/books/dcpr/introMatlabProgram.asp?title=1-2%20Example%20Programs%20(%A6p%A6%F3%A8%FA%B1o%B5{%A6%A1%BDX)

下载example就可以了.

1)在飞往底特律国际机场的飞机上,填写I-94表和海关申报表(空勤服务人员会发给乘客的)。尽管有中文表格,但是必须用英语填写这两个表格。由于要填表,随身带一支笔是必要的。

2)到达底特律国际机场(机场代码:DTW)。所有入境的国际航班都是停在Concourse A 的。下飞机后,跟随人们走,只有一条路,到达"入境大厅"(Concourse A 一共4层楼,入境大厅在LL层,就是最底层),排队[有两个不同的队:一个是美国公民与绿卡持有者,一个是非移民访问者],如果 你不明白排哪一个队,就问一下同机到达的中国人。中国人很多的。

见国土安全局的官员,交出I-94,出示护照和海关申报表,以及其他材料(如果你是F-1签证,就要出示I-20;如果你是探亲的父母,就要出示 往返机票,如果你是J-1签证,就要出示 DS-2019),按指纹。美国国土安全局的官员可能会问几个问题,有时什么也不问。

官员批准,把 I-94的半联 订在你的护照上(这个I-94的半联 很重要,千万不要丢失,离开美国时要交的)。取回你的护照、文件、海关申报表。

这个程序,排队的人多,所需时间比较长;人少,大约半个多小时左右。

3)通过入境大厅,就进入了“国际航班行李提取处”。也只有一个门,出来就是。在你那个航班的行李转盘上取自己的行李。

4)过海关检查,把海关报表交上,他们抽样检查。

有三种情况:一种可能,海关官员收下你的海关申报表,然后一挥手,你走吧,你就旁边一个通道离开;另一种,他们收下你的海关申报表,要求你把你的行李(所有行李,包括托运行李和随身携带的行李)放上检查机的传送带上,行李过来后,没有人找你,你就把自己的行李装上手推车,走吧;还有第三种可能,机器检查后,有海关工作人员要求开箱检查,那你就得拿着你的全部行李到海关的检查柜台,当场打开行李,让他们检查。只要不是第三种情况,一般来说,10几分钟吧。如果是开箱检查,那就很难估计时间了。一般来说,大多数都是第二种情况。

5)如果你买的是从 上海浦东机场 到美国 辛辛那提 的机票,那么你就直接再交运行李(注意不要搞坏、搞丢你行李上的航空公司行李标牌和 你的机票上粘贴的行李票 ,那上面有你的行李起运机场与终到机场名称)。找你的航空公司(DL ,或者AA,或者UA)的传送带[就在海关检查处的出口那里,有明显的标志牌,而且旁边有他们那个航空公司的工作人员],往上一放。

然后过安全门,有保安用金属探测器浑身上下过一遍,过完安检门后,就是一自动扶梯了,上去后,右转就见一地道。

如果你买的是 美国某一个航空公司的 上海 到 辛辛那提 的联程机票,一般来说,在中国机场登机时,值机柜台会把 上海浦东机场(机场代码PVG)到底特律(机场代码DTW)以及底特律转机的登机牌一起给你的,那个登机牌上写有 底特律 到你要去的辛辛那提 机场的航班号和你在底特律DTW 国际机场登机的Gate的号码。如果没有Gate的号码(航班号肯定是有的),只要在底特律机场查一下机场的航班指示电视屏,对照你的航班号,就可以看到底特律----波特兰航班的相应的登机门(Gate)。

自动扶梯上完后,右手就是一个大地道了,很长的大地道,通往B、C的(如果你的登机门是B ××或者 C××,就走这边,通过一个五彩缤纷的彩灯隧道,就到了 Concourse B 、C)。如果去A(如果你的登机门是A ××,就走这边),好像是自动扶梯的向左转,一个很短的地道。

Concourse A,很大,有室内的轻轨,如果GATE比较远,可以坐房子里的小火车,但是不想坐轻轨的话,走走也一样可以到。

底特律机场会经常用中文广播一句话“请核对时间,现在底特律的时间是几点几分(因为美国各地时间,实行不同的时区)。”只有这一句是用中文。机场的指示牌标识(图标与英语)很清楚,也比较多。

一、嵌入水印信息的MATLAB程序

首先读入原始图象并设置参数,然后嵌入水印信息,程序代码如下:

clear

%

%读入原图象

trueImage=imread('C:\Documents and Settings\ks001\My Documents\My Pictures\lean.tif')

alfa=.1

LENGTH=2500

subplot(2,2,1)

imshow(trueImage)

title('原始图象')

%

%对原图象进行DCT变换

dctF1=dct2('C:\Documents and Settings\ks001\My Documents\My Pictures\lean.tif')

subplot(2,2,2)

imshow(log(abs(dctF1)),[ ])

title('DCT cofficient matrix')

[m,n]=size(dctF1)

%

%产生水印序列并对其排序

radon('copyright',10)

watermark1=radon(LENGTH,1)

subplot(2,2,3)

title('watermark seqence')

[Y0,I0]=sort(watermark1)

%

%找出水印嵌入位置(幅值较大的n个频域成分)

A=dctF1(:)

[Y1,I1]=sort(A)

x=m*n

k=LENGTH

M=zeros(x,1)

%

%修改幅值较大的n个频域成分的幅值,嵌入水印(因为两个问题不同,所以有两个注释符)

for i=1:x

  if k>=1

  M(x)=Y1(x)*(1+alfa*Y0(k))

  k=k-1

  else

  M(x)=Y1(x)

  end

  x=x-1

end

N=zeros(x,1)

x=m*n

for i=1:x

  N(I1(i))=M(i)

end

a=1

for j=1:n

for i=1:m

  dctF2(i,j)=N(a)

  a=a+1

end

end

%

%DCT反变换,得到嵌入水印的图象

idctF1=idct2(dctF2)

subplot(2,2,4)

imshow(idctF1,[ ])

title('嵌入水印后的图象')

end

二、提取恢复水印信息的MATLAB程序

水印提取过程是水印嵌入过程的逆过程,相对嵌入过程来说比较复杂,难度较大,下面是水印提取检测的MATLAB程序代码:

function watermark_detect(image,Y1,I0,waterMark1)

%image:嵌入水印的图象

%Y1:原始图象的序列排序

%I0:原始水印的序列排序

%waterMark1:原始水印序列

%

%对嵌入水印图象进行DCT变化

dctW1=dct2(image)

%

%找出幅值较大的系数

B=dtW1(:)

[Y1,I2]=sort(B)

[m1,n1]=size(dctW1)

y=m1*n1

k=length(waterMark1)

N0=zeros(k,1)

%

%提取水印序列

while k>=1

    N0(k)=(Y2(y)-Y1(y))/alfa/Y1(y)

    k=k-1

    y=y-1

end

k=length(waterMark1)

waterMark2=zeros(k,1)

for i=1:k

  waterMark2(I0(i))=N0(i)

end

%

%选取50个测试序列,其中第10个为提取出的水印

figure

for i=150

  if i==10

    waterMark=waterMark2

  else

    waterMark=rand(k,1)

  end

%计算各个序列与原来水印序列的相关值

  c=waterMark'*waterMark1/sqrt(waterMark'*waterMark)

  stem(i,c)

  hold on

end

%

三、接下来对嵌入水印的图象进行不同的攻击,用以测试水印的鲁棒性。

程序的目的和程序代码如下:

%

%攻击实验

disp('input you choice according to the following

image processing operation:')

disp('0--exit')

disp('1--smoothing patterns')

%添加噪音

disp('2--adding uniorm noise 添加噪音')

%滤波

disp('3--adding filter [10 10] 滤波')

%剪切

disp('4--cutting part of the image 剪切')

%压缩

disp('5--10 quality JPEG compressing 压缩')

%旋转45度

disp('6--rotate 45 旋转')

%

d=input('please input you choice(请输入您的选择):')

while d~=0

switch d

case 1

watermark_detect(idctF1,Y1,I0,waterMark1)

case 2

  WImage2=idctF1

  noise0=10*rand(size(WImage2))

  WImage2=WImage2+noise0

  figure

imshow(WImage2,[ ])

title('adding uniform noise 添加噪音')

  watemark_detect(WImage2,Y1,I0,waterMark1)

case 3

  WImage3=idctF1

  H=fspcial('gaussian高斯',[10,10],5)

  WImage3=imfilter(WImage3,H)

  figure

  imshow(WImage3,[ ])

  title(through filter [10,10] 滤波')

  watemark_detect(WImage3,Y1,I0,waterMark1)

case 4

  WImage4=idctF1                                    WImage4(1:128,1128)=256

  figure

  imshow(WImage4)

  title('cutting part of the image 剪切')

  watemark_detect(WImage4,Y1,I0,waterMark1)

case 5

  WImage5=idctF1   

  WImage5=im2double(WImage5)

  cnum=10

  dctm=dctmtx(8)

  p1=dctm

  p2=dctm.'

  imageDCT=blkproc(WImage5,[8,8],'p1*p2*x',dctm,dctm.')

  DCTvar=im2col(imageDCT,[8,8],'distinct').'

  n=size(DCTvar,1)

  DCTvar=(sum(DCTvar.*DCTvar)-(sum(DCTvar)/n).^2)/n

  [dum,order]=sort(DCTvar)

  cnum=64-cnum

  mask=ones(8,8)

  mask(order(1:cnum))=zeros(1,cnum)

  im88=zeros(9,9)

  im88(1:8,1:8)=mask

  im128128=kron(im88(1:8,1:8),ones(16))

  dctm=dctmtx(8)

  p1=dctm.'

  p2=mask(18,1:8)

  p3=dctm

Wimage5=bikproc(imageDCT,[8,8],'p1*(x.8p2)*p3',dctm.',mask(1:8,1:8),dctm)

  figure

  imshow(Wimage5)

  title('JPEG Image 压缩')

  watemark_detect(WImage5,Y1,I0,waterMark1)

case 6                                             WImage6=idctF1         

  WImage6=imrotate(WImage6,45,'bilinear','corp')

  figure

  imshow(Wimage6)

  title('rotate 45 旋转')

  watemark_detect(WImage6,Y1,I0,waterMark1)

case 0

  break

otherwise

  error('you have a valid value(您的输入错误)')

end

d=input('please input you choice(请输入您的选择):')

end

%结束


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11571913.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存