语义分割——为什么单通道8bit灰度图像能显示多种色块???

目录

  • 一、问题
  • 二、解答
    • 2.1 标签图的实际存储格式
    • 2.2 标签图的显示颜色
    • 2.3 颜色映射示例
  • 三、应用颜色映射
    • 3.1 OpenCV显示标签图
    • 3.2 Matplotlib显示标签图
  • 四、总结

一、问题

大家在做语义分割时不知道有没有这样的疑惑,使用打标签工具后,标签图是单通道8位图,8位图???不应该是灰度图么,为啥能显示那么多色块?

二、解答

标签图的显示颜色与它的实际存储格式是两个不同的概念。

2.1 标签图的实际存储格式

通常情况下,语义分割的标签图是8位单通道的灰度图,每个像素的值代表一个类别ID。例如,像素值0可能代表背景,1代表类1,2代表类2,依此类推。因为它是单通道的灰度图,所以本质上每个像素只能有256种不同的值(从0到255)。

2.2 标签图的显示颜色

即使标签图是8位单通道灰度图,显示工具可能会用不同的颜色来表示不同的类别,以便于人眼识别和分析。这是通过颜色映射(color mapping)实现的。颜色映射是一种将灰度值转换为颜色的方法。

2.3 颜色映射示例

假设有3个类别:

类别0(背景):黑色
类别1:红色
类别2:黄色
当标签图被显示时,显示工具可以应用一个预定义的颜色映射,将灰度值0、1、2分别映射到黑色、红色和黄色。

三、应用颜色映射

直观显示标签图是因为有些标记工具打完标签后,看上去依然是黑的,如下图,其实已经有各个类别的像素值区别了,为了直观观看,就需要应用颜色映射来观看。
在这里插入图片描述
使用Python和OpenCV或Matplotlib,可以应用颜色映射来显示标签图。

直观显示的标签图见下:

在这里插入图片描述

3.1 OpenCV显示标签图

代码见下:

import cv2
import numpy as np# 创建示例标签图
label_image = np.array([[0, 1, 2],[2, 1, 0],[1, 2, 0]
], dtype=np.uint8)# 创建颜色映射
color_map = np.array([[0, 0, 0],       # 类别0: 黑色[255, 0, 0],     # 类别1: 红色[255, 255, 0]    # 类别2: 黄色
], dtype=np.uint8)# 应用颜色映射
colored_label_image = color_map[label_image]# 显示标签图
cv2.imshow('Label Image', colored_label_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

3.2 Matplotlib显示标签图

代码见下:

import numpy as np
import matplotlib.pyplot as plt# 创建示例标签图
label_image = np.array([[0, 1, 2],[2, 1, 0],[1, 2, 0]
], dtype=np.uint8)# 创建颜色映射
color_map = {0: (0, 0, 0),       # 类别0: 黑色1: (1, 0, 0),       # 类别1: 红色2: (1, 1, 0)        # 类别2: 黄色
}# 应用颜色映射
colored_label_image = np.zeros((label_image.shape[0], label_image.shape[1], 3), dtype=np.float32)
for label_value, color in color_map.items():colored_label_image[label_image == label_value] = color# 显示标签图
plt.imshow(colored_label_image)
plt.show()

四、总结

8位单通道标签图在存储时是灰度图,但通过颜色映射可以将不同的灰度值显示为不同的颜色,这样有助于更直观地观察和分析标签图。显示工具(如图像查看器、数据可视化工具等)通常会自动应用预定义的颜色映射来显示这些类别,以增强可读性。

感谢您阅读到最后!😊总结不易,多多支持呀🌹 点赞👍收藏⭐评论✍️,您的三连是我持续更新的动力💖

关注公众号「视觉研坊」,获取干货教程、实战案例、技术解答、行业资讯!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Python+Django,开发的一个在线教育系统

一、项目简介 使用Python的web框架Django进行开发的一个在线教育系统! 二、所需要的环境与组件 Python3.6 Django1.11.7 Pymysql Mysql pure_pagination DjangoUeditor captcha xadmin crispy_forms 三、安装 1. 下载项目后进入项目目录cd Online-educ…

Bubbliiiing 的 Retinaface rknn python推理分析

Bubbliiiing 的 Retinaface rknn python推理分析 项目说明 使用的是Bubbliiiing的深度学习教程-Pytorch 搭建自己的Retinaface人脸检测平台的模型,下面是项目的Bubbliiiing视频讲解地址以及源码地址和博客地址; 作者的项目讲解视频:https:…

【网络安全科普】勒索病毒 防护指南

勒索病毒简介 勒索病毒是一种恶意软件,也称为勒索软件(Ransomware),其主要目的是在感染计算机后加密用户文件,并要求用户支付赎金以获取解密密钥。这种类型的恶意软件通常通过电子邮件附件、恶意链接、下载的软件或漏洞…

基于重要抽样的主动学习不平衡分类方法ALIS

这篇论文讨论了数据分布不平衡对分类器性能造成的影响,并提出了一种新的有效解决方案 - 主动学习框架ALIS。 1、数据分布不平衡会影响分类器的学习性能。现有的方法主要集中在过采样少数类或欠采样多数类,但往往只采用单一的采样技术,无法有效解决严重的类别不平衡问题。 2、论…

Fast-Retry 高性能百万级任务重试框架介绍及使用

一、Fast-Retry 在本专栏的前面文章中我们介绍了 Spring 家族的 重试框架,本篇文章再给大家介绍一个高性能百万级任务重试框架 Fast-Retry 。它是一个高性能任务重试框架,可以支持百万级别任务的并发重试处理。与 Spring-Retry 不同,Fast-Re…

【JavaEE进阶】——Spring事务和事务传播机制

目录 🚩事务 🎈为什么需要事务? 🎈事务的操作 🚩Spring 中事务的实现 🎈数据准备 🎈Spring 编程式事务(了解) 🎈Spring 声明式事务 Transactional 🍭Transactional 详解 &…

阵列信号处理学习笔记(二)--空域滤波基本原理

阵列信号 阵列信号处理学习笔记(一)–阵列信号处理定义 阵列信号处理学习笔记(二)–空域滤波基本原理 文章目录 阵列信号前言一、阵列信号模型1.1 信号的基本模型1.2 阵列的几何构型1.3 均匀直线阵的阵列信号基本模型 总结 前言…

服务攻防-框架安全(漏洞复现)

关闭靶场 sudo docker-compose down 运行此靶场 sudo docker-compose up -d 查看启动环境 sudo docker ps 运行dockers容器 docker exec -it 64052abd288b /bin/bash thinkphp框架 thinkphp 2 - rce漏洞复现 docker exec -it 731dbae0e0b5 /bin/bash 集成化工具扫描 可以命令…

初学 Linux 必知必会的 X 个知识点

文章目录 一、Linux 系统与 Windows 系统的差别二、Linux 命令行初识1. 终端界面2. 路径的含义3. 命令结构说明4. 常见的 Linux 命令4-1. 文件和目录操作4-2. 网络相关命令 5. 使用命令行时的小技巧5-1. 使用 TAB 键补全5-2. 巧用通配符 *5-3. 命令行历史功能 三、文件的详细信…

linux在ssh的时候询问,yes or no 如何关闭

解决: 在~/.ssh/config文件中添加如下配置项: Host *StrictHostKeyChecking no

深度洞见|探索与突破:大模型在中国市场的实践

1 大模型产业应用的发展趋势 // 人工智能产业进入高速发展期,创造多个技术、市场、监管的里程碑 自2022年ChatGPT问世后,生成式AI(大模型)进入高速发展期,标志着AI经济新纪元的到来。大模型技术的快速迭代不仅促进了…

python—爬虫爬取电影页面实例

下面是一个简单的爬虫实例,使用Python的requests库来发送HTTP请求,并使用lxml库来解析HTML页面内容。这个爬虫的目标是抓取一个电影网站,并提取每部电影的主义部分。 首先,确保你已经安装了requests和lxml库。如果没有安装&#x…

一、C#概述

本文是网页版《C# 12.0 本质论》第一章解读。欲完整跟踪本系列文章,请关注并订阅我的Essential C# 12.0解读专栏。 前言 第一章的内容非常简单,毕竟仅仅是Introducing C#。不过正如《0.前言》所述,《C# 12.0本质论》本身就不是一本零基础的…

【Python游戏】编程开发贪吃蛇游戏(第一期)

本文收录于 《一起学Python趣味编程》专栏,从零基础开始,分享一些Python编程知识,欢迎关注,谢谢! 文章目录 一、前言二、贪吃蛇游戏开发简介2.1 贪吃蛇游戏规则2.2 贪吃蛇游戏开发步骤 三、贪吃蛇游戏开发实战四、总结…

多任务高斯过程数学原理和Pytorch实现示例

高斯过程其在回归任务中的应用我们都很熟悉了,但是我们一般介绍的都是针对单个任务的,也就是单个输出。本文我们将讨论扩展到多任务gp,强调它们的好处和实际实现。 本文将介绍如何通过共区域化的内在模型(ICM)和共区域化的线性模型(LMC)&…

【开源库】libodb库编译及使用

前言 本文介绍windows平台下libodb库的编译及使用。 文末提供libodb-2.4.0编译好的msvc2019_64版本,可直接跳转自取 ODB库学习相关 【开源库学习】libodb库学习(一) 【开源库学习】libodb库学习(二) 【开源库学习】…

数据库之存储引擎

目录 一、MySQL支持的存储引擎 二、查看MySQL默认存储引擎 三、修改MySQL默认存储引擎 四、常用的存储引擎 1.InnoDB 2.MyISAM 3.MEMORY 一、MySQL支持的存储引擎 使用SHOW ENGINES \G; 命令查看 以“\G”结尾,其作用是将查询结果按列显示。 Engine&#xff…

人工智能与语音识别:技术进步与应用前景

引言 人工智能(AI)作为当今科技进步的核心驱动力,正在各个领域展现其变革力量。其中,语音识别技术作为人工智能的重要应用之一,已经深入到我们的日常生活和工作中。从智能助手如Siri、Google Assistant,到智…

Apache BookKeeper 一致性协议解析

导语 Apache Pulsar 是一个多租户、高性能的服务间消息传输解决方案,支持多租户、低延时、读写分离、跨地域复制(GEO replication)、快速扩容、灵活容错等特性。Pulsar 存储层依托于 BookKeeper 组件,所以本文简单探讨一下 BookK…

Qt Creator配置以及使用Valgrind - 检测内存泄露

Qt Creator配置以及使用Valgrind - 检测内存泄露 引言一、下载安装1.1 下载源码1.2 安装 二、配置使用2.1 Qt Creator配置2.2 使用2.3 更多详细信息可参考官方文档: 三、参考链接 引言 Valgrind是一个在Linux平台下广泛使用的开源动态分析工具,它提供了一…