% nacteni M = load_corr('prvni.mat'); N = size(M,2); for J=1:N, %liche A(2*J-1,1)=M(1,J); A(2*J-1,2)=M(2,J); A(2*J-1,3)=1; A(2*J-1,4)=0; A(2*J-1,5)=0; A(2*J-1,6)=0; A(2*J-1,7)=-M(3,J)*M(1,J); A(2*J-1,8)=-M(3,J)*M(2,J); A(2*J-1,9)=-M(3,J); %sude A(2*J,1)=0; A(2*J,2)=0; A(2*J,3)=0; A(2*J,4)=M(1,J); A(2*J,5)=M(2,J); A(2*J,6)=1; A(2*J,7)=-M(4,J)*M(1,J); A(2*J,8)=-M(4,J)*M(2,J); A(2*J,9)=-M(4,J); end % Vypocet koeficientu alfa a matice H [U,D,V]=svd(A); HH = V(:,end)'; H = (reshape(HH,3,3))' % Nacteni obrazku Im1=double(imread('panorama1.jpg')); Im2=imread('panorama2.jpg'); size1=size(Im1); size2=size(Im2); offx=100; offy=1; Im3=zeros(2*size2(1),2*size2(2),3); %umisteni leveho obrazku Im3(offx:size2(1)+offx-1,offy:size2(2)+offy-1,:)=Im2(:,:,:); IH = inv(H); for j=(150):(2*size2(2)-100) for i=(-50):(2*size2(1)-200) pom = IH*[j,i,1]'; pom = pom./pom(3); % bez interpolace %x = round(pom(1)); %y = round(pom(2)); % s interpolaci xl = floor(pom(1)); x = pom(1); yl = floor(pom(2)); y = pom(2); if (x<=(size1(2)-1) & x>=10 & y>=1 & y<=(size1(1)-1)) % s interpolaci val1 = (xl+1-x)*Im1(yl, xl,:)+(x-xl)*Im1(yl, xl+1,:); val2 = (xl+1-x)*Im1(yl+1, xl,:)+(x-xl)*Im1(yl+1, xl+1,:); val3 = (y-yl)*val2+(yl+1-y)*val1; Im3(i+offx-1,j+offy,:)=val3; % bez intrepolace %Im3(i+offx-1,j+offy,:) = Im1(y, x,:); end end end % zobrazeni Im3 = Im3./255; figure; imshow(Im3,[])