2013-03-20 184 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