Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何在分类中对3D提取的特征进行标签?_Matlab_Matrix_Label_Libsvm - Fatal编程技术网

Matlab 如何在分类中对3D提取的特征进行标签?

Matlab 如何在分类中对3D提取的特征进行标签?,matlab,matrix,label,libsvm,Matlab,Matrix,Label,Libsvm,我从许多3D图像中提取特征。 因此,提取特征的形式例如: Image 1 --> 10 x 12 x 30 Image 2 --> 15 x 10 x 30 Image 3 --> 13 x 12 x 30 Image 4 --> 14 x 19 x 30 . . So on 其中,第一维度和第二维度总是在变化,但第三维度仍然与特征的维度相同 要进行分类,我需要用标签标记每个图像中提取的特征。 为了方便起见,我必须将每个图像的特征保持成一行 因此,我将这些

我从许多3D图像中提取特征。 因此,提取特征的形式例如:

 Image 1 --> 10 x 12 x 30
 Image 2 --> 15 x 10 x 30
 Image 3 --> 13 x 12 x 30
 Image 4 --> 14 x 19 x 30
 .
 .
 So on
其中,第一维度和第二维度总是在变化,但第三维度仍然与特征的维度相同

要进行分类,我需要用标签标记每个图像中提取的特征。 为了方便起见,我必须将每个图像的特征保持成一行

因此,我将这些特征重塑为

  feat_reshape= reshape(feature,[size(feature,1)*size(feature,2) size(feature,3)]); 
在本例中,我将使用2D特征矩阵。 但是,我仍然需要它在1D中

我已经尝试使用imhist并将每一行中每一图像的每个特征保存在一个矩阵中。但仍然没有给出一个好的结果。可能是因为有很多0值

然后我尝试连接每个图像的每个特征的每一列,使其成为一行。但问题是每行中的串联矩阵元素中列的大小不同

例如:

  Image 1 --> 10 x 12 x 30 = 3600 elements
  Image 2 --> 15 x 10 x 30 = 4500 elements

有什么建议吗,,我如何存储我的3D提取特征,然后将其标记为在LibSVM MATLAB中使用

如果要为每个图像指定标签,则需要某种方法来聚合或汇集每个图像的密集特征。简单直方图是一种方法。替代品是

只需调整原始3D图像的大小以适应固定大小,然后计算特征。 :第一个每像素聚类特征,并通过其相应的聚类索引可视词表示每个像素。然后利用直方图对图像进行汇总。 空间金字塔:代替整个图像上的直方图,将图像分割为具有不同分辨率1x1、2x2等的网格,通过直方图或其他池汇总每个单元格中的特征,并将所有特征连接起来。池是一个简单的统计,如最小值、最大值、平均值等。
如果没有一个能很好地工作,请怀疑您的功能设计。还尝试通过交叉验证检查LibSVM文档来找到SVM的最佳训练参数。

我执行HOG描述符来提取特征。但正如我前面提到的,从每幅图像中提取的特征的大小是不同的M X N X 32,只有这32对每幅图像都是相同的。聚集是为了处理不同的图像大小,这反过来为每幅图像提供不同的M和N。