标签: feature-extraction

匹配草图(绘图)面部照片到数字彩色照片

我要将草图面(绘图照片)与彩色照片相匹配.因此,对于研究,我想找出将草图绘制与颜色面匹配的挑战.现在我已经发现了

  1. 分辨率像素差异
  2. 纹理差异
  3. 距离差异
  4. 和颜色(效果不大)

我想知道(技术术语)有什么其他的挑战和提供什么OPEN CVJAVA CV方法和算法来克服挑战?

以下是草图和已知匹配它们的照片的一些示例:

数据

opencv image image-processing feature-extraction face-detection

6
推荐指数
1
解决办法
554
查看次数

我可以找到单个图像的PCA吗? - MATLAB

我正在使用PCA和SVM进行人脸识别.我的训练集有400个图像阵列,我已经在其上执行了PCA并将数据映射到本征空间.现在进行测试我只有一个图像,其主要组件我需要提取以匹配先前提取的功能.但是我使用的任何PCA算法甚至内置命令(princomp)都会出现尺寸错误.因为PCA需要形成本征空间并将数据投影到这个空间,我如何形成单个图像的本征空间?

matlab image-processing feature-extraction pca

6
推荐指数
1
解决办法
5654
查看次数

MATLAB中的BRISK和FREAK描述符

我正在使用MATLAB 2014a来提取BRISKFREAK描述符.我找不到任何将位串大小减小到128256的选项,它们都生成为512位.我认为FREAK不允许这种算法,但BRISK应该允许.有谁知道我是否可以减少BRISK描述符的维度?如果是,我该怎么办?

谢谢

matlab feature-extraction computer-vision freak matlab-cvst

6
推荐指数
1
解决办法
1404
查看次数

用于标签预测的特征空间减少

我正在编写一个ML模块(python)来预测stackoverflow问题(标签+正文)的标签.我的语料库有大约500万个问题,每个问题都有标题,正文和标签.我正在将这个3:2分成训练和测试.我受到维度诅咒的困扰.


完成工作

  1. 预处理:删除标记,删除停用词,删除特殊字符以及一些零碎.存储到MySQL.这几乎使测试数据的大小减半.
  2. NGRAM协会:每个单字组和两字在标题和正文每个问题,我保持相关标签的列表.存入redis.这导致大约一百万个独特的unigrams和两千万个独特的双桅轮,每个都有相应的标签频率列表.防爆.

    "continuous integration": {"ci":42, "jenkins":15, "windows":1, "django":1, ....}
    
    Run Code Online (Sandbox Code Playgroud)

注意:这里有两个问题:a)并非所有的unigrams和bigrams都很重要,b)并非所有与ngram相关的标签都很重要,尽管这并不意味着频率为1的标签都是等效的或者可以随意删除.与给定ngram相关联的标签数量很容易达到成千上万 - 其中大多数不相关且无关紧要.

  1. tfidf:为了帮助选择要保留的ngram,我计算了每个unigram和bigram的整个语料库的tfidf分数,并将相应的idf值与相关标签一起存储.防爆.

    "continuous integration": {"ci":42, "jenkins":15, ...., "__idf__":7.2123}
    
    Run Code Online (Sandbox Code Playgroud)

    documentxfeature tfidf分数存储在sparse.csr_matrix中,我不知道如何才能利用它.(它由fit_transform()生成)


问题

  1. 如何使用此处理的数据来减小功能集的大小?我读过有关SVD和PCA的内容,但这些例子总是谈论一组文档和词汇.我不确定我的集合中的标签可以进入哪里.此外,我的数据存储方式(redis +稀疏矩阵),很难使用已经实现的模块(sklearn,nltk等)来执行此任务.
  2. 一旦功能集减少,我计划使用它的方式如下:

    • 预处理测试数据.
    • 找到unigrams和bigrams.
    • 对于存储在redis中的那些,找到相应的best-k标签
    • 对标题和正文应用某种权重
    • 除此之外,我还可以在文档中搜索确切的已知标记匹配.例如,如果标题/正文中出现"ruby-on-rails",那么它很可能也是一个相关标签.
    • 此外,对于以高概率预测的标签,我可能会利用标签图(带有标签的无向图,它们经常在它们之间具有加权边缘)来预测更多标签.

    关于如何改进这个有什么建议吗?分类器可以派上用场吗?


脚注

我有一台16核,16GB的RAM机器.redis-server(我将移动到另一台机器)存储在RAM中,大约为10GB.上面提到的所有任务(除了tfidf)都是使用ipython集群并行完成的.

python machine-learning feature-extraction tf-idf scikit-learn

6
推荐指数
1
解决办法
546
查看次数

具有scikit-image local_binary_pattern函数的统一LBP

我正在使用skimage.feature的local_binary_pattern和统一模式,如下所示:

>>> from skimage.feature import local_binary_pattern
>>> lbp_image=local_binary_pattern(some_grayscale_image,8,2,method='uniform')
>>> histogram=scipy.stats.itemfreq(lbp_image)
>>> print histogram
[[  0.00000000e+00   1.57210000e+04]
 [  1.00000000e+00   1.86520000e+04]
 [  2.00000000e+00   2.38530000e+04]
 [  3.00000000e+00   3.23200000e+04]
 [  4.00000000e+00   3.93960000e+04]
 [  5.00000000e+00   3.13570000e+04]
 [  6.00000000e+00   2.19800000e+04]
 [  7.00000000e+00   2.46530000e+04]
 [  8.00000000e+00   2.76230000e+04]
 [  9.00000000e+00   4.88030000e+04]]
Run Code Online (Sandbox Code Playgroud)

当我在附近拍摄8个像素时,预计会获得59个不同的LBP码(因为统一的方法),但它只给了我9个不同的LBP码.更一般地,总是返回P + 1个标签(其中P是邻居的数量).

这是另一种统一的方法,还是我误解了什么?

python feature-extraction scikit-image

6
推荐指数
1
解决办法
7753
查看次数

Python FFT用于特征提取

我正在寻找对人体加速度计数据进行特征提取以用于活动识别的方法。我的数据的采样率为100Hz。

我已经从各种来源研究了FFT是一种很适合使用的方法。我具有滑动窗口格式的数据,每个窗口的长度为256。我正在使用Python通过NumPy库执行此操作。我用来应用FFt的代码是:

import numpy as np

def fft_transform (window_data):

    fft_data = []
    fft_freq = []
    power_spec = []

    for window in window_data:

        fft_window = np.fft.fft(window)
        fft_data.append(fft_window)

        freq  = np.fft.fftfreq(np.array(window).shape[-1], d=0.01)
        fft_freq.append(freq )

        fft_ps = np.abs(fft_window)**2
        power_spec.append(fft_ps)

    return fft_data, fft_freq, power_spec
Run Code Online (Sandbox Code Playgroud)

这样给出的输出如下所示:

fft_data

array([  2.92394828e+01 +0.00000000e+00j,
        -6.00104665e-01 -7.57915977e+00j,
        -1.02677676e+01 -1.55806119e+00j,
        -7.17273995e-01 -6.64043705e+00j,
         3.45758079e+01 +3.60869421e+01j,
         etc..
Run Code Online (Sandbox Code Playgroud)

freq_data

array([  0.      ,   0.390625,   0.78125 ,   1.171875,   1.5625  , etc...
Run Code Online (Sandbox Code Playgroud)

功率谱

array([  8.54947354e+02,   5.78037884e+01,   1.07854606e+02,
         4.46098863e+01,   2.49775388e+03,   etc...
Run Code Online (Sandbox Code Playgroud)

我还使用此代码绘制了结果-其中fst_ps是power_spectrum的第一个数组/窗口,而fst_freq是fft_freq数据的第一个窗口/数组。

import matplotlib.pyplot as plt
fig = …
Run Code Online (Sandbox Code Playgroud)

fft machine-learning feature-extraction python-3.x

6
推荐指数
1
解决办法
1141
查看次数

在 Python 中 SelectKBest 之前需要标准化

我需要从数据集中为回归任务选择一些特征。但是数值来自不同的范围。

from sklearn.datasets import load_boston
from sklearn.feature_selection import SelectKBest, f_regression

X, y = load_boston(return_X_y=True)
X_new = SelectKBest(f_regression, k=2).fit_transform(X, y)
Run Code Online (Sandbox Code Playgroud)

为了提高回归模型的性能,我是否需要在SelectKBest方法之前对 X 进行归一化?

python feature-extraction

5
推荐指数
1
解决办法
853
查看次数

使用 OpenCV 仅检测图像中的虚线(虚线)

我正在尝试学习图像特征检测技术。

我已经设法检测到水平线(不间断/连续),但是我无法检测图像中的所有虚线/断线。

这是我的测试图像,您可以看到有虚线和一些文本/框等。

我的测试图片

到目前为止,我使用了以下代码,仅检测到一条虚线。

import cv2
import numpy as np

img=cv2.imread('test.jpg')
img=functions.image_resize(img,1000,1000) #function from a script to resize image to fit my screen
imgGray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
imgEdges=cv2.Canny(imgGray,100,250)
imgLines= cv2.HoughLinesP(imgEdges,2,np.pi/100,60, minLineLength = 10, maxLineGap = 100)
for x1,y1,x2,y2 in imgLines[0]:
    cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2)

cv2.imshow('Final Image with dotted Lines detected',img) 
Run Code Online (Sandbox Code Playgroud)

我的输出图像如下。正如你所看到的,我只能检测到最后一条虚线。我已经尝试过参数 rho、theta、min/max 线,但没有运气。

任何意见是极大的赞赏 :)

我的输出图像

python opencv image-processing feature-extraction python-3.x

5
推荐指数
1
解决办法
9198
查看次数

为什么 FAST/ORB 不擅长寻找图像边缘附近的关键点

ORB 在图像边缘附近找不到关键点,我不明白为什么。SIFT 和 SURF 似乎更糟糕,我预计情况恰恰相反。

如果我理解正确,那么 SIFT/SURF 在测试点周围分别使用 16x16 和 20x20 方块,因此我希望它们不会找到距离边缘 8 和 10 像素的关键点。FAST/ORB 在测试点周围使用直径为 7 的圆,因此我希望它能找到更接近边缘的关键点,也许接近 4 个像素(尽管我认为相关的算法,BRIEF,用于描述关键点使用更大的窗口)所以这会删除一些关键点)。

一个实验让我的预测变得毫无意义。在我的实验中,距边缘的最小距离随着方块的大小和间距而变化,但例子是

  • SIFT .. 5 像素
  • 冲浪.. 15 像素
  • ORB .. 39 像素

谁能解释为什么?

我使用的代码如下。我画了一个正方形网格并应用了高斯模糊。我预计算法会锁定角落,但他们发现了正方形的中心和一些伪影。

import numpy as np
import cv2

size = 501; border = 51; step = 10
image = np.zeros( (size,size), np.uint8 )
# fill with disjoint squares
def drawsquare(img,i,j):
    restsize = step//5
    cv2.rectangle(img,(i-restsize,j-restsize),(i+restsize,j+restsize),255,-1)
for i in range(0,size,step):
    for j in range(0,size,step):
        drawsquare(image,i,j)
# blank out the …
Run Code Online (Sandbox Code Playgroud)

python opencv feature-extraction keypoint

5
推荐指数
1
解决办法
2114
查看次数

PixelLib 无法正确检测对象

我正在使用的库

import pixellib
from pixellib.instance import instance_segmentation
import cv2
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)

剧本:

segment_image = instance_segmentation()
segment_image.load_model('mask_rcnn_coco.h5')
segmask, output = segment_image.segmentImage("images\example2.jpeg", show_bboxes = True)
cv2.imwrite("exampleoutput.jpeg", output)
print(output.shape)
Run Code Online (Sandbox Code Playgroud)

我不明白为什么它不能突出显示图像的不同部分。

这是我的输出:

这是我的输出

我研究了其他人如何使用 Pixellib,它与他们的完美配合。

我期待的输出:

我期待的输出

image-processing feature-extraction image-segmentation data-science pixellib

5
推荐指数
1
解决办法
765
查看次数