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