FPGA图像从0开始的基础

图像处理(image processing),用计算机对图像进行分析,以达到所需结果的技术。又称影像处理。图像处理一般指数字图像处理。数字图像是指用工业相机、摄像机、扫描仪等设备经过拍摄得到的一个大的二维数组,该数组的元素称为像素,其值称为灰度值。

一般来说,图像传感器采集过来的是模拟的电压信号,需要转换成数字信号才能够被处理,而这个过程就是采样和量化。采样的频率越高,得到的图像样本更逼真,图像质量也更好,但是随之而来的是需要浪费大量的存储资源。采样频率到底多少合适,才能够还原图像,Nyquist 定理给出了答案,图像的采样频必须大于源图像高频分量的两倍。量化就是值一个像素点有多少数值表示,比如8bit表示一个点,最多可以表示256种颜色;如果是24bit,可以表示2^24种颜色,也就是常说的真彩图像。,

图像处理常用的方法,图像变换,图像编码压缩 图像的增强和复原,图像分割,图像描述,图像识别等方法。

二、数字图像系统

一个典型的图像处理系统是由图像传感器、图像编码、图像处理器、显示设备、存储设备及控制设备几大部分组成。

FPGA图像从0开始的基础_第1张图片

(1) 图像传感器。常见的就两种CCD和CMOS;CCD传感器的灵敏度,分辨率,噪声控制等方面都优于CMOS;而CMOS传感器具有低成本,低功耗及高整合度的特点。目前两者的差异逐渐减少。此外,红外传感器的红外热像极大的填补了可见光图像的不足,因为所有自然界物体的温度辐射都在红外波段,它无需外界光源具有穿透烟雾的能力,

(2)图像编码与压缩的本质就是对将要处理的图像源数据按照一定的规则进行变换和组合,从而使得可以用尽可能少的符号来表示尽可能多的信息。源图像中常常存在各种各样的冗余:空间冗余、时间冗余、信息熵冗余、结构冗余、知识冗余等,这就使得通过编码来进行压缩称为了可能。

(3)图像处理器。图像处理器可以是以X86为硬件平台的PC,也可以是一个嵌入式图像处理器,例如TI公司的达芬奇系列专用数字视频处理器、ARM处理器及最近比较流行的FPGA。

(4)显示设备。与其相关的是接口,常见的有VGA、HDMI、MIPI接口等

(5)存储设备。负责对视频图像进行保存,常用到是DDR系列等

三、必备知识点

3.1 色彩分离技术

描述彩色图像一般由RGB三原色,因此需要三个颜色的图像传感器,这样的话对高分率的图像来讲,代价太大,因此考虑使用一种压缩技术,仅获取其中一个颜色分量,然后通过插值的方式计算出另外两个颜色分量;目前采用做多就是“拜尔阵列”基于人眼对于绿色分辨率大于红色和蓝色的原理。

FPGA图像从0开始的基础_第2张图片

3.2 色彩空间

常见的有RGB(红,绿,蓝),CMY(青,品红,黄)和CMYK,HIS(色调,饱和度,亮度),YUV(Y:灰度,u、v色彩及饱和度),Ycbcr(YUV模型的缩放和偏移的翻版);一般人们所说的YUV大多是指YCbCr。

YUV(256 级别)可以从8位 RGB 直接计算:

Y = 0.299 R + 0.587 G + 0.114 B

U = - 0.1687 R - 0.3313 G + 0.5 B + 128

V = 0.5 R - 0.4187 G - 0.0813 B + 128

反过来,RGB 也可以直接从YUV (256级别) 计算:

R = Y + 1.402 (Cr-128)

G = Y - 0.34414 (Cb-128) - 0.71414 (Cr-128)

B = Y + 1.772 (Cb-128)

3.3 自动曝光

Automatic Exposure Control 自动曝光控制:自动曝光算法测量各个区域的亮度,然后通过控制快门速度和光圈大小对过度曝光不足的区域进行补偿。

3.4 预处理

人眼的“伽马曲线”人眼对光线亮度的感应实际上是非线性的。因此需要伽马校正才能用于显示,同时传感器也会有缺陷的像素点,一种常用的预处理技术的中值滤波.

3.5 白平衡

白平衡(Automatic White Balance)。图像传感器不像人眼,对于颜色的感知极大的依赖于光照,人眼是看“山”是“山”;图像传感器会因为外界的光照条件,会产生“错觉”,因此,需要对于图像传感器来讲,需要将所看到的一切切换到同一组自然颜色下面状态就是白平衡。

3.6压缩算法

常见的图像压缩算法:JPEG,JPEG 2000,PNG以及GIF(Graphics Interchange Format),这个特别说明的就是GIF文件可以存多福彩色图像储,如果读出送到显示屏上显示,就可以看到一个最简单的动画了

常见的视频压缩算法:常见的有H.261,H.263以及H.264,其中,H.261是第一个使用的数字视频压缩国际标准,这里也不过多介绍

3.7视频显示处理

3.7.1.去隔行处理

隔行和逐行扫描,模拟电视的隔行视频,要在数字电视上显示,必须要做去隔行处理,隔行处理有好多方法,包括行倍增、行平均、中值滤波和运动补偿

3.7.2缩放和剪切

缩放就是缩减和放大,常用的方法是最临近插值法,双线性插值;剪切就是为了适应显示的分辨率人为的对每行或者每列丢失像素;

3.7.3.Alpha混合

常见的实例就是半透明图像叠加算法,采用公式:

输出值=a(前景显示的像素值)+(1-a)*(背景像素值)。其中a取值范围0~1.

3.7.4.合成操作

常见的实例就是视频显示的“画中画”模式,操作过程中需要定位一个叠图缓冲区到一个更大的图像缓冲区。

3.7.5.色度键控

一幅图特定颜色(往往是蓝色和绿色)被另一幅图像中的内容所取代的现象;可以很方便的将两幅视频图像合成起来。

四、FPGA图像处理

一般用软件实现图像处理,速度相对较慢,体积相对较大,不适合小型化;FPGA由于其并行特性,可以实现硬件加速,使其处理速度非常快,实时性非常高,其次低功耗,开发周期短,内部有丰富的可配置资源。缺点是数据处理能力差,不善于浮点数操作,

可以从以下方面来改善改善:

(1)这一点来说dsp更具有优势,可以使用DSP+FPGA架构进行图像处理是个不错的选择。

(2)可以使用软核:altera的niosII(软件开发环境EDS,采用AVALON总线);Xilinx的microblaze(软件开发环境 SDK,采用AXI总线)

(3)可以使用硬核:现在xilix推出的zynq系列,内嵌的双核ARM9,硬核,可以实现软硬协同设计,弥补两者的不足,,使用Vivado HLS 高级综合工具可以方便的用于图像处理领域,他突破了以往使用FPGA,用HDL语言进行系统设计的瓶颈。用C/C++/System C对信号或数字直接建模,然后通过VIVADO HLS 工具将其建立的模型转换为RTL级的模型,大大提高了FPGA设计的效率

你可能感兴趣的:(fpga开发,图像处理,计算机视觉)