Advertisement
Guest User

Untitled

a guest
Jul 12th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.64 KB | None | 0 0
  1. %Einlesen der Kameraparameter
  2. %camPar = dlmread('test.txt', '\t', 0, 1);
  3. %Versuch etwas sinnvolles hinzubekommen
  4. %camNumber = textscan('test.txt', '\bild', delimiter, '.jpg');
  5. fileID = fopen('test.txt');
  6. C = textscan(fileID,'%11s%f%2s  %f %f %f %f %f %f %f %f %f %f');
  7. fclose(fileID);
  8. Z = C{2};
  9. camPar = [imag(C{2}),C{4},C{5},C{6},C{7},C{8},C{9},C{10},C{11},C{12}]
  10.  
  11. M1 = zeros(1092*1080, 4);
  12. M2 = zeros(1, 4);
  13.  
  14. %Loop um für jedes Bild Daten zu bekommen
  15. for i = 1:size(camPar, 1)
  16.    
  17.     %Intrinsische Kameraparameter
  18.     K = [camPar(i, 2), camPar(i,10)/(camPar(i, 2))^2, 960
  19.         0, camPar(i, 2), 540
  20.         0, 0, 1];
  21.     % Quaternion zu Rotationsmatrix
  22.     Qrotation = [camPar(i, 3) camPar(i, 4) camPar(i, 5) camPar(i, 6)];
  23.  
  24.     w = Qrotation(1);
  25.     x = Qrotation(2);
  26.     y = Qrotation(3);
  27.     z = Qrotation(4);
  28.  
  29.     Rxx = 1 - 2*(y^2 + z^2);
  30.     Rxy = 2*(x*y - z*w);
  31.     Rxz = 2*(x*z + y*w);
  32.  
  33.     Ryx = 2*(x*y + z*w);
  34.     Ryy = 1 - 2*(x^2 + z^2);
  35.     Ryz = 2*(y*z - x*w );
  36.  
  37.     Rzx = 2*(x*z - y*w );
  38.     Rzy = 2*(y*z + x*w );
  39.     Rzz = 1 - 2 *(x^2 + y^2);
  40.  
  41.     R = [
  42.         Rxx,    Rxy,    Rxz;
  43.         Ryx,    Ryy,    Ryz;
  44.         Rzx,    Rzy,    Rzz];
  45.  
  46.     %Translation
  47.     T = [camPar(i, 7); camPar(i, 8); camPar(i, 9)];
  48.     %Berechnung der Projektionsmatrix
  49.  
  50.     RT = [R,-R*T];
  51.     RT0 = [RT; 0 0 0 1];
  52.     K0 = [K, zeros(3, 1)];
  53.     KRT = [K0*RT0; 0,0,0,1];
  54.     KRTI = inv(KRT);
  55.  
  56.     %Laden der Depthsmap
  57.     newDepth = load(['Bilder\depth' int2str(camPar(i, 1)) '.txt'],'-ascii');
  58.     newDepth = newDepth/168;
  59.     %% room for your implementation of a 3D-reconstruction
  60.     for j = 1:4:1080
  61.         for k = 1:4:1920
  62.             l = sub2ind([1080, 1920], j, k);
  63.             %Pointcloud erzeugen
  64.            if(newDepth(j, k) <= 750/168 && newDepth(j,k) >= 400/168)
  65.                 M1(l,:) = (KRT\([k*newDepth(j, k); j*newDepth(j, k); newDepth(j, k); 1]))';
  66.            end
  67.         end
  68.     end
  69.     %Anhängen an große Pointcloud
  70.     M2 = [M2;M1];
  71.     i
  72. end
  73.  
  74. 'Ich bin fast fertig'
  75.  
  76. M2 = M2(:,1:end-1);
  77. M2( all(M2 ==0, 2), :) = [];
  78.  
  79. %showPointCloud(M2)
  80. % Speichern der Pointcloud
  81. header = 'ply\n';
  82. header = [header, 'format ascii 1.0\n'];
  83. header = [header, 'element vertex ', num2str(size(M2, 1)), '\n'];
  84. header = [header, 'property float x\n'];
  85. header = [header, 'property float y\n'];
  86. header = [header, 'property float z\n'];
  87. header = [header, 'element face 0\n'];
  88. header = [header, 'property list uchar int vertex_indices\n'];
  89. header = [header, 'end_header\n'];
  90.  
  91. fid = fopen('test.ply', 'w');
  92. fprintf(fid, header);
  93. dlmwrite('test.ply', M2, '-append', 'delimiter', '\t', 'precision', 3);
  94. fclose(fid);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement