命令行读取DNG图像

时间:2017-09-01 02:33:12

标签: matlab tiff dng

经过一段时间后,在hereherehereherehere之后尝试了“提示”,“提示”,“猜测”和“试用”。 here,即使通过here和其他人提出的SO问题,并使用herehereThis中的多个软件,我仍然无法使用找到如何通过命令行转换DNG原始图像文件的功能示例

我不是在寻找所有案例解决方案,只是转换任何给定DNG图像的功能命令行示例。

This是最好的,但是,很棒,不要跑,因为“人们会错过这一重要的一步”(谢谢!)。

ASCII table只不过是一个“提示”,没有任何文件实际转换而遗漏。从这里开始,我无法进一步完成所需的正确转换(图像看起来太“暗”)。

dcraw命令行程序,需要一些“配置”(哪一个?)以避免颜色偏差,以及“从图片中心到外部的阴影环”,同时比较它用适当的Adobe转换器输出tiff,不幸的是命令行(命令行调用):

dcraw -T filename

最好的功能不完整代码应该是一个简单的dngread函数如下(Matlab代码):

function img=dngread(filename,options)
%% READ DNG IMAGE FILES

% READ BASIC INFO
info = imfinfo(filename);
info.SubIFDs{1};

% READ COLOR FILTER ARRAY
warning off MATLAB:tifflib:TIFFReadDirectory:libraryWarning
t = Tiff(filename,'r');
offsets = getTag(t,'SubIFD');
setSubDirectory(t,offsets(1));
cfa = read(t);
close(t);

% LINEARIZATION TABLE
%curve = info.SubIFDs{1}.LinearizationTable

% DEMOSAIC COLOR FILTER ARRAY
options.filter='rggb'
img=demosaic(cfa,options.filter);
% Image in here looks "dark"
imshow(img);

2 个答案:

答案 0 :(得分:1)

您可以尝试此功能

function [rawData, tinfo]= loadDNG(dngFilename)   
    if(exist(dngFilename,'file'))
        tinfo = imfinfo(dngFilename);
        t = Tiff(dngFilename,'r');
        rawData = t.read();
        t.close();
    else
        if(nargin<1 || isempty(dngFilename))
            dngFilename = 'File';
        end
        fprintf(1,'%s could not be found\n',dngFilename);
        rawData = [];
    end
end

为了测试它,我从这个website下载了“L1004235.DNG”并将它放在与此功能相同的目录中。

rawData = loadDNG('L1004235.DNG'); % load it "functionally" from the command line
imtool(rawData);                   % display it as proof of concept.

参考:我根据您引用的blog posthelp Tiff将此代码放在一起。

答案 1 :(得分:1)

raw2dng做你想要的 - Linux命令行工具将任何原始格式(包括DNG)转换为DNG / JPG / TIFF。

请注意,原始格式的转换/'开发'不是一个明确定义的过程 - 您将在不同的程序中获得不同的结果。此外,相机(尤其是手机)可以对其DNG中缺少的JPG(例如,锐化)进行各种处理。