图像分类数据集制作 SVM/DNN

本文介绍了图像分类的一种方法,通过提取图像的HOG特征,结合SVM进行初步分类,以及利用简单的神经网络进一步训练,实现更精准的图像分类。文章详细阐述了从HOG特征提取到数据集制作,再到SVM和神经网络的训练过程。
摘要由CSDN通过智能技术生成

方法综述
简单的图像分类可以采用HOG+SVM的算法,通过提取图像的HOG特征,然后特征通过SVM进行分类,实现图像的分类。

下面将代码的步骤讲清楚

提取HOG特征

#一种自定义的方法
def get_features(img):
    #腐蚀后 锐化
    #腐蚀
    im_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#灰度图形
    im=cv2.fastNlMeansDenoising(im_gray)  
    ret2,th2 = cv2.threshold(im,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)#自动找到阈值
    img=np.array(th2)
    plt.imshow(th2)
    #print(features) 
    rows,cols=img.shape
    #rows is h col is w
    print(rows,cols)
    #计算出各边的填充数量
    top=(20-rows)//2
    bottom=20-rows-top
    left=(20-cols)//2
    right=20-cols-left
    constant = cv2.copyMakeBorder(img,top,bottom,left,right,cv2.BORDER_CONSTANT,value=[0])
    
    #plt.imshow(constant)
    hist=hog(constant)
    feature=preprocessing.scale(hist)
    return feature
def hog(img):
    bin_n=16
    gx = cv2.Sobel(img, cv2.CV_32F, 1, 0)
    gy = cv2.Sobel(img, cv2.CV_32F, 0, 1)
    mag, ang = cv2.cartToPolar(gx, gy)
    bins = np.int32(bin_n*ang/(2*np.pi))    # quantizing binvalues in (0...16)
    bin_cells = bins[:10,:10], bins[10:,:10], bins[:10,10:], bins[10:,10:]
    mag_cells = mag[:10,:10], mag[10:,:10], mag[:10,10
  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值