2013-03-20 186 views
0

我有一个精度问题。 我在实验过程中拍摄了许多图像(照片)。我想标记这张照片是在一个情节上拍摄的。要获取文件信息,我使用:确定使用Matlab拍摄照片的确切时间

fileinfo = dir('myfile.jpg') 

fileinfo = 
    name: 'myfile.jpg' 
    date: '16-Mar-2006 13:34:01' %My problem is here!! 
    bytes: 251 
    isdir: 0 
datenum: 7.3275e+005 

照片拍摄快速连续地和我想获得精确到小数点但Matlab的是四舍五入到最接近的第二位。 任何想法如何得到像13:34:01.34datenum更准确吗?由于

+2

datenum更准确吗?它肯定可能是,你有没有尝试从'fileinfo'结构中提取它并更仔细地检查它? – 2013-03-20 14:48:33

+0

我有@HighPerformanceMark,但是当我将其转换回datevector格式(我能理解的东西)它仍然没有准确性 – Seb 2013-03-20 14:50:48

+0

Matlab datevec秒部分包含一个小数部分。如果在将datenum转换为datevec时,秒的小数部分等于0,表示您寻找的亚秒精度不能从jpg文件中获得。 – 2013-03-20 14:56:10

回答

0

一些建议

  1. 情节您的所有照片的datenum值,看看它是否有意义

    >> fls = dir('*.jpg'); % list all files 
    >> plot([fls(:).datenum], '-+'); % see if all images has unique datenum 
    
  2. 你可能已经存储在exif

  3. 其他信息
+0

谢谢。我采纳了您的建议,但文件没有唯一的日期编号 – Seb 2013-03-20 16:38:59

+0

@ user1002744 - 如果是这种情况,它看起来好像两次拍摄之间的时间间隔小于“eps(fileinfo.datenum)” - 时刻。如果有更准确的信息,请检查exif数据。 – Shai 2013-03-20 16:40:44

0

您是否尝试过使用命令imfinfo而不是dir返回的信息? imfinfo返回包含图像文件的EXIF数据的结构,我相信这些数据包括有关拍摄图像的时间的更详细信息,在ImageModTime的字段中。

在老版本的MATLAB中,使用命令exifread而不是imfinfo

+0

imfinfo肯定有更多的信息,但它仍然不是十进制准确的 – Seb 2013-03-20 16:39:35

+1

我看起来更深一点 - 我认为可能有一种方法来修改'imfinfo'的内部,将某些调用的输出格式更改为'datestr' 。不幸的是,当你深入挖掘时,你会发现'imfinfo'返回的信息被mex文件'matlabroot \ toolbox \ matlab \ imagesci \ private \ imjpg8.mexw64'收集,这是不可修改的。抱歉。 – 2013-03-20 17:14:17