在经历了基础部分的恶补后,这一篇可以算是进入一个新阶段的学习的起点,前段的从流水灯开始一直到SDRAM的串口传图,传图硬
件电路搭建完成以后,可以做一些简单的图像变换处理展示。同时,从这一段开始,也会同步开始zynq的学习。
经参考过一系列的资料(包括小梅哥,正点原子,fpga开源工作室,咸鱼FPGA等),FPGA图像处理部分自己主要从MATLAB和
quartus两个部分学习,在MATLAB上进行算法的设计验证,得到效果图:quartus上进行fpga的实现验证。这一部分是基于SDRAM串
口传图,在数据导出的最后一部分对图像数据进行处理,也算是信号处理的开始吧。
星辰大海,就此起航!
一、RGB单通道灰度Gray转换
Gray 图像:灰度(gray)图像就是我们常说的黑白图像,由黑到白为灰阶为 0-255(8个bit)。
由tft需要的数据为RGB565格式数据,一共16位,单通道灰度转换即分别提取R\G\B三个通道的值,只保留一个进行16位的长度填充(我的理解原理是三原色同样比重以后是黑白色,即为灰度)。
二、MATLAB部分
代码:
效果图
三、FPGA部分
首先进行原理图设计,在SDRAM传图的基础上,最后加入RGB_gray模块,对最后输出信号进行处理。
RGB_gray模块没有时序,直接换图像数据位置
assign rgb_gray_out = {rgb_in[15:11],rgb_in[15:11],1'b0,rgb_in[15:11]}; //red
//assign rgb_gray_out = {rgb_in[15:11],rgb_in[15:11],1'b0,rgb_in[15:11]}; //green
生成rtl视图
上开发板验证结果图: