zoukankan      html  css  js  c++  java
  • 读取siftgeo格式文件的matlab程序

    % This function reads a siftgeo binary file %读取siftgeo格式的二进制文件
    %
    % Usage: [v, meta] = siftgeo_read (filename, maxdes)
    %   filename    the input filename
    %   maxdes      maximum number of descriptors to be loaded 要加载的描述子最大数量
    %   (default=unlimited)%默认无限制
    %
    % Returned values %返回值
    %   v           the sift descriptors (1 descriptor per line) %每行一个sift描述子
    %   meta        meta data for each descriptor, i.e., per line: %每个描述子的元数据
    %               x, y, scale, angle, mi11, mi12, mi21, mi22, cornerness
    function [v, meta] = siftgeo_read (filename, maxdes) 
    
    if nargin < 2 %nargin:number of arguments input %nargout:number of arguments ouput
      maxdes = 100000000; %1亿
    end
      
    % open the file and count the number of descriptors
    fid = fopen (filename, 'r');
     
    fseek (fid, 0, 1); %fseek(fid, 0, 'eof'); 跳到文件末尾 %'bof' or -1   Beginning of file;  'cof' or  0   Current position in file;  'eof' or  1   End of file
    n = ftell (fid) / (9 * 4 + 1 * 4 + 128); %n是descriptors的数量 %return the current position (number of bytes from the file beginning)
    fseek (fid, 0, -1); %fseek(fid, 0, 'bof') 跳到文件开头
    
    
    if n > maxdes
      n = maxdes;
    end;
    
    % first read the meta information associated with the descriptor
    meta = zeros (n, 9, 'single'); %n*9矩阵
    v = zeros (n, 128, 'single'); %n*128矩阵
    
    % read the elements
    for i = 1:n %n是要读区的descriptors数量
      meta(i,:) = fread (fid, 9, 'float'); %(float)*9 元数据信息
      d = fread (fid, 1, 'int'); %(int)*1
      v(i,:) = fread (fid, d, 'uint8=>single'); %(uint8=>single)*d 描述子
    end
    
    fclose (fid);
    

      

  • 相关阅读:
    在.net C#里怎样调用非托管动态库函数dll?
    Visual C#中的MDI编程
    c#图形装置接口
    粗糙集理论介绍
    Using .NET DataSet in Flex 2
    图象光照研究路线
    基于光照模型应用前景
    使用netsh.exe配置TCP/IP
    vb.net 防止MDI子窗体被多次实例化的四种方法
    一定概率选中某一字母
  • 原文地址:https://www.cnblogs.com/GarfieldEr007/p/4631329.html
Copyright © 2011-2022 走看看