`
kofsky
  • 浏览: 201782 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

根据特征索引号提取某一系列的特征值

 
阅读更多

     对样本进行分类时,需要提取该样本的特征。由于AdaBoost分类器是由一系列的基于一系列单个特征的弱分类器组成的,因此只需要提取弱分类器所需要的特征即可。以前采取的方式是,提取所有的特征,分类时获得所需要的特征即可;该过程提取了大量没有使用的特征,这些没有使用的特征花费了大量的计算,是无效计算。现在需要解决这个问题。当需要某个特征时,则计算该特征;不需要该特征时,则不计算该特征。但该方法也存在重复计算问题。比如计算Gabor变换特征,需要先进行Gabor变换,然后再计算特征某特征A,或者某特征B;如果同时需要计算两个特征A和B,那么对图像进行了两次Gabor变换,其中有一次属重复计算。

     现在采取折中的方式。当需要某特征时,则计算该系列的所有特征。

% 
% identifySeriesFeatureByIndex
% 
% 计算该特征编号所属的一个系列的特征值
% 
% seriesFeatures 提取的包含index号特征的系列特征
% seriesIndex    该系列特征在该方法中的绝对索引位置
% 
% 2007-11-06
function [seriesFeatures,seriesIndex]
=identifySeriesFeatureByIndex(image,index)
feaCntSequence
=[1 12 12 12 64 176 15 64 15 21];  % 每种方法能够获取的特征数量列表
feaCntCumSequence
=cumsum(feaCntSequence);        % 累计特征数量
methodCnt
=length(feaCntCumSequence);             % 特征提取方法的种类 

% 特征提取方法索引号
% 索引与方法名称对应关系为
% 1  RGB颜色空间特征值      
% 2  HSI颜色空间特征值     
% 3  NTSC颜色空间特征值    
% 4  gabor变换提取的纹理特征 
% 5  灰度共生矩阵纹理特征值
% 6  灰度-梯度共生矩阵纹理特征  
% 7  灰度差分统计特征值: 
% 8  灰度行程长度统计方法
% 9  不变矩特征
methodIndex
=0;    
if( (index<feaCntCumSequence(1)) || (index>=feaCntCumSequence(methodCnt)) )
    error([
'特征编号(' num2str(index) ')必须在区间[' num2str(feaCntCumSequence(1))...
         
' ' num2str(feaCntCumSequence(methodCnt)-1']中!']);
end

for cnt=1:methodCnt % 由索引号确定提取特征的方法
    
if( (index>=feaCntCumSequence(cnt)) && (index<feaCntCumSequence(cnt+1)) )
        methodIndex
=cnt;
        
break;
    end
end

% 特征提取方法内部索引号,通过该索引求取特征提取方法的参数
% 比如,第25号特征为第三种方法(NTSC颜色)的第1个特征(Y均值)
% 故methodIndex=3,innerMethodIndex=1
% 第47号特征为第四种方法(Gabor)的第11个特征
% 此时methodIndex=4,innerMethodIndex=11
% 通过索引11计算参数:频率索引(1),频率值(0.5);方向索引(6),方向(1.9635)
% 第234号特征为灰度共生矩阵纹理第134个特征
% 此时methodIndex=4,innerMethodIndex=134
% 通过索引134可计算参数:位置算子索引(16),位置算子([5 2]),该位置算子上第2个特征
innerMethodIndex 
= index-feaCntCumSequence(cnt)+1;

if( methodIndex>3 || methodIndex<9 ) % 纹理特征需要针对灰度图像
    grayimage
=rgb2gray(image);
end 
switch( methodIndex )
    
case 1       % RGB颜色空间特征值
        [seriesFeatures,seriesIndex]
=identifyColorFeatureByIndex(image,'RGB',innerMethodIndex);
    
case 2       % HSI颜色空间特征值
        [seriesFeatures,seriesIndex]
=identifyColorFeatureByIndex(image,'HSI',innerMethodIndex);
    
case 3       % NTSC颜色空间特征值
        [seriesFeatures,seriesIndex]
=identifyColorFeatureByIndex(image,'NTSC',innerMethodIndex);        
    
case 4       % Gabor变换提取的纹理特征
        [seriesFeatures,seriesIndex]
=identifyGaborFeatureByIndex(grayimage,innerMethodIndex);
    
case 5       % 灰度共生矩阵纹理特征值
        [seriesFeatures,seriesIndex]
=identifyGLCMFeatureByIndex(grayimage,innerMethodIndex);
    
case 6       % 灰度-梯度共生矩阵纹理特征
        [seriesFeatures,seriesIndex]
=identifyGGLCMFeatureByIndex(grayimage,innerMethodIndex);
    
case 7       % 灰度差分统计特征值
        [seriesFeatures,seriesIndex]
=identifyGDSFeatureByIndex(grayimage,innerMethodIndex);
    
case 8       % 灰度行程长度统计方法
        [seriesFeatures,seriesIndex]
=identifyGRLSFeatureByIndex(grayimage,innerMethodIndex);
    
case 9       % 不变矩特征
        [seriesFeatures,seriesIndex]
=identifyIMFeatureByIndex(image,innerMethodIndex);
    otherwise
        error(
'方法编号错误!');
end

seriesIndex
=feaCntCumSequence(methodIndex)-1+seriesIndex; % 提取的系列特征的绝对索引位置


% 根据特征索引号确定 RGB、HSI、NTSC颜色空间特征值
% colorspacename 仅能取值'RGB','HSI','NTSC'
% index 应在1-12 之间
% seriesFeatures 提取的包含index号特征的系列特征
% seriesIndex    该系列特征在该方法中的相对位置
function [seriesFeatures,seriesIndex]
=identifyColorFeatureByIndex(image,colorspacename,index)
featureSpaceSize
=12;                    % 特征空间维数
[seriesFeatures]
=extractColorFeature(image,colorspacename);% 提取特征 
seriesIndex
=1:featureSpaceSize;


% 根据特征索引号确定 Gabor变换提取的纹理特征
% seriesFeatures 提取的包含index号特征的系列特征
% seriesIndex    该系列特征在该方法中的相对索引位置
function [seriesFeatures,seriesIndex]
=identifyGaborFeatureByIndex(image,index)
fList
=[0.5 0.25 0.125 0.1];   % Gabor变换的频率列表
thetaList
=((0:7)/8).*pi;      % Gabor变换方向(theta)列表
fLen
=length(fList);           % 频率数量
thetaLen
=length(thetaList);   % 方向数量
featureSpaceSize
=2;           % Gabor变换 特征空间大小

paramIndex
=floor((index-1)/featureSpaceSize)+1;% 确定参数的索引号
fIndex
=ceil(paramIndex/thetaLen);        % 参数索引:频率
thetaIndex
=mod(paramIndex-1,thetaLen)+1% 参数索引:方向
[seriesFeatures]
=extractGaborFeature(image,fList(fIndex),thetaList(thetaIndex));
seriesIndex
=((paramIndex-1)*featureSpaceSize+1):(paramIndex*featureSpaceSize);

% 根据特征索引号确定 灰度共生矩阵纹理特征值
% seriesFeatures 提取的包含index号特征的系列特征
% seriesIndex    该系列特征在该方法中的相对索引位置
function [seriesFeatures,seriesIndex]
=identifyGLCMFeatureByIndex(image,index)
% 位置算子
offset
=[0 1;0 5;1 0;5 0;1 1;1 -1;5 5;5 -5;2 5;2 -5;4 5;4 -5;5 2;5 -2;5 4;5 -4];
featureSpaceSize
=11;                     % 灰度共生矩阵 特征空间大小
offsetIndex
=floor((index-1)/featureSpaceSize)+1;% 参数索引:位置算子
[seriesFeatures]
=extractCoOccureTextFeature(image,offset(offsetIndex,:));
seriesIndex
=((offsetIndex-1)*featureSpaceSize+1):(offsetIndex*featureSpaceSize);


% 根据特征索引号确定 灰度-梯度共生矩阵纹理特征
% seriesFeatures 提取的包含index号特征的系列特征
% seriesIndex    该系列特征在该方法中的相对索引位置
function [seriesFeatures,seriesIndex]
=identifyGGLCMFeatureByIndex(image,index)
featureSpaceSize
=15;                     % 灰度-梯度共生矩阵 特征空间大小
[seriesFeatures]
=extractGGLCMSFeature(image);
seriesIndex
=1:featureSpaceSize;
 
% 根据特征索引号确定 灰度差分统计特征值
% seriesFeatures 提取的包含index号特征的系列特征
% seriesIndex    该系列特征在该方法中的相对索引位置
function [seriesFeatures,seriesIndex]
=identifyGDSFeatureByIndex(image,index)
% 灰度差分统计的位置算子
offset
=[0 1;0 3;0 5;1 0;3 0;5 0;1 1;2 2;4 4;5 5;1 3;3 1;2 4;4 2;3 5;5 3];
featureSpaceSize
=4;                      % 灰度差分统计 特征空间维数
offsetIndex
=floor((index-1)/featureSpaceSize)+1;% 参数索引:位置算子
[seriesFeatures]
=extractGrayDifferStatFeature(image,offset(offsetIndex,:));
seriesIndex
=((offsetIndex-1)*featureSpaceSize+1):(offsetIndex*featureSpaceSize);


% 根据特征索引号确定 灰度行程长度统计方法
% seriesFeatures 提取的包含index号特征的系列特征
% seriesIndex    该系列特征在该方法中的相对索引位置
function [seriesFeatures,seriesIndex]
=identifyGRLSFeatureByIndex(image,index)
thetaList
=[0 pi/4 pi/2];     % 默认 行程方向
featureSpaceSize
=5;          % 行程长度统计 特征空间维数
thetaIndex
=floor((index-1)/featureSpaceSize)+1;% 参数索引:行程方向
[seriesFeatures]
=extractGRLMFeature(image,thetaList(thetaIndex));
seriesIndex
=((thetaIndex-1)*featureSpaceSize+1):(thetaIndex*featureSpaceSize);


% 根据特征索引号确定 不变矩特征
% seriesFeatures 提取的包含index号特征的系列特征
% seriesIndex    该系列特征在该方法中的相对索引位置
function [seriesFeatures,seriesIndex]
=identifyIMFeatureByIndex(image,index)
colorspacesize
=size(image,3);            % 颜色平面数量,灰度图像为1,彩色图像为3           
featureSpaceSize
=7;                      % 不变矩特征 特征维数
spaceIndex
=floor((index-1)/featureSpaceSize)+1;% 参数索引:颜色平面索引
[seriesFeatures]
=extractInvariantMomentFeature(image,spaceIndex);
seriesIndex
=((spaceIndex-1)*featureSpaceSize+1):(spaceIndex*featureSpaceSize);


测试100幅图片,原始方法需耗时132s,现在耗时34s,只有原来的1/4。但仍然重复计算了一些没有使用的特征。

仍需要改进。

 

由重新组织样本,修正特征、增加特征,已经花费了接近三周。速度太慢了。

余下工作:构建 级联AdaBoost 分类器(需在11月15日前完成)

                   12月前完成所有基于新样本的重复试验

                   12月 :prepare the paper

                    1月   :write paper

                  

分享到:
评论

相关推荐

    ArcGIS教程:多值提取至点 (空间分析)

    其中,“多值提取至点”(Extract MultiValues To Points)是一种常用的空间分析方法,用于在点要素类的指定位置提取一个或多个栅格像元值,并将这些值记录到点要素类的属性表中。此功能特别适用于需要基于位置查询...

    第6章 矩阵特征值计算.zip

    三维数组可以视为一系列的二维矩阵,通常用[x, y, z]索引来访问。例如,你可以创建一个3D数组`A(:,:,1)`、`A(:,:,2)`等,每一层代表一个二维矩阵。对三维数组进行操作时,MATLAB支持按层进行操作,也可以通过索引...

    6,特征的提取-Live

    `DictVectorizer`能够将字典中的分类特征转换为one-hot编码,即为每个特征值分配一个唯一的二进制列,并将其表示为矩阵。具体操作中,首先创建`DictVectorizer`实例,然后使用`fit_transform`方法将数据转换为矩阵,...

    Python 获取numpy.array索引值的实例

    在进行数据分析或科学计算时,我们常常需要从一个大型数据集中提取特定值的索引位置,以便进一步处理或分析这些数据。Python作为一种高效的编程语言,在数据处理方面表现尤为出色,尤其当它与numpy库一起使用时。...

    InvariantFeatures特征提取方法.ppt

    例如,构建全景图需要在一系列图像中找到相同的点以拼接图像。 - 不变性是指特征检测器和描述符应该能够在图像的旋转、缩放和仿射变换下保持不变,这是为了确保即使在不同的视角、距离或光照条件下也能正确识别和...

    Desktop.zip_matlab亮度_亮度提取_图像处理

    总的来说,MATLAB提供了一系列强大的工具和函数,使得亮度提取和图像处理变得简单而高效。通过对提供的代码文件进行深入研究,我们可以更深入地理解MATLAB在图像亮度处理方面的应用,并能够应用于实际的项目开发中。

    基于多级特征提取的中文文本图像压缩算法

    通过对一系列中文文本图像进行压缩测试,验证了MC-JBIG2的有效性。实验结果表明,与传统JBIG2相比,MC-JBIG2在保证内容无损的前提下,显著提高了中文文本图像的压缩率。此外,该算法对英文文本图像的压缩性能也有所...

    halcon提取数组内大于某数的算子

    对于这些数组,Halcon提供了一系列内置的算子来帮助用户实现各种数学运算和逻辑操作。本节重点介绍如何使用Halcon的算子来提取数组中大于特定数值的元素。 ### 提取大于某数的算子详解 假设我们有一个数组`t:=[1,2...

    从grd格式文件中取得高程值及对应点坐标集合

    GRD文件,通常代表栅格数据模型,是由一系列像素组成的一个矩阵,每个像素代表一个特定区域的属性值,例如地形的海拔高度。这种文件格式在环境系统研究所(ESRI)的软件如ArcGIS中广泛使用。解析GRD文件涉及到读取其...

    matlab关键桢提取算法

    然而,大多数现有关键帧提取技术依赖于解压缩后的视频流,这意味着在提取前需经历一系列复杂且耗时的解压缩步骤,如MPEG-4解码、H.264解码、逆离散余弦变换(IDCT)及运动补偿等,这无疑降低了处理效率。针对这一...

    Spark 2.0 特征处理

    除了特征抽取之外,Spark 还提供了一系列特征转换工具,帮助用户进行更高级的数据预处理工作。 #### Tokenizer **Tokenizer** 是一种将文本分割成单词序列的工具。这一步骤通常是文本预处理的第一步,为后续的特征...

    视频摘要用于视频信息的截图提取

    视频是最高级的单位,包含一系列场景;场景是同一背景下的一系列镜头;镜头则是镜头切换之前的连续图像序列;而帧是最基本的单元,每秒通常包含24到30帧。视频内容的理解和分析需要对这些结构进行细致的划分,以得到...

    高维点数数据的索引与查询.pptx

    在处理高维数据时,存在一系列技术上的挑战,这些挑战直接影响到数据索引与查询的效率和效果。 ##### 维度灾难 随着数据维度的增加,数据点之间的距离分布呈现出指数级增长的趋势。这种现象被称为“维度灾难”,它...

    LtR-Feature-Extractor:学习排名特征提取任务

    每个查询通常由一个或多个关键词组成,LtR特征提取器会针对每个查询分析文档,生成一系列与查询相关的特征,如词项共现、TF-IDF值、位置信息等。 Indri索引是一种高效的信息检索系统,它能够快速地对大规模文本集合...

    关键词提取算法

    - **分词**:对输入文档进行分词处理,将其分解成一系列独立的词语。 - **去重与统计**:对分词结果进行去重,并统计每个词的出现频率。 2. **特征提取**: - **TF-IDF**:计算每个词的TF-IDF值,其中TF表示词频...

    基于内容的多媒体检索

    - **混叠与非混叠**:根据特征空间的划分是否允许混叠,可以将索引结构分为Clipping和Overlapping两种类型。 #### 四、实例分析与应用 - **ASift算法**:通过模拟不同的观察视角,生成一系列仿射图像,并利用SIFT...

    基于LSH索引的图像搜索的ppt

    CBIR的核心在于提取图像的视觉特征,并通过索引这些特征来加速查询过程,从而减少维度灾难带来的影响,提高检索效率。 LSH(Locality Sensitive Hashing,局部敏感哈希)是一种有效的解决CBIR中高维数据检索问题的...

    基十纹理和形状特征的图像检索技术研究

    即通过人工方式为图像文件添加一系列关键字,并对这些关键字建立索引,从而将图像检索问题转换为文本检索问题。然而,随着信息技术的发展,这种依靠人工标注的方法已经无法满足实际需求。自20世纪90年代以来,基于...

Global site tag (gtag.js) - Google Analytics