IP库新增多种颜色转换空间IP

5e318fcadb36068865e9086068421d40.jpeg

颜色空间转换是图像及视频中常用的解决方案,涉及hsv-rgb、rgb-ycrcb等一些常见的颜色空间互相转换,今天带来几种常见的颜色空间转换IP,主要如下:

82a0c1cd461073d25dbed470ea1e93a5.png

IP库简介

一直想做一个可以供大家学习、使用的开源IP库,类似OpenCores,OC上IP在领域内的IP很少,通用性强一点,所以作为OC的“补充”,做了一个开源IP库,侧重点在领域的IP辅以工程或者仿真验证,一个人能力有限,欢迎大家能够共同构建,有什么问题可以提pr,谢谢~

RGB2HSL/HSL2RGB原理介绍

上面的IP大部分原理网上都有介绍,而且很详细,今天主要介绍RGB-HSL转换的原理。

HSL-色相、饱和度和强度

afb0a9d88922a83a0987285275e9144b.png

色调是从 0 到 360 的颜色范围,以角度量描述纯色。饱和度是从灰色阴影到全彩。颜色的饱和度称为色度。色度值越高,则清晰、明亮。最强的幅度是值,其范围对应于亮度,平衡幅度对应于强度。色调颜色描述纯色,而饱和度值确定纯色范围强度,亮度描述纯色范围。最大饱和度位于中等灰度强度处。100% 饱和度的颜色会产生最纯的颜色,0% 饱和度会产生灰度。0% 亮度的颜色是黑色,100% 亮度的颜色是明亮的颜色。

下面的角度值是色轮上的色调值。

  • 0 度 – 红色

  • 60度-黄色

  • 120 度 – 绿色

  • 180 度 – 青色

  • 240度-蓝色

  • 300 度 – 洋红色

  • 360 度 – 红-洋红色

e6201e43f6893fd27dc8102ef14c84dc.png

RGB 三元组饱和度方程如下所示,其中最大值和最小值是在红色、绿色和蓝色通道之间计算的。它代表颜色的强度和圆锥体的半径。RGB 由等量的白光组成。当最大 RGB 分量减去最小 RGB 分量并除以最大 RGB 分量时,灰度强度被消除。因此,这种新颜色没有白光,饱和并且代表单一波长。

dfd32959d932c49ab4480c2faa16fb60.png

从 RGB 转换为 HSL 以及从 HSL 转换为 RGB 时,通过增加 HSL 颜色空间的饱和度,RGB 颜色变得更强。

RGB 转 HSL

色相、饱和度和强度元素控制更宽的颜色范围以实现图像增强。来自摄像机的视频流是原始 RGB 颜色空间的格式,然后转换为 HSL 颜色空间。在HSL色彩空间中,通过将系数值乘以每个分量来线性更新当前的色调、饱和度和亮度,使图像颜色更明亮、更丰富多彩。将颜色增益应用于 HSL 后,HSL 颜色空间将转换回 RGB 颜色空间。在此过程中,对每个 HSL 元素应用乘法增益(权重)控制后,生成的增强图像颜色看起来自然且更明亮。

b6aa42f4423986e8fdd5b703e77d1a31.png 488416604599c4817f24d6d17da13c91.png

视频颜色处理模块中实现的rgb到HSL颜色空间采用HSL算法,并采用标准Xilinx AXI4流接口设计,因此可以作为模块插入任何图像处理管道中。

177a6193cb5b073becc64e7a0acf5609.png

第一个逻辑计算 RGB 值的最大值和最小值。最大和最小 RGB 值是根据逻辑实现计算的,如下图所示。

57b2f796b96905085aa6f39a408005eb.png

色调是通过确定最大 RGB 通道值的色调分数来计算的。如果当前最大通道颜色为红色,则仅当绿色大于蓝色时,色相分子才会设置为绿色减去蓝色,否则从绿色中减去蓝色,并且色相度数设置为 0 到 85。

如果当前通道最大颜色为绿色,则仅当蓝色大于红色时,色调分子才会设置为蓝色减去红色,否则从蓝色中减去红色,色调度将为86-171 。

类似地,如果当前通道最大颜色为蓝色,则仅当红色大于绿色时,色调分子才会设置为红色减去绿色,否则从红色中减去绿色,色调度将为172-255 。

e867f63c8d8e91bc4ee73aceff756cff.png

色调分母为 RGB 增量。

1a7adf3fa4a2eaee62b99c2fd44ee21f.png

一旦计算出色相分数值,分数值将被添加到色相度数中,这将给出最终的色相值。饱和度值是根据 RGB 最大值和最小值与 RGB 最大值之间的差值计算的,而亮度值是 RGB 最大值。

8d3f043e0699d0cf48906a9c3f8f2ee1.png

该模块具有时钟和复位端口。iRGB端口由具有有效信号的红、绿、蓝颜色分量组成,用于将RGB像素转换为HSL像素。

136578fd52b3a696a9cb6cc30475ae0f.png

RGB通道转换到HSL色彩空间的仿真结果如下图所示。

368e71757d88ea4654380531d0224f91.png

HSL 转 RGB

视频颜色处理模块中实现的HSL-RGB颜色空间采用HSL到RGB转换算法,并采用标准Xilinx AXI4流接口进行设计,因此可以作为模块插入任何图像处理管道中。

d3f77987df1921c9f3cbb1184c39caef.png

HSL 到 RGB 模块将输入 HSL 转换为 RGB 颜色空间。该模块具有时钟和复位端口。iRGB端口由具有有效信号的红、绿、蓝RGB通道组成,用于将RGB像素转换为HSL像素。

9695ae30359f2eb09c71bf3a196c1c65.png feffe03a393cb915392fc6af3e824d63.pngHSL转RGB实现框图

点此FPGA源码

https://github.com/suisuisi/Xilinx_Library/tree/main/HDL/color_space

IP库新增10多个功能IP

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

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

相关文章

利用鸿鹄优化共享储能的SCADA 系统功能,赋能用户数据自助分析

摘要 本文主要介绍了共享储能的 SCADA 系统大数据架构,以及如何利用鸿鹄来更好的优化 SCADA 系统功能,如何为用户进行数据自助分析赋能。 1、共享储能介绍 说到共享储能,可能不少朋友比较陌生,下面我们简单介绍一下共享储能的价值…

行为型模式 - 模板方法模式

概述 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。 例如&#…

Docker 基本管理与应用

目录 一、Docker介绍 1、docker概述 2、容器优势 3、Docker与虚拟机的区别 4、Docker核心概念 二: 安装 Docker 1、环境准备、安装依赖包 2、 设置阿里云镜像源,安装 Docker-CE并设置为开机自动启动 3、信息查看 ​三:Docker 镜像操作…

XSS简介

OWASP TOP 10 OWASP(开放式Web应用程序安全项目)的工具,文档,论坛额全球各地分会都是开放的,对所有致力于改进应用程序安全的人士开放,最具权威的就是10项目最严重的Web应用程序安全风险列表 Cross Site Scripting(X…

使用Vue的插件clipboard使用复制功能

1.安装clipboard插件 npm install clipboard 2.使用 clipboard <template><div style"margin-right: auto;margin-left: auto; 800px"><el-table :data"list"><el-table-column label"搜索引擎" prop"name"&g…

cesium实战(1)、cesium 加载本地json、GeoJson数据

1、cesium加载本地图层json图层数据 并设置样式 添加图层 // 加载路网数据 wms数据服务let addRoadLayer () > {Cesium.GeoJsonDataSource.load(/cesium/layers/road_84.json, {stroke: Cesium.Color.YELLOW,//多边形或线的颜色 strokeWidth: 3,//多边形或线 宽度clampToG…

【优选算法题练习】day6

文章目录 一、76. 最小覆盖子串1.题目简介2.解题思路3.代码4.运行结果 二、704. 二分查找1.题目简介2.解题思路3.代码4.运行结果 三、34. 在排序数组中查找元素的第一个和最后一个位置1.题目简介2.解题思路3.代码4.运行结果 总结 一、76. 最小覆盖子串 1.题目简介 76. 最小覆…

Selenium(3 + 4 超级详细笔记)

文章目录 selenium&#xff08;web自动化测试&#xff09;1. selenium初始化&#xff08;2种&#xff09;2. chrome 启动参数&#xff08;3种&#xff09;3. 八大定位方式3.1 css 定位3.2 xpath 定位3.3 link_text 定位3.4 partial_link_text 定位3.5 relative 相对定位 4. 添加…

OpenCv之图像轮廓

目录 一、图像轮廓定义 二、绘制轮廓 三、计算轮廓面积与周长 一、图像轮廓定义 图像轮廓是具有相同颜色或灰度的连续带你的曲线.轮廓在形状分析和物体的检测和识别中很有用 轮廓的作用: 用于图形分析物体的识别与检测 注意点: 为了检测的准确性&#xff0c;需要先对图像…

采集传感器的物联网网关怎么采集数据?

随着工业4.0和智能制造的快速发展&#xff0c;物联网&#xff08;IoT&#xff09;技术的应用越来越广泛&#xff0c;传感器在整个物联网系统中使用非常普遍&#xff0c;如温度传感器、湿度传感器、光照传感器等&#xff0c;对于大部分物联网应用来说&#xff0c;采集传感器都非…

JVM系统优化实践(20):GC生产环境案例(三)

您好&#xff0c;这里是「码农镖局」CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e; 某新手开发工程师接到了一个保存Elasticsearch日志的任务&#xff0c;以供后续分析之用。但写代码的时候&#xff0c;误将保存日志的代码段弄成了无限循环&#xff0c;程序…

C#盯盘小工具,“监”

也是一个小工具&#xff0c;用来看大A股票和主要指数行情的。 如果你是一个上班族&#xff0c;同时你也是一颗小韭菜&#xff0c;a股在开市交易盘中时刻惦记着股票是涨了还是跌了&#xff0c;却不能时刻盯着手机看行情&#xff0c;也不能在电脑上开着同花顺来回切窗口&#xff…

数据可视化自助式分析工具:jvs-bi数据扩展及函数配置说明

jvs-bi数据拓展节点 数据拓展是数据可视化加工过程中的重要工具&#xff0c;它核心的作用是对原有数据表进行加工扩展&#xff0c;实现功能如下图所示 函数配置操作过程 操作说明 1、拖动数据拓展字段&#xff0c;并将字段拓展与之前的历史节点连接起来&#xff0c;点击数据拓…

全面深入理解MySQL自增锁

&#x1f497;推荐阅读文章&#x1f497; &#x1f338;JavaSE系列&#x1f338;&#x1f449;1️⃣《JavaSE系列教程》&#x1f33a;MySQL系列&#x1f33a;&#x1f449;2️⃣《MySQL系列教程》&#x1f340;JavaWeb系列&#x1f340;&#x1f449;3️⃣《JavaWeb系列教程》…

在 3ds Max 中对链模型进行摆放姿势处理

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 建模和“摆姿势”3D链可能看起来是一项繁琐的工作&#xff0c;但实际上可以通过使用阵列工具并将链中的链接视为骨骼来轻松完成。在本教程中&#xff0c;我将向您展示如何对链条进行建模&#xff0c;并通过…

16. 存储过程和存储函数

文章目录 1.存储过程和存储函数2.创建和使用存储过程2.1 语法&#xff1a;2.2 第一个存储过程&#xff0c;打印hello world2.3 调用语法2.4 带参数的存储过程2.5 调试存储过程 3.创建和使用存储函数3.1 存储函数定义3.2 存储函数语法&#xff1a;3.3 存储函数案例&#xff1a; …

C++初探

目录 经典开头 — C的历史 作用域运算符 using的用法 命名空间 - namespace 命名空间的基本使用 特殊的命名空间 - 无名命名空间 全部展开和部分展开 std — C所有的标准库都在std命名空间内 省缺值 - 默认参数 占位参数 内联函数 - inline 函数重载 函数重载的用…

如何撤销git上一次的commit(或已push)

如何撤销git上一次的commit&#xff08;或已push&#xff09; 当多人开发时&#xff0c;我们本地commit后&#xff0c;刚要push&#xff0c;发现忘记pull最新代码&#xff0c;此时会有冲突push失败&#xff0c; 我们想要撤销最近的一次commit 我们先简单介绍一下git git有三大…

Python爬虫——urllib_ajax的get请求爬取豆瓣电影前十页

ajax&#xff1a; 就是一段js代码&#xff0c;通过这段代码&#xff0c;可以让页面发送异步的请求&#xff0c;或者向服务器发送一个东西&#xff0c;即和服务器进行交互 对于ajax&#xff1a; 一定会有 url&#xff0c;请求方法(get, post)&#xff0c;可能有数据一般使用 j…

DBeaver数据库管理工具安装连接PostgreSQL和DM

文章目录 1. 安装2. 连接PostgreSQL3. 连接DM83.1 下载驱动3.2 添加驱动3.3 连接3.4 创建表空间和用户3.5 执行sql 4. 连接Mysql 1. 安装 下载地址 https://dbeaver.io/download/ 2. 连接PostgreSQL 配置显示所有数据库 第二个勾选会显示模板数据库 点击测试连接&#xff0…