0001 function [fe,fes,fgi,fhi] = LSM_62_sym_warp_estimate_f(g,h,vg,vh,Nf,xa,sigma,pt)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 B = [xa(1) xa(3) xa(5);xa(2) xa(4) xa(6);0 0 1];
0020 S = [xa(7);xa(8)];
0021 Bi = inv(B);
0022
0023
0024 Ng = (size(g,1)-1)/2;
0025 Nh = (size(h,1)-1)/2;
0026
0027 Mf = 2*Nf+1;
0028
0029 fe = zeros(2*Nf+1);
0030 fes = zeros(2*Nf+1);
0031 fgi = zeros(2*Nf+1);
0032 fhi = zeros(2*Nf+1);
0033
0034
0035
0036
0037
0038
0039 BC = [1 0 Ng+1;0 1 Ng+1; 0 0 1]* Bi*[1 0 -Nf-1;0 1 -Nf-1; 0 0 1];
0040 T = maketform('affine',inv(BC)');
0041 xdata = [1,Mf]; ydata = [1,Mf];
0042 fg_v = imtransform(g',T,'bicubic','xdata',xdata,'ydata',ydata)';
0043 fg_v = S(1) * fg_v/255 + S(2);
0044
0045
0046 fg_v = max(0,fg_v);
0047 fg_v = min(1,fg_v);
0048
0049
0050 wg_v = 1./vg(round(fg_v(:,:)*255+1))/S(1)^2;
0051
0052
0053 BC = [1 0 Nh+1;0 1 Nh+1; 0 0 1] * B * [1 0 -Nf-1;0 1 -Nf-1; 0 0 1];
0054 T = maketform('affine',inv(BC)');
0055 xdata = [1,Mf]; ydata = [1,Mf];
0056 fh_v = imtransform(h',T,'bicubic','xdata',xdata,'ydata',ydata)';
0057 fh_v = (fh_v/255-S(2))/S(1);
0058
0059
0060 fh_v = max(0,fh_v);
0061 fh_v = min(1,fh_v);
0062
0063
0064 wh_v = 1./vh(round(fh_v(:,:)*255+1))*S(1)^2;
0065
0066
0067 fe_v = (wg_v.*fg_v+wh_v.*fh_v)./(wg_v+wh_v);
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112 fgi = fg_v;
0113 fhi = fh_v;
0114 fe = fe_v;
0115
0116 if sigma > 0
0117
0118 fes = gaussFFT(fe,sigma,'G');
0119 else
0120 fes = fe;
0121 end
0122
0123 if pt > 1
0124 figure(13)
0125 subplot(1,2,1)
0126 hist(fgi(:)-fe(:),2*Nf+1);
0127 title(['mean(g-f) = ',num2str(mean(fgi(:)-fe(:)))])
0128 subplot(1,2,2)
0129 hist(fhi(:)-fe(:),2*Nf+1);
0130 title(['mean(h-f) = ',num2str(mean(fhi(:)-fe(:)))])
0131 Cov_fg=cov(fgi(:),fhi(:));
0132 title('Histogram of residuals of restaured images')
0133
0134 end
0135 end
0136