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

news2024/11/25 0:30:50

目录

  • 一、问题
  • 二、解答
    • 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.coloradmin.cn/o/1939164.html

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

相关文章

大气热力学(15)——热力学图的应用之三(逆温)

文章目录 15.1 逆温的概念15.2 辐射逆温15.2.1 辐射逆温的形成原因15.2.2 辐射逆温的生消过程15.2.3 辐射逆温在探空图的特征15.2.4 辐射雾的形成与特征 15.3 平流逆温15.3.1 平流逆温的形成原因15.3.2 平流雾的形成与特征 15.4 湍流逆温15.4.1 湍流逆温的形成原因15.4.2 湍流逆…

Unity XR Interaction Toolkit(VR、AR交互工具包)记录安装到开发的流程,以及遇到的常见问题(一)!

提示:文章有错误的地方,还望诸位大神不吝指教! 文章目录 前言一、XR Interaction Toolkit是什么?二、跨平台交互三、 AR 功能四、XR Interaction Toolkit的特点五、XR Interaction Toolkit 示例总结 前言 随着VR行业的发展&#…

移动设备安全革命:应对威胁与解决方案

移动设备已成为我们日常工作和家庭生活中不可或缺的工具,然而,对于它们安全性的关注和投资仍然远远不够。本文深入分析了移动设备安全的发展轨迹、目前面临的威胁态势,以及业界对于这些安全漏洞响应迟缓的深层原因。文中还探讨了人们在心理层…

Python酷库之旅-第三方库Pandas(030)

目录 一、用法精讲 79、pandas.Series.dtype属性 79-1、语法 79-2、参数 79-3、功能 79-4、返回值 79-5、说明 79-6、用法 79-6-1、数据准备 79-6-2、代码示例 79-6-3、结果输出 80、pandas.Series.shape属性 80-1、语法 80-2、参数 80-3、功能 80-4、返回值 …

2024杭电多校1——1008位运算

Problem Description 小丁最近对位运算很感兴趣,通过学习,他知道了按位与 ⊗,按位异或 ⊕,以及按位或 ⊖ 三种常见位运算。 按位与 ⊗:二进制下每一位做与,即 0⊗00,0⊗10,1⊗00,1⊗11。 按位异或 ⊕&am…

【MySQL】:想学好数据库,不知道这些还想咋学

客户端—服务器 客户端是一个“客户端—服务器”结构的程序 C(client)—S(server) 客户端和服务器是两个独立的程序,这两个程序之间通过“网络”进行通信(相当于是两种角色) 客户端 主动发起网…

SQL GROUPING运算符详解

在大数据开发中,我们经常需要对数据进行分组和汇总分析。 目录 1. GROUPING运算符概念2. 语法和用法3. 实际应用示例4. GROUPING运算符的优势5. 高级应用场景5.1 与CASE语句结合使用5.2 多维数据分析 6. 性能考虑和优化技巧7. GROUPING运算符的局限性8. 最佳实践9. GROUPING与其…

第6章 单片机的定时器/计数器

6.1 定时/计数器的结构与工作原理 6.2 定时器的控制 6.3 定时/计数器的工作方式 6.4 定时/计数器的编程和应用 6.1 定时/计数器的结构与工作原理 6.1.1 定时/计数器的基本原理 纯软件定时/计数方法: 定时——空循环预定周次,等待预定时间 计数—…

义务外贸wordpress独立站主题

健身器材wordpress网站模板 跑步机、椭圆机、划船机、动感单车、健身车、深蹲架、龙门架、健身器材wordpress网站模板。 https://www.jianzhanpress.com/?p4251 农业机械wordpress网站模板 植保机械、畜牧养殖机械、农机配件、土壤耕整机械、农业机械wordpress网站模板。 …

鸿蒙开发 03 封装 @ohos/axios (最新深度封装)

鸿蒙开发 03 封装 ohos/axios (最新深度封装) 1、安装 ohos/axios2、开始封装2.1 新建 utils 文件夹 和 api 文件夹2.2 在 utils 文件夹里新建 http.ts2.3 在 api 文件夹里新建 api.ets 3、页面调用4、打印结果 1、安装 ohos/axios ohpm install ohos/a…

Linux中进程的控制

一、进程的创建 1、知识储备 进程的创建要调用系统接口&#xff0c;头文件 #include<unistd.h> 函数fork() 由于之前的铺垫我们现在可以更新一个概念 进程 内核数据结构&#xff08;task_struct, mm_struct, 页表....&#xff09; 代码 数据 所以如何理解进程的独…

如何在 Odoo 16 中覆盖现有控制器

Odoo 中使用控制器来开发前端模块。后端模块链接到控制器。我们可以通过使用覆盖属性对基类进行修改来修改编程逻辑或向现有程序添加新逻辑。 要将控制器添加到模块,第一步,您必须为控制器创建一个单独的目录。在此目录中,应将一个 init 文件和包含控制器方法的所有 python…

Python中发送邮件的艺术:普通邮件、PDF附件与Markdown附件

用的是qq邮箱&#xff0c;具体获取smtp的password可以看这个文章 获取密码 Python中发送邮件的艺术&#xff1a;普通邮件、PDF附件与Markdown附件 在今天的博客中&#xff0c;我们将探讨如何使用Python的smtplib库来发送电子邮件&#xff0c;包括发送普通文本邮件、携带PDF文件…

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

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

代码:前端与数据库交互的登陆界面

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>登录</title> </head> <body>…

flutter 充电气泡

前言&#xff1a; 之前一直看到 有手机充电的时候 有气泡从Type-C 的位置冒泡上来 慢慢上移&#xff0c; 然后和上面的圆圈 会和&#xff0c;感觉还是挺好看的。今天试了下用 Flutter 实现了一版本。大致效果如下&#xff0c;而且气泡 和 气泡直接还可以粘黏 实现原理&#xff…

U盘数据误删如何恢复?

问&#xff1a;U盘数据误删如何恢复&#xff1f; 答&#xff1a; 1.若出现U盘中的文件被误删后第一步&#xff1a;不进行任何写入操作&#xff08;向U盘中复制或移动文件&#xff09;&#xff0c; 接着直接拔掉U盘。 2.在电脑上下载数据恢复软件&#xff0c;给大家推荐一个数据…

stm32学习:(寄存器2)GPIO总体说明

目录 GPIO的主要特点 GPIO的8种工作模式 GPIO电路结构 GPIO输出模式 输出流程 复用输出模式 GPIO输入模式 输入流程 模拟输入流程 GPIO相关的7个寄存器 GPIOx_CRL GPIOx_CRH GPIOx_IDR GPIOx_ODR GPIOx_BSRR GPIOx_BRR GPIOx_LCKR 实例 三个灯流水灯 main.…

0305-0308TTL逻辑门电路

逻辑门电路-逻辑描述中的问题 3.5TTL逻辑门电路3.5.1BJT的开关特性BJT的开关时间 3.5.2TTL反相器的基本电路1.电路组成2.TTL反相器的工作原理 3.5.3改进型TTL门电路-抗饱和TTL门电路1.抗饱和TTL门电路2.其他TTL门电路 3.7逻辑描述中的几个问题3.7.1正负逻辑问题3.7.2 基本逻辑门…

VirtualBox安装增强功能时报错:未能加载虚拟光盘VBoxGuestAdditions.iso 到虚拟电脑

VirtualBox安装增强功能时报错&#xff1a;未能加载虚拟光盘VBoxGuestAdditions.iso 到虚拟电脑 选中一个虚拟机 进入设置点击存储 再点击光盘样子的加号进入后就可以选择 添加 选中双击就好&#xff0c;我已经添加过了 所以我的会在上面 选中一个虚拟机 进入设置 点击存储 再点…