当前位置: 首页 > article >正文

别再用直方图了!用Python+OpenCV手把手教你提取图像纹理特征(GLCM实战)

别再用直方图了用PythonOpenCV手把手教你提取图像纹理特征GLCM实战当我们需要区分砂纸和丝绸的微观图像时灰度直方图会给出完全相同的统计结果——这正是传统分析方法在纹理识别中的致命缺陷。本文将带您用OpenCV和scikit-image实现真正的纹理特征提取通过灰度共生矩阵GLCM捕捉像素间的空间关系让算法真正感知到图像的粗糙度与规律性。1. 环境配置与基础概念在开始编码前我们需要明确两个核心认知首先GLCM分析的是像素对的联合概率分布而非单个像素的统计特性其次合理的参数配置直接影响特征的有效性。以下是推荐的工具链组合# 基础环境配置 import cv2 import numpy as np from skimage.feature import greycomatrix, greycoprops from matplotlib import pyplot as plt关键参数解析表参数典型值作用说明distances[1]像素对间距单位像素angles[0, np.pi/4, np.pi/2]分析方向0°、45°、90°levels256输入图像的灰度级数symmetricTrue是否考虑方向对称性normedTrue是否归一化为概率分布注意实际应用中通常会将灰度级压缩到16或32级原始256级会导致矩阵过于稀疏且计算量激增。2. GLCM特征提取实战步骤2.1 图像预处理优化直接处理原始图像往往效果不佳建议采用以下预处理流程def preprocess_image(img_path): # 读取图像并转为灰度 img cv2.imread(img_path, cv2.IMREAD_GRAYSCALE) # 灰度级压缩到16级关键步骤 max_val img.max() quantized np.digitize(img, binsnp.linspace(0, max_val, 16)) # 对比度增强 clahe cv2.createCLAHE(clipLimit2.0, tileGridSize(8,8)) enhanced clahe.apply(quantized) return enhanced常见预处理误区忽略灰度压缩导致特征矩阵稀疏化过度平滑处理损失纹理细节未考虑光照不均匀的影响2.2 多方向特征融合单一方向的GLCM无法全面描述纹理特征我们采用四方向融合策略def extract_glcm_features(image): # 计算四个方向的GLCM glcm greycomatrix(image, distances[1], angles[0, np.pi/4, np.pi/2, 3*np.pi/4], levels16, symmetricTrue, normedTrue) # 提取Haralick特征 contrast greycoprops(glcm, contrast).mean() dissimilarity greycoprops(glcm, dissimilarity).mean() homogeneity greycoprops(glcm, homogeneity).mean() energy greycoprops(glcm, energy).mean() correlation greycoprops(glcm, correlation).mean() return [contrast, dissimilarity, homogeneity, energy, correlation]3. 可视化分析与效果对比3.1 特征可视化技巧通过热力图直观展示不同纹理的特征差异def visualize_features(texture1, texture2): fig, (ax1, ax2) plt.subplots(1, 2, figsize(12,4)) # 显示原始纹理 ax1.imshow(texture1, cmapgray) ax1.set_title(规则纹理) ax2.imshow(texture2, cmapgray) ax2.set_title(随机纹理) # 计算并打印特征值 features1 extract_glcm_features(texture1) features2 extract_glcm_features(texture2) print(f规则纹理特征{features1}) print(f随机纹理特征{features2})典型纹理特征对比纹理类型对比度能量值同质性棋盘格高高低砂纸表面极高低极低平滑皮肤低中高云层图像中低中3.2 与传统直方图的性能对比我们通过分类实验验证GLCM的优越性from sklearn.svm import SVC from sklearn.model_selection import train_test_split # 提取两种特征进行对比 hist_features [cv2.calcHist([img], [0], None, [256], [0,256]).flatten() for img in images] glcm_features [extract_glcm_features(img) for img in images] # 训练分类器 X_train, X_test, y_train, y_test train_test_split(glcm_features, labels) clf SVC().fit(X_train, y_train) accuracy clf.score(X_test, y_test)实验数据显示在相同的织物纹理数据集上直方图特征的分类准确率62.3%GLCM特征的分类准确率89.7%4. 工业级应用优化策略4.1 实时处理加速方案对于生产线上的实时检测可采用以下优化手段# 使用Cython加速关键计算 %load_ext Cython %%cython import numpy as np cimport numpy as np def fast_glcm(np.ndarray[np.uint8_t, ndim2] image, int distance): # 实现快速GLCM计算的Cython版本 cdef int height image.shape[0] cdef int width image.shape[1] cdef np.ndarray[np.int32_t, ndim2] glcm np.zeros((16,16), dtypenp.int32) # 核心计算逻辑省略 return glcm4.2 多尺度纹理分析结合不同距离参数捕捉多尺度特征def multi_scale_glcm(image): features [] for d in [1, 3, 5]: # 不同观察尺度 glcm greycomatrix(image, distances[d], angles[0], levels16) props [contrast, dissimilarity, homogeneity] features.extend([greycoprops(glcm, p)[0,0] for p in props]) return features在实际的金属表面缺陷检测中多尺度分析使识别率从82%提升到94%特别是对微小裂纹的检出效果显著改善。

相关文章:

别再用直方图了!用Python+OpenCV手把手教你提取图像纹理特征(GLCM实战)

别再用直方图了!用PythonOpenCV手把手教你提取图像纹理特征(GLCM实战) 当我们需要区分砂纸和丝绸的微观图像时,灰度直方图会给出完全相同的统计结果——这正是传统分析方法在纹理识别中的致命缺陷。本文将带您用OpenCV和scikit-im…...

WindowsCleaner:让C盘重获新生的系统清理解决方案

WindowsCleaner:让C盘重获新生的系统清理解决方案 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 🔍 问题场景:当你的电脑遇见…...

Qwen3智能字幕对齐系统在CSDN技术视频生态中的应用实践

Qwen3智能字幕对齐系统在CSDN技术视频生态中的应用实践 1. 引言 做技术视频的博主和讲师们,应该都遇到过这样的烦恼吧。辛辛苦苦录完一个小时的编程教程,光是剪辑和加字幕就得再花上大半天。尤其是字幕,要么得自己一句一句听写,…...

150万规模!深势开源科学图像界ImageNet,AI终于能看懂论文图表了

150 万图文对、500 万子图,全面覆盖 300 科学子学科。深势开源 OmniScience,让 AI 真正读懂科研文献图表。跨越“盲区”:让AI真正读懂科学影像在科学研究日益数字化的今天,大模型已经能够高效处理书籍与文献中的文本信息。不过&am…...

软件工程师如何转型AI工程师 第三章 技术路线的选择——不要从头学起

第三章 技术路线的选择——不要从头学起 在转型的技术路径上,我见过最多的弯路长这个样子:某个工程师下定决心要搞AI,于是买了一本《深度学习》(花书),从第一章线性代数开始硬啃,啃到反向传播…...

HunyuanVideo-Foley实战指南:FFmpeg后处理添加混响/均衡/压缩提升商用质量

HunyuanVideo-Foley实战指南:FFmpeg后处理添加混响/均衡/压缩提升商用质量 1. 引言:为什么需要音效后处理 在视频制作领域,专业级音效是提升作品质量的关键因素。HunyuanVideo-Foley生成的原始音效虽然已经具备良好的基础,但通过…...

解放你的音乐库:NCMconverter音频格式转换全攻略

解放你的音乐库:NCMconverter音频格式转换全攻略 【免费下载链接】NCMconverter NCMconverter将ncm文件转换为mp3或者flac文件 项目地址: https://gitcode.com/gh_mirrors/nc/NCMconverter 当你下载了喜爱的音乐却发现是无法播放的NCM格式时,当你…...

5分钟搞懂幂等矩阵:从定义到Python实现

5分钟搞懂幂等矩阵:从定义到Python实现 第一次听到"幂等矩阵"这个词时,我正坐在线性代数课的最后一排昏昏欲睡。教授在黑板上写下"AA"这个看似简单的等式时,我完全没意识到这个概念会在后来的机器学习项目中反复出现。今…...

NaViL-9B图文问答教程:从单图理解到多图对比分析的进阶用法

NaViL-9B图文问答教程:从单图理解到多图对比分析的进阶用法 1. 认识NaViL-9B多模态模型 NaViL-9B是一款原生支持多模态交互的大语言模型,能够同时处理文本和图像输入。与传统的纯文本模型不同,它可以直接"看懂"图片内容&#xff…...

OpenClaw长期运行秘诀:GLM-4.7-Flash任务守护与自动恢复机制

OpenClaw长期运行秘诀:GLM-4.7-Flash任务守护与自动恢复机制 1. 为什么需要长期运行方案? 去年冬天的一个深夜,我被手机警报惊醒——OpenClaw在连续处理300多份文档后突然崩溃,导致凌晨的自动化报表任务全部中断。这次事故让我意…...

实时手机检测-通用模型教程:如何用Gradio搭建检测界面

实时手机检测-通用模型教程:如何用Gradio搭建检测界面 1. 引言与模型概述 1.1 手机检测的应用价值 在现代计算机视觉应用中,手机检测是一个具有广泛实用场景的技术。从智能监控系统中的打电话行为识别,到公共场所的手机使用管理&#xff0…...

虚拟控制器与设备模拟从入门到精通:ViGEmBus驱动技术指南

虚拟控制器与设备模拟从入门到精通:ViGEmBus驱动技术指南 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 在游戏开发与输入设备模拟领域&#xf…...

ViGEmBus虚拟控制器驱动架构深度解析与高级配置实战指南

ViGEmBus虚拟控制器驱动架构深度解析与高级配置实战指南 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus作为Windows内核模式虚拟控制器驱动&#x…...

告别右键菜单臃肿困境:ContextMenuManager如何实现40%效率提升

告别右键菜单臃肿困境:ContextMenuManager如何实现40%效率提升 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 当你右键点击文件时,是否遇…...

Python AI用例生成效率实战手册(企业级自动化工作流全拆解)

第一章:Python AI用例生成效率的核心价值与企业级定位在AI工程化落地加速的当下,Python凭借其丰富的生态(如LangChain、LlamaIndex、transformers、scikit-learn)和低门槛的可编程性,已成为企业构建AI用例生成流水线的…...

NaViL-9B开源镜像免配置教程:无需下载权重,5分钟跑通图文问答

NaViL-9B开源镜像免配置教程:无需下载权重,5分钟跑通图文问答 1. 快速了解NaViL-9B NaViL-9B是由专业研究机构开发的原生多模态大语言模型,它不仅能像普通AI那样进行文字对话,还能看懂图片内容。想象一下,你上传一张…...

别再只跑Demo了!手把手教你用vLLM部署微调后的Qwen2.5-3B-Instruct模型,实现高效批量推理

从微调到生产:Qwen2.5-3B-Instruct模型的高效推理部署实战 当开发者完成LoRA微调后,往往会面临一个现实问题:如何将训练好的模型真正用起来?原生Transformers推理在吞吐量和延迟上的表现,很难满足生产环境的需求。本文…...

快速体验语义搜索:用Qwen3-Embedding-4B搭建个人知识库

快速体验语义搜索:用Qwen3-Embedding-4B搭建个人知识库 1. 认识Qwen3-Embedding-4B:你的智能语义理解助手 想象一下,你有一个能理解各种语言、能记住海量文档内容、还能帮你快速找到相关信息的智能助手。这就是Qwen3-Embedding-4B能为你做的…...

PROJECT MOGFACE系统重装辅助工具:Win10镜像下载与自动化安装配置

PROJECT MOGFACE系统重装辅助工具:Win10镜像下载与自动化安装配置 每次重装系统,你是不是都觉得头大?找官方镜像怕下到带病毒的,制作启动盘步骤繁琐,安装过程还得守在电脑前点下一步,装完系统还得手动装驱…...

命令行玩转JUnit测试:Linux环境配置+批量执行技巧(JDK8/JUnit4.12)

命令行玩转JUnit测试:Linux环境配置批量执行技巧(JDK8/JUnit4.12) 在持续集成和DevOps实践中,服务器环境下的自动化测试执行能力直接影响交付效率。本文将深入讲解如何在Linux服务器上搭建无IDE的JUnit测试环境,解决依…...

别再只扫端口了:利用Google语法精准定位Edusrc等证书站脆弱资产(附实战案例)

别再只扫端口了:利用Google语法精准定位Edusrc等证书站脆弱资产(附实战案例) 在渗透测试的初期阶段,资产搜集的质量往往决定了整个项目的成败。许多安全工程师都曾陷入这样的困境:花费大量时间扫描端口和服务&#xff…...

告别虚拟机!在Windows 11上零配置搭建Masm汇编实验环境(保姆级图文教程)

在Windows 11上零配置搭建Masm汇编实验环境:从入门到实战 对于计算机专业的学生和开发者来说,汇编语言是理解计算机底层工作原理的重要工具。然而,传统的汇编环境搭建往往需要复杂的配置步骤或依赖虚拟机,这给初学者带来了不小的门…...

Flink CDC实战:如何解决Oracle LogMiner每小时60G日志下的性能瓶颈与延迟问题

Flink CDC实战:突破Oracle LogMiner高负载场景的性能优化全攻略 当Oracle数据库每小时产生60GB归档日志时,传统单线程LogMiner解析方案往往陷入性能泥潭。本文将揭示一套经过生产验证的并发LogMiner解析架构,通过智能SCN切分、动态线程池和Re…...

手把手教你用XTTS v2克隆自己的声音:从录音到生成的完整避坑指南

零基础玩转XTTS v2语音克隆:从录音到生成的保姆级实战手册 1. 语音克隆技术的前世今生 语音合成技术(TTS)的发展已经走过了数十年的历程。从早期的机械式发音到如今的神经网络语音合成,技术的进步让语音克隆变得越来越自然。XTTS …...

从单张图片到实时视频流:给RK3588上的YOLOv11推理Demo加个OpenCV‘外挂’

从单张图片到实时视频流:RK3588上YOLOv11与OpenCV的高效整合实战 当开发者首次在RK3588上成功运行YOLOv11的静态图片推理时,那种成就感往往伴随着新的渴望——如何让这个模型"活"起来?本文将带你突破单帧测试的局限,通过…...

ESP32蓝牙开发必看:如何快速通过SIG认证并兼容最新5.3规范

ESP32蓝牙开发实战:从SIG认证到5.3规范兼容的全流程指南 当你在咖啡厅用无线耳机听歌时,是否想过这些设备背后的技术标准如何确保全球互通?作为ESP32开发者,通过蓝牙技术联盟(SIG)认证不仅是法律要求&#…...

实战案例:用Fish Speech 1.5为视频添加多语言配音

实战案例:用Fish Speech 1.5为视频添加多语言配音 1. 引言:视频配音的新选择 在视频制作过程中,配音往往是耗时耗力的环节。传统配音需要专业录音棚、配音演员和后期处理,成本高且周期长。Fish Speech 1.5的出现为视频创作者提供…...

快速部署:在星图AI平台训练PETRV2-BEV模型,支持NuScenes数据集

快速部署:在星图AI平台训练PETRV2-BEV模型,支持NuScenes数据集 1. 环境准备与快速部署 1.1 激活Paddle3D环境 首先需要确保已经创建并激活了Paddle3D的conda环境: conda activate paddle3d_env如果尚未创建该环境,建议先安装M…...

零基础掌握Degrees of Lewdity本地化工具:开源项目中文适配方案全攻略

零基础掌握Degrees of Lewdity本地化工具:开源项目中文适配方案全攻略 【免费下载链接】Degrees-of-Lewdity-Chinese-Localization Degrees of Lewdity 游戏的授权中文社区本地化版本 项目地址: https://gitcode.com/gh_mirrors/de/Degrees-of-Lewdity-Chinese-Lo…...

终极指南:如何使用baidu-wangpan-parse工具免费突破百度网盘限速

终极指南:如何使用baidu-wangpan-parse工具免费突破百度网盘限速 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 百度网盘直链解析工具baidu-wangpan-parse是专为普…...