图像相关性SSD算法.docx
《图像相关性SSD算法.docx》由会员分享,可在线阅读,更多相关《图像相关性SSD算法.docx(12页珍藏版)》请在冰豆网上搜索。
![图像相关性SSD算法.docx](https://file1.bdocx.com/fileroot1/2023-2/2/b70e2730-ae8e-4cd9-9930-e44496788284/b70e2730-ae8e-4cd9-9930-e444967882841.gif)
图像相关性SSD算法
以下内容是图像相关性方面设计算法的大体思路:
图像相关性研究
1.初始化一个图像窗口
窗口构造中定义的字段:
fenetre.centre=[];%图像窗口中心位置坐标i,j
fenetre.taille=[];%窗口大小
fenetre.sommets=[];%四个顶点的位置坐标i,j
fenetre.h;%比例因子
fenetre.wind_coul%三色图像区域的窗口框架矩阵
fenetre.wind_coul( :
:
1)→R
fenetre.wind_coul( :
:
2)→V
fenetre.wind_coul( :
:
3)→B
fenetre.wind_point%两个矩阵与窗口像素的横纵位置对应
fenetre.wind_point( :
:
1)→像素的横坐标i
fenetre.wind_point( :
:
2)→像素的纵坐标j
fenetre.wind_coul和fenetre.wind_point的字段将会被函数InitFen初始化,这个函数可以显示图像和选择图像区域.用户可以选择窗口的中心位置并手动确定其大小.中心,大小和位置将会被初始化:
.
[fenetre]=InitFen(fenetre,Image);
figure
(2)
image(fenetre.wind_coul/255)
目的是要在另一幅图中找到一个窗口或图像的一局部。
我们将针对本研究,提供以下的书籍封面。
其他图像都是一样的,只是这些书发生了移动。
初始图像最后得到的图像效果
在原始图像中,我们用鼠标选择我们想要创立的窗口,见下列图中的蓝色方框。
在Matlab中,显示如下:
选择中心:
更新大小X(指数j):
W<------X+---->C
更新大小Y(指数i):
T<------Y+---->U
输出:
S
更新大小X(指数j):
W<------X+---->C
更新大小Y(指数i):
T<------Y+---->U
输出:
S
当按C时,窗口变长;
当按U时,窗口变宽;
当按S时,显示第二幅图像。
%%%%%%%%%%%%%%初始化图像窗口%%%%%%%%%%%%%%%
clearall
closeall
fichier1='acquisition160.jpg';
x1=imread(fichier1);
figure
(1)
imshow(x1);%示原始图像
fenetre.centre=[];
fenetre.taille=[];
fenetre.sommets=[];
fenetre.niv=4;
fenetre.h=0.5;
[fenetre]=InitFen(fenetre,x1);%创立窗口
figure
(2)
image(fenetre.wind_coul/255);%显示带窗口的图像
pause
用户选择的参考窗口
2.相关
我们测量一下原窗口与下面图像局部的差异。
一种方法:
f:
图像方程
g:
参数窗口方程
f和g函数代表图像颜色,因此我们有3局部〔RVB三色的概率〕.
f=(fr,fv,fb)etg=(gr,gv,gb).当SSD最小时,我们得到(u*,v*)的最正确答案:
SSD函数为了实现彩色图像的功能,并提出一种算法来跟踪图像序列中的一个对象。
%%%%%%%%%%%%%%%%%%%%%%%相关%%%%%%%%%%%%%%%%%%%%%%%%
min=1e8;
fichier2='acquisition165.jpg';
x2=imread(fichier2);
fenetrei=fenetre;
xx=fenetrei.centre
(1)
yy=fenetrei.centre
(2);
fori=1:
1:
20
fenetrei.centre
(1)=fenetrei.centre
(1)-1;
fenetrei.centre
(2)=yy;
forj=1:
1:
20
fenetrei.sommets=[];
fenetrei.centre
(2)=fenetrei.centre
(2)-1;
[fenetrei]=InitFen(fenetrei,x2);
figure(3)
clf;
image(fenetrei.wind_coul/255)
%pause(0.05)
%%%%%%%%%%相关计算%%%%%%%%%%%%%%%%%%%%%
f1=fenetre.wind_coul(:
:
1);
f2=fenetre.wind_coul(:
:
2);
f3=fenetre.wind_coul(:
:
3);
g1=fenetrei.wind_coul(:
:
1);
g2=fenetrei.wind_coul(:
:
2);
g3=fenetrei.wind_coul(:
:
3);
[n,m]=size(f1-g1);
sommefg=(f1-g1).^2+(f2-g2).^2+(f3-g3).^2;
SSD(i,j)=sum(sum(sommefg));%计算SSD
ifSSD(i,j)fenetremin=fenetrei;%测试为了找到SSD的最小值
min=SSD(i,j);
end
end
end
%%%%%%%显示相关矩阵图像〔非标准〕%%%%%%%%
figure(4);
meshc(SSD);
%%%%%%%%%%显示相关图像误差%%%%%%%%%
erreur(:
:
1)=abs(fenetre.wind_coul(:
:
1)-fenetremin.wind_coul(:
:
1));
erreur(:
:
2)=abs(fenetre.wind_coul(:
:
2)-fenetremin.wind_coul(:
:
2));
erreur(:
:
3)=abs(fenetre.wind_coul(:
:
3)-fenetremin.wind_coul(:
:
3));
figure(5);
imshow(erreur/255);
相关图像误差
3.标准相关
两幅图像之间亮度变化的方程:
G(i,j)=a.f(i,j)+b
标准方程如下:
证明 :
Donc
%%%%%%%%%%%%%%%%%%%%%标准相关%%%%%%%%%%%%%%
f1=mean(mean(fenetre.wind_coul(:
:
1)));
f2=mean(mean(fenetre.wind_coul(:
:
2)));
f3=mean(mean(fenetre.wind_coul(:
:
3)));
Sf=sqrt((fenetre.wind_coul(:
:
1)-f1).^2+(fenetre.wind_coul(:
:
2)-f2).^2+(fenetre.wind_coul(:
:
3)-f3).^2);
fchapo1=(fenetre.wind_coul(:
:
1)-f1)./Sf;
fchapo2=(fenetre.wind_coul(:
:
2)-f2)./Sf;
fchapo3=(fenetre.wind_coul(:
:
3)-f3)./Sf;
fichier2='acquisition165.jpg';
x2=imread(fichier2);
%%%%%%%%x2亮度转型显示%%%%%%%%%%%%%
%%%%%%%%x3=f(x2)%%%%%%%%%%%%%%%%%%
a=1.2;
b=20;
x3=a.*x2+b;
fenetrei=fenetre;
xx=fenetrei.centre
(1)
yy=fenetrei.centre
(2);
fori=1:
20
fenetrei.centre
(1)=fenetrei.centre
(1)-1;
fenetrei.centre
(2)=yy;
forj=1:
20
fenetrei.sommets=[];
fenetrei.centre
(2)=fenetrei.centre
(2)-1;
[fenetrei]=InitFen(fenetrei,x2);
[fenetrej]=InitFen(fenetrei,x3);
figure(6)
clf;
figure(7)
clf;
%%%%%%%%%%%计算标准相关%%%%%%%%%%%%%%
g1=mean(mean(fenetrei.wind_coul(:
:
1)));
g2=mean(mean(fenetrei.wind_coul(:
:
2)));
g3=mean(mean(fenetrei.wind_coul(:
:
3)));
Sg=sqrt((fenetrei.wind_coul(:
:
1)-g1).^2+(fenetrei.wind_coul(:
:
2)-g2).^2+(fenetrei.wind_coul(:
:
3)-g3).^2);
gchapo1=(fenetrei.wind_coul(:
:
1)-g1)./Sg;
gchapo2=(fenetrei.wind_coul(:
:
2)-g2)./Sg;
gchapo3=(fenetrei.wind_coul(:
:
3)-g3)./Sg;
sommefg=(fchapo1-gchapo1).^2+(fchapo2-gchapo2).^2+(fchapo3-gchapo3).^2;
SSD(i,j)=sum(sum(sommefg));
ifSSD(i,j)fenetremin=fenetrei;
min=SSD(i,j);
end
end
end
%%%%%%%%%%%%%%显示测试结果%%%%%%%%%%%%%%%%
figure(8);
meshc(SSD);
标准相关