基于FPGA的图像RGB转HLS实现,包含testbench和MATLAB辅助验证程序

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

4.1计算最大值和最小值

4.2计算亮度L

4.3计算饱和度S

4.4计算色调H

5.算法完整程序工程


1.算法运行效果图预览

将FPGA结果导入到MATLAB显示效果:

2.算法运行软件版本

Vivado2019.2

matlab2022a

3.部分核心程序

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2023/08/01  
// Design Name: 
// Module Name: RGB2gray
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//module test_image;reg i_clk;
reg i_rst;
reg [7:0] Rbuff [0:100000];
reg [7:0] Gbuff [0:100000];
reg [7:0] Bbuff [0:100000];
reg [7:0] i_Ir,i_Ig,i_Ib;
wire [7:0] o_H;
wire [7:0] o_L,o_S;
integer fids1,dat1,fids2,dat2,fids3,dat3,jj=0;//D:\FPGA_Proj\FPGAtest\codepz
initial 
beginfids1 = $fopen("D:\\FPGA_Proj\\FPGAtest\\codepz\\R.bmp","rb");dat1  = $fread(Rbuff,fids1);$fclose(fids1);
endinitial 
beginfids2 = $fopen("D:\\FPGA_Proj\\FPGAtest\\codepz\\G.bmp","rb");dat2  = $fread(Gbuff,fids2);$fclose(fids2);
endinitial 
beginfids3 = $fopen("D:\\FPGA_Proj\\FPGAtest\\codepz\\B.bmp","rb");dat3 = $fread(Bbuff,fids3);$fclose(fids3);
endinitial 
begin
i_clk=1;
i_rst=1;
#1200;
i_rst=0;
end always #5  i_clk=~i_clk;always@(posedge i_clk) 
begini_Ir<=Rbuff[jj];i_Ig<=Gbuff[jj];i_Ib<=Bbuff[jj];jj<=jj+1;
endmain_RGB2HLS main_RGB2HLS_u(
.i_clk    (i_clk),
.i_rst    (i_rst),
.i_image_R      (i_Ir),
.i_image_G      (i_Ig),
.i_image_B      (i_Ib),
.o_H            (o_H),// Y 
.o_L            (o_L),// Y 
.o_S            (o_S)
);integer fout1;
initial beginfout1 = $fopen("H.txt","w");
endalways @ (posedge i_clk)beginif(jj<=66616)$fwrite(fout1,"%d\n",o_H);else$fwrite(fout1,"%d\n",0);
endinteger fout2;
initial beginfout2 = $fopen("L.txt","w");
endalways @ (posedge i_clk)beginif(jj<=66616)$fwrite(fout2,"%d\n",o_L);else$fwrite(fout2,"%d\n",0);
endinteger fout3;
initial beginfout3 = $fopen("S.txt","w");
endalways @ (posedge i_clk)beginif(jj<=66616)$fwrite(fout3,"%d\n",o_S);else$fwrite(fout3,"%d\n",0);
end
endmodule
0X_023m

4.算法理论概述

        在数字图像处理中,RGB和HLS是两种常见的颜色空间。RGB基于红绿蓝三种基本颜色的叠加来定义其他颜色,而HLS则代表色调、亮度和饱和度,它更接近人类视觉对颜色的感知。将RGB图像转换为HLS图像的目的通常是为了更方便地进行某些类型的图像处理,比如色彩平衡和色彩分离。RGB颜色空间基于笛卡尔坐标系,其中R、G、B分别代表红、绿、蓝三种颜色的强度。HLS颜色空间则是基于圆柱坐标系,其中H代表色调(0-360度),L代表亮度(0-1),S代表饱和度(0-1)。

        转换的第一步是将RGB值归一化到[0,1]范围。然后,通过计算RGB颜色空间的最大值和最小值来得到亮度L。色调H由RGB中的最大值和最小值决定,并使用反正切函数来得到0-360度的角度。最后,饱和度S基于最大值和亮度L来计算。

具体的转换公式如下:

将RGB值归一化到[0,1]:
R' = R/255
G' = G/255
B' = B/255

4.1计算最大值和最小值


Max = max(R', G', B')
Min = min(R', G', B')
Diff = Max - Min

4.2计算亮度L


L = (Max + Min) / 2


4.3计算饱和度S

if L < 0.5:
S = Diff / (Max + Min)
else:
S = Diff / (2 - Max - Min)

4.4计算色调H


if Diff == 0:
H = 0
else:
if Max == R':
H = (60 * ((G' - B') / Diff) + 360) % 360
elif Max == G':
H = (60 * ((B' - R') / Diff) + 120) % 360
elif Max == B':
H = (60 * ((R' - G') / Diff) + 240) % 360

       这些公式可以将每一个像素从RGB颜色空间转换到HLS颜色空间。值得注意的是,这种转换通常是可逆的,也就是说,你也可以从HLS颜色空间转换回RGB颜色空间。在实现RGB到HLS的转换时,通常会先读取一幅RGB图像,然后将上述公式应用于图像中的每一个像素。

5.算法完整程序工程

OOOOO

OOO

O

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

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

相关文章

react hook ts 实现 列表的滚动分页加载,多参数混合混合搜索

InfiniteScroll 的组件见&#xff1a; https://blog.csdn.net/Zhooson/article/details/134396945 search.tsx 页面 import { FC, useEffect, useState } from react import InfiniteScroll from ../../components/InfiniteScrollconst tabs [{id: 1,title: tab-1,index: 1…

【python】选数

题目&#xff1a; """ 题目描述&#xff1a; 给定一个由 n 个整数组成的序列x_1, x_2,..., x_n)&#xff0c;以及一个整数 k ( k < n )。从这 n 个整数中选择 k 个整数相加&#xff0c;可以得到多种不同的和。例如&#xff0c;当 n 4&#xff0c;k 3&#…

国际阿里云:云服务器灾备方案!!!

保障企业业务稳定、IT系统功能正常、数据安全十分重要&#xff0c;可以同时保障数据备份与系统、应用容灾的灾备解决方案应势而生&#xff0c;且发展迅速。ECS可使用快照、镜像进行备份。 灾备设计 快照备份 阿里云ECS可使用快照进行系统盘、数据盘的备份。目前&#xff0c;阿…

快手自动引流软件的运行分享,以及涉及到技术与核心代码分享

先来看实操成果&#xff0c;↑↑需要的同学可看我名字↖↖↖↖↖&#xff0c;或评论888无偿分享 一、引言 引流是任何网络创业者或营销人员必备的技能之一。手动引流不仅耗时&#xff0c;而且效果难以保证。因此&#xff0c;自动引流软件应运而生&#xff0c;成为许多人的得力助…

Python中的filter函数用法详解

目录 引言 一、filter函数基本用法 二、filter函数应用场景 1、筛选符合条件的元素 2、数据清洗和预处理 3、复杂条件筛选 4、与其他函数结合使用 三、filter函数与lambda表达式 四、filter函数与列表推导式 五、总结 引言 Python中的filter函数是一种内置的高效过滤…

OpenGL学习之路-2

glut程序 8.多窗口且子窗口能够跟随reshape的变化而变化 /// #include <GL/glut.h> #include <iostream>/// int winWidth, winHeight; // <<NEW!!! int mainWinID; //…

15. 机器学习——聚类

机器学习面试题汇总与解析——聚类 本章讲解知识点 什么是聚类K-means 聚类算法均值偏移聚类算法DBSCAN 聚类算法高斯混合模型(GMM)的期望最大化(EM)聚类层次聚类算法本专栏适合于Python已经入门的学生或人士,有一定的编程基础。 本专栏适合于算法工程师、机器学习、图像…

从道一云到畅捷通T+通过接口配置打通数据

从道一云到畅捷通T通过接口配置打通数据 接通系统&#xff1a;道一云 在道一云坚实的技术基础上&#xff0c;道一云推出全新升级的2.0产品矩阵&#xff0c;分别是低码平台、智能门户、场景应用。基于云原生底座&#xff0c;为企业提供集智能门户解决网关流量问题、企业微信端的…

Linux上部署服务

这里以python脚本为例 创建服务&#xff1a; # 查看已有的服务有哪些 cd /etc/systemd/system ls# 创建新服务 sudo vim test.service#编辑service文件内容&#xff08;如果无法输入或修改&#xff0c;点击i代表insert&#xff09; [Unit] Description项目描述Wantsnetwork.t…

es 7.0常用的命令

es 7.0常用的命令 es 7.0中只有索引和文档(document)&#xff0c;没有类型(type)了。 es新建索引&#xff1a; 格式&#xff1a; PUT /索引名称 {"mappings":{"properties":{"字段名称":{"type":"字段类型"}}} }PUT 加索…

Spring Cache 入门教程

一&#xff1a;Spring缓存抽象 Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术&#xff1b;并支持使用JCache&#xff08;JSR-107&#xff09;注解简化我们开发&#xff1b; Cache接口为缓存的组件规…

提升效率!MuLogin指纹浏览器自动执行重复任务

在现代生活和工作中&#xff0c;我们经常需要处理各种繁琐的重复任务&#xff0c;这不仅浪费时间和精力&#xff0c;还可能导致效率低下。幸运的是&#xff0c;MuLogin指纹浏览器提供了强大的自动化功能&#xff0c;可以自动执行重复任务&#xff0c;并通过编写脚本和API接口的…

JAVA深化篇_40—— Lambda表达式介绍

Lambda表达式介绍 Lambda简介 Lambda 表达式是 JDK8 的一个新特性&#xff0c;可以取代大部分的匿名内部类&#xff0c;写出更优雅的 Java 代码&#xff0c;尤其在集合的遍历和其他集合操作中&#xff0c;可以极大地优化代码结构。 在Java语言中&#xff0c;可以为变量赋予一…

opencv车牌识别<二>

目录 一、车牌识别算法流程 二、车牌检测 一、车牌识别算法流程 在解释ANPR代码之前&#xff0c;需要明白主要步骤和使用ANPR 算法的任务。ANPR 有两个主要步骤:车牌检测和车牌识别。车牌检测的目的是在整个视频帧中检测到车牌位置。当在图像中检测到车牌时&#xff0c;分割的…

SAP系统供应商预付款请求和预付账款业务

最近搞清帐&#xff01; 在SAP中处理客户或供应商的预收/预付款相关业务流程操作说明, 首先由业务部门(销售或采购)下达销售/采购订单,同时基于订单提交预收/预付申请,客户/供应商款项到账时,由财务部门在SAP中勾选申请单来收付款;最后在财务转应收/应付转发票时自动核销。预付…

SAP 事件:SET PF-STATUS 和AT LINE-SELECTION共用

Write List中&#xff0c;如果同时使用了SET PF-STATUS 和 AT LINE-SELECTION,会发现双击的时候不好用了&#xff01; 怎么办&#xff1f;其实&#xff0c;只要设置F2功能键”PICK”就OK了。 2007年12月11日修改&#xff1a; 如图&#xff1a; 例: REPORT z_barry_test_pic…

放假通知!2024年全国中小学寒假时间发布!

进入冬季&#xff0c; 学生们都迫不及待地 期盼着寒假的到来。 近日&#xff0c;全国多地已经明确了 2024年中小学寒假的起止时间。 一起来看看你所在的城市寒假放几天 北京 据“首都教育”微信公众号消息&#xff0c; 普通中小学、中等职业学校 义务教育阶段2024年寒…

有什么方法可以改善CRM实施投资回报?

数据统计显示&#xff0c;几乎70%以上CRM客户管理系统项目的投资回报是负数。这意味着超过半数的CRM项目的结果是失败的。那么我们有什么方法可以改善CRM实施投资回报吗&#xff1f;当然有&#xff0c;下面我们就来说一说。 如何改善CRM实施投资回报 首先&#xff0c;您选择的…

IDEA调试总结

前言 由于 IDEA 每个人使用的版本不同以及快捷键的设置不同&#xff0c;所以忽略了快捷键的使用。如果不知道快捷键请在 IDEA 工具栏里面点开 Run 菜单即可知悉 图标介绍 下面咱们进入看图说话环节&#xff0c;下列图标小伙伴知道是啥功能么&#xff1f;日常开发进行 Debug 使…

记录一个错误

通过Resource注解&#xff0c;将IStateHandler接口的实现类 StateHandlerImpl注入进来 Resource private IStateHandler stateHandler;Resource注解默认按照名称进行装配&#xff0c;这里抛出异常是因为IStateHandler和StateHandlerImpl都被 Spring 容器管理&#xff0c;在进行…