Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 命令行读取DNG图像_Matlab_Tiff_Dng - Fatal编程技术网

Matlab 命令行读取DNG图像

Matlab 命令行读取DNG图像,matlab,tiff,dng,Matlab,Tiff,Dng,一段时间后,在尝试了、、和中的“提示”、“提示”、“猜测”和“尝试”之后,即使通过和中给出的SO问题以及其他问题,并且在和中使用了多个软件,我仍然无法找到一个功能示例,说明如何通过命令行转换DNG原始图像文件 我不是在寻找一个全案例解决方案,只是一个功能命令行示例,用于转换任何给定的DNG图像 是最好的,但是,很好,不要跑,因为“一个人会错过那重要的一步”(谢谢!) 只不过是一个“提示”,在没有实际转换任何文件的情况下省略。从这里开始,我无法进一步进行所需的适当转换(图像看起来太“暗”) dcr

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

我不是在寻找一个全案例解决方案,只是一个功能命令行示例,用于转换任何给定的DNG图像

是最好的,但是,很好,不要跑,因为“一个人会错过那重要的一步”(谢谢!)

只不过是一个“提示”,在没有实际转换任何文件的情况下省略。从这里开始,我无法进一步进行所需的适当转换(图像看起来太“暗”)

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

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


你可以试试这个功能

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
参考:我根据您引用的代码和
帮助Tiff
将这些代码放在一起

完成您想要的功能-Linux命令行工具将任何原始格式(包括DNG)转换为DNG/JPG/TIFF


请注意,原始格式的转换/开发不是一个定义良好的过程-您将在不同的程序中获得不同的结果。此外,摄像机(尤其是手机摄像机)会对其DNG中缺失的JPG(如锐化)进行各种处理。

如果这不起作用,您可能需要再次查看。听起来和看起来作者的脚本都可以加载DNG文件。但是,他/她认为读者练习转换为.DNG很重要,而不是方便地包含DNG示例文件。既然你已经有了.DNG文件,你就不能跳过这一步吗?但这段代码与我在“提示”参考中所做的代码相同!,当然,没有检查文件是否在那里(我们知道它在那里)。我还包括了
demosaic
舞台,但我获得的图像比真实场景“暗”得多,中间有一个环形阴影。因此,这里给出的“提示”只是问题的一小部分。“原始指南”中的代码不会运行。即使使用给定的数据(!),它也无法将
mxnx3
(图像?)与
nxn
矩阵(过滤器?)相乘。@hyprfrcb请重新查看此代码。在一个非常关键的部分(即“SubIFD”)中不一样。我得到了一个更暗的图像时,包括这个。您也可以使用
imtool
获得更多里程。我也有同样的黑暗问题。这就是我失败的部分您正在读取存储在DNG文件中的缩略图。至少参考资料是这么说的。我会检查这是否属实。请更新你的帖子,说明“原始指南”不适合你的真正原因;在这两种方法中,图像最终都会“变暗”。我认为有一个非线性滤波器,一个
demosaic
ing阶段,还有一些亮度设置缺失。从所有给定的参考文献中,哪一个(如果不是全部)和|或顺序是完全不确定的。以稍微简短的形式重新发布这篇文章,因为它回答了问题,但原始帖子被删除了。我认为前一篇帖子是真正完整的。。。虽然我还不确定这个工具是否有效(我必须试试:))是的,它有效。确保您拥有所有声明的依赖项。如果您遇到问题,请提交一个带有说明的bug。
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);
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
rawData = loadDNG('L1004235.DNG'); % load it "functionally" from the command line
imtool(rawData);                   % display it as proof of concept.