简体   繁体   English

从 SuperPixels 中提取特征的最佳方法,例如 gabor 和 HOG 特征

[英]Best way of extracting features from SuperPixels such as gabor and HOG features

I've used the slic clustering algorithm to create superpixels of a biomedical image (whole slide image for the biomedical imaging experts).我已经使用 slic 聚类算法来创建生物医学图像的超像素(生物医学成像专家的整个幻灯片图像)。 I want to extract different features, texture and spacial for the superpixels to create a feature representation and then feed that into a classifier (SVM, RF) to try and classify each superpixel as I have the labels for each one.我想为超像素提取不同的特征、纹理和空间以创建特征表示,然后将其输入分类器(SVM、RF)以尝试对每个超像素进行分类,因为我有每个超像素的标签。 The end goal is to to classify every superpixel and then use this to build a segmentation.最终目标是对每个超像素进行分类,然后使用它来构建分割。

For each superpixel I draw a bounding box around it with a consistent size across all based on the average height and width of all superpixels since the distribution of sizes is fairly peaked around the average (some will have small parts cut out and others will include some padding. I have a couple of questions对于每个超像素,我根据所有超像素的平均高度和宽度在其周围绘制一个具有一致大小的边界框,因为尺寸分布在平均值周围相当高(有些会切掉小部分,其他会包括一些填充。我有几个问题

  1. In regards to the gabor filter for each superpixel I get a gabor feature with a value for each of its individual pixels , I then take the average of these to get a superpixel gabor feature value.关于每个超像素的 gabor 滤波器,我得到一个 gabor 特征,每个像素都有一个值,然后我取这些的平均值来获得超像素 gabor 特征值。 Is this the right approach?这是正确的方法吗? code below下面的代码

    def getGabor(img, ksize, sigma, theta, lamda, gamma, l, ktype): kernel=cv2.getGaborKernel((ksize, ksize), sigma, theta, lamda, gamma, l, ktype=ktype) fimg = cv2.filter2D(img, cv2.CV_8UC3, kernel) filteredImage=fimg.reshape(-1) return filteredImage def getGabors(img): ksize=5 thetas = list(map(lambda x: x*0.25*np.pi, [1, 2])) gabors=[] for theta in thetas: for sigma in (1,3): for lamda in np.arange(0, np.pi, np.pi*0.25): for gamma in (0.05, 0.5): gabor = getGabor(img.reshape(-1), ksize, sigma, theta, lamda, gamma, 0, cv2.CV_32F) . gabors.append(np.mean(gabor)) return gabors
  2. How would this work with HOG?这将如何与 HOG 一起使用? would I take the same approach of averaging the feature vector and how would I keep the HOG descriptor from being too large?我是否会采用相同的方法平均特征向量,以及如何防止 HOG​​ 描述符过大?

  3. Would it be sensible to feed the superpixels into a CNN to learn the feature representation?将超像素输入 CNN 以学习特征表示是否明智?

  4. If anyone has worked with this kind of data before any suggestions over other useful image feature descriptors that would be a good approach for the type of data?如果有人在对其他有用的图像特征描述符提出任何建议之前使用过这种数据,这将是该类型数据的好方法?

Any advice on building the features or what type of features to look at for superpixels would be much appreciated!任何有关构建功能或查看超像素的功能类型的建议将不胜感激!

Thanks谢谢

I am not sure what the state of the art is in medical image segmentation, but superpixels, HOG and gabor sure sound like pre-2012, feature engineering approaches, before all the deep learning models appeared.我不确定医学图像分割的最新技术水平,但在所有深度学习模型出现之前,超像素、HOG 和 gabor 听起来肯定像 2012 年之前的特征工程方法。 The results are bound to depend heavily on the way the superpixels segment the image (probably not too robust).结果必然在很大程度上取决于超像素分割图像的方式(可能不太稳健)。

Why not use a recent image segmentation CNN, like DeepLab ( https://github.com/tensorflow/models/tree/master/research/deeplab )?为什么不使用最近的图像分割 CNN,比如 DeepLab( https://github.com/tensorflow/models/tree/master/research/deeplab )? Just feed it with training examples of the segmentation (a lot of them, admittedly) and see if the model learns the right features itself.只需提供分割的训练示例(其中很多,无可否认),然后看看模型本身是否学习了正确的特征。 Chances are pretty high that it will.它会的可能性非常高。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM