标签: feature-extraction

如何比较两个图像并识别图像中的图案?

如何比较两个图像并识别图像中的图案,无论其大小和图案大小如何,并使用.Net C#?此外,从图像处理中使用哪些算法?

c# pattern-recognition image-processing feature-extraction computer-vision

3
推荐指数
1
解决办法
2万
查看次数

用于提取轮廓的骨架化图像中的问题

我发现这段代码可以获得一个镂空图像.我有一张圆圈图片(https://docs.google.com/file/d/0ByS6Z5WRz-h2RXdzVGtXUTlPSGc/edit?usp=sharing).

img = cv2.imread(nomeimg,0)
size = np.size(img)
skel = np.zeros(img.shape,np.uint8)

ret,img = cv2.threshold(img,127,255,0)
element = cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3))
done = False

while( not done):
    eroded = cv2.erode(img,element)
    temp = cv2.dilate(eroded,element)
    temp = cv2.subtract(img,temp)
    skel = cv2.bitwise_or(skel,temp)
    img = eroded.copy()

    zeros = size - cv2.countNonZero(img)
    if zeros==size:
        done = True

print("skel")
print(skel)

cv2.imshow("skel",skel)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)

问题是图像结果不是"骨架"而是一组点!我的目的是在我对图像进行镂空后提取轮廓周长.如何编辑我的代码来解决它?使用cv2.findContours找到骨架圆是正确的吗?

python opencv feature-extraction contour computer-vision

3
推荐指数
1
解决办法
3835
查看次数

如何改进opencv中的特征检测

我正在开发一个项目,我需要使用opencv检测图像上的功能.

我在用

SURF detector;
SURF extractor;
BFMatcher matcher;
Run Code Online (Sandbox Code Playgroud)

用于检测,提取和匹配点.它适用于某些图像,但在其他图像上失败.

例如,系统在此映像上失败:

在此输入图像描述

显然,此图像具有一些纹理,并且特征检测器应检测它们,但未检测到任何特征,因此不会生成匹配.

如何改进此功能检测?

我可以使用任何图像处理技术吗?

我可以使用哪种其他探测器来帮助解决这个问题?

c++ opencv image-processing feature-extraction feature-detection

3
推荐指数
1
解决办法
2985
查看次数

Opencv中的视觉词袋

我在opencv中使用BOW来聚类可变大小的功能.但是有一件事从opencv的文档中不清楚,我也无法找到这个问题的原因:

假设:字典大小= 100.

我使用surf来计算特征,每个图像都有可变大小的描述符,例如:128 x 34,128 x 63等.现在在BOW中,每个都是聚类的,我得到一个固定的描述符大小为128 x 100的图像.我知道100是使用kmeans聚类创建的集群中心.

但我感到困惑的是,如果图像有128 x 63个描述符,那么它将如何聚类成100个聚类,这是不可能使用kmeans,除非我将描述符矩阵转换为1D.转换为1D会丢失单个关键点的有效128维信息吗?

我需要知道如何操纵描述符矩阵以从仅63个特征中获得100个cluter中心.

opencv feature-extraction computer-vision surf k-means

3
推荐指数
1
解决办法
2017
查看次数

为什么我的scikit学习HashingVectorizo​​r给我带有binary = True set的浮点数?

我正在尝试使用scikit-learn的伯努利朴素贝叶斯分类器.我使用CountVectorizo​​r让分类器在一个小数据集上正常工作,但是当我尝试使用HashingVectorizo​​r处理更大的数据集时遇到了麻烦.保持所有其它参数(培训文档,测试文档,分类和特征提取设置)不变,并从CountVectorizo​​r只是切换到HashingVectorizo​​r引起了我的分类总是吐出的所有文件相同的标签.

我编写了以下脚本来研究两个特征提取器之间的区别:

from sklearn.feature_extraction.text import HashingVectorizer, CountVectorizer

cv = CountVectorizer(binary=True, decode_error='ignore')
h = HashingVectorizer(binary=True, decode_error='ignore')

with open('moby_dick.txt') as fp:
    doc = fp.read()

cv_result = cv.fit_transform([doc])
h_result = h.transform([doc])

print cv_result
print repr(cv_result)
print h_result
print repr(h_result)
Run Code Online (Sandbox Code Playgroud)

(其中'moby_dick.txt'是项目gutenberg的mo​​by dick副本)

(简明)结果:

  (0, 17319)    1
  (0, 17320)    1
  (0, 17321)    1
<1x17322 sparse matrix of type '<type 'numpy.int64'>'
    with 17322 stored elements in Compressed Sparse Column format>

  (0, 1048456)  0.00763203138591
  (0, 1048503)  0.00763203138591
  (0, 1048519)  0.00763203138591
<1x1048576 sparse matrix of type '<type 'numpy.float64'>' …
Run Code Online (Sandbox Code Playgroud)

python feature-extraction scikit-learn

3
推荐指数
1
解决办法
1067
查看次数

MATLAB 中的相邻灰度依赖矩阵 (NGLDM)

我想计算几个纹理特征(即:小/大数字强调、数字非均匀性、二阶矩和熵)。这些可以从相邻灰度级依赖矩阵计算出来。我正在努力理解/实现这一点。关于这种方法的信息很少(公开可用)。

根据这篇论文

该矩阵采用二维数组Q 的形式,其中Q(i,j)可以被视为已处理图像灰度变化的频率计数。它与图像的直方图具有相似的含义。该数组为 N g ×N r,其中 N g是可能的灰度级数,N r是图像中像素的可能邻居数。

如果图像函数F(I,J)是离散的,则很容易计算机的Q矩阵(对于正整数d,一)通过在计数的次数每个元素之间的差F(I,J)和其在特定距离d处,邻居等于或小于a

这是同一篇论文中的示例(d = 1, a = 0):

输入(图像)矩阵和输出矩阵Q

输入(图像)矩阵 在此处输入图片说明

我已经看了这个例子好几个小时了,但仍然无法弄清楚他们是如何得到Q矩阵的。任何人?

该方法最初由 C. Sun 和 W. Wee 创建,并在一篇名为“纹理分类的相邻灰度依赖矩阵”的论文中进行了描述,我可以访问,但无法下载(按下载后页面重新加载和就是这样)。

algorithm matlab image-processing matrix feature-extraction

3
推荐指数
1
解决办法
2442
查看次数

希尔伯特空间填充曲线(非正方形)任意比例

Hilbert空间/平面填充曲线是否有任何扩展,将非正方形表面映射到矢量/线[用于图像映射到矢量]?

geometry feature-extraction computational-geometry

3
推荐指数
3
解决办法
1829
查看次数

如何在weka特征选择(过滤方法)中的'InfoGainAttributeEval'中进行选择

我目前正在使用'InfoGainAttributeEval'进行功能选择.我想知道该方法会发生什么.我找到了以下内容.

通过测量关于类的信息增益来评估属性的价值.

InfoGain(Class,Attribute)= H(Class) - H(Class | Attribute).

由于我是这个领域的新手,我不明白它是什么.有人可以解释一下它是如何工作的吗?:)与'GainRationAttributeEval'有什么区别?

machine-learning feature-extraction weka feature-selection

3
推荐指数
1
解决办法
3855
查看次数

PCA 如何在测试集上拟合变换

我正在使用from sklearn.decomposition import PCA library, IncrementalPCA来降低我的问题的维度,如下所示:

training_data = [...] 
training_target = [...]
test_data = [...]
test_target = [...] 
ipca = IncrementalPCA(n_components, batch_size)
new_training_data = ipca.fit_transform(training_data)
Run Code Online (Sandbox Code Playgroud)

要使用给定的分类器运行测试,我需要使用在训练集中获得的信息(如特征值和特征向量)来拟合测试集,以减少新训练集的相同大小。但是我怎么能用这个库(或其他库)来做到这一点,因为ipca.fit_transform(data)它不会向我返回任何东西,比如 eigpairs 或一些值来调整测试集的维度?

python numpy feature-extraction pca scikit-learn

3
推荐指数
1
解决办法
3164
查看次数

CountVectorizer的单个字母的空词汇表

尝试将字符串转换为数字矢量,

### Clean the string
def names_to_words(names):
    print('a')
    words = re.sub("[^a-zA-Z]"," ",names).lower().split()
    print('b')

    return words


### Vectorization
def Vectorizer():
    Vectorizer= CountVectorizer(
                analyzer = "word",  
                tokenizer = None,  
                preprocessor = None, 
                stop_words = None,  
                max_features = 5000)
    return Vectorizer  


### Test a string
s = 'abc...'
r = names_to_words(s)
feature = Vectorizer().fit_transform(r).toarray()
Run Code Online (Sandbox Code Playgroud)

但是当我陶醉时:

 ['g', 'o', 'm', 'd']
Run Code Online (Sandbox Code Playgroud)

有错误:

ValueError: empty vocabulary; perhaps the documents only contain stop words
Run Code Online (Sandbox Code Playgroud)

这样的单字母字符串似乎存在问题。我该怎么办?谢谢

python nlp vectorization feature-extraction countvectorizer

3
推荐指数
1
解决办法
2051
查看次数