精华内容
下载资源
问答
  • resnet提取图片特征

    2020-12-28 15:22:08
    用预训练好的神经网络提取图片特征
  • tensorflow利用预训练的模型提取图片特征,以VGG为例,使用slim库
  • LBP算法提取图片纹理特征

    千次阅读 2019-06-24 14:49:33
    LBP算法提取图片纹理特征图 一、项目目标 采用LBP算法提取图片的纹理特征图。 二、LBP算法原理 LBP指局部二值模式,英文全称:Local Binary Patterns。最初功能为辅助图像局部对比度,并不是一个完整的特征描述子。...

    LBP算法提取图片纹理特征图

    一、项目目标

    采用LBP算法提取图片的纹理特征图。

    二、LBP算法原理

    LBP指局部二值模式,英文全称:Local Binary Patterns。最初功能为辅助图像局部对比度,并不是一个完整的特征描述子。在数字图像处理和模式识别领域,后来提升为一种有效的纹理描述算子,度量和提取图像局部的纹理信息,对光照具有不变性。LBP有很多变种,或说改进。单纯的LBP记录像素点与其周围像素点的对比信息,或说差异。从图1我们看到,最左边的是原图,标号为example。我们要检测某个像素点的某些信息,在图1中,对于9个方格中中间方格(方格中的数字是像素点灰度值大小),做一个阈值化处理。大于等于中心点像素的,则标记为1,小于的则标记为0。最后将中心像素点周围的11110001二进制数化为十进制数,得到LBP值。
    在这里插入图片描述
    其中进制数11110001的顺序并无硬性要求,只要在同一处理中保持相同的顺序即可。
    但是这样的LBP描述特征能力有限,且不具备旋转不变性。很容易想象,如果图片进行了旋转,则LBP值也会随之改变。

    三、代码

    #include <opencv2/opencv.hpp>
    #include <iostream> 
    
    using namespace cv;
    using namespace std; 
    
    Mat LBP(Mat src_image); 
    
    int main()
    {	
    	Mat img0 = imread("src.jpg");	
    	cv::imshow("原图", img0); 
    	LBP(img0);	
    	cvWaitKey(0);	
    	return 0;
    } 
    
    Mat LBP(Mat src_image)
    {     
    	//源图像预处理	
    	cv::Mat Image(src_image.rows, src_image.cols, CV_8UC1);  //建立一个与src_image等高等宽的单通道图像Image
    	cv::Mat lbp(src_image.rows, src_image.cols, CV_8UC1);    //建立一个与src_image等高等宽的单通道图像lbp	
    	if (src_image.channels() == 3)		
    		cvtColor(src_image, Image, CV_BGR2GRAY);   //LBP只能处理灰度图像,转化为灰度图	
    	unsigned center = 0;   //提取需要计算LBP值得中心点的灰度值	
    	unsigned center_lbp = 0;     //计算center处的LBP值 	
    	//计算LBP图像	
    	for (int row = 1; row < Image.rows - 1; row++)	
    	{		
    		for (int col = 1; col < Image.cols - 1; col++)		
    		{			
    			center = Image.at<uchar>(row, col);			
    			center_lbp = 0;			
    			if (center <= Image.at<uchar>(row - 1, col - 1))				
    				center_lbp += 1;	//8位二进制数第0位置1		
    			if (center <= Image.at<uchar>(row - 1, col))				
    				center_lbp += 2;	//8位二进制数第1位置1 		
    			if (center <= Image.at<uchar>(row - 1, col + 1))				
    				center_lbp += 4;	//8位二进制数第2位置1 		
    			if (center <= Image.at<uchar>(row, col - 1))				
    				center_lbp += 8;	//8位二进制数第3位置1 		
    			if (center <= Image.at<uchar>(row, col + 1))				
    				center_lbp += 16;	//8位二进制数第4位置1 		
    			if (center <= Image.at<uchar>(row + 1, col - 1))				
    				center_lbp += 32;	//8位二进制数第5位置1 		
    			if (center <= Image.at<uchar>(row + 1, col))				
    				center_lbp += 64;	//8位二进制数第6位置1 		
    			if (center <= Image.at<uchar>(row + 1, col + 1))				
    				center_lbp += 128;	 //8位二进制数第7位置1 		
    			//把center处计算好的LBP值存放在lbp图像的相应位置
    			lbp.at<uchar>(row, col) = center_lbp;         		
    		}	
    	}	
    	cv::imshow("LBP纹理图", lbp);	
    	waitKey(10);	
    	cv::imshow("灰度图", Image);	
    	waitKey(10);	
    	return lbp;
    }
    

    四、项目结果

    原图:
    在这里插入图片描述
    灰度图:
    在这里插入图片描述
    纹理特征图:
    在这里插入图片描述

    展开全文
  • 有没有在 ios上用openCV提取图片特征的?最近想做这方面的东西。 领导希望我在手机端相机扫描 然后 每隔一段时间把扫描的图片的特征发给服务器。然后服务器用来AR识别。但是现在图片的特征不知道如何提取。
  • 利用java+Opencv提取图片的颜色矩特征,运行前提是已经在eclipse配置好Opencv
  • Python提取数字图片特征向量

    万次阅读 2017-11-10 15:40:56
    在机器学习有一种学习叫做手写数字识别,其主要功能就是让机器识别出图片的数字,其步骤主要包括:图片特征提取、将特征值点阵转化为特征向量、进行模型训练。第一步便是提取图片中的特征提取。数据的预处理关系...

    引言

    在机器学习中有一种学习叫做手写数字识别,其主要功能就是让机器识别出图片中的数字,其步骤主要包括:图片特征提取、将特征值点阵转化为特征向量、进行模型训练。第一步便是提取图片中的特征提取。数据的预处理关系着后面模型的构建情况,所以,数据的处理也是机器学习中非常重要的一部分。下面我就说一下如何提取图片中的特征向量。

    图片灰度化

    blob.png =>blob.png

    当我们拿到一种图片的时候,这张图片可能是多种颜色集合在一起的,而我们为了方便处理这张图片,我们首先会将这张图片灰度化(左图灰度化之前,右图灰度化之后)。如果该图片已经是黑白两色的就可以省略此步骤。

    from PIL import Image
    import numpy as np
    
    #打开一张图片
    img = Image.open("image/77.jpg")
    #图片灰度化
    img = img.convert("L")
    #显示图片
    img.show()
    #将图片转换为数组形式,元素为其像素的亮度值
    print np.asarray(img)

    在图片灰度化之前这张图片的数组值应该是一个三维的,灰度化之后将变为二维数组。数组行列数就是图片的像素宽度和高度。

    打印的数组形式如下:

    blob.png

    图片的二值化

    图片的二值化就是将上面的数组化为0和1的形式,转化之前我们要设定一个阈值,大于这个阈值的像素点我们将其设置为1,小于这个阈值的像素点我们将其设置为0。下面我找了一张数字的图片,这张图片已经灰度化过了。我们就直接将它二值化。图片如下:

    blob.png

    图片的像素是32x32的。如果不是要化为此值,这一步我们叫做尺寸归一化。

    #打开一张图片
    img = Image.open("numImage/3.jpg")
    #将图片化为32*21的
    img = img.resize((32, 32))
    #二值化
    img = img.point(lambda x:1 if x > 120 else 0) 
    #将图片转换为数组形式,元素为其像素的亮度值
    img_array = np.asarray(img)
    print img_array

    解释一下上面的代码,resize方法里的参数是一个元组,元素分别是宽和高;point函数是用来二值化图片的,其参数是一个lambda函数,函数体就是判断其元素值是否大于120,这里的120就是上面提到的阈值。

    二值化后的数组:

    blob.png

    在数组中我们可以大似的看到,数字1大似组成了一个3的形状。

    获取网格特征数字统计图

    在图片二值化之后,我们通常需要获取到网格统计图,这里我们的图片尺寸是32*32的,所以我们将其化为8*8的点阵图,步骤如下:

    1、将二值化后的点阵水平平均划线分成8份,竖直平均划线分成8份。

    2、分别统计每一份中像素点为1的个数。

    3、将每一个份统计值组合在一起,构成8*8的点阵统计图。

    下面我写了个函数来将32*32的数组转化成8*8的网格特征数字统计图:

     
    #将二值化后的数组转化成网格特征统计图 def get_features ( array ):     #拿到数组的高度和宽度     h , w  =  array. shape     data  =  [ ]     for x  in  range ( 0 , w/ 4 ):         offset_y  = x *  4         temp  =  [ ]         for y  in  range ( 0 ,h/ 4 ):             offset_x  = y *  4             #统计每个区域的1的值             temp. append ( sum ( sum ( array [ 0+offset_y: 4+offset_y , 0+offset_x: 4+offset_x ] ) ) )         data. append (temp )     return np. asarray (data )

    转化之后我们的到的数组点阵是这样的:

    blob.png

    将二维的统计图转化为一维的特征向量

    这一步就比较简单了,只需要将矩阵全部放到一行即可,直接使用np的reshape()方法即可:

    features_vector =features_array.reshape(features_array.shape[0]*features_array.shape[1])
    print features_vector

    输出结果:

    blob.png

    有些同学可能要问,为什么要将二维的点阵转化成一维的特征向量? 这是因为在机器学习中,数据集的格式就是这样的,数据集的一个样例就是一个特征向量,对个样例组成一个训练集。转化为以为的特征向量是便于我们的使用。

    全部代码(省略灰度化):

    from PIL import Image
    
    import numpy as np
    
    
    
    #将二值化后的数组转化成网格特征统计图
    
    def get_features(array):
        #拿到数组的高度和宽度
        h, w = array.shape
        data = []
        for x in range(0, w/4):
            offset_y = x * 4
            temp = []
            for y in range(0,h/4):
                offset_x = y * 4
                #统计每个区域的1的值
                temp.append(sum(sum(array[0+offset_y:4+offset_y,0+offset_x:4+offset_x])))
            data.append(temp)
        return np.asarray(data)
    
        
    
    #打开一张图片
    img = Image.open("numImage/3.jpg")
    #将图片化为32*32的
    img = img.resize((32, 32))
    
    
    #二值化
    img = img.point(lambda x:1 if x > 120 else 0)
    #将图片转换为数组形式,元素为其像素的亮度值
    img_array = np.asarray(img)
    print img_array
    #得到网格特征统计图
    features_array = get_features(img_array)
    print features_array
    features_vector =features_array.reshape(features_array.shape[0]*features_array.shape[1])
    print features_vector

    原文:http://www.k2zone.cn/?p=977

    展开全文
  • 用OpenCV提取图片SIFT特征

    千次阅读 2018-05-16 15:44:32
    包括角点检测和计算特征描述子两个过程。 vector<KeyPoint> keyPoint; Ptr<FeatureDetector> featureDetector; featureDetector = FeatureDetector::create("FAST"); featureDetector->detect...

    包括角点检测和计算特征描述子两个过程。

    vector<KeyPoint> keyPoint;
    Ptr<FeatureDetector> featureDetector;
    featureDetector = FeatureDetector::create("FAST");
    featureDetector->detect(image, keyPoint);//角点检测
    Mat descriptors;
    Ptr<DescriptorExtractor> descriptorExtractor;
    descriptorExtractor = DescriptorExtractor::create("SIFT");
    descriptorExtractor->compute(image, keyPoint, descriptors);//计算特征描述子

    KeyPoint有如下参数:
    pt(x,y):关键点的坐标
    size:该点直径的大小
    angle:角度,表示关键点的方向,为了保证方向不变性,SIFT算法通过对关键点周围领域进行梯度运算,
    求得该点方向。-1为初值。
    response:响应程序,代表该点强度大小。我的理解是该点在图片多个关键点中的权重。"reponse" is indeed an indicator of "how good" (roughly speaking, in terms of corner-ness) a point is.
    octave代表是从金字塔哪一层提取得到的数据。
    class_id:当要对图片进行分类时,我们可以用class_id对每个特征点进行区分,未设定时为-1,需要自己设定。

    descriptorExtractor对关键点周围领域内的像素分块进行梯度运算,得到128维的特征向量。
    根据David G.Lowe的建议,对每个关键点,在其周围,用4x4=16个格子进行描述,每个格子包含8个方向的信息,即16x8=128个信息,这就是128维的SIFT特征向量。

    展开全文
  • 最近在用python写图片检索的代码,从网上看到可以使用HOG方法提取图片特征,所以自己就根据网上的代码进行了一下修改,只使用HOG特征提取特征,并将提取出来的特征以数组的形式打印出来。` 下面是我的代码示例: ...

    最近在用python写图片检索的代码,从网上看到可以使用HOG方法提取图片的特征,所以自己就根据网上的代码进行了一下修改,只使用HOG特征提取特征,并将提取出来的特征以数组的形式打印出来。`
    下面是我的代码示例:

    import numpy as np
    from PIL import Image
    from skimage.feature import hog
    
    
    size = 256
    def get_feat():
        image = 'airplane_001.jpg'
        image = Image.open(image)
        #image.show()
        image = np.reshape(image, (size, size, 3))
        #print(image)
    
        gray = rgb2gray(image)/255.0
    
        #这句话可以根据自己的图片大小进行修改,我的图片是256
        fd = hog(gray, orientations=20, pixels_per_cell=[20,20], cells_per_block=[10,10], visualize=False, transform_sqrt=True,block_norm='L2-Hys')
        print(fd)
        return fd
    #变为灰度图片
    def rgb2gray(im):
        gray = im[:, :, 0]*0.2989+im[:, :, 1]*0.5870+im[:, :, 2]*0.1140
        return gray
    
    if __name__ == '__main__':
        get_feat()

    下面是我的结果输出:

    这里写图片描述
    可能是由于数据量比较大,所以没有完全展开。

    本人也是刚开始接触python,做一些小实验,代码中可能会有一些不足,读者可以提出来,咱们一起改进。邮箱1726867269@qq.com

    展开全文
  • 我想做一个车牌识别系统,有单独的字符训练集,先提取图片的sift特征,然后用svm训练 ,可是提取出来的特征数不一样,无法训练,希望哪位大神能提供一些处理的思路,非常感谢
  • VGG16提取图片特征

    千次阅读 2020-06-12 10:27:27
    不然运算速度会变慢(要求梯度)而且会影响结果 # model.cuda() # 将模型从CPU发送到GPU,如果没有GPU则删除该行 return model # 特征提取 def extract_feature(model, imgpath): model.eval() # 必须要有,不然会...
  • 黑龙江大学计算机科学技术学院 战扬模式识别课程 matlab代码根据7个不变矩提取图片的形状特征,可以得到一个n行7列的矩阵
  • 提取纹理特征(能量、熵、惯性矩、相关性):将原始图像灰度化;计算四个共生矩阵P;对共生矩阵归一化;对共生矩阵计算能量、熵、惯性矩、相关4个纹理参数
  • 图片特征提取

    千次阅读 2020-01-20 20:02:56
    通过像素值提取特征 数字图像通常是一张光栅图或像素图,将颜色映射到网格坐标里。一张图片可以看成是一个每个元素都是颜色值的矩阵。表示图像基本特征就是将矩阵每行连起来变成一个行向量。光学文字识别(Optical ...
  • PyTorch:利用预训练好的ResNet-152网络提取图片特征

    万次阅读 热门讨论 2019-05-13 19:16:59
    这篇博文相当于是对上一篇博文Pytorch:利用预训练好的VGG16网络提取图片特征 的补充,本文提到的提取方式与前文中的不同。 另外,因为TorchVision提供的训练好了的ResNet效果不好,所以本文中将会使用由...
  • 提取分块图片特征

    千次阅读 2017-04-04 09:29:58
    提取分块图像特征
  • 自己根据前人的代码,使用lbp算子提取图片特征,并对其中的部分参数进行了注释。 下面是我的代码示例: # coding: utf-8 import cv2 as cv from skimage import feature as skif import numpy as np #获取图像的lbp...
  • CNN提取图片特征,之后用SVM分类

    万次阅读 多人点赞 2018-05-28 11:16:27
    先用CNN提取特征,之后用SVM分类,平台是TensorFlow 1.3.0-rc0,python3.6 参考链接点击打开链接# coding=utf8 import random import numpy as np import tensorflow as tf from sklearn import svm right0 = 0.0...
  • Pytorch:利用预训练好的VGG16网络提取图片特征

    万次阅读 多人点赞 2019-02-24 09:43:15
    这里的提取图片特征特指从VGG网络的最后一个conv层进行提取。虽然下面代码里面给出的是VGG16作为例子,其实也可以用其他的已经经过训练了的神经网络,包括自己训练的。 代码 模型结构相关基本知识 首先说下加载...
  • 提取的原理是现将每10000副用3072维向量表示的数据集通过红绿蓝三色的叠加表示成1024维的向量,再将这1024维向量转换为32*32的图片,在调用LMgist进行特征提取,结果用512维的向量表示。提取特征值分别保存在gist1...
  • Torch 7 利用已有VGG模型提取图片特征

    千次阅读 2016-09-01 11:43:48
    在看torch的东西,感觉在深度学习的运用上,相对于Caffe来说更灵活,不过发现没有利用已有caffe模型提取图片特在的代码,在网上看见了一个,利用了GPU来处理批量图片的特征提取。写的比较规范,看来了比较复杂,这里...
  • 通过建立一个两层降维的自编码网络,将MNIST数据集的数据特征提取出来,并通过这些特征再重建一个MNIST数据集。 1,引入头文件,并加载mnist数据 import tensorflow as tf import numpy as np import matplotlib....
  • 各种基于形状特征的检索方法都可以比较有效地利用图像感兴趣的目标来进行检索,但它们也有一些共同的问题,包括:①目前基于形状的检索方法还缺乏比较完善的数学模型;②如果目标有变形时检索结果往往不太可靠;③...
  • OCR识别提取图片中文字原理

    万次阅读 2018-03-30 17:16:53
    OCR识别提取图片中文字原理· 预处理:对包含文字的图像进行处理以便后续进行特征提取、学习。这个过程的主要目的是减少图像的无用信息,以便方便后面的处理。在这个步骤通常有:灰度化(如果是彩色图像)、降噪...
  • 主要介绍了python实现图片处理和特征提取详解,文中向大家分享了Python导入图片,将图像转化为二维矩阵,模糊化图片等Python对图像的操作,具有一定参考价值,需要的朋友可以了解下。
  • SIFT特征提取分析

    万次阅读 多人点赞 2012-06-06 22:06:09
    SIFT(Scale-invariant feature transform)是一种检测局部特征的算法,该算法通过求一幅图特征点(interest points,or corner points)及其有关scale 和 orientation 的描述子得到特征并进行图像特征点匹配,...
  • MatConvNet对自己的图片分两类及提取图片特征

    千次阅读 热门讨论 2016-09-02 16:40:30
    MatConvNet对自己的图片分两类也可以讲是使用MatConvNet:工具箱可以直接去Github上下载,http://www.studyai.cn/deep_learn/matconvnet/functions/index.html点击打开链接这个网站讲解了MatConvNet的每个函数 很...
  • 图片特征提取方法

    千次阅读 2018-04-12 09:38:52
    用于计算图片特征,表达 对图片数据/特征分布的一种统计 灰度,颜色 边缘,形状及纹理等 局部特征点,视觉词汇 区间 具有一定的物理或统计意义 数据或特征的代表 需要预定义或基于特征进行学习 数值是一种...
  • Java使用OpenCv提取图片HOG和LBP特征

    千次阅读 2019-05-21 13:29:17
    因为大创项目学习,就去找了找关于OpenCv和图片处理的相关知识,话不多说,言归正传。 什么是HOG和LBP特征? LBP详解:https://blog.csdn.net/zhangjunp3/article/details/80014696 HOG详解:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 93,644
精华内容 37,457
关键字:

如何提取图片中的特征