⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 impcav.m

📁 改进的颜色聚合向量提取程序 该函数提取的向量分三列第一列是颜色区间的聚合面积
💻 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 + -