本文针对咸鱼FPGA的FPGA实现人脸检测以及直方图拉伸进行原理学习。一、人脸识别大致流程获取人脸图像——肤色提取(Ycbcr+阈值)——滤波处理(中值、腐蚀膨胀)——人脸框选——显示肤色提取:顾名思义,将肤色从外界环境中提取出。在肤色识别算法中,常用YCbCr颜色空间(亮度、蓝色、红色分量),因为肤色在YCbCr空间受亮度信息的影响较小,从而肤色类聚性好,由此,在Ycbcr空间基础上,我们用人工阈值法将肤色与非肤色区域分开,最终形成二值图像,实现肤色的提取。滤波处理:人脸内部可能存在黑点、人脸外的某些地方也可能会被误检测为人脸,这些情况都会造成识别失败,因此加入中值滤波以及腐蚀、膨胀,这些之
文章目录 系列目录与传送门 一、概述 二、实现原理系列目录与传送门 《从底层结构开始学习FPGA》目录与传送门一、概述 记得刚接触FPGA的时候,总能看见类似这样的一句话----FPGA是基于查找表LUT的可编程逻辑器件。FPGA常常被人比作“数字积木”,就是因为底层资源的丰富和灵活,要做任何“玩具”(项目要实现的功能,也可以说是电路),只需要设计好“图纸”(RTL),即可使用积木(FPGA丰富的底层逻辑资源,如LUT、FF、MUX等等)来实现。 在最底层,可配置逻辑模块有着两种最基本的部件:触发器和查找表(L
文章目录 系列目录与传送门 一、概述 二、实现原理系列目录与传送门 《从底层结构开始学习FPGA》目录与传送门一、概述 记得刚接触FPGA的时候,总能看见类似这样的一句话----FPGA是基于查找表LUT的可编程逻辑器件。FPGA常常被人比作“数字积木”,就是因为底层资源的丰富和灵活,要做任何“玩具”(项目要实现的功能,也可以说是电路),只需要设计好“图纸”(RTL),即可使用积木(FPGA丰富的底层逻辑资源,如LUT、FF、MUX等等)来实现。 在最底层,可配置逻辑模块有着两种最基本的部件:触发器和查找表(L
DDR3设计,保姆式一站式教程,看这一篇文章就够了!鉴于笔者最初接触DDR3时,被MIG那一堆信号搞得一脸懵逼,网上各种查资料的艰难回忆,决定借鉴大佬们的经验结合笔者自己的理解,整理一篇DDR3设计指南,通俗易懂,2小时速成!目录一、DDR3简介二、DDR3的各个时钟频率及带宽分析三、DDR3IP核(MIG)的使用教程四、DDR3基础篇——读写测试五、DDR仿真篇六、DDR3高级篇——模块复用一、DDR3简介以下内容为DDR3硬件基础,选择重要的进行梳理一下,了解即可。但是若想从知其然到知其所以然,高手进阶,必须要对硬件原理了解透彻。Xilinx平台DDR3设计保姆式教程(1)DDR3基础简介
DDR3设计,保姆式一站式教程,看这一篇文章就够了!鉴于笔者最初接触DDR3时,被MIG那一堆信号搞得一脸懵逼,网上各种查资料的艰难回忆,决定借鉴大佬们的经验结合笔者自己的理解,整理一篇DDR3设计指南,通俗易懂,2小时速成!目录一、DDR3简介二、DDR3的各个时钟频率及带宽分析三、DDR3IP核(MIG)的使用教程四、DDR3基础篇——读写测试五、DDR仿真篇六、DDR3高级篇——模块复用一、DDR3简介以下内容为DDR3硬件基础,选择重要的进行梳理一下,了解即可。但是若想从知其然到知其所以然,高手进阶,必须要对硬件原理了解透彻。Xilinx平台DDR3设计保姆式教程(1)DDR3基础简介
多相滤波器(一)文章目录多相滤波器(一)多相抽取器多相插值器(多相内插器)利用对称性的多相插值器系数填充总结多相抽取器Figure3-26显示了多相抽取滤波器选项,它实现了计算高效的M对1多相抽取滤波器一组N个原型滤波器系数a0、a1…a(N-1)映射到M个多相子滤波器h0(n)、h1(n)…h(M-1)根据公式3-1:通过使用输入换向器将输入样本x(n)传递到它们的输入来访问多相段,该输入换向器从段索引i=M-1开始并递减到索引0。在换向器执行一个周期并将M个输入样本传送到滤波器后,单个输出被视为多相段输出的总和。输出采样率f1为f1=f/M其中f是输入数据流的采样率。观察到每个多相段都在低
多相滤波器(一)文章目录多相滤波器(一)多相抽取器多相插值器(多相内插器)利用对称性的多相插值器系数填充总结多相抽取器Figure3-26显示了多相抽取滤波器选项,它实现了计算高效的M对1多相抽取滤波器一组N个原型滤波器系数a0、a1…a(N-1)映射到M个多相子滤波器h0(n)、h1(n)…h(M-1)根据公式3-1:通过使用输入换向器将输入样本x(n)传递到它们的输入来访问多相段,该输入换向器从段索引i=M-1开始并递减到索引0。在换向器执行一个周期并将M个输入样本传送到滤波器后,单个输出被视为多相段输出的总和。输出采样率f1为f1=f/M其中f是输入数据流的采样率。观察到每个多相段都在低
文章目录前言一、LCD显示控制1.LCD显示一个字符2.LCD显示多个字符二、数字时钟输出1.数字时钟2.十进制数据拆分BCD码三、按键检测及LCD驱动1.按键检测2.LCD驱动四、总结前言软件实现了在4.3寸LCD左上角显示一个数字时钟,效果如下图所示。本文针对VGA/LCD控制时许有一定基础的人群,博主的开发环境为Quartus13.1和一个随便哪家的开发板,使用4.3寸LCD(RGB565接口),兼容VGA,但是相关参数需要更改。软件中部分代码模块借用野火电子的软件,感谢。后文以LCD进行说明。获取源代码、字模软件、rom初始化文件等点击此处一、LCD显示控制1.LCD显示一个字符LCD
文章目录前言一、LCD显示控制1.LCD显示一个字符2.LCD显示多个字符二、数字时钟输出1.数字时钟2.十进制数据拆分BCD码三、按键检测及LCD驱动1.按键检测2.LCD驱动四、总结前言软件实现了在4.3寸LCD左上角显示一个数字时钟,效果如下图所示。本文针对VGA/LCD控制时许有一定基础的人群,博主的开发环境为Quartus13.1和一个随便哪家的开发板,使用4.3寸LCD(RGB565接口),兼容VGA,但是相关参数需要更改。软件中部分代码模块借用野火电子的软件,感谢。后文以LCD进行说明。获取源代码、字模软件、rom初始化文件等点击此处一、LCD显示控制1.LCD显示一个字符LCD
一、跟据参考的STM32代码了解初始化流程 LCD初始化函数voidLCD_Init(void); 首先是LCD的复位voidLCD_RESET(void){ LCD_RST_CLR; //拉低复位引脚 Delay_Ms(100); //延时100ms LCD_RST_SET; //拉高复位引脚 Delay_Ms(50); //延时50ms}向LCD屏幕写入一个8位命令voidLCD_WR_REG(u8data){ LCD_CS_CLR; //拉低片选引脚 LCD_RS_CLR; //拉低dc引脚 SPI_WriteByte(SP