10种超强图像特征提取算法Python代码实现

声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类算法的家人,可关注我的VX公众号:python算法小当家,不定期会有很多免费代码分享~

图像特征提取是计算机视觉和图像处理的关键步骤,因为计算机不认识图像,只理解数字。通过特征提取,计算机便可以理解图像含义,实现真正意义上的“视觉智能”。

**图像特征提取的目的是从中提取有用信息,以便后续的分析和应用。**通过图像特征提取,可以实现数据降维、提高模型性能、简化计算、适用不同的应用场景等需求。

本期小当家带来12种超强的图像特征提取算法,不管是实际应用还是作为论文创新都是非常适用的!!!

代码获取请见文末

10种图像识别算法介绍

算法功能用途
BIC用于图像的边界和内部区域分类,通过对图像进行像素分类来提取特征。常用于图像分类和图像检索任务。
FOM评估图像分割算法性能的指标,通过比较分割结果和理想分割之间的差异来计算。图像分割质量评估。
Gabor_total扩展的Gabor特征提取方法,可能包含不同尺度和方向的Gabor滤波器组合。更全面的纹理分析和目标检测。
Gray灰度共生矩阵(GLCM)特征提取,通过分析图像灰度级的空间关系来提取纹理特征。纹理分类、图像检索。
Haralick基于Haralick特征(从GLCM中提取),包括对比度、相关性、能量和同质性等。纹理分析、医学图像处理。
HuHu矩特征,通过计算图像的七个不变矩来提取形状特征。形状匹配、目标识别。
LBP局部二值模式,用于描述图像局部纹理特征,通过比较每个像素与其邻域像素的灰度值来计算。纹理分类、人脸识别。
Tamura基于Tamura纹理特征,包括粗糙度、对比度和方向性等。纹理分析、图像分类。
TAS纹理分析和合成方法,可能包括多种纹理特征提取和生成技术。纹理分类、图像合成。
Zernike基于Zernike矩的特征提取方法,描述图像的形状特征,通过计算一组正交多项式来获得。图像匹配、目标识别、形状分析。

下面以BIC (Border/Interior Classification)为例,进行实验介绍。

实验介绍

BIC (Border/Interior Classification) 是一种图像特征提取方法,用于区分图像中的边界区域和内部区域。该方法通过对图像进行像素分类,提取出边界和内部区域的特征,从而为图像分类和检索任务提供有用的信息。

图像数据

使用一个包含脑部CT扫描图像的数据集,这些图像被组织在不同的文件夹中,代表不同的类别(如有无肿瘤的分类)。通过应用BIC特征提取方法,我从这些图像中提取了边界和内部区域的特征,并将这些特征保存到一个CSV文件中。这些特征数据将用于训练机器学习模型,以实现对脑部CT图像的分类和分析,从而提高疾病诊断的准确性和效率。

代码展示

以下是每个BIC算法模块的详细介绍:

  • 图像特征提取
def multiple_img_features(img):
    factor = 64
    HI, HE = [0] * factor, [0] * factor
    N,M = img.size
    for x in range(N):
        for y in range(M):
            ind = int((img.getpixel((x, y)) / 255) * (factor - 1))
            if (x == 0 or y == 0 or x + 1 == N or y + 1 == M):
                HE[ind] += 1
            else:
                if (img.getpixel((x, y)) == img.getpixel((x, y - 1)) and
                        img.getpixel((x, y)) == img.getpixel((x, y + 1)) and
                        img.getpixel((x, y)) == img.getpixel((x - 1, y)) and
                        img.getpixel((x, y)) == img.getpixel((x + 1, y))):
                    HI[ind] += 1
                else:
                    HE[ind] += 1
    return HI + HE

通过遍历图像的每个像素,根据像素的边界和内部性质来构建直方图。最后返回两种类型的直方图的合并,分别表示边界(HE)和内部(HI)像素的特征。

  • 构建特征向量
def get_image_feature_vector(image, positive):
    BIC_results = multiple_img_features(image)

    if positive == 0:
        BIC_results = np.append(BIC_results, 0)
        feature_set = BIC_results
    if positive == 1:
        BIC_results = np.append(BIC_results, 1)
        feature_set = BIC_results

    return feature_set

调用multiple_img_features函数来获取图像的特征,然后根据图像的类别(正面或负面)添加相应的标签。最后输出包含图像特征及其类别标签的向量。

  • 批量处理图像特征向量
def get_all_image_feature_vectors(images, positive):
    feature_sets = []

    for image in images:
        feature_set = get_image_feature_vector(image, positive)
        feature_sets.append(feature_set)

    return feature_sets

遍历图像列表,为每个图像调用get_image_feature_vector。最后输出返回包含所有图像的特征向量列表。

  • 生成CSV文件
def create_csv_output(filename, zerodir, onedir):
    # Load images
    zero_images = load_images_from_folder(zerodir)
    one_images = load_images_from_folder(onedir)

    # Get feature vectors of images
    zero_feature_vectors = get_all_image_feature_vectors(zero_images, 0)
    one_feature_vectors = get_all_image_feature_vectors(one_images, 1)

    # Input feature vectors into a CSV file
    with open(filename, "w", encoding="UTF-8") as f:
        writer = csv.writer(f)
        writer.writerows(zero_feature_vectors)
        writer.writerows(one_feature_vectors)

分别从两个类别的目录加载图像,提取特征向量,然后将所有特征向量写入CSV文件。最后生成一个包含所有图像特征向量的CSV文件。

代码获取

关注VX公众号 :Python算法小当家 ;后台回复关键词:图像特征提取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/752929.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

零基础STM32单片机编程入门(四)ADC详解及实战含源码视频

文章目录 一.概要二.STM32F103C8T6单片机ADC外设特点三.STM32单片机ADC内部结构图1.ADC相关引脚说明2.ADC通道分类3.触发源4.转换周期5.电压转换计算6.更精确电压转换计算 四.规则通道ADC采集信号流向1.单次转换模式2.连续转换模式 五.CubeMX配置一个ADC采集例程六.CubeMX工程源…

Nginx反向代理实现Vue跨域注意事项

1、通过搜索引擎访问Nginx官网——免费使用——NGINX开源版(免费下载)或者通过以下链接直接访问Nginx下载页面下载对应的版本(下载页面)。以下以1.24.0为例 2、修改nginx的配置文件,在conf文件夹下,文件名为nginx.conf;以下是我修改完的配置…

【Python数据分析与可视化】:使用【Matplotlib】实现销售数据的全面分析 ——【Matplotlib】数模学习

目录 安装Matplotlib 1.打开PyCharm: 2.打开终端: 3.安装Matplotlib: 4.确认安装: 导入Matplotlib 创建简单的折线图 代码解析: 创建子图 代码解析: 创建柱状图 代码解析: 创建散点…

总结一下Linux、Windows、Ubuntu、Debian、CentOS等到底是啥?及它们的区别是什么

小朋友你总是有很多问好 你是否跟我一样,不是计算机科班出身,很多东西都是拿着在用,并不知道为什么,或者对于它们的概念也是稀里糊涂的,比如今天说的这个。先简单描述下,我先前的疑问: Linux是…

《昇思25天学习打卡营第9天 | 昇思MindSpore使用静态图加速》

第九天 本节了解到AI编译框架分为两种运行模式,分别是动态图模式以及静态图模式。MindSpore默认情况下是以动态图模式运行,但也支持手工切换为静态图模式。 1.动态图模式 动态图的特点是计算图的构建和计算同时发生(Define by run&#xff09…

Studying-代码随想录训练营day23| 39.组合总和、40.组合总和II、131.分割回文串

第23天,回溯part02,回溯两个题型组合,切割(ง •_•)ง💪 目录 39.组合总和 40.组合总和II 131.分割回文串 总结 39.组合总和 文档讲解:代码随想录组合总和 视频讲解:手撕组合总和 题目:…

一文汇总VSCode多光标用法

光标的创建 按住alt,鼠标左键单击,在单击位置生成光标/删除光标 按住ctrlalt,单击↑/↓,在每行同一个位置(若某一行较短,则在行尾)生成光标,这个不会删除光标,只会在光标…

点击获取2024SIAL西雅国际食品展上海展后报告

随着2024年SIAL 西雅展(上海)的圆满落幕,我们不仅见证了一场食品与饮料行业的国际盛会,更是感受到了上海这座城市独有的魅力与活力。在这里,我们回顾了上海展的辉煌成就,同时,我们也满怀期待地展…

基于横纵向的混合联邦学习原理分析

近期陆续接触到关于混合联邦学习的概念,但基于横纵向的混合联邦实际的应用案例却几乎没有看到,普遍是一些实验性的课题,因此这一领域知识没有被很好普及。本篇文章的目的,主要是分析讨论关于横纵向混合联邦学习的业务场景、应用架…

Linux Redis 服务设置开机自启动

文章目录 前言一、准备工作二、操作步骤2.1 修改redis.conf文件2.2 创建启动脚本2.3 设置redis 脚本权限2.4 设置开机启动2.5 验证 总结 前言 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i、 提示:以下是本篇文章正文内容&#x…

【Electron】Electron入门实现

Electron 学习笔记 Electron 是一个开源框架,允许开发者使用网页技术(HTML、CSS 和 JavaScript)来构建跨平台的桌面应用程序。它由 GitHub 开发并维护,最初是为了支持开发 Atom 编辑器。Electron 结合了 Chromium(用于…

海外仓一件代发业务优化指南:成本构成分析及优化策略

一件代发是大部分海外仓的核心业务,不过随着海外仓市场竞争的加剧,仓库经营成本上涨成了普遍现象。 今天我们会结合众多海外仓的实际情况,综合分析海外仓一件代发业务成本的构成,成本激增的原因以及对应的优化策略,希…

仓库选址问题【数学规划的应用(含代码)】阿里达院MindOpt

本文主要讲述使用MindOpt工具优化仓库选址的数学规划问题。 视频讲解👈👈👈👈👈👈👈👈👈 一、案例场景 仓库选址问题在现代物流和供应链管理中具有重要的应用。因为仓库…

findfont: Generic family ‘sans-serif‘ not found because none of the ...: SimHei

警告过程 python代码在使用matplotlib画图时,如果在title,xlabel,ylabel中出现了中文,则会出现字体警告,中文字符显示为方框 例如代码: # matplotlib画图# 设置色带plt.imshow(data, cmapplt.cm.YlGn) #…

【AI大模型】应用开发基础,学到就是赚到!

前言 1、了解大模型能做什么 2、整体了解大模型应用开发技术栈 3、浅尝OpenAI API的调用 AI全栈工程师:懂AI、懂编程、懂业务的超级个体,会是AGI(Artificial General Intelligence 通用人工智能)时代最重要的人。 知识体系 AI学习…

【Mybatis 与 Spring】事务相关汇总

之前分享的几篇文章可以一起看,形成一个体系 【Mybatis】一级缓存与二级缓存源码分析与自定义二级缓存 【Spring】Spring事务相关源码分析 【Mybatis】Mybatis数据源与事务源码分析 Spring与Mybaitis融合 SpringManagedTransaction: org.mybatis.spri…

Ubuntu/Linux调试安装南京来可CAN卡

准备好USB rules文件和can driver文件备用! 必做:放置USB rules文件到对应位置处理权限问题 而后:安装内核driver并编译。需求众多依赖编译环境,视情况安装填补。如GCC,G,make等等 进入对应64bit文件夹中,添加权限,执…

爬虫:爬取知乎热榜一级评论及回答2024不包含翻页

一、先上结果(注:本文仅为兴趣爱好探究,请勿进行商业利用或非法研究,负责后果自负,与作者无关) 1、爬标题及其具体内容 2、抓标题下的对应回答 3、爬取对应一级评论 二、上流程 1、获取cookies(相信哥哥姐姐…

Qt Creator创建一个用户登录界面

目录 1 界面设计 2 代码 2.1 登录界面 2.2 注册界面 2.3 登陆后的界面 3 完整资源 这里主要记录了如何使用Qt Creator创建一个用户登录界面,能够实现用户的注册和登录功能,注册的用户信息存储在了一个文件之中,在登录时可以比对登录信息…

大厂程序员上班猝死成常态?

大家好,我是瑶琴呀,拥有一头黑长直秀发的女程序员。 近日,连续看到大厂程序员猝死、低血糖晕倒的新闻,同为程序员感到很难受。互联网加班成常态这是既定事实,尤其在这个内卷严重、经济不景气的环境中,加班…