?? impcav.m
字號:
%改進的顏色聚合向量提取程序
%該函數提取的向量分三列第一列是顏色區間的聚合面積,第二列是顏色區間剩余像素面積,
%第三列是新增列,代表聚合面積所在的位置信息(把圖像分成十六個子塊,聚合區域的中心點所在的子塊)
%函數的參數只有一個,是被處理的文件名,返回值只有一個,是該文件的改進顏色聚合向量
%版權所有,陳興峰(電子科技大學地表空間信息技術研究所,610054;中國科學院遙感應用研究所,100101;國家航天局航天遙感論證中心,100101)
%e-mail:chenxingfeng_001@163.com
function y=impcav(j)
%該函數暫時只針圖像灰度是256的單圖層灰度圖象,圖形大小要求是256*256
%在計算連通區域的面積時,采用八連通計算,求面積算法命名為------------------“相鄰點壓棧逐步延伸求面積算法”------------
%j=imread(imname);讀入待提取圖像
%j=imname;
j=floor((j-4)/8)+1;%把256級灰度圖像分成32個灰度區間,把dn值強制劃分到這1--32個區間內
imsize=size(j);%size為二維向量,存儲了矩陣j(圖像)的長度和寬度
for n=1:32%統計聚合向量
j1=bwlabel(j==n,8);%采用8鄰域,顏色聚合向量老祖宗就是用的8鄰域
maxarea=0;
carea=0;
positionnumber=0;
for n1=1:max(max(j1))
if length(find(j1==n1))>40 %CCV中的閾值設置為50
carea=carea+length(find(j1==n1));
end
if length(find(j1==n1))>maxarea
maxarea=length(find(j1==n1));
positionnumber=n1;%記錄最大連通區域
end
end
if positionnumber~=0
[m q]=find(j1==positionnumber);
m=floor(floor(sum(m)/length(m)*4/imsize(2)))+1;
q=floor(floor(sum(q)/length(q)*4/imsize(1)))+1;
else
q=0;
m=0;
end
cav(n,:)=[carea length(find(j==n))-carea m q];%獲得顏色在n區間的聚合面積和非聚合面積
end
y=cav;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -