MIT FiveK图像转化--DNG到TIFF,TIFF到JPEG
MIT FiveK数据库是研究图像自动修饰算法会用到的基准数据库,然而那个网页上提供给我们的5000张原始图像的格式为DNG格式(一种raw格式),需要我们自己应用dcraw对图像进行处理;同时,经过专家修饰过的图像被分散到不同的链接下进行下载(下载的爬虫,可以参考这篇博客),而且格式为16位tiff格式,差不多总共两三百G的大小。数据集非常庞大,而且dng格式不利于程序的处理,因此博主希望能够将这些图片全部都转为最为常见的sRGB空间的JPEG格式,下面就介绍具体操作方法。
注:所用的系统为Ubuntu系统
1、应用dcraw将DNG格式转为16位TIFF格式
首先,需要将原始的数据集从本网站上下载下来,将分散到数个文件夹中的DNG图片放入同一个文件夹中,然后对逐个文件应用dcraw来进行处理,转为16位TIFF文件,色彩空间为Pro Photo,shell脚本如下:
chmod a+rwx DNG2TIFF.sh filelist=$(ls *.dng | tr " " "?") #获得文件夹中所有的文件的文件名(这一处理可以解决文件名中有空格的问题,读取完整的文件名) #遍历dng文件,用dcraw进行处理 for file in $filelist do dcraw -o 4 -4 -T "$file" #对图片进行处理,最后路径上加双引号是因为有的路径之间是有空格的,添加双引号可以避免shell将空格认为分割符号 rm -f "$file" #删除原始DNG文件 echo "$file" 'done!' done
其中主要需要注意的点是,这个数据集中的某些文件(共29个)的文件名中是包含空格的,在使用shell脚本遍历文件名或者访问文件时尤其需要注意这一点。
2、应用ImageMagick将TIFF转为JPEG
ImageMagick可以说是ubuntu系统上面处理图片神器,可以对图像执行的操作非常丰富,感觉就像是命令行版本的photoshop一样。这一部分主要实现的转换为,将16位TIFF图片(Pro Photo色彩空间)转为JPEG(sRGB)。首先需要在TIFF文件夹内新建立一个名为“JPEG”的文件夹,用于放置处理之后的JPEG图片。同上一个转换一样,也需要注意文件名中的空格问题,具体shell脚本如下。
chmod a+rwx TIFF2JPEG.sh filelist=$(ls *.tiff | tr " " "?") #获得文件夹中所有的文件 #遍历tiff文件,用ImageMagick进行处理 for file in $filelist do file_name=${file%.*} convert "$file" -profile sRGB.icc JPEG/"$file_name".jpeg #对每一张tiff格式的图片进行处理 echo "$file" 'done!' done
其中sRGB.icc文件为sRGB的色彩配置文件,可以在这个地址下载 。