📄 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 + -