FPGA图像处理
文章平均质量分 94
bt_
这个作者很懒,什么都没留下…
展开
-
FPGA图像处理0_概述及设计原则
概述目前实时图像处理的硬件主要是 FPGA、GPU 和 DSP 三类。从笔者的开发经验来看,FPGA 以其实时性和灵活性占据主流;GPU 虽然不及DSP应用广泛,但是随着开发技术逐步升级和性能逐步提升,以及 DSP 技术自身的没落(个人观点,不讨论),GPU 在某些特定场景下可能是更优于 FPGA 的首选。本系列文章主要说明基于 Xilinx FPGA 的实时图像处理。虽然 FPGA 开发用的...原创 2019-09-03 15:56:11 · 1038 阅读 · 0 评论 -
FPGA图像处理12_常用算法_饱和度调节
饱和度调节饱和度调整的算法很多,基本上是越复杂的算法,调整后的图像视觉效果越好。由于FPGA 不善长复杂的浮点运算,另一方面由于本文定位于基本的图像处理算法,此处只选择一种比较简单的饱和度算法。设当前输入像素值位宽为 8,RGB 三通道数值为 r、g、b,三个数值间最大值为 max,最小值为 min。如果 max=minmax=minmax=min,则当前像素点不用调节,直接输出原像素值。...原创 2019-09-05 15:49:12 · 1787 阅读 · 1 评论 -
FPGA图像处理11_常用算法_亮度及对比度调节
亮度及对比度调节亮度及对比度需要根据数值配合一齐调节,以达到更新的视觉效果。如果是 RGB 彩色图像,亮度与对比度调节需要在所有颜色通道上进行相同的调节。设当前像素点位宽为 8,则像素值范围 0~255。设当前像素点值为 x,调节输出像素点值为 y。设亮度参数b范围 -1~1,则有亮度调节公式:yb=x+255×by={0yb≤0255yb≥255yb0<yb&l...原创 2019-09-05 15:45:11 · 3466 阅读 · 4 评论 -
FPGA图像处理10_常用算法_图像锐化
锐化锐化即在图像上增强显示图像内容的边缘成分。根据边缘成分的计算方法,常用的方法有高斯滤波锐化和拉普拉斯滤波锐化。高斯滤波锐化将原始图像 x 减去高斯滤波(相当于低通滤波)后得到的平滑图像 gaussian(x),计算得到边缘图像 z:z=x−gaussian(x)z=x-gaussian(x)z=x−gaussian(x)拉普拉斯滤波锐化直接使用拉普拉斯滤波(相当于高通滤波)得到边...原创 2019-09-05 15:40:24 · 3126 阅读 · 1 评论 -
FPGA图像处理9_常用算法_直方图均衡
直方图均衡直方图均衡算法通过将各颜色通道的像素点数值间距拉大,实现在当前颜色通道内像素点数值的大幅差异,增强视觉效果。除此以外,在图像传感器输入的像素值位宽与实际用于显示的像素值位宽不一致的情况下,直方图均衡算法也常用于像素点位宽的转换。对于 RGB 图像,可以先将其转化为 YUV 图像,仅对 Y 通道执行直方图均衡算法后,再由 YUV 图像转化为 RGB 图像,实现彩色图像的增强。一般情况...原创 2019-09-05 15:35:38 · 1909 阅读 · 4 评论 -
FPGA图像处理8_常用算法_中值滤波去噪
中值滤波去噪中值滤波是一种算法简单,效果较好的“高性价比”去噪算法。算法原理是使用图像内二维滑窗的中值(全部像素点数值排序位于中间位置的数值为中值)代替当前像素点值。如下图的 3×33\times 33×3 滑窗内,处于滑窗中心的当前像素点值为 8,滑窗内全部 9 个像素点的中值为 5,中值滤波即用数值 5 代替当前像素点值 8:以 3×33\times 33×3 中值滤波为例,首先将图...原创 2019-09-05 09:11:50 · 2457 阅读 · 10 评论 -
FPGA图像处理7_常用算法_解 Bayer 格式
DebayerDebayer 算法译成中文为解 Bayer 格式。Bayer 格式指的是大多数彩色图像传感器在每个像素点位置只感应 RGB 三通道中一个通道的颜色,用于节约制造成本。而且由于人眼对绿色较为敏感,50% 的像素点感应 G,25% 的像素点感应 R,25% 的像素点感应 B。不同型号的图像传感器像素点的 RGB 分布不同,比较典型的分布如下图所示:由于每个像素点只有 1 个颜...原创 2019-09-05 09:08:11 · 2910 阅读 · 1 评论 -
FPGA图像处理6_常用算法_RGB图像转灰度图像
RGB 图像转灰度图像RGB 图像转灰度图像的计算,即由当前像素点的 RGB 值计算 YUV 色域的 Y 通道的数值RGB 计算 Y 通道数值的计算公式:Y=0.299×R+0.587×G+0.114×BY=0.299\times R+0.587\times G+0.114\times BY=0.299×R+0.587×G+0.114×B在 FPGA 实现时,为了节约计算资源,将小数乘...原创 2019-09-05 09:01:27 · 1252 阅读 · 0 评论 -
FPGA图像处理5_基础功能_双线性插值(原理)
双线性插值双线性插值是常用的插值算法,是许多图像处理算法的组成部分。双线性插值由包围当前目标像素点的4个像素点的数值通过与当前像素点的相对位置偏移进行插值计算。如下图所示:由 4 个红点的数值通过双线性插值计算中间绿点的数值 g。公式如下:g=(w−xw×h00+xw×h01)×h−yh+(w−xw×h10+xw×h11)×yhg=(\frac{w-x}{w}\times h00+...原创 2019-09-03 16:42:26 · 1679 阅读 · 2 评论 -
FPGA图像处理4_基础功能_二维卷积滤波
二维卷积滤波二维卷积是常用的图像处理算法,即图像滑窗内的并行数据按滑窗内的坐标与卷积核函数对应坐标的参数相乘后,将所有乘法积值相加得到卷积滤波结果。但是由于卷积核函数大多数情况下都包含小数部分,在 FPGA 内执行浮点数乘法将占用大量资源。比较常用的处理方法是将核函数内各元素数值都乘以 2 的指数,将小数部分放大至整数部分,并且根据核函数的生成原理选择足够大的指数值以保证各元素间的差异。最终在...原创 2019-09-03 16:39:35 · 1099 阅读 · 0 评论 -
FPGA图像处理3_基础功能_二维缓冲
二维缓冲二维缓冲的功能是将串行的像素点数据转化为并行的多个像素点的滑窗,将滑窗内的坐标中心点作为当前并行数据对应的像素点,一般用于插值计算或者二维卷积。由于二维缓冲主要是逻辑控制,不涉及数值计算,最简单的方法是使用 Verilog 实现,但是由于二维缓冲在图像处理算法中应用十分广泛,做成 sysgen 模块更适合在 sysgen 中直接调用。根据图像处理原理,大部分计算用的滑窗都是 3×33...原创 2019-09-03 16:35:02 · 1133 阅读 · 0 评论 -
FPGA图像处理2_基础功能_数据类型转换
浮点数与无符号整数转换图像处理算法在 sysgen 中实现,大多使用定点整数计算,并且为了与图像算法原理一致,定点整数也仅限于无符号整数。对于必须与小数相乘的算法,在 sysgen 实现时可以用乘以无符号整数后再进行截去低位的办法实现等效计算。但是如果小数计算的数值在不同情况下有多种不确定的数值,则无法用先乘法再截位的办法模拟,只能使用浮点数进行计算。由此必须将定点无符号整数转化为浮点数,完...原创 2019-09-03 16:28:47 · 871 阅读 · 0 评论 -
FPGA图像处理1_基础功能_像素点行列坐标生成
虽然在图像数据流水线中已包含行列坐标,但是一些算法由于其本身的设计必须由行有效信号 lv 重新生成行列坐标。令图像的列数目为 COLS,行数目为 ROWS。列坐标范围 0~(COLS-1)。行坐标范围 0~(ROWS-1)。基本设计思想是使用 2 个计数器分别计算列坐标和行坐标,当列坐标计数器计数至最大列坐标时,行坐标值增 1 。模块 Subsystem 封装后如下所示:rst 用于...原创 2019-09-03 16:18:59 · 1917 阅读 · 0 评论 -
FPGA图像处理13_常用算法_图像放大
图像放大此处只说明图像放大,不涉及图像缩小,因为大多数图像处理场景下图像缩小的需求可以直接使用像素点抽取的方式实现,而且在缩小之后还涉及到与需求关联紧密的图像拼接,很难有通用化的设计。算法原理坐标转换图像放大有以下关键设计:坐标转换:输出图像像素点坐标转化为输入图像内的坐标,并找到包围该坐标的像素点用于插值计算。数据缓冲:输入图像数据截取与缓冲,将用于插值计算的像素点值缓冲,并且在缓...原创 2019-09-29 08:08:04 · 3944 阅读 · 2 评论