資源簡介
程明明老師Global contrast based salient region detection的HC部分的matlab實現,測試很快,好用。文件很全,包括HC.m , RGB2lab.m , lab2RGB.m ,作者的源代碼也放了進去。
代碼片段和文件信息
%function?saliency?=?HC(img_name)
%讀取圖像
%orpic?=?imread(img_name);
orpic?=?imread(‘1_1.bmp‘)
%獲取圖像的長、寬和通道值
[row?column?nn]?=?size(orpic);
%%將顏色的RGB通道都由256量化成12,再選擇能包含其中95%顏色數據的顏色,其余顏色歸到選擇的顏色中
%生成調色板pallet(colornumber)
pallet?=?zeros(row*column2);
%設置階梯值,為了將rgb量化后的結果化成一個12進制的數
w?=?[12*12121];
idx?=?uint32(1);
SUM?=?uint32(0);
RGBSUM?=?zeros(rowcolumn);
for?i?=?1?:?row
???for?j?=?1?:?column
???????%獲取第i行第j列的R、G、B通道的值,并量化為12階后再轉化為一個數
???????a1?=?floor((double(orpic(ij1))/255)*(12-0.0001))*w(3);
???????%a2?=?floor((double(orpic(ij2))/255)*(12-0.0001))*w(2);
???????%a3?=?floor((double(orpic(ij3))/255)*(12-0.0001))*w(1);
???????%SUM?=?int32(a1)?+?int32(a2)?+?int32(a3);
???????SUM?=?3*?int32(a1);
???????RGBSUM(ij)?=?SUM;
???????
???????%找出處理后的數據有多少種顏色值,以及其頻數
???????if?idx?==?1
???????????pallet(idx1)?=?SUM;
???????????pallet(idx2)?=?pallet(idx2)?+?1;
???????????idx?=?idx?+?1;
???????????continue;
???????end;
???????flag?=?0;
???????for?m?=?1?:?idx-1
???????????if?pallet(m1)?==?SUM
???????????????pallet(m2)?=?pallet(m2)?+?1;
???????????????flag?=?1;
???????????????break;
???????????end;
???????end
???????if?flag?==?0?
????????????pallet(idx1)?=?SUM;
????????????pallet(idx2)?=?pallet(idx2)?+?1;
????????????idx?=?idx?+?1;
???????end;
????end
end
%獲取圖中所有的顏色值
idx?=?idx?-1;
pallet?=?pallet(1:idx:);
%生成新的調色板num(numbercolor),使得顏色按照頻數從大到小排列,且一號位為頻數大小,二號位為處理后的顏色值
palletemp?=?pallet(:2);
[bpos]?=?sort(palletemp‘descend‘);
num?=?zeros(idx2);
for?i?=?1?:?idx
????num(i1)?=?b(i);
????num(i2)?=?pallet(pos(i)1);
end
%計算如果要保留95%的處理后的顏色值,需要保留調色板的多少位
maxnum?=?idx;
maxdropnum?=?floor(row*column*(1-0.95));
crnt?=?num(maxnum1);
while(crnt1)
????crnt?=?crnt?+?num(maxnum-11);
????maxnum?=?maxnum?-?1;
end;
%保證保留的顏色值小于256且盡量不太小
maxnum?=?min(maxnum256);
if?maxnum?10
????maxnum?=?min(idx100);
end;
?
%將處理后的顏色值轉化回RGB對應的值
?color3i?=?zeros(idx3);
?for?i?=?1:idx
????color3i(i1)?=?round(num(i2)/w(1));
????color3i(i2)?=?round(mod(num(i2)w(1))/w(2));
????color3i(i3)?=?round(mod(num(i2)w(2)));
?end;
%建立色板pallet(numbercolorpos),其中pos為保留顏色的序號
a?=?zeros(idx1);
pallet?=?[numa];
for?i?=?1:maxnum
????pallet(i3)?=?i;
end;????
%將舍棄的顏色歸到其最相近的顏色當中
for?i?=?(maxnum+1):idx
????simidx?=?99999999;simval?=?99999999;
????for?j??=?1:maxnum
????????d_ij?=?round((color3i(i1)-color3i(j1))^2?+?(color3i(i2)-color3i(j2))^2?+?(color3i(i3)-color3i(j3))^2);
????????if?d_ij?????????????simval?=?d_ij;
????????????simidx?=?j;
????????end;
????end;
????pallet(simidx1)?=?pallet(simidx1)?+?pallet(i1);
????pallet(i3)?=?simidx;
end;
?
%將圖像中屬于某一“顏色值”的所有顏色的rgb值累加之后求平均再歸一,即調整保留下來顏色值
?rgbcolor?=?zeros(idx4);
?for?n?=1:idx
?????for?i?=?1:row
?????????for?j?=?1:column
?????????????if?RGBSUM(ij)?==?pallet(n2)
????????????????rgbcolor(n1)?=?int32(rgbcolor(n1))?+?int32(orpic(ij1));
????????????????%rgbcolor(n2)?=?int32(
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-12-14?09:31??HC、RC方法\
?????文件???????98304??2014-03-11?15:03??HC、RC方法\1_1.bmp
?????文件???????19917??2017-10-29?16:27??HC、RC方法\583.jpg
?????文件???????30942??2017-10-23?10:17??HC、RC方法\cat.jpg
?????目錄???????????0??2017-12-13?21:14??HC、RC方法\CmCode-master\
?????文件?????????124??2017-07-14?15:37??HC、RC方法\CmCode-master\.gitignore
?????文件?????????572??2017-07-14?15:37??HC、RC方法\CmCode-master\clean.bat
?????文件????????5404??2017-07-14?15:37??HC、RC方法\CmCode-master\CmCode.sln
?????目錄???????????0??2017-12-13?21:14??HC、RC方法\CmCode-master\CmLib\
?????目錄???????????0??2017-12-13?21:14??HC、RC方法\CmCode-master\CmLib\Basic\
?????文件???????20401??2017-07-14?15:37??HC、RC方法\CmCode-master\CmLib\Basic\CmCv.cpp
?????文件????????7295??2017-07-14?15:37??HC、RC方法\CmCode-master\CmLib\Basic\CmCv.h
?????文件????????2494??2017-07-14?15:37??HC、RC方法\CmCode-master\CmLib\Basic\CmDefinition.cpp
?????文件????????7731??2017-07-14?15:37??HC、RC方法\CmCode-master\CmLib\Basic\CmDefinition.h
?????文件???????11113??2017-07-14?15:37??HC、RC方法\CmCode-master\CmLib\Basic\CmFile.cpp
?????文件????????7021??2017-07-14?15:37??HC、RC方法\CmCode-master\CmLib\Basic\CmFile.h
?????文件????????2082??2017-07-14?15:37??HC、RC方法\CmCode-master\CmLib\Basic\CmTimer.h
?????目錄???????????0??2017-12-13?21:14??HC、RC方法\CmCode-master\CmLib\Cluster\
?????文件????????1673??2017-07-14?15:37??HC、RC方法\CmCode-master\CmLib\Cluster\CmAPCluster.cpp
?????文件????????4552??2017-07-14?15:37??HC、RC方法\CmCode-master\CmLib\Cluster\CmAPCluster.h
?????文件???????12224??2017-07-14?15:37??HC、RC方法\CmCode-master\CmLib\Cluster\CmColorQua.cpp
?????文件????????2827??2017-07-14?15:37??HC、RC方法\CmCode-master\CmLib\Cluster\CmColorQua.h
?????文件????????4572??2017-07-14?15:37??HC、RC方法\CmCode-master\CmLib\Cluster\CmGMM.cpp
?????文件???????17468??2017-07-14?15:37??HC、RC方法\CmCode-master\CmLib\Cluster\CmGMM.h
?????文件????????3587??2017-07-14?15:37??HC、RC方法\CmCode-master\CmLib\CmLib.h
?????文件???????16304??2017-07-14?15:37??HC、RC方法\CmCode-master\CmLib\CmLib.vcxproj
?????文件????????9662??2017-07-14?15:37??HC、RC方法\CmCode-master\CmLib\CmLib.vcxproj.filters
?????目錄???????????0??2017-12-13?21:14??HC、RC方法\CmCode-master\CmLib\CRF\
?????文件????????1223??2017-07-14?15:37??HC、RC方法\CmCode-master\CmLib\CRF\fastmath.h
?????文件???????13835??2017-07-14?15:37??HC、RC方法\CmCode-master\CmLib\CRF\permutohedral.h
?????目錄???????????0??2017-12-13?21:14??HC、RC方法\CmCode-master\CmLib\Illustration\
............此處省略423個文件信息
評論
共有 條評論