0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 function [Nf,yi,zi,w]= ...
0021 LSM_62_sym_find_observation_positions(g,h,vg,vh,xa,Nf_MIN,pt)
0022
0023 BOUND = 3;
0024
0025
0026 Ng=(size(g,1)-1)/2;
0027 Nh=(size(h,1)-1)/2;
0028
0029
0030 B = [xa(1) xa(3) xa(5);xa(2) xa(4) xa(6);0 0 1];
0031 Bi = inv(B);
0032
0033
0034
0035 Ngr = Ng-BOUND;
0036 bbg = square_corners(Ngr);
0037 bbgf = B*bbg;
0038 bbgfp = [bbgf,bbgf(:,1)];
0039
0040 Nhr = Nh-BOUND;
0041 bbh = square_corners(Nhr);
0042 bbhf = Bi*bbh;
0043 bbhfp = [bbhf,bbhf(:,1)];
0044
0045 dmin=10000;
0046 for i=1:4
0047
0048 u = cos(pi/4*(2*i-1));
0049 v = sin(pi/4*(2*i-1));
0050
0051 for j=1:4
0052
0053 distg = dist_poly_ray(bbgfp,j,u,v);
0054 disth = dist_poly_ray(bbhfp,j,u,v);
0055
0056 dmin = min([dmin,distg,disth]);
0057 end
0058 end
0059
0060 Nf = floor((dmin)/sqrt(2))-1;
0061 Nfr = Nf-BOUND;
0062
0063 if Nf < Nf_MIN
0064 yi=0;
0065 zi=0;
0066 w=0;
0067 return
0068 end
0069
0070
0071
0072 k=0;
0073 yi=[];
0074 yi=[];
0075 fg=[];
0076 w=[];
0077 for i=-Ngr:Ngr
0078 for j=-Ngr:Ngr
0079 xh = B*[i;j;1];
0080 x = xh(1)/xh(3);
0081 y = xh(2)/xh(3);
0082
0083 if (round(x) > -Nfr) && (round(x) < Nfr) ...
0084 && (round(y) > -Nfr) && (round(y) < Nfr)
0085 k=k+1;
0086
0087
0088 yi(1:2,k)=[i+Ng;j+Ng];
0089 w(k) = 1/vg(g(i+Ng,j+Ng)+1);
0090 end
0091 end
0092 end
0093
0094 Kg=size(yi,2);
0095
0096
0097 k=0;
0098 zi=[];
0099 zi=[];
0100 fh=[];
0101 for i=-Nhr:Nhr
0102 for j=-Nhr:Nhr
0103 xh = Bi*[i;j;1];
0104 x1 = xh(1)/xh(3);
0105 y1 = xh(2)/xh(3);
0106
0107
0108 if (round(x1) > -Nfr) && (round(x1) < Nfr) ...
0109 && (round(y1) > -Nfr) && (round(y1) < Nfr)
0110 k=k+1;
0111
0112
0113 zi(1:2,k)=[i+Nh;j+Nh];
0114 w(Kg+k) = 1/vh(h(i+Nh,j+Nh)+1);
0115 end
0116 end
0117 end
0118
0119 Kh=size(zi,2);
0120
0121
0122 w = w(:);
0123
0124 if pt > 1
0125
0126 figure('Name','areas in middle image')
0127 hold on
0128 axis equal
0129 Nfb=Nf-BOUND;
0130
0131
0132 plot_quadrangle([-Nf,-Nf,Nf,Nf;...
0133 -Nf,Nf,+Nf,-Nf],'-r');
0134
0135 plot_quadrangle([-Nfb,-Nfb,Nfb,Nfb;...
0136 -Nfb,Nfb,+Nfb,-Nfb],'--r')
0137 plot_quadrangle(bbgfp,'-g')
0138 plot_quadrangle(bbhfp,'-b')
0139 plot(1.5*[-Nf,Nf],1.5*[+Nf,-Nf],'--k')
0140 plot(1.5*[-Nf,Nf],1.5*[-Nf,+Nf],'--k')
0141
0142
0143 xih = Bi*[zi-Nh*ones(2,Kh);ones(1,Kh)];
0144 plot(xih(1,:),xih(2,:),'og','MarkerSize',8)
0145
0146
0147 xig = B*[yi-Ng*ones(2,Kg);ones(1,Kg)];
0148 plot(xig(1,:),xig(2,:),'ob','MarkerSize',8)
0149
0150 end
0151 return