我从这里使用下面的 MATLAB 代码,你可以根据你想要的视图数量进行修改。Current Light Field Toolbox 提供读取 ESLf 文件的功能。从这里下载工具箱。除此之外,来自光场论坛:
png文件是去马赛克的原始图像,也称为lenslet图像,对应一组微图像;您可以通过将每个微图像中相同位置的像素放在一起以创建特定视点的渲染图像,以多视图子孔径图像的形式渲染此小透镜图像;所以,基本上你最后得到的和工具箱的输出是一样的。
% generates 14x14 views and saves only 8x8 of those
% uses light-field-MATLAB toolbox
folders = dir('/path/to/ESLF/images');
dirFlags =[folders.isdir];
subFolders = folders(dirFlags);
imgNo=0;
for k = 1 : length(subFolders)
if subFolders(k).name ~= '.' | subFolders(k).name ~= '..'
currfolder=fullfile('/path/to/ESLF/images',subFolders(k).name,'raw');
fprintf("Working on : ")
fprintf(currfolder);
fprintf('\n')
files = dir(fullfile(currfolder,'*.png'));
for loop = 1:length(files)
imgNo = imgNo + 1;
file=files(loop).name;
f = fullfile(currfolder,file);
LF = LFReadESLF(f);
viewsfoldername = '/path/to/save/views';
newfolder=sprintf('%s/%d',viewsfoldername,imgNo);
mkdir(newfolder)
for i = 4:11
for j = 4:11
view = squeeze(LF(j,i,:,:,1:3));
filename = fullfile(newfolder, sprintf('view_%d_%d_%d.png',imgNo,j,i));
imwrite(view, filename);
end
end
end
end
end
这是一个老问题,但是如果您有处理文件的经验,请告诉我您是否想出了其他方法。