按失真型別分類整理TID2008

2022-07-20 16:30:15 字數 3506 閱讀 8330

1、將mos_with_names.txt這個資料夾存的內容按失真型別分割,因為它的命名方式是這樣的:

例如,名稱為「i03_08_4.bmp」是指第3個參考影象,第8個失真型別和與此失真相關的第4種水平。同樣地,名稱為「i12_10_1.bmp」指這是第12個參考影象,第10個型別的失真與第一種失真水平。

%filename = '.\mos_with_names.txt';

%[vale,name] = textread(filename , '%f %s');

clc; clear

file = '.\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']);

endend

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:17

file = ['.\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

任意開啟乙個資料夾,存放的是對應的失真型別,比如開啟#4:

Linux命令分類整理

uname a 顯示linux系統資訊 uname r 顯示核心發布版本資訊 uptime 顯示系統已經執行的時間和系統負載 hostname 顯示系統主機名 last reboot 顯示系統重啟歷史 date 顯示當前日期和時間 cal 顯示本月日曆 w 顯示誰當前正登入這台主機 whoami 顯...

phpunit assert斷言分類整理

方法名 含義引數 返回值asserttrue 斷言為真 assertfalse 斷言為假 方法名含義 引數返回值 assertnull 斷言為null assertnotnull 斷言非null 方法名含義 引數返回值 assertequals 斷言等於 assertnotequals 斷言大於 a...

leetcode 分類整理2

69.x的平方根 e 重點 1.用x mx防止溢位 2.用右中位數防止無限迴圈 744.尋找比目標字母大的最小字母 e 重點 字母順序可以迴圈 a z 且letters陣列是有序的。因此,最後退出迴圈的時候還要判斷 return letters l target letters l letters ...