如何在MATLAB imwrite中保留图像元数据?

时间:2016-08-14 12:48:43

标签: matlab

我想保留图片元数据,但我的代码会删除所有元数据。我怎么阻止这个?我从MATLAB SDE命令提示符运行此脚本。代码如下:

p = which('G0011363.JPG');
filelist = dir([fileparts(p) filesep '*.JPG']);
fileNames = {filelist.name};
fileNames_size = size(fileNames,2);
number_of_colums = fileNames_size;
for k = 1:number_of_colums
   imwrite(undistortImage(imread(fileNames{k}), cameraParams2cof, 'OutputView', 'valid'), (strcat(int2str(k), 'R2_3COF_ONRcorrected.jpg')));
end

2 个答案:

答案 0 :(得分:1)

您可以使用imfinfo在元数据中阅读,并且可以使用imwrite(只要支持特定代码)将特定元数据写入图像文件中作为键/值对。请查看help imwrite以获取更多信息。

示例:

>> I = imread('NeverGonnaGiveYouUp.png');          
>> imwrite(I, 'output.png', 'png','Author','Rick Astley');
>> Iinfo = imfinfo('output.png'); 
>> Iinfo.Author
ans =
Rick Astley

答案 1 :(得分:0)

我找到了一个解决方案,但它并不完美......

注意:已发布的解决方案适用于Windows操作系统。

在提到图像元数据时,我认为你的意思是Exif data

根据https://www.mathworks.com/matlabcentral/answers/152559-writing-exif-data-to-jpg

  

不幸的是,目前还没有现成的功能可以将EXIF数据写入MATLAB中的图像文件。您只能从图像文件(exifread和imfinfo)中读取EXIF数据。

您可以使用run_exiftool将Exif数据从一个图像复制到另一个图像:

  1. 下载并解压缩exiftool-10.25.zip
  2. 将文件exiftool(-k).exe复制到您的工作文件夹,并将文件重命名为exiftool.exe
  3. https://www.mathworks.com/matlabcentral/fileexchange/42000-run-exiftool下载run_exiftool,将 getexif.m putexif.m 下载到您的工作文件夹。
  4. 尝试以下代码示例:

    %Copy the file from c:\Program Files\MATLAB\R2014b\mcr\toolbox\matlab\demos\ to local folder.
    %Note: ngc6543a.jpg is part of Matlab installation.
    copyfile([matlabroot, '/mcr/toolbox/matlab/demos/ngc6543a.jpg'], cd);
    
    %Read image
    I = imread('ngc6543a.jpg');
    
    %Save I to myfile.jpg and add Exif data of ngc6543a.jpg to myfile.jpg
    status = putexif(I, 'myfile.jpg', 'ngc6543a.jpg');
    
    %Read Exif data from ngc6543a.jpg
    [ngc6543a_exifdata, ngc6543a_nf] = getexif('ngc6543a.jpg');
    
    %Read Exif data from myfile.jpg
    [myfile_exifdata, myfilenf] = getexif('myfile.jpg');
    

    我收到一条警告信息:Warning: Exif tags may not have been copied,但似乎有效。

    结果:

    >> ngc6543a_exifdata
    
    ngc6543a_exifdata =
    
    ExifToolVersion                 : 10.25
    FileName                        : ngc6543a.jpg
    Directory                       : .
    FileSize                        : 27 kB
    FileModifyDate                  : 2014:07:27 12:00:28+03:00
    FileAccessDate                  : 2016:08:14 17:42:23+03:00
    FileCreateDate                  : 2016:08:14 17:18:27+03:00
    FilePermissions                 : rw-rw-rw-
    FileType                        : JPEG
    FileTypeExtension               : jpg
    MIMEType                        : image/jpeg
    JFIFVersion                     : 1.01
    ResolutionUnit                  : None
    XResolution                     : 1
    YResolution                     : 1
    Comment                         : CREATOR: XV Version 3.00b  Rev: 6/15/94  Quality = 75, Smoothing = 0.
    ImageWidth                      : 600
    ImageHeight                     : 650
    EncodingProcess                 : Baseline DCT, Huffman coding
    BitsPerSample                   : 8
    ColorComponents                 : 3
    YCbCrSubSampling                : YCbCr4:2:0 (2 2)
    ImageSize                       : 600x650
    Megapixels                      : 0.390
    
    
    >> myfile_exifdata
    
    myfile_exifdata =
    
    ExifToolVersion                 : 10.25
    FileName                        : myfile.jpg
    Directory                       : .
    FileSize                        : 75 kB
    FileModifyDate                  : 2016:08:14 18:08:51+03:00
    FileAccessDate                  : 2016:08:14 18:08:51+03:00
    FileCreateDate                  : 2016:08:14 17:40:22+03:00
    FilePermissions                 : rw-rw-rw-
    FileType                        : JPEG
    FileTypeExtension               : jpg
    MIMEType                        : image/jpeg
    JFIFVersion                     : 1.01
    ResolutionUnit                  : None
    XResolution                     : 1
    YResolution                     : 1
    Comment                         : CREATOR: XV Version 3.00b  Rev: 6/15/94  Quality = 75, Smoothing = 0.
    ImageWidth                      : 600
    ImageHeight                     : 650
    EncodingProcess                 : Baseline DCT, Huffman coding
    BitsPerSample                   : 8
    ColorComponents                 : 3
    YCbCrSubSampling                : YCbCr4:2:0 (2 2)
    ImageSize                       : 600x650
    Megapixels                      : 0.390