伽马校正:FPGA

news2025/1/6 16:44:07

参考资料:

Tone Mapping 与 Gamma Correction - 知乎 (zhihu.com)

Book_VIP: 《基于MATLAB与FPGA的图像处理教程》此书是业内第一本基于MATLAB与FPGA的图像处理教程,第一本真正结合理论及算法加速方案,在Matlab验证,以及在FPGA上加速实现的书籍,填补了行业的空缺,书中选择了几十个图像处理算法进行硬件加速,希望真正能够让从业者了解如何采用FPGA进行加速,如何掌握精髓,改变未来。 这里,借用Gitee,托管本书相关的图像算法代码及相关资料等,与您共享。icon-default.png?t=N7T8https://gitee.com/crazybingo/Book_VIP* 代码是从这里拿来的程序改的。

目的:把图片变亮或变暗。

实现方法:查找表。

Gamma值0.6:

//Curve of Gamma = 0.6
module Gamma_06
(
   input		[7:0]	Pre_Data,
   output	reg	[7:0]	Post_Data
);

always@(*)
begin
	case(Pre_Data)
	8'h00 : Post_Data = 8'h00; 
	8'h01 : Post_Data = 8'h09; 
	8'h02 : Post_Data = 8'h0E; 
	8'h03 : Post_Data = 8'h12; 
	8'h04 : Post_Data = 8'h15; 
	8'h05 : Post_Data = 8'h18; 
	8'h06 : Post_Data = 8'h1B; 
	8'h07 : Post_Data = 8'h1D; 
	8'h08 : Post_Data = 8'h20; 
	8'h09 : Post_Data = 8'h22; 
	8'h0A : Post_Data = 8'h25; 
	8'h0B : Post_Data = 8'h27; 
	8'h0C : Post_Data = 8'h29; 
	8'h0D : Post_Data = 8'h2B; 
	8'h0E : Post_Data = 8'h2D; 
	8'h0F : Post_Data = 8'h2F; 
	8'h10 : Post_Data = 8'h30; 
	8'h11 : Post_Data = 8'h32; 
	8'h12 : Post_Data = 8'h34; 
	8'h13 : Post_Data = 8'h36; 
	8'h14 : Post_Data = 8'h37; 
	8'h15 : Post_Data = 8'h39; 
	8'h16 : Post_Data = 8'h3B; 
	8'h17 : Post_Data = 8'h3C; 
	8'h18 : Post_Data = 8'h3E; 
	8'h19 : Post_Data = 8'h3F; 
	8'h1A : Post_Data = 8'h41; 
	8'h1B : Post_Data = 8'h42; 
	8'h1C : Post_Data = 8'h44; 
	8'h1D : Post_Data = 8'h45; 
	8'h1E : Post_Data = 8'h47; 
	8'h1F : Post_Data = 8'h48; 
	8'h20 : Post_Data = 8'h49; 
	8'h21 : Post_Data = 8'h4B; 
	8'h22 : Post_Data = 8'h4C; 
	8'h23 : Post_Data = 8'h4D; 
	8'h24 : Post_Data = 8'h4F; 
	8'h25 : Post_Data = 8'h50; 
	8'h26 : Post_Data = 8'h51; 
	8'h27 : Post_Data = 8'h53; 
	8'h28 : Post_Data = 8'h54; 
	8'h29 : Post_Data = 8'h55; 
	8'h2A : Post_Data = 8'h56; 
	8'h2B : Post_Data = 8'h58; 
	8'h2C : Post_Data = 8'h59; 
	8'h2D : Post_Data = 8'h5A; 
	8'h2E : Post_Data = 8'h5B; 
	8'h2F : Post_Data = 8'h5C; 
	8'h30 : Post_Data = 8'h5E; 
	8'h31 : Post_Data = 8'h5F; 
	8'h32 : Post_Data = 8'h60; 
	8'h33 : Post_Data = 8'h61; 
	8'h34 : Post_Data = 8'h62; 
	8'h35 : Post_Data = 8'h63; 
	8'h36 : Post_Data = 8'h64; 
	8'h37 : Post_Data = 8'h66; 
	8'h38 : Post_Data = 8'h67; 
	8'h39 : Post_Data = 8'h68; 
	8'h3A : Post_Data = 8'h69; 
	8'h3B : Post_Data = 8'h6A; 
	8'h3C : Post_Data = 8'h6B; 
	8'h3D : Post_Data = 8'h6C; 
	8'h3E : Post_Data = 8'h6D; 
	8'h3F : Post_Data = 8'h6E; 
	8'h40 : Post_Data = 8'h6F; 
	8'h41 : Post_Data = 8'h70; 
	8'h42 : Post_Data = 8'h71; 
	8'h43 : Post_Data = 8'h72; 
	8'h44 : Post_Data = 8'h73; 
	8'h45 : Post_Data = 8'h74; 
	8'h46 : Post_Data = 8'h75; 
	8'h47 : Post_Data = 8'h76; 
	8'h48 : Post_Data = 8'h77; 
	8'h49 : Post_Data = 8'h78; 
	8'h4A : Post_Data = 8'h79; 
	8'h4B : Post_Data = 8'h7A; 
	8'h4C : Post_Data = 8'h7B; 
	8'h4D : Post_Data = 8'h7C; 
	8'h4E : Post_Data = 8'h7D; 
	8'h4F : Post_Data = 8'h7E; 
	8'h50 : Post_Data = 8'h7F; 
	8'h51 : Post_Data = 8'h80; 
	8'h52 : Post_Data = 8'h81; 
	8'h53 : Post_Data = 8'h82; 
	8'h54 : Post_Data = 8'h83; 
	8'h55 : Post_Data = 8'h84; 
	8'h56 : Post_Data = 8'h85; 
	8'h57 : Post_Data = 8'h86; 
	8'h58 : Post_Data = 8'h87; 
	8'h59 : Post_Data = 8'h88; 
	8'h5A : Post_Data = 8'h89; 
	8'h5B : Post_Data = 8'h89; 
	8'h5C : Post_Data = 8'h8A; 
	8'h5D : Post_Data = 8'h8B; 
	8'h5E : Post_Data = 8'h8C; 
	8'h5F : Post_Data = 8'h8D; 
	8'h60 : Post_Data = 8'h8E; 
	8'h61 : Post_Data = 8'h8F; 
	8'h62 : Post_Data = 8'h90; 
	8'h63 : Post_Data = 8'h91; 
	8'h64 : Post_Data = 8'h91; 
	8'h65 : Post_Data = 8'h92; 
	8'h66 : Post_Data = 8'h93; 
	8'h67 : Post_Data = 8'h94; 
	8'h68 : Post_Data = 8'h95; 
	8'h69 : Post_Data = 8'h96; 
	8'h6A : Post_Data = 8'h97; 
	8'h6B : Post_Data = 8'h97; 
	8'h6C : Post_Data = 8'h98; 
	8'h6D : Post_Data = 8'h99; 
	8'h6E : Post_Data = 8'h9A; 
	8'h6F : Post_Data = 8'h9B; 
	8'h70 : Post_Data = 8'h9C; 
	8'h71 : Post_Data = 8'h9C; 
	8'h72 : Post_Data = 8'h9D; 
	8'h73 : Post_Data = 8'h9E; 
	8'h74 : Post_Data = 8'h9F; 
	8'h75 : Post_Data = 8'hA0; 
	8'h76 : Post_Data = 8'hA1; 
	8'h77 : Post_Data = 8'hA1; 
	8'h78 : Post_Data = 8'hA2; 
	8'h79 : Post_Data = 8'hA3; 
	8'h7A : Post_Data = 8'hA4; 
	8'h7B : Post_Data = 8'hA5; 
	8'h7C : Post_Data = 8'hA5; 
	8'h7D : Post_Data = 8'hA6; 
	8'h7E : Post_Data = 8'hA7; 
	8'h7F : Post_Data = 8'hA8; 
	8'h80 : Post_Data = 8'hA9; 
	8'h81 : Post_Data = 8'hA9; 
	8'h82 : Post_Data = 8'hAA; 
	8'h83 : Post_Data = 8'hAB; 
	8'h84 : Post_Data = 8'hAC; 
	8'h85 : Post_Data = 8'hAD; 
	8'h86 : Post_Data = 8'hAD; 
	8'h87 : Post_Data = 8'hAE; 
	8'h88 : Post_Data = 8'hAF; 
	8'h89 : Post_Data = 8'hB0; 
	8'h8A : Post_Data = 8'hB0; 
	8'h8B : Post_Data = 8'hB1; 
	8'h8C : Post_Data = 8'hB2; 
	8'h8D : Post_Data = 8'hB3; 
	8'h8E : Post_Data = 8'hB3; 
	8'h8F : Post_Data = 8'hB4; 
	8'h90 : Post_Data = 8'hB5; 
	8'h91 : Post_Data = 8'hB6; 
	8'h92 : Post_Data = 8'hB6; 
	8'h93 : Post_Data = 8'hB7; 
	8'h94 : Post_Data = 8'hB8; 
	8'h95 : Post_Data = 8'hB9; 
	8'h96 : Post_Data = 8'hB9; 
	8'h97 : Post_Data = 8'hBA; 
	8'h98 : Post_Data = 8'hBB; 
	8'h99 : Post_Data = 8'hBC; 
	8'h9A : Post_Data = 8'hBC; 
	8'h9B : Post_Data = 8'hBD; 
	8'h9C : Post_Data = 8'hBE; 
	8'h9D : Post_Data = 8'hBF; 
	8'h9E : Post_Data = 8'hBF; 
	8'h9F : Post_Data = 8'hC0; 
	8'hA0 : Post_Data = 8'hC1; 
	8'hA1 : Post_Data = 8'hC2; 
	8'hA2 : Post_Data = 8'hC2; 
	8'hA3 : Post_Data = 8'hC3; 
	8'hA4 : Post_Data = 8'hC4; 
	8'hA5 : Post_Data = 8'hC4; 
	8'hA6 : Post_Data = 8'hC5; 
	8'hA7 : Post_Data = 8'hC6; 
	8'hA8 : Post_Data = 8'hC7; 
	8'hA9 : Post_Data = 8'hC7; 
	8'hAA : Post_Data = 8'hC8; 
	8'hAB : Post_Data = 8'hC9; 
	8'hAC : Post_Data = 8'hC9; 
	8'hAD : Post_Data = 8'hCA; 
	8'hAE : Post_Data = 8'hCB; 
	8'hAF : Post_Data = 8'hCB; 
	8'hB0 : Post_Data = 8'hCC; 
	8'hB1 : Post_Data = 8'hCD; 
	8'hB2 : Post_Data = 8'hCE; 
	8'hB3 : Post_Data = 8'hCE; 
	8'hB4 : Post_Data = 8'hCF; 
	8'hB5 : Post_Data = 8'hD0; 
	8'hB6 : Post_Data = 8'hD0; 
	8'hB7 : Post_Data = 8'hD1; 
	8'hB8 : Post_Data = 8'hD2; 
	8'hB9 : Post_Data = 8'hD2; 
	8'hBA : Post_Data = 8'hD3; 
	8'hBB : Post_Data = 8'hD4; 
	8'hBC : Post_Data = 8'hD4; 
	8'hBD : Post_Data = 8'hD5; 
	8'hBE : Post_Data = 8'hD6; 
	8'hBF : Post_Data = 8'hD6; 
	8'hC0 : Post_Data = 8'hD7; 
	8'hC1 : Post_Data = 8'hD8; 
	8'hC2 : Post_Data = 8'hD8; 
	8'hC3 : Post_Data = 8'hD9; 
	8'hC4 : Post_Data = 8'hDA; 
	8'hC5 : Post_Data = 8'hDA; 
	8'hC6 : Post_Data = 8'hDB; 
	8'hC7 : Post_Data = 8'hDC; 
	8'hC8 : Post_Data = 8'hDC; 
	8'hC9 : Post_Data = 8'hDD; 
	8'hCA : Post_Data = 8'hDE; 
	8'hCB : Post_Data = 8'hDE; 
	8'hCC : Post_Data = 8'hDF; 
	8'hCD : Post_Data = 8'hE0; 
	8'hCE : Post_Data = 8'hE0; 
	8'hCF : Post_Data = 8'hE1; 
	8'hD0 : Post_Data = 8'hE2; 
	8'hD1 : Post_Data = 8'hE2; 
	8'hD2 : Post_Data = 8'hE3; 
	8'hD3 : Post_Data = 8'hE4; 
	8'hD4 : Post_Data = 8'hE4; 
	8'hD5 : Post_Data = 8'hE5; 
	8'hD6 : Post_Data = 8'hE6; 
	8'hD7 : Post_Data = 8'hE6; 
	8'hD8 : Post_Data = 8'hE7; 
	8'hD9 : Post_Data = 8'hE7; 
	8'hDA : Post_Data = 8'hE8; 
	8'hDB : Post_Data = 8'hE9; 
	8'hDC : Post_Data = 8'hE9; 
	8'hDD : Post_Data = 8'hEA; 
	8'hDE : Post_Data = 8'hEB; 
	8'hDF : Post_Data = 8'hEB; 
	8'hE0 : Post_Data = 8'hEC; 
	8'hE1 : Post_Data = 8'hED; 
	8'hE2 : Post_Data = 8'hED; 
	8'hE3 : Post_Data = 8'hEE; 
	8'hE4 : Post_Data = 8'hEE; 
	8'hE5 : Post_Data = 8'hEF; 
	8'hE6 : Post_Data = 8'hF0; 
	8'hE7 : Post_Data = 8'hF0; 
	8'hE8 : Post_Data = 8'hF1; 
	8'hE9 : Post_Data = 8'hF2; 
	8'hEA : Post_Data = 8'hF2; 
	8'hEB : Post_Data = 8'hF3; 
	8'hEC : Post_Data = 8'hF3; 
	8'hED : Post_Data = 8'hF4; 
	8'hEE : Post_Data = 8'hF5; 
	8'hEF : Post_Data = 8'hF5; 
	8'hF0 : Post_Data = 8'hF6; 
	8'hF1 : Post_Data = 8'hF7; 
	8'hF2 : Post_Data = 8'hF7; 
	8'hF3 : Post_Data = 8'hF8; 
	8'hF4 : Post_Data = 8'hF8; 
	8'hF5 : Post_Data = 8'hF9; 
	8'hF6 : Post_Data = 8'hFA; 
	8'hF7 : Post_Data = 8'hFA; 
	8'hF8 : Post_Data = 8'hFB; 
	8'hF9 : Post_Data = 8'hFB; 
	8'hFA : Post_Data = 8'hFC; 
	8'hFB : Post_Data = 8'hFD; 
	8'hFC : Post_Data = 8'hFD; 
	8'hFD : Post_Data = 8'hFE; 
	8'hFE : Post_Data = 8'hFE; 
	8'hFF : Post_Data = 8'hFF; 
	endcase
end

endmodule

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

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

相关文章

106 uni-app 小程序之巨坑 not found path,not found methods v-for渲染出现报错

1.Component is not found in path 你是否像我一样,检查了无数遍,引入路径检查千万遍,就是没写错,小程序后台就是给你报错, 不用慌,心里默念:我不能砸电脑,我不能砸电脑&#xff0…

python可以做小程序研发嘛,python能做微信小程序吗

大家好,给大家分享一下python可以做微信小程序开发吗,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 大家好,给大家分享一下用python编写一个小程序,很多人还不知道这一点。下面详细解释一下用python代码…

[Spring 原理] 依赖查找

在Spring框架中,依赖注入是一项非常重要的功能,它能够帮助我们解决对象之间的依赖关系。而其中的doResolveDependency方法是Spring框架中执行依赖注入的核心方法之一。本篇博客将对doResolveDependency方法进行详细介绍,帮助读者更好地理解和…

手写题 - 实现一个带并发限制的异步调度器

题目 实现一个带并发限制的异步调度器 Scheduler,保证同时运行的任务最多有N个。 完善下面代码中的 Scheduler 类,使得以下程序能正确输出:class Scheduler {add(promiseCreator) { ... }// ... }const timeout (time) > new Promise(re…

Python 爬虫之下载视频(二)

爬取某Y的视频链接和标题 文章目录 爬取某Y的视频链接和标题前言一、基本思路二、程序解析阶段三、程序处理阶段总结 前言 这篇内容就简单给大家写个如何从网页上爬取某B主 主页 页面上所有的视频链接和视频标题。 这篇是基础好好看,下篇会根据这篇的结果做一个批…

八:爬虫-MySQL基础

一:MySQL数据库基础 1.MySQL数据库介绍 MySQL是一个[关系型数据库管理系统],由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Rela…

3D模型人物换装系统(二 优化材质球合批降低DrawCall)

3D模型人物换装系统 介绍原理合批材质对比没有合批材质核心代码完整代码修改总结 介绍 本文使用2018.4.4和2020.3.26进行的测试 本文没有考虑法线贴图合并的问题,因为生成法线贴图有点问题,放在下一篇文章解决在进行优化 如果这里不太明白换装的流程可以…

gem5 garnet l1 l2 cache的创建与相连

gem5 garnet l1 l2 cache的创建与相连 主要就是这个图: 细节 我们用的是gem5/configs/deprecated/example/fs.py #fs.py 引入了上两层路径,也就是当前可以看到 gem5/configs/路径。 addToPath("../../")#fs.py引入了gem5/configs/ruby/Ru…

PIC单片机项目(8)——基于PIC16F877A的温度光照检测装置的protues仿真

1.功能设计 使用PIC16F877A单片机,进行温度检测、光照检测。温度使用的是DS18B20,光照检测直接利用的AD转换。 光照太暗就开灯,温度太高就开风扇。温度阈值和光照阈值都实时显示在LCD1602屏幕上面。 完成了protues仿真。文件里面包含代码和仿…

图片转excel:“保留数字格式”在什么场景下该勾

保留数字格式是什么意思呢?顾名思义,就是将转出来的数字保留为数字格式,而不是文本格式。我们知道,OCR程序将图片上的文字识别为电脑可编辑的文字后,如果导入到excel不加处理,则单个数字过长的文字就会被ex…

Python整数常用的方法汇总与Python3 File(文件) 方法

Python整数常用的方法汇总 python3基础之整数常用的方法整理 希望对大家学习或者使用python3能具有一定的参考价值。 __abs__ #返回一个数的绝对值 __add__ #两数相加 __and__ #两数按位与操作 __bool__ …

04-JVM字节码文件结构深度剖析

一、源代码 package com.tuling.jvm;public class TulingByteCode {private String userName;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName userName;} }二、通过javap -verbose TulingByteCode .class反编译 //…

RobotFramework 自动化测试实战进阶篇

工具 Robotframework, 采用PO设计模式 PO模型 PO模型即Page Objects,直译意思就是“页面对象”,通俗的讲就是把一个页面,或者说把一个页面的某个区域当做一个对象,通过封装这个对象可以实现调用。 PO设计的好处 代码复用&…

python实现简单选择排序法

对于排序的方法中,简单选择排序法是相对符合人类的思维的一种方式,对于简单选择排序方法的核心思想是: 从待排序的序列集合中,找到最大值或者是最小值,然后将该值放置在其在最终的排序序列中的位置,也就是…

4.2 克隆

一,什么是克隆? 克隆是指通过共享缓冲区来复制内容(例如,两个窗口共享相同的内容)。 克隆可用于提高性能: 可以减少所需的更新次数。 你可以在多个显示器上显示内容,但只需要更新一个缓冲区…

信息论安全与概率论

目录 一. Markov不等式 二. 选择引理 三. Chebyshev不等式 四. Chernov上限 4.1 变量大于 4.2 变量小于 信息论安全中会用到很多概率论相关的上界,本文章将梳理几个论文中常用的定理,重点关注如何理解这些定理以及怎么用。 一. Markov不等式 假定…

大模型之二十一-小语言模型塞道开启

当前提到大语言模型,大家想到的都是动辄百亿规模以上参数量的模型,13B、70B都是稀疏平常入门级的,但是目前从模型层面来看,模型参数量的规模两极分化已经来临,早期各大公司为了效果怼上去,采取了简单粗暴的…

OpenSergo使用详解

简介 OpenSergo是一个基于微服务治理的标准和生态,覆盖了服务元信息、流量治理、服务容错、数据库/缓存治理、服务注册发现、配置治理等十几个关键领域,覆盖了完整的微服务生命周期(从开发态到测试态,到发布态,再到运…

DMR与DPMR以及DMR的分层

数字移动无线电 (DMR) 和数字专用移动无线电 (dPMR) 是数字对讲机中使用的流行通信技术。 与传统模拟无线电相比,这两种技术都提供了改进的音频质量、增强的安全功能和增加的网络容量。 但是,DMR 和 dPMR 无线电之间使用的技术存在重大差异&#xff…

字符串逆序输出

逆序输出就是本来abc输出的,然后我想让他输出成cba,那么我们还是要用到for循环,只不过原先是从零开始往上加,这回呢,是从上面往下减 我们观察上面这个图片,我们想要输出olleh,那么我们就要从4开…