资源简介
求变形前后的散斑图的位移,并求所求部分图像的相关函数,然后用2次曲面拟合求解位移值,精度达亚像素级。
代码片段和文件信息
close all;
clc;
clear;
%Iu = imread(‘U0V0.bmp彩色TO灰度.jpg‘);
%Id = imread(‘U10V10.BMP彩色TO灰度.jpg‘);
Iu = imread(‘平移前的图2.png‘);
Id = imread(‘平移后的图2.png‘);
[mn]=size(Iu);
%取H为以Iu中心为中心的41×41矩阵
H=Iu(m/2-20:m/2+20n/2-20:n/2+20);
tt=0;
for i =21:m-21
for j =21:n-21
J=Id(i-20:i+20j-20:j+20);
%求矩阵H和J的相似度系数
R= corr2(HJ);
%如果相关系数大于0,则搜索窗口高h1=i长l1=j
if R>tt
tt=R;
h1=i;
l1=j;
end
end
end
%像素级坐标XY
%meshgrid生成和H一样大小的网格矩阵,矩阵X和Y的大小为41×41
[XY] = meshgrid(m/2-20:m/2+20n/2-20:n/2+20);
Pos=[X(:) Y(:)];
%生成41×41全零矩阵
E=zeros(4141);
[Count Width] = size(Pos);
D= zeros(Count4);
tic
for k =1: Count
C=E;
max=0;
A=Iu(Pos(k1)-20:Pos(k1)+20Pos(k2)-20:Pos(k2)+20);
for i = Pos(k1)+h1-m/2-1 : Pos(k1)+h1-m/2+1
for j = Pos(k2)+l1-n/2-1 : Pos(k2)+l1-n/2+1
B=Id(i-20:i+20j-20:j+20);
R= corr2(AB);
C(ij) = R;
if R>max
max=R;
h=i;
l=j;
end
end
end
Id=double(Id);
[axxyy]=fit2(xyznmpq)
%[subxsuby]=subpixel(hlC);
D(k:)=[Pos(k1)Pos(k2)suby-Pos(k2)subx-Pos(k1)];
%disp([Pos(k1)Pos(k2)suby-Pos(k2)subx-Pos(k1)]);
end
toc
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-11-09 14:24 speckle\
文件 1548 2017-11-07 16:06 speckle\SANBAN.m
文件 1460 2017-10-26 11:31 speckle\subpixel.m
文件 15745 2010-04-29 09:38 speckle\x0y0.bmp彩色TO灰度.jpg
文件 16530 2010-04-29 09:45 speckle\x0y1.BMP彩色TO灰度.jpg
文件 16752 2010-04-29 09:38 speckle\x11y11.BMP彩色TO灰度.jpg
文件 16751 2010-04-29 09:38 speckle\x17y5.BMP彩色TO灰度.jpg
文件 16381 2010-04-29 09:45 speckle\x1y0.BMP彩色TO灰度.jpg
文件 16603 2010-04-29 09:38 speckle\x3y19.BMP彩色TO灰度.jpg
文件 16551 2017-10-31 14:34 speckle\平移前的模拟散斑图2.png
文件 27829 2017-10-31 14:34 speckle\平移后的模拟散斑图2.png
评论
共有 条评论