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

news2024/11/22 19:08:58

声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类算法的家人,可关注我的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算法小当家 ;后台回复关键词:图像特征提取

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中国航天:星舰与猛禽发动机数据分析

文章目录 MainReference Main 马斯克坚信,随着星舰的全面投入运营,SpaceX将能够承担地球上主轨道超过99%的载荷质量。这款第三代星舰的起飞推力将跃升至10000吨以上,其有效载荷质量亦将高达200吨以上。 不仅如此,每次发射的成本控…

文华财经盘立方同花顺期货通均线多空变色指标公式源码

文华财经盘立方同花顺期货通均线多空变色指标公式源码: VAR1:(HHV(HIGH,21)-C)/(HHV(HIGH,21)-LLV(LOW,21))*100-10; VAR2:(C-LLV(LOW,21))/(HHV(HIGH,21)-LLV(LOW,21))*100; VAR3:SMA(VAR2,13,8); 多方: SMA(VAR3,13,8),LINETHICK2; A:MA(-100*(HHV(HIGH,34)-…

又是一篇关于GD32堆栈的梳理+FreeRTOS的空间

GD32F103CB:SRAM 20K(0x5000) 这篇文章主要想讲清楚几个事情: 1、启动文件Stack_Size、Heap_Size的大小设置有啥影响; 2、FreeRTOS的内存:FreeRTOSConfig.h文件configTOTAL_HEAP_SIZE; 问题2…

Linux[高级管理]——Squid代理服务器的部署和应用(传统模式详解)

🏡作者主页:点击! 👨‍💻Linux高级管理专栏:点击! ⏰️创作时间:2024年6月24日11点11分 🀄️文章质量:95分 目录 ————前言———— Squid功能 Squ…

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

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

AI 时代程序员生存指南 —— 一名普通程序员的ChatGPT 一周年回顾

ChatGPT 发布一周年了,切实改变了我的工作方式和职业路径,趁着周末写下这篇文章,我希望以一名普通程序员的视角,带大家回顾一下过去一年大模型领域的发展情况,以及个人的所思所想。文章会分为四个部分,从初…

AWS云计算平台:全方位服务与实践案例

摘要 在数字化浪潮的推动下,云计算已成为企业转型的强大引擎。AWS作为云计算的先锋,不仅提供了一系列强大的基础设施服务,更是在人工智能领域不断探索和创新。本文将带您领略AWS的全方位服务,并透过实际案例,感受其在…

文心一言 VS 讯飞星火 VS chatgpt (291)-- 算法导论21.3 4题

四、假设想要增加一个 PRINT-SET(x) 操作,它是对于给定的结点 x 打印出 x 所在集合的所有成员,顺序可以任意。如何对一棵不相交集合森林的每个结点仅增加一个属性,使得 PRINT-SET(x) 所花费的时间同 x 所在集合元素的个数呈线性关系&#xff…

新手必备!短视频剪辑常用的18个技巧——剪映篇

导入素材:这里我们可以选择自己拍摄好的素材(图片、视频或录制好的音频),按照顺序导入剪辑区剪辑。这一步是剪辑的基础,确定剪辑的大体思路与成片框架!别忽略了,剪映官方素材库提供的素材&#…

Mysql序列

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

SSL证书不安全问题处理方案

正常使用情况: verifyFalse:代表不使用SSL证书校验、 以上方式在coze中使用失败 response requests.get(url, verifyFalse).text替换方案:使用httpx import httpx with httpx.Client(verifyFalse) as client:response client.get(url)参考…

气膜移动宴会厅:现代化宴会解决方案—轻空间

随着社会经济的发展和人们生活水平的提高,各类宴会、庆典和活动的需求日益增加。然而,传统的宴会厅受限于固定的地点和昂贵的建设成本,无法灵活应对不同规模和地点的需求。在此背景下,气膜移动宴会厅作为一种创新的解决方案&#…

定制课程引领,师资培训助力——树莓集团政企合作育人新篇章

树莓集团通过定制课程和师资培训两种方式,为高校提供了更加全面、系统、专业的教育资源。这些资源不仅提高了学生的专业素养和实践能力,也促进了教师的专业发展。 一、定制课程 1、行业需求导向:树莓集团根据数字产业及相关行业的发展趋势和…

Ubuntu系统中创建桌面快捷方式和添加Favorites

一. Ubuntu系统中创建软件的桌面快捷方式 Ubuntu桌面创建某个软件的桌面快捷方式,一个直观的方法。 方法1. 在图像界面下,一层一层地打开文件目录软件快捷方式/usr/share/applications/ 方法2. 或者在终端运行$ nautilus /usr/share/applications/ …

点心甜品商城小程序店铺是怎样开展的

很多人非常喜欢甜品点心,包括在宴会、送礼、家庭聚会等场景也有应用度,该赛道也存在头部品牌,其余则是以地区为主的线下店,线上则主要以外卖及电商快递等方式经营。 除了线下店和其它平台进驻外,商家还需要多渠道获客…

华为仓颉编程语言:未来的期待与挑战

在刚刚过去的华为开发者大会(HDC)上,除了发布鸿蒙新一代操作系统外,备受期待的仓颉编程语言也正式亮相。对于这一新语言的发布,业界和程序员社区给予了高度关注。本文将深入探讨仓颉编程语言的特点、应用前景及其面临的…

Linux系统上部署Whisper。

Whisper是一个开源的自动语音识别(ASR)模型,最初由OpenAI发布。要在本地Linux系统上部署Whisper,你可以按照以下步骤进行: 1. 创建虚拟环境 为了避免依赖冲突,建议在虚拟环境中进行部署。创建并激活一个新…

16位诺奖经济学奖得主联名信:特朗普就是“通胀炸弹”

经济学家警告特朗普“不负责任的财政预算将重燃通胀”,尤其是其对外国商品征收普遍关税和驱逐移民的政策,可能会对美国乃至全球经济产生灾难性长期影响。但华尔街分析师称,两党如今都是贸易保护主义者,通胀注定会回升,…

STM32 HAL库 外部中断 实现按键控制LED亮灭

目录 1、为什么使用GPIO外部中断控制LED亮灭? 2、NVIC嵌套向量中断控制器 3、EXTI外部中断 4、项目的硬件排线 5、STM32CUBE_MX配置 6、HAL库代码 7、实际效果 1、为什么使用GPIO外部中断控制LED亮灭? 实现LED亮灭控制有很多方式,其中…

【机器学习】在【PyCharm中的学习】:从【基础到进阶的全面指南】

目录 第一步:基础准备 1.1 Python基础 1.1.1 学习Python的基本语法 变量和数据类型: 1.1.2 控制流 条件语句: 循环语句: 1.1.3 函数和模块 函数: 模块: 1.2 安装PyCharm 1.2.1 下载并安装 第二…