基于TIC6000的DSP教学实验箱操作教程:5-18 RGB24图像灰度转换(LCD显示)

一、实验目的

学习RGB24图像灰度转换的原理,掌握图像的读取方法,并实现在LCD上显示灰度转换前后的图像。

二、实验原理

RGB24图像灰度转换

RGB颜色空间作为一种常用的彩色图像表示模型,分别用红(R)、绿(G)、蓝(B)三原色的组合来表示每个像素的颜色。一般情况下,RGB彩色图像灰度化有三种转化方案:

(1)加权平均法

(2)平均值法:对彩色图像的每个像素中的R、G、B三个分量的值进行简单的算术平均,将得到的平均值作为灰度图像对应像素的亮度值。

(3)最大值法:将彩色图像的每个像素中的R、G、B三个分量中的最大值作为灰度图对应像素的灰度值。

RGB24图像灰度转换:加权平均法

所谓加权平均法就是根据三基色的重要性及其他指标,将R、G、B三个分量以不同的权值进行加权平均。由于人眼对绿色的敏感最高,对蓝色敏感最低,因此我们可以按照下式对R、G、B三分量进行加权平均,则能得到较合理的灰度图像。

image.png

而实际应用时,希望避免低速的浮点运算,所以需要整数算法,变种的公式:

Gray = (R30 + G59 + B*11 + 50) / 100

整数算法已经很快了,但是最后的除法仍制约了速度。移位比除法快多了,所以可以将系数缩放成 2 的整数幂。

本实验使用8位精度,2 的 8次幂是256,所以这样计算系数

0.299 * 256 = 76.544 ≈ 76

0.587 * 256 + (0.544) = 150.272 + 0.264 = 150.816 ≈ 150

0.114 * 256 + (0.816) = 29.184 + 0.896 = 30.08

由于四舍五入会有较大的误差,所以将以前的计算结果的误差一起计算进去,舍入方式是去尾法。移位优化之后,8位精度系数,如下:

Gray = (R76 + G150 + B*30) >> 8

程序流程设计

程序流程设计中首先要进行外设使能配置,接着进行LCD管脚复用配置和LCD中断配置,然后进行LCD显示的初始化,最后读取工程目录下的BMP图像并进行RGB24图像的灰度转换处理,将图像数据显示到LCD上。

image.png

三、操作现象

实验设备

本实验使用的硬件接口为LCD,所需硬件为实验板、仿真器、LCD和电源。

image.png

硬件连接

(1)连接仿真器和电脑的USB接口,

(2)将拨码开关拨到DEBUG模式01111,连接实验箱电源,拨动电源开关上电。

image.png

软件操作

导入工程,选择Demo文件夹下的对应工程

编译工程,生成可执行文件

将CCS连接实验箱并加载程序

程序加载完成后点击运行程序

运行程序后,CCS的Console窗口会打印相关信息,同时LCD会显示标题。

稍等片刻后,图像处理完成,LCD会显示灰度转换处理前后的图片。

实验结束后,先点击黄色按钮暂停程序运行,再点击红色按钮退出CCS与实验箱的连接,最后实验箱断电即可。

image.png

image.png

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

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

相关文章

《代码整洁之道之程序员的职业素养》-专业主义

专业主义有很深的含义,它不但象征着荣誉和骄傲,而且明确意味着责任和义务担当责任,“为了按时交付软件,没测例行程序,测试例行程序需要几个小时,当时必须交付软件,因为故障修复部分都不涉及例行…

文件摆渡系统如何实现网络隔离后的数据交换、业务流转?

近年来全球网络安全威胁态势的加速严峻,使得企业对于网络安全有了前所未有的关注高度。即便没有行业性的强制要求,但在严峻的安全态势之下,企业的网络安全体系建设正从“以合规为导向”转变到“以风险为导向”,从原来的“保护安全…

鸿蒙系列--动态共享包的依赖与使用

一、前言 HarmonyOS的共享包相当于Android的Library,在HarmonyOS中,给开发者提供了两种共享包,HAR(Harmony Archive)静态共享包,和HSP(Harmony Shared Package)动态共享包 区别&…

Python从入门到网络爬虫(函数详解)

前言 函数是变成语言中最常见的语法,函数的本质就是功能的封装。使用函数可以大大提高编程效率与程序的可读性。函数是能够实现特定功能的计算机代码而已,他是一种特定的代码组结构。 函数的作用 1.提升代码的重复利用率,避免重复开发相同代…

js——json对象相互转化——js基础积累

js——json对象相互转化——js基础积累 需求场景解决步骤1:定义一个变量接收此字段,方便处理解决步骤2: { 外面的双引号要去掉解决步骤3:使用正则去除参数中的\\解决步骤4:如果此参数必须以{开头,以}结尾解…

一文快速了解超声功率放大器基础知识

超声功率放大器是一种电子设备,用于放大超声信号的能量。它在多个领域中发挥重要作用,包括医疗、工业、科学研究等。超声功率放大器通过将输入信号的能量放大到所需的级别,以便更好地驱动其他设备或实现特定的应用。下面就给大家介绍一下超声…

C++ 多态向上转型详解

文章目录 1 . 前言2 . 多态3 . 向上转型4 . 总结 【极客技术传送门】 : https://blog.csdn.net/Engineer_LU/article/details/135149485 1 . 前言 此篇博文详解C的多态向上转型平台 : Qt 2 . 多态 【Q】什么是多态? 【A】解释如下 : 通俗来说,就是多种形态,具体…

2024,这将是量子计算的真正挑战

2023年,一项项量子计算纪录被打破。 谷歌量子AI团队证明了将多个量子比特分组合成为一个逻辑量子比特的纠错方法可以提供更低的容错率。以往的纠错研究随着比特数的增加,错误率会提高,都是“越纠越错”,而这次谷歌首次实现了“越纠…

【springboot+mybatis实现CURD模版项目-Jesus】

springbootmybatis实现CURD模版项目-Jesus STEP 1 项目创建 1.1 新建Spring Initializr项目   1.2 选择需要的依赖 springboot有2.7.2直接选272STEP 2 配置更改 2.1更改maven配置   2.2 检查项目配置jdk、sdk、jre版本一致   2.3 检查pom文件,Maven-Reload pr…

grep笔记240103

常用选项:: -i:忽略大小写进行匹配。 -v:反向匹配,只打印不匹配的行。 -n:显示匹配行的行号。 -r:递归查找子目录中的文件。 -l:只打印匹配的文件名。 -c:只打印匹配的行…

11-2 RHEL8配置YUM软件仓库及安装拼音输入法

配置本地YUM源 一、虚拟机关机>>虚拟机设置>>CD/DVD,关联ISO镜像文件,勾选“启动时连接”,点确定 二、开启虚拟机, 使用root用户登录。用df -h 命令可以看到光驱已经正常连接了。如果看不到/dev/sr0,需…

探索 Vue 实例方法的魅力:提升 Vue 开发技能(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

铁塔基站数字化管理监测解决方案

截至2023年10月,我国5G基站总数达321.5万个,占全国通信基站总数的28.1%。然而,随着5G基站数量的快速增长,基站的能耗问题也逐渐日益凸显,基站的用电给运营商带来了巨大的电费开支压力,降低5G基站的能耗成为…

CCF录用率怎么看?如何挑选合适的会议

写在前面 写此文是因为有同学问我如何确定自己能投稿的会议。首先,不建议直接用他人汇总好的数据(截稿时间和录用率),如果遇到更新不及时的很有可能耽误自己的工作。 平常,我都会自己收集预计投稿时间的会议信息&…

6张思维导图,js基础(基本概念,操作符,语句,Date,函数,数组,字符串)

一,js基本概念 二 ,js操作符 三,js基本语句 四,Date 常基本用方法汇总 五,数组基本及常用方法汇总 六,字符串基本及常用方法汇总 满满的都是干货。 附送250套精选项目源码 源码截图 源码获取:…

Ansible、Saltstack、Puppet自动化运维工具介绍

本文主要是分享介绍三款主流批量操控工具Ansible、Saltstack、Puppet主要对比区别,以及Ansible和saltstack的基础安装和使用示例,如果觉得本文对你有帮助,欢迎点赞、收藏、评论! There are many things that can not be broken&am…

【Java干货教程】Stream流详解

一、Stream流的简介 1.1、Stream流的概述 Stream是Java 8 API添加的一个新的抽象,称为流Stream,以一种声明性方式处理数据集合(侧重对于源数据计算能力的封装,并且支持序列与并行两种操作方式。 Stream流是从支持数据处理操作的…

npm发布js工具包

一、创建项目 1、在github上创建一个项目,然后拉取至本地,进入项目目录2、执行 npm init 生成json文件3、创建 src/index.ts 入口文件和 src/isObject.ts 工具方法 src/index.ts export { default as isObject } from ./isObject src/isObject.ts /…

[C#]yolov8-onnx在winform部署手势识别模型

【官方框架地址】 https://github.com/ultralytics/ultralytics.git 【算法介绍】 YOLOv8 是一个 SOTA 模型,它建立在以前 YOLO 版本的成功基础上,并引入了新的功能和改进,以进一步提升性能和灵活性。具体创新包括一个新的骨干网络、一个新…