图像中角点提取与匹配算法Word文件下载.docx
- 文档编号:15299815
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:13
- 大小:34.61KB
图像中角点提取与匹配算法Word文件下载.docx
《图像中角点提取与匹配算法Word文件下载.docx》由会员分享,可在线阅读,更多相关《图像中角点提取与匹配算法Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
det(M)表示矩阵M的行列式,trace(M)表示矩阵的迹。
当目标像素点的CRF值大于给定的阈值时,该像素点即为角点。
下面是图像一用Harris角点检测算法得到的角点坐标位置
x
212
301
309
353
58
201
178
202
186
329
161
57
306
y
2
65
68
77
94
142
143
144
150
170
177
228
在图像一上画出该角点的坐标位置如下图所示:
其中蓝色小方块代表的是检测出来的角点坐标位置。
2.匹配。
将两幅图像进行Harris角点检测后,分别得到角点对应与该图像的坐标位置,以该坐标位置为中心,分别取其附近的8个像素值,然后进行与另一幅图像进行匹配,找出距离最小的点作为匹配点。
例如下面是图像一角点坐标位置
与该位置对应的8个像素值分别为
角点1
角点2
角点3
。
角点17
(x-1,y-1)
30
7
35
(x-1,y)
48
59
17
9
(x-1,y+1)
37
108
128
63
(x,y+1)
31
114
15
101
(x+1,y+1)
183
32
95
(x+1,y)
25
20
(x+1,y-1)
92
24
49
(x,y-1)
3
22
198
接着,将图像一中的角点1与图像二中的所有角点进行相减,得到一个最小误差值,并记录下该位置,这样依次将图像一中的角点2,角点3一直到角点17都进行相减,即可得到两幅图像之间的最佳匹配点。
下面是两幅图像角点匹配的最佳坐标位置
匹配点
10
13
14
16
4
5
12
误差值
336
105
64
53
34
104
389
204
400
其中匹配点的值为0代表没有找到匹配点
3.显示匹配点。
对已经找出的匹配点,在图像上进行显示,这样有利于人眼判断该算法是否匹配正确。
下面是第一次显示找到的匹配点(两幅图像中共有9个匹配点)
下面是第二次显示找到的匹配点(比上一次少一个,判断依据是将误差值最大的点去除)
从上面可以看出,14号点已经被删除,原因是该点的误差值最大
下面是最后一次显示找到的匹配点
只留下最后三个匹配点,如果少于三个匹配点,则很难进行两幅图像的合并,所以当只有留下三个匹配点的时候,程序退出。
2实验结果
实验一
原始图像
第一次匹配的结果
最后一次匹配的结果
实验二
实验三
实验四
可以看出,利用该算法进行两幅图像匹配结果还算正确。
算法代码(用matlab语言写的)
functiontest()
%Thetestfunctiongivesanexampleofkeypointextractionusingthe
%methods:
%-Harris
%
%Example
%=======
%test();
%Harris
%importthefirstpicture
%img11=imread('
'
);
%img1=double(img11(:
:
1));
img11=imread('
img1=rgb2gray(img11);
img1=double(img1(:
));
pt1=kp_harris(img1);
%draw(img11,pt1,'
Harris'
%importthesecondpicture
%img21=imread('
%img2=double(img21(:
img21=imread('
img2=rgb2gray(img21);
img2=double(img2(:
pt2=kp_harris(img2);
%draw(img21,pt2,'
%matchkeypointswithintwopictures.
result=match(img1,pt1,img2,pt2);
result(1,intersect(find(result(1,:
)>
0),find(result(2,:
)==0)))=0;
%result
%pause;
while(length(find(result(1,:
)>
0))>
3)
result
draw2(img11,img21,pt1,pt2,result);
%find(result(1,:
0)
pause;
[indexindex]=max(result(2,:
result(1,index
(1))=0;
result(2,index
(1))=0;
%result(1,I
(1))=result(2,I
(1))=0
end
end
functiondraw2(img1,img2,pt1,pt2,result)
h=figure;
%set(gcf,'
outerposition'
get(0,'
screensize'
subplot(1,2,1);
%holdon;
imshow(img1);
subplot(1,2,2);
imshow(img2);
s=size(pt1,2);
fori=1:
size(pt1,1)
rectangle('
Position'
[pt1(i,2)-s,pt1(i,1)-s,2*s,2*s],'
Curvature'
[00],'
EdgeColor'
'
b'
LineWidth'
2);
%text(pt1(i,2)+3,pt1(i,1)+3,num2str(i),'
BackgroundColor'
[111]);
%text(pt2(i,2),pt2(i,1),num2str(i));
%plot(pt2(i,2),pt2(i,1));
size(pt2,1)
[pt2(i,2)-s,pt2(i,1)-s,2*s,2*s],'
%size(pt1)
%size(pt2)
size(result,2)
if(result(1,i)~=0)
text(pt1(result(1,i),2)+3,pt1(result(1,i),1)+3,num2str(i),'
%result(1,i)
%pt1(result(1,i),2)
%pt1(result(1,i),1)
text(pt2(i,2)+3,pt2(i,1)+3,num2str(i),'
functionresult=match(img1,pt1,img2,pt2)
%得到标定点周围的像素值
regionValue1=getRegionValue(img1,pt1);
len1=size(regionValue1,2);
regionValue2=getRegionValue(img2,pt2);
len2=size(regionValue2,2);
%找出最佳匹配点
result=zeros(2,len2);
len1
B=regionValue1(:
i);
%abs(regionValue2-B(:
ones(1,size(regionValue2,2))))
%sum(abs(regionValue2-B(:
ones(1,size(regionValue2,2)))))
[value,index]=sort(sum(abs(regionValue2-B(:
ones(1,size(regionValue2,2))))));
%value
(1)
%index
(1)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图像 中角点 提取 匹配 算法