function test()
% The test function gives an example of keypoint extraction using the
% methods :
% - Harris
%
% Example
% =======
% test();
% Harris
% import the first picture
%img11 = imread('door1.jpg');
%img11 = imread('gx21.jpg');
%img11 = imread('woman1.jpg');
%img1 = double(img11(:,:,1));
img11 = imread('91.jpg');
img1 = rgb2gray(img11);
img1 = double(img1(:,:));
pt1 = kp_harris(img1);
%[a,b,c]=size(img11)
%draw(img11,pt1,'Harris');
% import the second picture
%img21 = imread('door2.jpg');
%img21 = imread('gx22.jpg');
%img21 = imread('woman2.jpg');
%img2 = double(img21(:,:,1));
img21 = imread('92.jpg');
img2 = rgb2gray(img21);
img2 = double(img2(:,:));
pt2 = kp_harris(img2);
%draw(img21,pt2,'Harris');
% match key points within two pictures.
result = match1(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;
[index index] = max(result(2,:));
result(1,index(1)) = 0;
result(2,index(1)) = 0;
%result(1,I(1)) = result(2,I(1)) = 0
end
draw2(img11,img21,pt1,pt2,result);
maxpt1y=pt1(1,1);
minpt1y=pt1(1,1);
for i=2:size(pt1,1)
if(result(1,i)~=0&&pt1(i,1)>maxpt1y)
maxpt1y=pt1(i,1);
elseif(result(1,i)~=0&&pt1(i,1)<minpt1y)
minpt1y=pt1(i,1);
else continue;
end
end
maxpt1x=pt1(1,2);
minpt1x=pt1(1,2);
for i=2:size(pt1,1)
if(result(1,i)~=0&&pt1(i,2)>maxpt1x)
maxpt1x=pt1(i,2);
elseif(result(1,i)~=0&&pt1(i,2)<minpt1x)
minpt1x=pt1(i,2);
else continue;
end
end
maxpt2y=pt2(1,1);
minpt2y=pt2(1,1);
for i=2:size(pt2,1)
if(result(1,i)~=0&&pt2(i,1)>maxpt2y)
maxpt2y=pt2(i,1);
elseif(result(1,i)~=0&&pt2(i,1)<minpt2y)
minpt2y=pt2(i,1);
else continue;
end
end
maxpt2x=pt2(1,2);
minpt2x=pt2(1,2);
for i=2:size(pt2,1)
if(result(1,i)~=0&&pt2(i,2)>maxpt2x)
maxpt2x=pt2(i,2);
elseif(result(1,i)~=0&&pt2(i,2)<minpt2x)
minpt2x=pt2(i,2);
else continue;
end
end
[size_1_y,size_1_x]=size(img1);
[size_2_y,size_2_x]=size(img2);
%minpt1x,maxpt1x,minpt1y,maxpt1y,minpt2x,maxpt2x,minpt2y,maxpt2y,
if maxpt1y>maxpt2y
z1=img11(maxpt1y-maxpt2y:size_1_y,1:minpt1x,1:3);
z2=img21(1:size_1_y-maxpt1y+maxpt2y+1,minpt2x:size_2_x,1:3);
z=[z1,z2];
else maxpt1y<maxpt2y
z1=img11(1:size_2_y-maxpt2y+maxpt1y+1,1:minpt1x,1:3);
z2=img21(maxpt2y-maxpt1y:size_2_y,minpt2x:size_2_x,1:3)
z=[z1,z2];
end
%window_ay1=fix(size_1_y/40);
%window_ay2=fix(size_1_y-window_ay1);
%window_ax1=fix(size_1_x/90);
%window_ax2=fix(size_1_x/2);
%window_a=img11(window_ay1:window_ay2,window_ax1:minpt1x);%选取了特征窗口,这里选用了101*101的窗口,可根据图片大小选择相应窗口大小
%window_ax11=fix(size_2_x/90);
%window_ax21=fix(size_2_x-window_ax11);
%window_b=img21(window_ay1:window_ay2,minpt1x:window_ax21);%选取了特征窗口,这里选用了101*101的窗口,可根据图片大小选择相应窗口大小
%[window_h,window_l]=size(window_a);
%figure,imshow(window_a),title('第一幅选择窗口');
%figure,imshow(window_b),title('第二幅选择窗口');
%high=size_1_y;
%width=size_2_x+minpt2x-minpt1x;
%z=zeros(high,width); %%拼接后的图片大小
%z(minpt1x:minpt1x+10,minpt1y:minpt1y+10)=img1(minpt1x:minpt1x+10,minpt1y:minpt1y+10);
%if(minpt1x<minpt2x)
% z(1:high,1:maxpt2x)=img2(1:high,1:maxpt2x);
% z(1:high,maxpt2x+1:width)=img1(1:high,maxpt2x+1:width);
%else z(1:high,1:maxpt2x)=img1(1:high,1:maxpt2x);
% z(1:high,maxpt2x+1:width)=img2(1:high,maxpt2x+1:width);
%end
figure,imshow(z1),title('z1');
figure,imshow(z2),title('z2');
figure,imshow(z),title('z')
end
评论0