当前位置: 首页 > news >正文

基于LUT查找表方法的图像gamma校正算法FPGA实现,包括tb测试文件和MATLAB辅助验证

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

5.算法完整程序工程


1.算法运行效果图预览

将gamma=2.2和gamma=1/2.2的数据分别导入到matlab进行对比:

2.算法运行软件版本

matlab2022a

3.部分核心程序

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2022/07/28 01:51:45
// Design Name: 
// Module Name: test_image
// 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] Buffer [0:100000];
reg [7:0] II;
wire [7:0] o_gamma1_jiaoz;
wire [7:0] o_gamma2_jiaoz;
integer fids,idx=0,dat;//D:\FPGA_Proj\FPGAtest\code_proj\project_1\project_1.srcs\sources_1
initial 
beginfids = $fopen("D:\\FPGA_Proj\\FPGAtest\\code_proj\\test0.bmp","rb");dat  = $fread(Buffer,fids);$fclose(fids);
endinitial 
begin
i_clk=1;
i_rst=1;
#1000;
i_rst=0;
end always #5 i_clk=~i_clk;always@(posedge i_clk) 
beginII<=Buffer[idx];idx<=idx+1;
endtops tops_u(
.i_clk            (i_clk),
.i_rst            (i_rst),
.i_I              (II),
.o_gamma1_jiaoz   (o_gamma1_jiaoz),
.o_gamma2_jiaoz   (o_gamma2_jiaoz)
);
integer fout1;
integer fout2;
initial beginfout1 = $fopen("SAVEDATA1.txt","w");fout2 = $fopen("SAVEDATA2.txt","w");
endalways @ (posedge i_clk)beginif(idx<=66617)$fwrite(fout1,"%d\n",o_gamma1_jiaoz);else$fwrite(fout1,"%d\n",0);if(idx<=66617)$fwrite(fout2,"%d\n",o_gamma2_jiaoz);else$fwrite(fout2,"%d\n",0);
endendmodule
0X_008m

4.算法理论概述

       基于LUT查找表方法的图像gamma校正算法是一种用于改善图像显示效果的技术,它通过对图像像素的灰度值进行非线性变换,使得图像在显示设备上的表现更接近人眼的视觉特性。

       gamma校正算法的核心思想是根据人眼的视觉特性对图像像素的灰度值进行非线性变换。人眼对图像的亮度感知并不是线性的,而是对暗部和亮部的敏感度不同,对暗部的敏感度更高。因此,gamma校正算法通过对暗部像素进行较大的灰度值调整,对亮部像素进行较小的灰度值调整,使得图像在显示设备上的表现更接近人眼的视觉特性。

gamma校正算法的数学公式如下:

O = 255/255^(γ)*Image^(γ)

       其中,I表示输入像素的灰度值,O表示输出像素的灰度值,γ表示gamma值,通常取值为2.2。该公式的含义是,将输入像素的灰度值I进行γ次方运算,得到输出像素的灰度值O。

        在具体实现中,为了加快运算速度,通常会使用查找表(LUT)来存储预计算的结果。假设输入像素的灰度值范围为0~255,则可以生成一个大小为256的查找表,表中每个元素的值为对应灰度值的γ次方运算结果。在实现时,只需要输入像素的灰度值作为查找表的索引,即可得到对应的输出像素的灰度值。

基于LUT查找表方法的图像gamma校正算法的FPGA实现可以采用以下步骤:

  1. 定义输入和输出图像的数据格式,例如8位灰度图像,可以使用单个8位寄存器表示每个像素的灰度值。
  2. 定义一个大小为256的查找表,表中每个元素的值为对应灰度值的1/γ次方运算结果。可以使用FPGA中的ROM或者CAM模块来实现查找表。
  3. 读取输入图像的每个像素的灰度值,并将其作为查找表的索引,得到对应的输出像素的灰度值。可以使用FPGA中的单端口RAM或者双端口RAM来实现像素值的存储和读取。
  4. 将输出像素的灰度值写入到输出图像中,完成一次gamma校正。

       需要注意的是,由于FPGA的并行性,可以将整个图像的像素并行处理,实现高速的gamma校正。此外,也可以使用流水线结构、多级查找表等技术进一步提高计算速度和精度。

5.算法完整程序工程

OOOOO

OOO

O

相关文章:

基于LUT查找表方法的图像gamma校正算法FPGA实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 将gamma2.2和gamma1/2.2的数据分别导入到matlab进行对比&#xff1a; 2.算法运行软件版本 matlab2022a 3.部分核心程序 timescale 1ns / 1ps //…...

Function模块

0 Preface/Foreword 1 数据结构 1.1 func_cb_t //task control block typedef struct {u8 sta; //cur working task numberu8 last; //lask task number #if BT_BACKSTAGE_ENu8 sta_break…...

Prometheus PromQL数据查询语言

PromQL 简介 PromQL&#xff08;Prometheus Query Language&#xff09;是 Prometheus 内置的数据查询语言。支持用户进行实时的数据查询及聚合操作。 Prometheus 基于指标名称&#xff08;metrics name&#xff09;以及附属的标签集&#xff08;labelset&#xff09;唯一定义一…...

如何将转换器应用于时序模型

一、说明 在机器学习的广阔环境中&#xff0c;变压器作为建筑奇迹屹立不倒&#xff0c;以其复杂的设计和捕获复杂关系的能力重塑了我们处理和理解大量数据的方式。 自 2017 年创建第一台变压器以来&#xff0c;变压器类型呈爆炸式增长&#xff0c;包括强大的生成 AI 模型&#…...

数据结构:队列

文章目录 队列一&#xff0c;概述二&#xff0c;添加数据三&#xff0c;删除数据 队列 一&#xff0c;概述 队列是一种特殊的数据结构&#xff0c;它遵循先进先出&#xff08;FIFO&#xff09;的原则。在队列中&#xff0c;元素被添加到末尾&#xff0c;并从头部移除。队列只…...

AUTOSAR汽车电子嵌入式编程精讲300篇-基于AUTOSAR架构的AT控制系统研究与实现

目录 前言 国内外研究现状 国外研究现状 国内研究现状 2 AUTOSAR规范及开发流程...

计网第五章(运输层)(四)(TCP的流量控制)

一、基本概念 流量控制就是指让发送方的发送速率不要太快&#xff0c;使得接收方来得及接收。可以使用滑动窗口机制在TCP连接上实现对发送方的流量控制。 注意&#xff1a;之前在讨论可靠传输时&#xff0c;讨论过选择重传协议和回退N帧协议都是基于滑动窗口的机制上进行实现…...

【华为OD机试python】查找众数及中位数【2023 B卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 众数是指一组数据中出现次数最多的那个数,众数可以是多个。 中位数是指把一组数据从小到大排序后,如果这组数据的总数是奇数, 那最中间的那个数就是中位数; 如果这组数据总数是偶数,那…...

阿里云无影云电脑详细介绍:价格、使用和功能优势说明

什么是阿里云无影云电脑&#xff1f;无影云电脑&#xff08;原云桌面&#xff09;是一种快速构建、高效管理桌面办公环境&#xff0c;无影云电脑可用于远程办公、多分支机构、安全OA、短期使用、专业制图等使用场景&#xff0c;阿里云百科分享无影云桌面的详细介绍、租用价格、…...

【实践篇】MySQL执行计划详解

文章目录 本文知识大纲速览1. 前言2. 基本介绍1. 什么是执行计划2. 如何查看执行计划3. 执行计划的组成部分 3. 执行计划的关键元素1. id2. select_type3. table:4. type:5. possible_keys:6. key:7. key_len8. ref:9. rows:10. Extra 4. 底层原理5. 执行计划示例解读本文知识图…...

二维凸包(Graham) 模板 + 详解

&#xff08;闲话&#xff09; 上了大学后没怎么搞oi&#xff0c;从土木跑路到通信了&#xff08;提桶开润大成功&#xff01;&#xff09;&#xff0c;但是一年上两年的课&#xff08;补的&#xff09;&#xff0c;保研也寄掉了&#xff08; 说起来自从博客被大学同学发现并…...

ElasticSearch(ES)简单介绍

ES简介 Elasticsearch&#xff08;通常简称为ES&#xff09;是一个开源的分布式搜索和分析引擎&#xff0c;旨在处理各种类型的数据&#xff0c;包括结构化、半结构化和非结构化数据。它最初是为全文搜索而设计的&#xff0c;但随着时间的推移&#xff0c;它已经演变成一个功能…...

OpenCV(三十五):凸包检测

1.凸包检测介绍 凸包检测是计算凸包的一种技术&#xff0c;凸包就是&#xff1a;给定二维平面上的点集&#xff0c;将最外层的点连接起来构成的凸边形&#xff0c;它是包含点集中所有的点。 2.凸包检测函数convexHull() void cv::convexHull ( InputArray points, OutputArra…...

PS 透视裁剪工具

上文 PS 裁剪工具及工具栏配置讲解 我们讲完了裁剪工具 然后 我们继续来研究 透视裁剪工具 切换到 透视裁剪工具 后 我们先点击左上方的清除 先不要这些多的配置 然后 我们可以先用鼠标在图像上 画出一个局域 然后 我们去拖他四个角中的其中一个 就能拖出一些不同的形状 然…...

每日一个C库函数-#1-memset()

每日一个C库函数-#1-memset() 来源 C 标准库 - <string.h> 声明 void *memset(void *str, int c, size_t n);str&#xff1a;要填充的内存块&#xff1b;c&#xff1a;要被设置的值&#xff08;以何值填充&#xff09;。该值以 int 形式传递&#xff0c;填充内存块时…...

GraphQL基础知识与Spring for GraphQL使用教程

文章目录 1、数据类型1.1、标量类型1.2. 高级数据类型 基本操作2、Spring for GraphQL实例2.1、项目目录2.2、数据库表2.3、GraphQL的schema.graphql2.4、Java代码 3、运行效果3.1、添加用户3.2、添加日志3.3、查询所有日志3.4、查询指定用户日志3.5、数据订阅 4、总结 GraphQL…...

【SA8295P 源码分析】97 - QNX AIS Camera 框架介绍 及 Camera 工作流程分析

【SA8295P 源码分析】97 - QNX AIS Camera 框架介绍 及 Camera 工作流程分析 一、QNX AIS Server 框架分析二、QNX Hypervisor / Android GVM 方案介绍三、Camera APP 调用流程分析四、QCarCam 状态转换过程介绍五、Camera 加串-解串 硬件链路分析六、摄像头初始化检测过程介绍…...

威胁的数量、复杂程度和扩散程度不断上升

Integrity360 宣布了针对所面临的网络安全威胁、数量以及事件响应挑战的独立研究结果。 数据盗窃、网络钓鱼、勒索软件和 APT 是最令人担忧的问题 这项调查于 2023 年 8 月 9 日至 14 日期间对 205 名 IT 安全决策者进行了调查&#xff0c;强调了他们的主要网络安全威胁和担忧…...

NSSCTF web 刷题记录2

文章目录 前言题目[广东强网杯 2021 团队组]love_Pokemon[NCTF 2018]Easy_Audit[安洵杯 2019]easy_web[NCTF 2018]全球最大交友网站prize_p2[羊城杯 2020]easyser[FBCTF 2019]rceservice方法一方法二 前言 今天是2023年9月13号&#xff0c;刷题记录2正式开始。时间来到九月十七…...

Linux驱动之INPUT子系统框架

目录 一、input 子系统简介 二、input 驱动编写流程 1、注册 input_dev 2、上报输入事件 三、input_event 结构体 按键、鼠标、键盘、触摸屏等都属于输入(input)设备&#xff0c; Linux 内核为此专门做了一个叫做 input子系统的框架来处理输入事件。输入设备本质上还是字符设…...

AWS Shell异步操作:非阻塞命令执行的终极指南

AWS Shell异步操作&#xff1a;非阻塞命令执行的终极指南 【免费下载链接】aws-shell An integrated shell for working with the AWS CLI. 项目地址: https://gitcode.com/gh_mirrors/aw/aws-shell AWS Shell是一款专为AWS CLI设计的强大交互式生产力工具&#xff0c;它…...

Java 25记录模式深度实战:手把手带你用模式匹配解构嵌套记录,效率提升47%(JVM实测数据)

第一章&#xff1a;Java 25记录模式的演进脉络与核心突破记录模式&#xff08;Record Patterns&#xff09;作为 Java 21 首次以预览特性引入、并在 Java 22 进一步增强、最终于 Java 25 正式成为标准特性的关键语言机制&#xff0c;标志着 Java 在模式匹配演进道路上完成从“解…...

不用编译!快速修改Scratch-blocks积木字体的偷懒方法

零编译实战&#xff1a;Scratch-blocks字体调整极简方案 在Scratch 3.0的二次开发过程中&#xff0c;积木字体过小是开发者普遍遇到的痛点。官方移除了字体调节功能后&#xff0c;低分辨率设备上的中文显示尤为模糊。传统解决方案需要配置Python环境并重新编译scratch-blocks库…...

Windows Auto Dark Mode:智能主题切换工具的全面应用指南

Windows Auto Dark Mode&#xff1a;智能主题切换工具的全面应用指南 【免费下载链接】Windows-Auto-Night-Mode Automatically switches between the dark and light theme of Windows 10 and Windows 11 项目地址: https://gitcode.com/gh_mirrors/wi/Windows-Auto-Night-M…...

Vulnhub靶机实战:Momentum-2渗透测试全流程解析

1. 靶机环境搭建与网络配置 Momentum-2是Vulnhub平台上经典的Web渗透测试靶机&#xff0c;模拟了真实环境中常见的漏洞组合。我们先从最基本的虚拟机配置开始说起。下载完OVA文件后&#xff0c;用VMware Workstation导入时会遇到一个小坑——系统会提示"重试"&#…...

让 TDengine 在 JetBrains IDEs 里更像“原生数据库”一点

让 TDengine 在 JetBrains IDEs 里更像“原生数据库”一点 Author: ChangJin Wei (魏昌进) 最近我做了一个小插件&#xff0c;把 TDengine 接入到了 JetBrains IDEs 的数据库工具链里。 先埋个小提示&#xff1a;文末有彩蛋。 项目地址&#xff1a; GitHub: https://github.…...

终极游戏画质升级指南:用OptiScaler解锁全显卡超采样自由

终极游戏画质升级指南&#xff1a;用OptiScaler解锁全显卡超采样自由 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler OptiScaler是…...

元素偏析系数计算:从概念到实际应用

元素偏析系数计算(Pandat代算或自己操作) 实例32: 偏析系数k是指在熔体凝固过程中&#xff0c;溶质元素在固相和液相中浓度的比值。 通过计算偏析系数&#xff0c;可以预测在凝固过程中某一溶质元素的分布情况&#xff0c;从而帮助设计合金的微观组织结构。 偏析系数 k1 则倾向…...

告别手动:Python/Shell双环境实战,让Certbot自动续期通配符证书稳如泰山

Python/Shell双环境实战&#xff1a;Certbot自动续期通配符证书的终极方案 当你的服务器集群同时存在Python和Shell环境时&#xff0c;如何构建一个统一的证书自动化管理体系&#xff1f;这个问题困扰着许多技术负责人。通配符证书的自动续期看似简单&#xff0c;但在混合技术栈…...

如何高效捕获网页媒体资源?猫抓插件让智能嗅探变得如此简单

如何高效捕获网页媒体资源&#xff1f;猫抓插件让智能嗅探变得如此简单 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否遇到过想保存网页上的精彩视频却找不到下载按钮的尴尬&#xff1f;是否曾…...