直方图特征结合 ** 支持向量机图片分类
一、核心技术框架
1. 直方图特征原理
- 颜色直方图:统计图像中每个颜色区间(如 RGB 通道)的像素数量,反映颜色分布。
- HOG 直方图(方向梯度直方图):统计图像局部区域的梯度方向分布,捕捉形状特征。
- 优势:计算高效、对平移旋转鲁棒,适合图像分类。
2. 技术路线
- 数据预处理:图像读取、缩放、归一化
- 特征提取:计算颜色直方图或 HOG 特征
- 特征向量化:将直方图转换为固定长度向量
- SVM 分类:训练多分类 SVM 模型
- 评估优化:交叉验证、参数调优等
二、代码实现(基于 scikit-learn 和 OpenCV)
1. 环境准备
python
运行
import numpy as np
import matplotlib.pyplot as plt
import cv2
from sklearn import datasets
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import accuracy_score, classification_report
from skimage.feature import hog
from skimage import data, exposure
2. 数据加载与预处理(以 CIFAR-10 为例)
python
运行
# 加载CIFAR-10数据集(10类彩色图像,32x32像素)
def load_cifar10():# 实际项目中建议使用torchvision或tensorflow加载# 此处简化为随机生成示例数据np.random.seed(42)X = np.random.randint(0, 256, size=(1000, 32, 32, 3), dtype=np.uint8)y = np.random.randint(0, 10, size=1000)return X, yX, y = load_cifar10()# 划分训练集与测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42, stratify=y
)
3. 特征提取(颜色直方图 + HOG)
python
运行
def extract_features(images, hist_bins=64, hog_orientations=9):features = []for img in images:# 1. 颜色直方图特征hist_features = []for channel in range(3): # RGB三通道hist = cv2.calcHist([img], [channel], None, [hist_bins], [0, 256])hist = cv2.normalize(hist, hist).flatten() # 归一化并展平hist_features.extend(hist)# 2. HOG特征(形状特征)img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)img_resized = cv2.resize(img_gray, (64, 64)) # HOG需要固定大小输入fd, hog_image = hog(img_resized, orientations=hog_orientations,pixels_per_cell=(8, 8), cells_per_block=(2, 2),visualize=True, channel_axis=None)# 3. 合并特征combined = np.concatenate([hist_features, fd])features.append(combined)return np.array(features)# 提取训练集和测试集特征
X_train_features = extract_features(X_train)
X_test_features = extract_features(X_test)# 特征标准化
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train_features)
X_test_scaled = scaler.transform(X_test_features)
4. 模型训练与评估
python
运行
# 初始化SVM分类器
svm_clf = SVC(kernel='rbf',C=10, # 正则化参数,控制间隔宽度gamma=0.001, # RBF核宽度参数class_weight='balanced',random_state=42
)# 训练模型
svm_clf.fit(X_train_scaled, y_train)# 预测与评估
y_pred = svm_clf.predict(X_test_scaled)
accuracy = accuracy_score(y_test, y_pred)
print(f"测试集准确率: {accuracy:.4f}")# 分类报告
print("\n分类报告:")
print(classification_report(y_test, y_pred))
5. 超参数优化(网格搜索)
python
运行
# 定义参数搜索空间
param_grid = {'C': [1, 10, 100],'gamma': [0.001, 0.01, 0.1],'kernel': ['rbf', 'poly']
}# 网格搜索
grid_search = GridSearchCV(estimator=svm_clf,param_grid=param_grid,cv=3,n_jobs=-1,scoring='accuracy'
)grid_search.fit(X_train_scaled, y_train)
best_svm_clf = grid_search.best_estimator_
print(f"最优参数: {grid_search.best_params_}")
三、关键技术解析
1. 直方图参数选择
参数 | 颜色直方图 | HOG 特征 |
---|---|---|
hist_bins | 每个通道分箱数(通常 32-256) | - |
orientations | - | 梯度方向数(通常 6-9) |
pixels_per_cell | - | 每个 cell 的像素数(8x8 常用) |
cells_per_block | - | 每个 block 的 cell 数(2x2 常用) |
2. 特征可视化(示例)
python
运行
# 可视化颜色直方图
def plot_color_histogram(img):color = ('r', 'g', 'b')plt.figure(figsize=(10, 4))plt.subplot(1, 2, 1)plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))plt.title('原始图像')plt.subplot(1, 2, 2)for i, col in enumerate(color):histr = cv2.calcHist([img], [i], None, [256], [0, 256])plt.plot(histr, color=col)plt.xlim([0, 256])plt.title('颜色直方图')plt.show()# 可视化HOG特征
def plot_hog_features(img):img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)img_resized = cv2.resize(img_gray, (64, 64))fd, hog_image = hog(img_resized, orientations=9,pixels_per_cell=(8, 8), cells_per_block=(2, 2),visualize=True, channel_axis=None)fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4), sharex=True, sharey=True)ax1.axis('off')ax1.imshow(img_resized, cmap=plt.cm.gray)ax1.set_title('原始图像')# 增强HOG可视化效果hog_image_rescaled = exposure.rescale_intensity(hog_image, in_range=(0, 10))ax2.axis('off')ax2.imshow(hog_image_rescaled, cmap=plt.cm.gray)ax2.set_title('HOG特征')plt.show()
四、优化策略
1. 特征工程增强
- 多尺度特征:提取不同尺寸的 HOG 特征(如 16x16 和 32x32)
- 空间金字塔匹配:将图像分块提取直方图,保留空间信息
- 局部特征:结合 SIFT/SURF 特征点描述符
2. 模型优化
- 核函数选择:
- 线性核(
kernel='linear'
):计算快,适合高维特征 - RBF 核(
kernel='rbf'
):默认选择,适合非线性问题
- 线性核(
- 类别不平衡处理:
- 使用
class_weight='balanced'
- 对少数类过采样(SMOTE)或对多数类欠采样
- 使用
3. 计算效率
- 并行处理:使用
multiprocessing
并行提取特征 - 特征降维:使用 PCA 或 LDA 降维,保留主要方差
- 增量学习:对于大数据集,使用
partial_fit
分批训练
五、应用场景扩展
- 交通标志识别:提取 HOG 特征识别 10 类交通标志
- 医学图像分类:基于颜色直方图区分 10 种细胞类型
- 农产品质量检测:通过颜色和形状直方图判断水果等级
六、总结
直方图特征(颜色 + HOG)是图像分类的经典方法,结合 SVM 可实现高效的 10 类图片识别。该方案计算成本低、解释性强,适合中小规模数据集。关键优化点在于特征参数调优(如 HOG 的orientations
和cells_per_block
)和 SVM 超参数(C
和gamma
)。对于大规模复杂图像,可考虑结合深度学习提取更强大的特征表示
相关文章:
直方图特征结合 ** 支持向量机图片分类
一、核心技术框架 1. 直方图特征原理 颜色直方图:统计图像中每个颜色区间(如 RGB 通道)的像素数量,反映颜色分布。HOG 直方图(方向梯度直方图):统计图像局部区域的梯度方向分布,捕…...
【prometheus+Grafana篇】基于Prometheus+Grafana实现windows操作系统的监控与可视化
💫《博主主页》: 🔎 CSDN主页 🔎 IF Club社区主页 🔥《擅长领域》:擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控;并对SQLserver、NoSQL(MongoDB)有了…...
PyTorch实战(4)——卷积神经网络(Convolutional Neural Network, CNN)详解
PyTorch实战(4)——卷积神经网络详解 0. 前言1. 全连接网络的缺陷2. 卷积神经网络基本组件2.1 卷积2.2 步幅和填充2.3 池化2.3 卷积神经网络完整流程 3. 卷积和池化相比全连接网络的优势4. 使用 PyTorch 构建卷积神经网络4.1 使用 PyTorch 构建 CNN 架构…...
【Python】Python常用控制结构详解:条件判断、遍历与循环控制
Python提供了多种控制结构来处理逻辑判断和循环操作,包括if-else条件分支、switch替代方案、遍历方法以及循环控制语句break和continue。以下是对这些功能的详细说明及示例: 一、条件判断:if-else与多分支结构 单分支结构 • 语法࿱…...
在Linux中安装JDK并且搭建Java环境
1.首先准备好JDK的Linux的安装包 2.打开Linux,进入root的文件夹,直接拖入即可 3.输入解压命令,后面指定的是位置(注意不要填写错误,就填写这个) 4.之后进入我们安装的jdk的文件 利用pwd命令,展示我们安装的目录,之后…...
理解多智能体深度确定性策略梯度MADDPG算法:基于python从零实现
引言:多智能体强化学习(MARL) 多智能体强化学习(MARL)将强化学习拓展到多个智能体在共享环境中相互交互的场景。这些智能体可能相互合作、竞争,或者目标混杂。MARL 引入了单智能体设置中不存在的独特挑战。…...
【AI大语言模型本质分析框架】
AI大语言模型本质分析框架 ——从教育危机到智能本质的七层递进式解构 第一层:现象观察——阴(显性危机)与阳(隐性变革)的共存 观点1(阴):AI作弊泛滥,传统教育体系崩溃…...
算法模型部署后_python脚本API测试指南-记录3
API 测试指南 服务运行后,可以通过以下方式测试: Curl: curl -X POST -F "file./test_dataset/surface/surface57.png" http://<服务器IP>:9000/api/v1/predictPython 脚本: (参考 svm_request测试.py) import requestsurl http://…...
鸿蒙(HarmonyOS)应用开发入门教程
目录 第一章:鸿蒙系统简介 1.1 什么是鸿蒙系统? 1.2 鸿蒙系统架构 第二章:开发环境搭建 2.1 安装DevEco Studio 步骤1:下载与安装 步骤2:首次配置 步骤3:设备准备 2.2 创建第一个项目 第三章:鸿蒙应用开发基础 3.1 核心概念:Ability与AbilitySlice 示例代码…...
MIT XV6 - 1.6 Lab: Xv6 and Unix utilities -uptime
接上文 MIT XV6 - 1.5 Lab: Xv6 and Unix utilities - xargs 第一章持续有点久了,虽然肯定有些特点和细节还没注意到,但这次的主要目的是学习内核部分,决定水一篇然后进入第二章节 uptime 第一章的最后一个实验,选做性质…...
Python语言在地球科学交叉领域中的应用——从数据可视化到常见数据分析方法的使用【实例操作】
前言: Python是功能强大、免费、开源,实现面向对象的编程语言,Python能够运行在Linux、Windows、Macintosh、AIX操作系统上及不同平台(x86和arm),Python简洁的语法和对动态输入的支持,再加上解释…...
flutter 的 json序列化和反序列化
一、json转实体 Instantly parse JSON in any language | quicktype 二、实体中的toJson和fromJson 实现 官方推荐的 两个插件(个人觉得一个实体会多一个.g.dart 文件太多了,不喜欢) json_annotation json_serializable 三、使用 dart_json_mapper 实现上面的功…...
什么是数据集市(Data Mart)?
数据集市(Data Mart)是数据仓库(Data Warehouse)的一个子集,专门针对某个特定业务部门、业务线或主题领域,存储和管理该部门或领域所需的特定数据。它通常包含从企业范围的数据仓库中抽取、筛选和汇总的部分…...
从攻击者角度来看Go1.24的路径遍历攻击防御
目录 一、具体攻击示例 程序 攻击步骤: 二、为什么攻击者能成功? 分析 类比理解 总结 三、TOCTOU 竞态条件漏洞 1、背景:符号链接遍历攻击 2. TOCTOU 竞态条件漏洞 3. 另一种变体:目录移动攻击 4. 问题的核心 四、防…...
[ARM][汇编] 01.基础概念
目录 1.全局标号 1.1.使用方法 1.1.1.声明全局标号 1.1.2.定义全局标号 1.1.3.引用全局标号 1.2.全局标号与局部标号的区别 1.3.注意事项 2.局部标号 2.1.使用方法 2.1.1.定义局部标号 2.1.2.跳转引用 2.2.局部标号与全局标号的对比 2.3.注意事项 3.符号定义伪指…...
杭州电商全平台代运营领军者——品融电商
杭州电商全平台代运营领军者——品融电商:以“效品合一”驱动品牌全域增长 在电商行业竞争日益白热化的当下,品牌如何突破流量焦虑、实现长效增长?作为中国领先的品牌化电商服务商,杭州品融电商(PINKROON)…...
02.Golang 切片(slice)源码分析(一、定义与基础操作实现)
Golang 切片(slice)源码分析(一、定义与基础操作实现) 注意当前go版本代码为1.23 一、定义 slice 的底层数据是数组,slice 是对数组的封装,它描述一个数组的片段。两者都可以通过下标来访问单个元素。 数…...
当生产了~/qt-arm/bin/qmake,可以单独编译其他-源码的某个模块,如下,编译/qtmultimedia
cd ~/qt-everywhere-src-5.15.2/qtmultimedia # 设置交叉编译器和 qmake 路径 export CC/usr/bin/aarch64-linux-gnu-gcc export CXX/usr/bin/aarch64-linux-gnu-g export QMAKE~/qt-arm/bin/qmake # 使用已安装的 qmake export QT_INSTALL_PREFIX~/qt-arm # 安装路径 # 配…...
WordPress 网站上的 jpg、png 和 WebP 图片插件
核心功能 1. 转换 AVIF 并压缩 AVIF 将您 WordPress 网站上的 jpg、png 和 WebP 图片转换为 AVIF 格式,并根据您设置的压缩级别压缩 AVIF 图片。如果原始图片已经是 WordPress 6.5 以上支持的 AVIF 格式,则原始 AVIF 图片将仅被压缩。 2. 转换 WebP 并…...
构造+简单树状
昨日的牛客周赛算是比较简单的,其中最后一道构造题目属实眼前一亮。 倒数第二个题目也是一个很好的模拟题目(考验对二叉树的理解和代码的细节) 给定每一层的节点个数,自己拟定一个父亲节点,构造一个满足条件的二叉树。…...
Flask支持哪些日志框架
目录 ✅ Flask 默认支持的日志框架 ✅ 默认推荐:logging(标准库) ✅ 进阶推荐:Loguru(更优雅的日志库) ✅ Flask 日志级别说明(与标准库一致) ✅ 生产环境建议 ✅ 总结推荐 在 Flask 中,默认的日志系统是基于 Python 标准库 logging 模块 构建的。 ✅ Flask 默认…...
健康养生指南:解锁活力生活的科学密码
健康是人生最珍贵的财富,在快节奏的现代生活中,掌握科学的养生方法至关重要。虽然不借助中医理念,我们依然可以从饮食、运动、睡眠等多个方面入手,打造健康生活方式。 合理的饮食是健康的基石。遵循均衡饮食原则,保证每…...
SAR图像压缩感知
SAR图像压缩感知 matlab代码 对应着汕大闫老师的那本压缩感知及其应用,有需要的可以看一下!! SAR图像压缩感知/baboon.bmp , 66616 SAR图像压缩感知/camera.bmp , 66616 SAR图像压缩感知/DWT.m , 1265 SAR图像压缩感知/Gauss.m , 373 SAR图像…...
定时器设计
定时器设计的必要性 服务器中的定时器设计具有多方面的必要性,主要体现在以下几个关键方面: 任务调度与管理 定时任务执行:服务器常常需要执行一些定时性的任务,如定时备份数据、定时清理缓存、定时更新系统日志等。通过定时器可…...
Spring Boot整合Kafka实战指南:从环境搭建到消息处理全解析
一、环境准备 安装 Kafka 下载 Kafka:从 Apache Kafka 官网下载对应版本的 Kafka。 解压并启动 Kafka: # 启动 Zookeeper(Kafka 依赖 Zookeeper) bin/zookeeper-server-start.sh config/zookeeper.properties# 启动 Kafka bin/ka…...
(done) 补充:xv6 的一个用户程序 init 是怎么启动的 ?它如何启动第一个 bash ?
先看 main.c 从函数名来看,比较相关的就 userinit() 和 scheduler() #include "types.h" #include "param.h" #include "memlayout.h" #include "riscv.h" #include "defs.h"volatile static int started 0;//…...
AI 搜索引擎 MindSearch
背景 RAG是一种利用文档减少大模型的幻觉,AI搜索也是 AI 搜索引擎 MindSearch 是一个开源的 AI 搜索引擎框架,具有与 Perplexity.ai Pro 相同的性能。您可以轻松部署它来构建您自己的搜索引擎,可以使用闭源 LLM(如 GPT、Claude…...
HTML简单语法标签(后续实操:云备份项目)
以下是一些 HTML 的简单语法标签及其功能介绍: 基本结构标签 <!DOCTYPE html>:声明文档类型为 HTML5<html>:HTML 文档的根标签<head>:包含文档元数据(如标题、字符编码等)<title>…...
CentOS 和 RHEL
CentOS 和 RHEL(Red Hat Enterprise Linux)关系非常紧密,简而言之: CentOS 最初是 RHEL 的免费、开源克隆版,几乎与 RHEL 二进制兼容。 CentOS 原是 RHEL 的“免费双胞胎”,但已被放弃,现在推荐…...
java----------->代理模式
目录 什么是代理模式? 为什么会有代理模式? 怎么写代理模式? 实现代理模式总共需要三步: 什么是代理模式? 代理模式:给目标对象提供一个代理对象,并且由代理对象控制目标对象的引用 代理就是…...
Wpf学习片段
IRegionManager 和IContainerExtension IRegionManager 是 Prism 框架中用于管理 UI 区域(Regions)的核心接口,它实现了模块化应用中视图(Views)的动态加载、导航和生命周期管理。 IContainerExtension 是依赖注入&…...
智能手表测试用例文档
智能手表测试用例文档 产品名称:智能手表 A1 版本号:FW v1.0.0 测试负责人:[填写] 编写时间:2025-xx-xx 文档状态:初次版本 📁 测试用例结构说明 字段描述用例编号测试用例唯一编号,如 TC-FUN…...
密码学--希尔密码
一、实验目的 1、通过实现简单的古典密码算法,理解密码学的相关概念 2、理解明文、密文、加密密钥、解密密钥、加密算法、解密算法、流密码与分组密码等。 二、实验内容 1、题目内容描述 ①定义分组字符长度 ②随机生成加密密钥,并验证密钥的可行性 …...
配置Hadoop集群-集群配置
以下是 Hadoop 集群的核心配置步骤,基于之前的免密登录和文件同步基础,完成 Hadoop 分布式环境的搭建: 1. 集群规划 假设集群包含 3 个节点: master:NameNode、ResourceManagerslave1:DataNode、NodeMana…...
第三方软件测评中心分享:软件功能测试类型和测试工具
在数字化时代,软件测试已成为确保产品质量的重要环节。功能测试作为软件测试中的核心部分,关注于软件产品是否按预期功能正常运作。 软件功能测试可以按不同的方式进行分类,主要包括以下几种类型: 1.正功能测试:验…...
Profibus DP主站与Modbus RTU/TCP网关与海仕达变频器轻松实现数据交互
Profibus DP主站与Modbus RTU/TCP网关与海仕达变频器轻松实现数据交互 Profibus DP主站转Modbus RTU/TCP(XD-MDPBm20)网关在Profibus总线侧实现主站功能,在Modbus串口侧实现从站功能。可将ProfibusDP协议的设备(如:海…...
多视角系统,视角之间的切换,输入操作。无人机Pawn视角的实现
一.创建自己的PlayerController。它相当于是灵魂,穿梭在不同Pawn之间。也即是切换视角。不同输入的响应也写在这里。这样即使,都有鼠标操作,也能区分。避免了代码的重复耦合。也可以叫做视角系统。 class LZJGAMEMODE_API ALZJPlayerControl…...
[学习]RTKLib详解:ionex.c、options.c与preceph.c
RTKLib详解:ionex.c、options.c与preceph.c 本文是 RTKLlib详解 系列文章的一篇,目前该系列文章还在持续总结写作中,以发表的如下,有兴趣的可以翻阅。 [学习] RTKlib详解:功能、工具与源码结构解析 [学习]RTKLib详解&…...
【Linux笔记】——进程信号的保存
🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:Linux 🌹往期回顾🌹:【Linux笔记】——进程信号的产生 🔖流水不争,争的是滔滔不 一、信号的相关概念二、信…...
教育机构教务管理系统哪个好?
在当今教育培训行业快速发展的背景下,一个高效、专业的教务管理系统已成为教育机构提升运营效率、优化教学质量的关键工具。本文将深入分析爱耕云教务管理系统的核心优势,通过具体功能解析和代码示例展示其技术实现方式,并对比市场上其他主流…...
ZYNQ笔记(二十):Clocking Wizard 动态配置
版本:Vivado2020.2(Vitis) 任务:ZYNQ PS端 通过 AXI4Lite 接口配置 Clocking Wizard IP核输出时钟频率 目录 一、介绍 二、寄存器定义 三、配置 四、PS端代码 一、介绍 Xilinx 的 Clock Wizard IP核 用于在 FPGA 中生成和管理…...
电商平台一站式网络安全架构设计指南
摘要:据 Gartner 统计,采用一体化安全方案的电商企业数据泄露成本降低 67%。本文从攻击链分析到防御体系构建,详解如何实现网络层、应用层、数据层的协同防护。 一、电商安全威胁全景图(2024 攻击态势) 1.1 攻击者完…...
烟花爆竹储存需要注意哪些问题
烟花爆竹储存需要注意哪些问题 烟花爆竹作为易燃易爆物品,其储存安全至关重要。不当的储存方式不仅可能导致产品失效,更可能引发火灾、爆炸等严重事故。以下是烟花爆竹储存需要注意的几个关键问题: 一、储存场所选择 必须选择专用仓库储存…...
C++11详解
文章目录 前言一、列表初始化1.1 {} 初始化1.2 initializer_list 类型 三、声明3.1 auto3.2 decltype 四、右值引用和移动语义4.1 左值引用和右值引用4.2 移动语义 五、可变参数模板六、lambda表达式各部分详细解释示例代码代码解释 七、包装器八、bind注意事项 前言 C11在系统…...
VLM-RL:用于安全自动驾驶的统一视觉语言模型和强化学习框架——论文阅读
《VLM-RL: A Unified Vision Language Models and Reinforcement Learning Framework for Safe Autonomous Driving》2024年12月发表,来自Wisconsin Madison分校和Purdue大学的论文。 近年来,基于强化学习(RL)的学习驾驶策略的方法…...
新手安装java所有工具(jdk、idea,Maven,数据库)
新手安装JAVA工具 介绍JDK11IDEA 2025.1Maven数据库(Navicat Premium Lite) 介绍 涉及安装JAVA所需的各种工具 JDK(以JDK11为例)IDEA(以2025.1为例)Maven(以3.8.8为例)数据库&…...
hive在配置文件中添加了hive.metastore.uris之后进入hive输入命令报错
在hive-site.xml文件中加入配置hive.metastore.uris启动hive后报错 <property><name>hive.metastore.uris</name><value>thrift://node154:9083</value></property> 加完属性就需要手动启动metastore服务,因为不使用 Zookeepe…...
Hive原理
Hive 是构建在 Hadoop 上的数据仓库工具,其核心原理是通过类 SQL 语言(HiveQL)将结构化数据查询转换为分布式计算任务(如 MapReduce、Tez、Spark),并利用 HDFS 存储数据。以下是 Hive 的核心原理和架构: 1. 核心设计思想 数据仓库抽象:将 HDFS 上的文件抽象为…...
cursor 出现 unauthorized request
文档出自:https://www.kdocs.cn/l/csE3iuSauHoS...
uniapp|商品列表加入购物车实现抛物线动画效果、上下左右抛入、多端兼容(H5、APP、微信小程序)
以uniapp框架为基础,详细解析商品列表加入购物车抛物线动画的实现方案。通过动态获取商品点击位置与购物车坐标,结合CSS过渡动画模拟抛物线轨迹,实现从商品图到购物车图标的动态效果。 目录 核心实现原理坐标动态计算抛物线轨迹模拟动画元素控制代码实现详解模板层设计脚本…...