如果问如何求空间变化参数,可以试试最基本的Lucas-Kanade方法;如果是后者,根据变化参数用maketform和imtransform对图进行变化,再比较变化后的图像与目标图像的ROI。
基于小波变换的多尺度图像边缘检测matlab源代码(在Matlab7.0下运行)
clear all
load wbarb
I = ind2gray(X,map)imshow(I)
I1 = imadjust(I,stretchlim(I),[0,1])figureimshow(I1)
[N,M] = size(I)
h = [0.125,0.375,0.375,0.125]
g = [0.5,-0.5]
delta = [1,0,0]
J = 3
a(1:N,1:M,1,1:J+1) = 0
dx(1:N,1:M,1,1:J+1) = 0
dy(1:N,1:M,1,1:J+1) = 0
d(1:N,1:M,1,1:J+1) = 0
a(:,:,1,1) = conv2(h,h,I,'same')
dx(:,:,1,1) = conv2(delta,g,I,'same')
dy(:,:,1,1) = conv2(g,delta,I,'same')
x = dx(:,:,1,1)
y = dy(:,:,1,1)
d(:,:,1,1) = sqrt(x.^2+y.^2)
I1 = imadjust(d(:,:,1,1),stretchlim(d(:,:,1,1)),[0 1])figureimshow(I1)
lh = length(h)
lg = length(g)
for j = 1:J+1
lhj = 2^j*(lh-1)+1
lgj = 2^j*(lg-1)+1
hj(1:lhj)=0
gj(1:lgj)=0
for n = 1:lh
hj(2^j*(n-1)+1)=h(n)
end
for n = 1:lg
gj(2^j*(n-1)+1)=g(n)
end
a(:,:,1,j+1) = conv2(hj,hj,a(:,:,1,j),'same')
dx(:,:,1,j+1) = conv2(delta,gj,a(:,:,1,j),'same')
dy(:,:,1,j+1) = conv2(gj,delta,a(:,:,1,j),'same')
x = dx(:,:,1,j+1)
y = dy(:,:,1,j+1)
dj(:,:,1,j+1) = sqrt(x.^2+y.^2)
I1 = imadjust(dj(:,:,1,j+1),stretchlim(dj(:,:,1,j+1)),[0 1])figureimshow(I1)
end
题主说的是下面这行吧:
[x, fval]=fminsearch(@MI,x0)MI 是作为一个函数句柄使用的,也就是说这是一个函数的名字,题主需要从程序的来源去找,其他人没法猜出这个函数是什么样的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)