对于图像质量评价(IQA)数据库,TID2008算是不大不小的数据集了。TID2008是由乌克兰国家航空航天大学的N504信号接收、传输与处理系建立,包括25幅参考图像,1700幅失真图像。失真类型有17种包括:加性高斯噪声、颜色分量强于照明分量的加性噪声、空间位置相关噪声、掩膜噪声、高频噪声、脉冲噪声、量化噪声、高斯模糊、图像噪声、JPEG压缩、JPEG2000压缩、JPEG传输错误、JPEG2000传输错误、非偏心式噪声、不同强度的局部块失真、强度均值偏移以及对比度变化。该数据库的DMOS值由838观察者给出256428个数据统计得到,MOS取值范围为[0,9]。下载链接如下:http://www.ponomarenko.info/tid2008.htm,从作者那里下载得到的所有失真图像是统一放在distorted_images文件夹中的,而对应的主观评价分数是放在mos_with_names.txt文本中的,如果是用算法对所有失真进行评分当然很方便,但是很多时候需要预测单独失真图像,比如说只想要用程序预测高斯模糊失真图像的分数,然后与对应的主观评分进行比较。因此,我想把distorted_images中的失真图像按照失真类型进行分类,分为17类,每一类存到一个单独的文件夹中,然后在文件夹中顺便放上对应的主观评分。

1、将mos_with_names.txt这个文件夹存的内容按失真类型分割,因为它的命名方式是这样的:

参考图像号,失真类型,失真水平:“iXX_YY_Z.bmp”。

例如,名称为“i03_08_4.bmp”是指第3个参考图像,第8个失真类型和与此失真相关的第4种水平。同样地,名称为“i12_10_1.bmp”指这是第12个参考图像,第10个类型的失真与第一种失真水平。

所以做起来也没那么复杂,本来想手动的, 每种失真类型建立一个文件夹,文件夹中建立一个txt来保存数据,首先我手动建立了17个文件夹,以#1到#17命名,确实比较蠢,手动粘贴复制了几个就放弃了,还是写程序可能要快些。百度之后,修修改改最后的代码是这样的:

%filename = '.\mos_with_names.txt';%[vale,name] = textread(filename , '%f %s');clc; clearfile = '.\mos_with_names.txt';
fid = fopen(file,'r');
disp(['Reading file: ',file]);
linenumber = 0;
fid1=fopen('.\#1.txt','wt'); %必须要以wt的方式打开,不然不能换行
fid2=fopen('.\#2.txt','wt');fid3=fopen('.\#3.txt','wt');
fid4=fopen('.\#4.txt','wt');fid5=fopen('.\#5.txt','wt');
fid6=fopen('.\#6.txt','wt');fid7=fopen('.\#7.txt','wt');
fid8=fopen('.\#8.txt','wt');fid9=fopen('.\#9.txt','wt');
fid10=fopen('.\#10.txt','wt');fid11=fopen('.\#11.txt','wt');
fid12=fopen('.\#12.txt','wt');fid13=fopen('.\#13.txt','wt');
fid14=fopen('.\#14.txt','wt');fid15=fopen('.\#15.txt','wt');
fid16=fopen('.\#16.txt','wt');fid17=fopen('.\#17.txt','wt');
while ~feof(fid) linenumber = linenumber + 1;line = fgetl(fid); if(line(11:14) == '_01_')
%disp([num2str(linenumber),':',line]);fprintf(fid1,[line,'\n']);elseif(line(11:14) == '_02_')fprintf(fid2,[line,'\n']);elseif(line(11:14) == '_03_')fprintf(fid3,[line,'\n']);elseif(line(11:14) == '_04_')fprintf(fid4,[line,'\n']);elseif(line(11:14) == '_05_')fprintf(fid5,[line,'\n']);elseif(line(11:14) == '_06_')fprintf(fid6,[line,'\n']);elseif(line(11:14) == '_07_')fprintf(fid7,[line,'\n']);elseif(line(11:14) == '_08_')fprintf(fid8,[line,'\n']);elseif(line(11:14) == '_09_')fprintf(fid9,[line,'\n']);elseif(line(11:14) == '_10_')fprintf(fid10,[line,'\n']);elseif(line(11:14) == '_11_')fprintf(fid11,[line,'\n']);elseif(line(11:14) == '_12_')fprintf(fid12,[line,'\n']);elseif(line(11:14) == '_13_')fprintf(fid13,[line,'\n']);elseif(line(11:14) == '_14_')fprintf(fid14,[line,'\n']);elseif(line(11:14) == '_15_')fprintf(fid15,[line,'\n']);elseif(line(11:14) == '_16_')fprintf(fid16,[line,'\n']);elseif(line(11:14) == '_17_')fprintf(fid17,[line,'\n']);end
end fclose(fid1);fclose(fid2);fclose(fid3);fclose(fid4);
fclose(fid5);fclose(fid6);fclose(fid7);fclose(fid8);
fclose(fid9);fclose(fid10);fclose(fid11);fclose(fid12);
fclose(fid13);fclose(fid14);fclose(fid15);fclose(fid16);
fclose(fid17);fclose(fid);

  这个代码比较简单,很多重复性的代码,反正能实现要求也就懒得改了,运行之后在当前文件夹下生成17个txt文件,每个文件包含一类失真图像的名字和主观评分,然后把这些txt手动放到之前建立好的文件夹下就可以了。

2、根据txt中的名字将对应的图片从distorted_images中提取出来放到对应的失真类型中去,这个工作其实也不算复杂,因为失真文件夹中的文本中已经有该类失真图片的名字了,直接打开txt文本取出文件名,根据文件名到distorted_images中读取图片,然后保存到对应的文件夹中,最后再用循环把17类图片都操作了就好了。代码如下:

for i =1:17file = ['.\disimage_fenkai\#',int2str(i),'\#',int2str(i),'.txt'];fid = fopen(file,'r');disp(['Reading file: ',file]);while ~feof(fid) line = fgetl(fid); filename = line(8:19); %取出图片名A=imread(['.\distorted_images\',filename]);  %按照图片名读取图片 %mkdir('.\disimage_fenkai\#1\');imwrite(A,['.\disimage_fenkai\#',int2str(i),'\',filename]); %将图片按原名字存在#i中endfclose(fid);end

  这个程序可以直接将distorted_images中的失真图片按照失真类型存到对应的失真文件夹中,方便以后操作。最后的效果如下:

任意打开一个文件夹,存放的是对应的失真类型,比如打开#4:

转载于:https://www.cnblogs.com/libai123456/p/10176896.html

按失真类型分类整理TID2008相关推荐

  1. 把Python的200个标准库分类整理了下,供参考

    Python有一套很有用的标准库(standard library),会随着Python解释器一起安装在你的电脑中的.它是Python的一个组成部分,不需要额外安装即可直接调用.这些标准库是Pytho ...

  2. 【Android Studio】分类整理res/Layouts中的布局文件(创建子目录)

    好吧,这个功能需求也是因为作为一个重度强迫症患者,非常想要把layouts中的文件分类整理下.否则看到一堆Activity和Fragment等文件混在一起特别难受.更重要的原因是,如果你的工程交给别人 ...

  3. 计算机怎么没有桌面文件夹名称大全,你的电脑文件总是找不到?是时候学习文件夹分类整理了...

    我们常常说做好办公整理,我们工作起来才更有效率:此处的办公整理不单单是对办公桌整理整齐,电脑里面的文件也需要定期整理,你有没有发现常常找一个文件的时候却总是找不到?那么此时就应该学习文件夹分类整理了, ...

  4. abap 取日期最大_Pointer干货分享:SQL面试50题思路解答与分类整理(下)CASE与日期函数...

    这是POINT小数点的第 368篇文章点点写在前面:SQL技能是数据分析师面试中必不可少的环节,小数点数据社区也给大家提供了练习SQL题目的地方,以下是pointer Yongfan整理的SQL50题 ...

  5. 分类整理我在SF上针对某些问题作的回答

    Android 资源Resource与布局Layout android:怎么实现一个控件与另一个指定控件左对齐 针对你这种情况,最简单的一种办法是,设置两个TextView的宽度为固定值,且相等. L ...

  6. max日期最大值为0_【SQL】SQL面试50题思路解答与分类整理(下)CASE与日期函数...

    题目快速查找索引 阅读指南 上篇 [第一部分]聚合函数(sum/avg/count/min/max) [第二部分]表连接(inner join/left join/right join/full jo ...

  7. 软件测试概念及分类整理汇总

    转载自博主Findyou 原文链接https://www.cnblogs.com/findyou/p/6480411.html 软件测试概念及分类整理汇总 前言 测试小伙伴在谈论软件测试分类,五花八门 ...

  8. 电商项目顺序图_工程项目文件的分类整理

     工程项目文件的分类整理 不是所有收集来的工程项目文件均具有查考价值,这需要档案人员按照确定的规则进行甄别和整理.电力工程档案依据国家电网公司文件<关于印发〈国家电网公司电网建设项目档案管理办法 ...

  9. 04分类整理:会搜索还不够,整理、分类、归纳

    在这个当一键收藏所需信息变得越来越简单的今天,如果不去定期收纳整理.我们可以想象一下,假如我们的电脑和手机是房子,我们下载.收藏.保存的信息,资源人脉是我们每天带回来的东西,如果不定期收纳整理,住在这 ...

最新文章

  1. 【算法题】天平砝码称重
  2. android startactivity 跳到锁屏_「瀑布屏」手机到底好不好用?
  3. 5.MySQL Cluster(MySQL集群)
  4. Nginx 为什么快到根本停不下来?
  5. 为什么初创企业应该计算 LTV / CAC,以及如何正确应用它?
  6. 超级猫超级签名分发源码
  7. jsp面试问题_JSP面试问答
  8. 【luogu P4114 Qtree1】 题解
  9. 计算机网络/操作系统
  10. RSA总裁:2010年需重点关注云计算安全
  11. kali虚拟机分辨率设置
  12. 将数据与OpenLayers结合在一起
  13. linux进程操作日志文件,我使用过的Linux命令之tailf - 跟踪日志文件/更好的tail -f版本...
  14. 八年级计算机word操作,【初二专区】中考信息技术考试(三),Word操作综述+练习!...
  15. 《Accurate eye center localisation by means of gradients》论文阅读
  16. python数据清洗--对双十一淘宝直播流量数据进行数据真实性验证
  17. 米勒-拉宾(MillerRabbin)素性测试算法
  18. 【综述专栏】陈恩红: 社交网络的信息传播分析及其应用
  19. iOS获取设备IP地址
  20. 静态站点 免费_七个站点,您可以随意使用免费照片

热门文章

  1. 这家剑桥校友创办的苏州AI独角兽,再获4.1亿投资,将在国内IPO
  2. 我整理了HMOV四大5G旗舰的参数,可依然没能拯救我的选择困难症
  3. NLP中文面试学习资料:面向算法面试,理论代码俱全,登上GitHub趋势榜
  4. 这个AI学院取名黄埔,30%学生都是CTO/技术总监,没有落地成果不许毕业
  5. 回顾以前的线程安全的类
  6. 查看删除的帐号的DN名称(活动目录快照配置管理系列六)
  7. 2017-2021年中国大数据产业预测分析及全球市场规模预测
  8. 《Spark大数据分析实战》——1.4节弹性分布式数据集
  9. Android -- onMeasure()源码分析
  10. 百度“既盗版又盗链”,不但是音乐公司的害虫,也是音乐网站的害虫