基于FPGA的RGB到YCrCb颜色空间转换
FPGA数字图像处理基础:色彩空间转换(Verilog)
FPGA数字图像处理基础:色彩空间转换(Verilog)01图像色彩空间概述色彩本质上是不同频率的光,人眼对于不同频率光线的不同感受产生主观感知,从而得以区分不同的颜色。
尽管从客观上而言,色彩仅仅是不同频率的光,但从视觉角度而言,不同颜色的认知难度很大,因此引入色彩空间(Color Space)以便图像色彩的深入研究。
常见的色彩空间主要有:RGB、YUV(YCbCr)、Lab、HSV和CMY(CMYK)等。
1.1 RGB空间RGB空间是基于人眼识别的颜色所定义的色彩空间,以红(R,Red)、绿(G,Green)、蓝(B,Blue)三种基本色为基础进行不同程度的叠加而成。
红、绿、蓝作为三原色按亮度分别划分为256个等级,从而可以表示一千六百多万种不同的颜色,且每种颜色是唯一的。
RGB色彩空间的丰富性使其成为数字图像处理与显示的重要格式。
通常可将RGB色彩空间模型建立在笛卡尔坐标系中,采用空间坐标的形式表示出超过人眼分辨程度数量的颜色信息。
3.2 RGB生成灰度图像Verilog代码本节分析基于FPGA实现RGB生成灰度图算法,在Vivado和Matlab联合仿真的基础上,对Verilog转换实现结果在Matlab中展示,验证代码的可行性。
3.2.1 预处理操作类似于RGB转为YCbCr,由RGB生成灰度图中同样存在小数乘法与加法运算,FPGA不擅长小数处理,因此采用扩大2^n倍后向右移n位进行实现,具体实现方法如下:RGB生成灰度图算法:Gray = 0.299*R + 0.587*G + 0.114*B将方程扩大256倍后右移8位,算法依然等价:Gray= 256*(0.299*R + 0.587*G + 0.114*B)>>8算法推导得:Gray= (77*R + 150*G + 29*B)>>8算法转化为FPGA擅长的乘法与移位运算。
3.2.2 Verilog代码基于Matlab与Verilog联合仿真工程,添加格式转换模块cx_RGB_gray构建顶层top模块,对top进行仿真。
YYCbCr与RGB之间的转换关系
YYCbCr与RGB之间的转换关系1YUV空间简介YUV为亮度-色差形式的色彩空间格式,Y表示亮度,U, V表示色差。
YUV色彩空间中,主要有三种格式:YUV, YIQ和YCbCr。
YCbCr特指CCITT601 (CCITT后改名为ITU-T)规定的数字化后的色彩空间格式。
YUV特指JPEG图像压缩标准中规定的色彩空间格式。
YUV和YIQ的区别在于它们在色度矢量图中的位置不同而已,多了一个33度角的旋转。
YcbCr则为MPEG和H.26X标准所采纳。
注意,凡是标明符合ITU-T 601 或ITU-T 656接口标准的视频采集器/视频输入端口,其采集到的视频数据均为YCbCr格式,即使有关文档里用的是YUV字样,但实际上是YCbCr格式(U相当于Cb,V相当于Cr)。
比如:我们的PHILIPS 1300的VI,1500的AI, SAA7113等,均为YCbCr格式。
2YIQ和RGB之间的转换关系RGB到YIQ的转换关系如下式:Y = 0299 R + 0.587 G + 0.144 BI = 0.596R – 0.274G – 0.322 B (式1)Q = 0. 211R – 0.522 G + 0.311 BYIQ到RGB的转换关系为:R = Y + 0.956 I + 0.623 QG = Y – 0.272 I – 0.648 Q (式2)B = Y – 1.105 I + 0.705 Q3YUV和RGB之间的转换关系注意,这里的YUV特指JPEG图像压缩标准中规定的色彩空间格式。
在JPEG图像信息压缩标准中,规定R,G,B的范围为0~255,转换后的Y取值范围为0~255,U, V的取值范围为0 ~ 128。
RGB到YUV 的转换关系如下式:Y = 0.299 R + 0.587 G + 0.144 B ;U = -0.1678 R - 0.3313 G+ 0.5 B; (式3)V = 0.5 R - 0.4187 G - 0.0813 B;YCbCr到RGB的转换关系如下式:R = Y + 1.1402 VG = Y – 0.34414 U – 0.71414 V (式4)B = Y + 1.1772 U4YCbCr和RGB之间的转换关系注意,这里的YCbCr特指CCITT601规定的数字化后的色彩空间格式CCITT601,对R,G,B和Y,Cb,Cr之间的转换关系做了规定:亮度值Y的范围为16 ~235,色度值Cb,Cr的范围为16 ~240,YCbCr和RGB之间的转换关系可以由上面的(式3)和(式4)做如下转换才能得到正确的结果:Y = 219/255 * Y + 16 (等式左边的Y指的是YcbCr中的Y分量)Cb = 224/255 * U + 128Cr = 224/255 * V + 128即:Y = 0.2568 R + 0.504 G + 0.1237 B + 16Cb = -0.1474 R - 0.291 G+ 0.4392 B + 128 (式4)Cr = 0.4392 R - 0.3678 G - 0.0714 B + 128YCbCr到RGB之间的转换关系为:R = 1.16438 Y + 1.596 Cr – 222.92G = 1.16438 Y – 0.3917 Cb – 0.81297 Cr + 135.576 (式5)B = 1.16438 Y + 2.016Cb – 190.1655附录1:Converting Between YUV and RGB(From MS)It is frequently necessary to convert between YUV pixel formats (used by the JPEG and MPEG co mpression methods) and RGB format (used by many hardware manufacturers.) The following for mulas show how to compute a pixel's value in one format from the pixel value in the other format.YUV format allows for higher compression rates without a proportionately high loss of data, as the U and V portions can be highly compressed and computed from the non- or lowly-compr essed Y portion.Computer RGB888, or full-scale RGB, uses 8 bits each for the red, green, and blue channels. Blac k is represented by R = G = B = 0, and white is represented by R = G = B = 255. The 4:4:4 YUV f ormat uses 8 bits each for the Y, U, and V channels.************************************************************Converting RGB888 to YUV************************************************************The following formulas define the conversion from RGB to YUV:Y = ( ( 66 * R + 129 * G + 25 * B + 128) >> 8) + 16U = ( ( -38 * R - 74 * G + 112 * B + 128) >> 8) + 128V = ( ( 112 * R - 94 * G - 18 * B + 128) >> 8) + 128These formulas produce 8-bit results using coefficients that require no more than 8 bits of (unsign ed) precision. Intermediate results require up to 16 bits of precision.************************************************************Converting 8-bit YUV to RGB888************************************************************The following coefficients are used in conversion process:C = Y - 16D = U - 128E = V - 128Using the previous coefficients and noting that clip() denotes clipping a value to the range of 0 to 255, the following formulas provide the conversion from YUV to RGB:R = clip(( 298 * C + 409 * E + 128) >> 8)G = clip(( 298 * C - 100 * D - 208 * E + 128) >> 8)B = clip(( 298 *C + 516 *D + 128) >> 8)These formulas use some coefficients that require more than 8 bits of precision to produce each 8-bit result, and intermediate results require more than 16 bits of precision.Note All units range from 0 (zero) to 1.0 (one). In DirectDraw, they range from 0 to 255. Overflo w and underflow can (and does) occur, and the results must be saturated.To convert 4:2:0 or 4:2:2 YUV to RGB, convert the YUV data to 4:4:4 YUV, and then convert fro m 4:4:4 YUV to RGB.。
基于FPGA的多显示模式控制及色空间转换的开题报告
基于FPGA的多显示模式控制及色空间转换的开题报告一、研究背景随着计算机与数字媒体技术的发展,多显示模式系统已经成为现代电子设备中不可或缺的一部分。
在面对多种不同的显示设备时,需要考虑到不同的分辨率、色深及色彩空间等参数,因此需要对多种显示模式进行控制。
同时,不同的设备还可能采用不同的色彩空间标准,因此还需要进行色空间转换。
FPGA作为一种可编程逻辑器件,具有高度并行的计算能力和较低的功耗,同时可以自定义实现各种函数模块,因此在多显示模式控制及色空间转换方面有广泛应用。
二、研究内容本课题主要研究基于FPGA的多显示模式控制及色空间转换。
具体研究内容如下:1.设计多通道显示控制模块,支持多种常用显示模式,如VGA、HDMI、DP等,并能够根据设备要求进行分辨率和色深的调整。
2.实现视频数据读取与存储功能,支持多种视频格式和分辨率,如720p、1080p、4k等。
3.实现色彩空间转换功能,包括RGB与YUV、RGB与HSV、RGB与CMYK等不同的色彩空间之间的转换。
4.完成硬件设计与FPGA实现,验证系统的可行性与正确性。
三、研究意义本研究可实现多通道的显示控制和色彩空间转换,扩展了多重显示模式的应用范围,为数字媒体技术的发展提供了新的途径和方向。
通过硬件实现,可以大幅降低运行成本和功耗,同时提升处理速度和性能。
四、研究方法本研究采用硬件设计和FPGA实现的方式,主要包括以下步骤:1.根据功能需求设计多显示模式控制模块,并实现数据传输、分辨率和色深的调整功能。
2.设计视频数据读取和存储模块,并支持多种视频格式和分辨率。
3.研究各种色彩空间的转换算法,并将其实现为可编程逻辑器件中的模块。
4.将各个模块整合到一起进行硬件设计,并实现在FPGA中。
5.验证系统的可行性和正确性。
五、预期结果本研究预期可以设计并实现基于FPGA的多显示模式控制及色空间转换系统。
实现功能如下:1.支持多种显示模式,并能够根据设备要求进行分辨率和色深的调整。
基于FPGA视频处理系统的颜色空间转换
邮局订阅号:82-946360元/年技术创新PLDCPLDFPGA应用《PLC技术应用200例》您的论文得到两院院士关注基于FPGA视频处理系统的颜色空间转换AConversionofColorSpaceBasedonFPGAinVideoProcessingSystem(四川大学电子信息学院图像信息研究所)冷星星滕奇志卿粼波何小海LENGXing-xingTENGQi-zhiQINGLin-boHEXiao-meiI摘要:针对目前视频处理系统中应用比较广泛的YCbCr4:2:0格式的数据,提出了一种在硬件上实现颜色空间转换的设计,解决了色度信号的插值操作和插值后数据流的重组问题,并在FPGA上采用VerilogHDL语言得以实现。
关键词:YCbCr4:2:0;插值操作;VerilogHDL;FPGA中图分类号:TP274;TN79;TP391.41;TP334文献标识码:AAbstract:InallutiontotheYCbCr4:2:0dataformat,widelyusedinthevideoprocessingsystem,thisarticlepresentedahardwaredesignofcolorspaceconversion,resolvedthedifficultiesininterpolationoperationofchromasignalandregroupingofdatastream,andimplementedontheFPGAdevicewithVerilogHDLhardwaredescriptionlanguage.Keywords:YCbCr4:2:0;interpolation;VerilogHDL;FPGA文章编号:1008-0570(2008)08-2-0219-02引言数字视频产品常用的色彩编码方案是YCbCr,其中Y代表亮度信号;Cb,Cr代表色度信号。
数字RGB 与YCbCr 颜色空间转换的精度
0. 000 000 790 879 30 0. 999 999 647 644 04
0. 000 001 512 466 43 0. 000 000 726 928 71
0. 000 002 854 812 62 R
- 0. 000 000 279 251 10 G
( 3)
0. 999 997 919 876 10 B
的三色串扰问题. 针对这一现状, 文中对色空间转
换过程矩阵中系数的表示精度进行了讨论. 通过实
验分析, 提出了在选择适当的系数表示精度时, 既
可以有效地控制芯片制造中的成本, 又可以消除由 于色空间转换精度造成的三色串扰.
1 数字 RGB 转换为 Y CbC r 的精度
RG B( 0~ 255) 转换为 Y CbCr 的公式为[ 6] :
bri ghtness+ 16
12 8
12 8
由上式可以看到, YCbCr 格式可以方便地对原
始信号的亮度 ( brightness) 、对比度( contr ast ) 、饱和度
( saturation) 、色度( hue) 进行改变, 因而现今大多数 视频处理芯片都是将 YCbCr 格式作为视频信号的处
第 6 卷第 2 期 2007 年 4 月
江 南 大 学 学 报( 自 然 科 学 版) Journal of Southern Yangtze University( Natural Science Edition)
文章编号: 1671- 7147( 2007) 02- 0200- 03
V ol. 6 No . 2 Apr. 2007
使用了另一种视频信号格式 YCbCr, 便于对视频信
号处理. 下 式显示了对 YCbCr 格式的信 号进行视 频处 理[ 3] . 其 中 Y Cb Cr 为 处理 后 得 到的 信 号,
RGB彩色空间的不同转换公式
RGB彩色空间的不同转换公式RGB(红绿蓝)彩色空间是一种用于显示和处理彩色图像的一种方式,广泛应用于计算机图形学、数字图像处理、电视和摄影等领域。
RGB彩色空间的转换公式可以通过线性和非线性的方式来实现。
下面将介绍RGB彩色空间的不同转换公式。
1.RGB到CMYCMY(青色、品红、黄色)彩色空间是RGB的补色空间,用于打印和印刷等领域。
转换公式:C=1-RM=1-GY=1-B2.RGB到HSVHSV(色调、饱和度、明度)彩色空间是一种圆柱体坐标系统,用于人眼感知颜色。
转换公式:V = max(R, G, B)S = (V - min(R, G, B)) / VH = 0, if V = 060 * (G - B) / (V - min(R, G, B)), if V = R60 * (2 + (B - R) / (V - min(R, G, B))), if V = G60 * (4 + (R - G) / (V - min(R, G, B))), if V = B3.RGB到YUVYUV(亮度、色度U、色度V)彩色空间是一种用于视频和图像压缩的颜色表示方式。
转换公式:Y=0.299*R+0.587*G+0.114*BU=-0.169*R-0.332*G+0.500*B+128V=0.500*R-0.419*G-0.081*B+1284.RGB到YCbCrYCbCr(亮度、蓝彩色差、红彩色差)彩色空间是JPEG和MPEG图像压缩中使用的一种颜色表示方式。
转换公式:Y=0.299*R+0.587*G+0.114*BCb=-0.1687*R-0.3313*G+0.5*B+128Cr=0.5*R-0.4187*G-0.0813*B+1285.RGB到XYZXYZ彩色空间是一种基于人眼视觉特性定义的设备无关的颜色表示方式。
转换公式:6. RGB到LabLab彩色空间是一种设备无关的颜色表示方式,用于表示人眼视觉信号的三个特性:亮度、a色度和b色度。
基于FPGA的RGB到YCrCb颜色空间转换
基于FPGA的RGB到YCrCb颜色空间转换0 引言随着多媒体和通信技术的发展,视频图像处理的实时性成为人们关注的热点。
视频图像处理一般都是用数字信号处理器(digital signal processor,DSP) 来完成的。
为了满足实时性要求,往往采用多DSP 或DSP 阵列的方法,使系统在成本、重量、功耗等方面都会快速升高。
现场可编程门阵列(FPGA)运算的并行性和内嵌DSP 核等特点,能够提高运算速度满足视频处理的实时性要求。
在视频图像显示、处理时,采用的颜色空间主要有RGB,YCrCb 两种。
RGB基于三基色原理,颜色实现简单,在计算机、电视机显示系统中应用广泛,YCrCb 将颜色的亮度信号与色度信号分离,易于实现压缩,方便传输和处理。
在视频压缩、传输等应用中经常需要实现RGB 与YCbCr 颜色空间的相互变换。
这里推导出一种适合在FPGA 上实现从RGB 到YCbCr。
颜色空间变换的新算法,采用单片FPGA 完成电路设计,利用FPGA 内嵌DSP 核实现乘法运算,提高了转换算法的运行速度。
1 颜色空间在RGB 颜色空间中,自然界所有颜色都可以用红(R)、绿(G)、蓝(B)三种颜色的不同强度组合而重现。
RGB 的取值范围分别为0~255,表1 列出了几种颜色对应的R,G,B 取值。
RGB 生成颜色容易实现,被广泛应用在计算机、彩色电视机的显示系统中。
但是RGB 表示颜色的效率并不是很高,3 个颜色分量同等重要,而且亮度信息存在于所有颜色分量中,当需要对像素点的亮度或者色度值进行修改时,必须同时改变RGB 三者的值。
RGB颜色与CMYK颜色转换问题
RGB颜色与CMYK颜色转换问题---------------------------------------------------------------最新资料推荐------------------------------------------------------ RGB 颜色与CMYK颜色转换问题在报纸或杂志的排版过程中,经常会遇到对彩色图片的处理,当打开某一个彩色图片时,它可能是rgb 模式的,也可能是 cmyk 模式的。
那么在使用photoshop 时,是使用rgb 模式,还是使用cmyk 模式进行彩色图片处理呢?本文就这个问题谈一谈笔者的看法。
在使用 photoshop 处理图片的过程中,首先应该注意一点,对于所打开的一幅图片,无论是 cmyk 模式的图片,还是 rgb 模式的图片,都不要在这两种模式之间进行相互转,更不要将两种模式转来转去。
因为,在点阵图片编辑软件中,每进行一次图片色彩空间的转换,都将损失一部分原图片的细节信息。
如果将一个图片一会儿转成rgb 模式,一会儿转成cmyk模式,则图片的信息损失将是很大的。
这里应该说的是,彩色报纸出版过程中用于制版印刷的图片模式必须是 cmyk 模式的图片,否则将无法进行印刷。
但是并不是说在进行图片处理时以cmyk 模式处理图片的印刷效果就一定很好,还是要根据情况来定。
其实用photoshop处理图片选择rgb 模式的效果要强于使用cmyk 模式的效果,只要以rgb 模式处理好图片后,再将其转化为cmyk 模式的图片后输出胶片就可以制版印刷了。
1 / 7在进行图片处理时,如果所打开进行处理的图片本身就是rgb 模式的图片,或者原图片在使用扫描仪输入过程允许选择rgb 模式进行扫描,这种情况对于彩报的排版来说是再好不过了。
使用 photoshop 扫描原图片时只要在文件菜单栏中选择色彩设置选项中的 rgb 设置选项后,通过扫描仪输入的彩色图片即为 rgb 模式的图片。
基于FPGA的图像颜色空间变换设计
未来,新理论与算法的研究,处理算法更复杂、更智能,处理软件更加标准化和人性化。另外结合人和动物的视觉特性、心理学特性的研究进展和成果,近年来出现了一些研究热点,如小波分析、分形几何、遗传算法、模糊技术、人工神经网络等。处理器件向低成本、低电压、微功耗、微封装和环保型发展,处理系统向更快速度、更高密度、更大容量的系统级方向迈进。
The paper introduces the FPGA-based color space conversion design, the current image information processing is widely used in programmable logic device design and image processing technology, to overcome the long-term performing image processing on a computer dependent and the process slow shortcomings, and limited headroom poor lack the speed and design flexibility.The system Altera's Cyclone II FPGA family as the core control device, mainly to complete the video image color space conversion.In video compression,transmission and otherapplications often need toachieve mutualconversionRGBandYCbCrcolor space.Hereis derivedanewalgorithmforrealizationfrom RGBtoYCbCrcolorspace conversionin theFPGA.The hardware designisan important part ofthe over all design,hardwarelinkintoperipheral circuit section:EEPROMcircuit, SDRAMcircuit,crystal oscillator circuit,power supply circuit;the main chipparts:FPGAchip, VGAcircuit, JTAGcircuit..The whole design is on Altera's Quartus II development environment was logic synthesis and simulation. Simulation results show that the use of FPGA processing the image data is not only able to get good treatment effect, achieve higher operating frequency, processing speed is much higher than the software method of processing images, can meet the requirements of real-time image processing.
FPGA中Bayer到YCbCr图像格式转换的设计
【 本文献信息】李进文, 安博文. F P G A 中B a y e r 到Y C b C r 图像格式转换的设计[ J ] 。 电视技术, 2 0 1 3 , 3 7 ( 2 3 )
F P GA 中 B a y e r到 YC b C r图像格式转换的设计
李进 文 , 安博 文
【 K e y w o r d s 】F P G A; B a y e r p a t t e n; r C O ] O r p l a c e ; i m a g e s e n s o r
通常摄像机、 计算 机等设 备都采 用 R G B色彩空 间显 科技 ( Mi c r o n T e c h n o l o g y ) 公司的 M T 9 P 0 0 1 ( 1 / 2 . 5一I n c h
示所用的颜色。如果 R G B格式 的图像不进 行转换 , 直接 5一M e g a p i x e l C MO S D i g i t a l I m a g e S e n s o r ) 芯 片 。M T 9 P O 0 1 传输和处理 , 会 占用 大量 的带宽 和存 储空 间 , 不利于 传输 是 5 0 0万有效像 素的数字 图像传感器芯片 , 其最高有效 分 与处理 。另一方面由于人眼对亮度 的变化相 对 比对 色度 辨率为 2 5 9 2 H× 1 9 4 4 V, 每一个像 素的色彩分辨率为 l 2 的变化更为敏感 , 减 少带宽 引起 的颜色损 失很小 , 人 眼几 位 , 能捕获连续 视频 和按顺序 的单 帧图像信 息 , 可实现 物 乎感觉 不出来 ¨ 。因此在对 图像数据 的高速传输 与处理 体 的光 电信号转换 。F P G A模块实现对前端 C MO S S e n s o r 系统 中, 一般采用 Y C b C r 色彩空间图像 。 传输 的 B a y e r 格式数据进行处理 , 并转换成 Y C b C r 格式数 近年来 , 随着 C M O S工艺 的不 断发 展 , C M O S图像 传 据 , 最终送至后端视频处理系统进行 相关处理 。
Ycbcr空间,及和RGB之间转换关系
Ycbcr空间,及和RGB之间转换关系CbCr是DVD、摄像机、数字电视等消费类视频产品中,常⽤的⾊彩编码⽅案。
YCbCr不是⼀种绝对⾊彩空间,是YUV压缩和偏移的版本。
YCbCr其中Y是指亮度分量,Cb指蓝⾊⾊度分量,⽽Cr指红⾊⾊度分量。
⼈的⾁眼对视频的Y分量更敏感,因此在通过对⾊度分量进⾏⼦采样来减少⾊度分量后,⾁眼将察觉不到的图像质量的变化。
主要的⼦采样格式有YCbCr 4:2:0、YCbCr 4:2:2 和 YCbCr 4:4:4。
4:2:0表⽰每4个像素有4个亮度分量,2个⾊度分量 (YYYYCbCr),仅采样奇数扫描线,是便携式视频设备(MPEG-4)以及电视会议(H.263)最常⽤格式;4:2:2表⽰每4个像素有4个亮度分量,4个⾊度分量(YYYYCbCrCbCr),是DVD、数字电视、HDTV 以及其它消费类视频设备的最常⽤格式;4:4:4表⽰全像素点阵(YYYYCbCrCbCrCbCrCbCr),⽤于⾼质量视频应⽤、演播室以及专业视频产品。
// 其中R G B Y Cb Cr得取值均为0-255// RGB转换为YCbCr// |Y | |16 | |65.738 129.057 25.06 | |R|// |Cb| = |128| + (1/256) * |-37.945 -74.494 112.43| * |G|// |Cr| |128| |112.439 -94.154 -18.28| |B|Y = (66*R + 129*G + 25*B + 128)/256.0f + 16;Cb = (-38*R - 74*G + 112*B + 128)/256.0f + 128;Cr = (112*R - 94*G - 18*B + 128)/256.0f + 128;Y = (Y<0?0:(Y>255?255:Y));Cb =(Cb<0?0:(Cb>255?255:Cb));Cr =(Cr<0?0:(Cr>255?255:Cr));// YCbCr转换为RGB//|R| |298.082 0 408.58 | |Y -16 |//|G| = (1/256) * |298.082 -100.291 -208.12| * |Cb -128|//|B| |298.082 516.411 0 | |Cr -128|Y -= 16;Cb -= 128;Cr -= 128;R = (298*Y + 409*Cr + 128)/256;G = (298*Y - 100*Cb - 208*Cr + 128)/256;B = (298*Y + 516*Cb + 128)/256;R = (R<0?0:(R>255?255:R));G = (G<0?0:(G>255?255:G));B = (B<0?0:(B>255?255:B));。
用FPGA实现色空间RGB到YCbCr的转换
行 各种 转换 ,以便 在进行 算法 和其 它处 理 以前 ,
所 有 的输 入都被 转换成 同一种 色空 间 。 这些 转换
设计 对 于图像处 理 和滤 波等是很 有用 的 , 基本 其
功 能就是把 一种 色空 间转换到另一 种色空 间 。 本
YQ Y V Y br I 、 U 、 C C ,这三种色空 间互相关联又有 所 区别 。P L N S A 、 T C以及 S C E AM 系统 的 视频标
准 都使 用 Y V 色空间 。在 黑 白 电视系 统 中仅使 U
用 亮 度 Y信 息 ; 色 电视 系统 中 , 彩 除使 用亮 度 Y 信 息外 , 还使用 颜色信息 U、 N S V。 T C系统 的视频
度 。因此 , 了加快 操作速 度 , 多视 频标准 都使 为 很 用 亮度 信息 和两个 色差信息 。最 通用 的色空 间是
能多 。R B色空 间是一种 简单实用 的色 空间 , G 被
普遍 地使用 在计 算机 系统 和因特 网中 , 它使 得颜 色从 一个 平 台到 另外 一个 平 台的 映射 不 会 严 重 丢失颜 色信息 。R B是一种相 加成像 系统 , G 由红 绿蓝 三种 基色 叠加能 产生各 种需要 的颜 色 。 经过 伽 马校 正后 , 被表 示 为 R B G 。每个 元 素的 范 围从 0到 2 5 8 i , 5 (bt 三个 元 素均 为 0时 , ) 产生 黑 色 ; 均
Jun o  ̄ hn ol e ord fN ag C lg e
N . m 3 o6 7)
D e 20 e. 0 7
用 FG P A实现色空间 R B到 Y b r G C C 的转换
RGB与YCbCr颜色空间的转换
RGB与YCbCr颜⾊空间的转换YCbCr是YUV经过缩放和偏移的翻版,可以看做YUV的⼦集。
主要⽤于优化彩⾊视频信号的传输,使其向后相容⽼式⿊⽩电视。
与RGB视频信号传输相⽐,它最⼤的优点在于只需占⽤极少的频宽(RGB要求三个独⽴的视频信号同时传输)。
Y:明亮度(Luminance或Luma),也就是灰阶值。
“亮度”是透过RGB输⼊信号来建⽴的,⽅法是将RGB信号的特定部分叠加到⼀起。
U&V:⾊度(Chrominance或Chroma),作⽤是描述影像⾊彩及饱和度,⽤于指定像素的颜⾊。
“⾊度”则定义了颜⾊的两个⽅⾯─⾊调与饱和度,分别⽤Cr和CB来表⽰。
Cb:反映的是RGB输⼊信号蓝⾊部分与RGB信号亮度值之间的差异。
Cr:反映了RGB输⼊信号红⾊部分与RGB信号亮度值之间的差异。
在以下两个公式中RGB和YCbCr各分量的值的范围均为0-255。
RGB转换为YCbCr这个公式来⾃:Genesis Microchip. gm6010/gm6015 Programming Guide[M]. California US: Genesis Microchip Company, 2002:85-90|Y | |16 | |65.738 129.057 25.06 | |R||Cb | = |128| + (1/256) * |-37.945 -74.494 112.43| *|G||Cr | |128| |112.439 -94.154 -18.28| |B|即:Y = 0.257*R+0.564*G+0.098*B+16Cb = -0.148*R-0.291*G+0.439*B+128Cr = 0.439*R-0.368*G-0.071*B+128YCbCr转换为RGB这个公式来⾃:Genesis Microchip. gm6015 Preliminary Data Sheet[M]. California US: Genesis Microchip Company, 2001:33-34|R| |298.082 0 408.58 | |Y -16 ||G| = (1/256) * |298.082 -100.291 -208.12 | * |Cb-128 ||B| |298.082 516.411 0 | |Cr -128 |即:R = 1.164*(Y-16)+1.596*(Cr-128)G = 1.164*(Y-16)-0.392*(Cb-128)-0.813*(Cr-128)B = 1.164*(Y-16)+2.017*(Cb-128)。
RGB彩色空间与YCrCb色彩空间之间的相互转换研究背景意义
RGB彩色空间与YCrCb色彩空间之间的相互转换研究背景意义1研究的背景2研究的意义由于RGB彩色空间在计算机领域有着举足轻重的地位,色彩显示器使用红、绿、蓝3色来产生需要的颜色,然而在处理现实世界的图像时,RGB并非很有效。
而YCrCb格式的色彩空间易于实现压缩,方便传输和处理,它被广泛用于广播、电视,正是由于这一点,它也被广泛应用于计算机视频和图像处理中。
因而RGB 色彩空间与YCrCb色彩空间之间的相互转换具有广泛的应用空间和前景。
1研究的背景在数字图像处理过程中,为了提高处理的效率和精度,需要根据实际应用环境选择合适的颜色空间。
数字图像处理中常用的颜色空间有RGB、YUV、HSI等,它们具有不同的特性和适用范围,相互之间存在一定的转换关系,可根据实际需要进行相互转换。
随着计算机多媒体技术的发展,彩色图像处理技术在数字图像处理中得到了广泛的应用。
与灰度图像相比,彩色图像提供了更丰富的信息,能表达更多的信息,给人以更为丰富的视觉感受。
但同时也因信息量大而在传输和储存中给人们带来了新的挑战。
由于这些彩色图像采用不同的色彩空间表现而存在一定的冗余,而且不同的色彩空间适合不同的应用场合,如何有效地利用这些丰富多彩的颜色空间成为数字图像处理中一个新问题。
色彩空间把抽象的、主观的视觉感受具体化为三维空间中的位置和向量,使各种彩色图像、彩色设备的颜色特性都能实现可视化。
然而,由于人眼的感受不均匀,使得所观察到的颜色不能在颜色空间中完全表达。
到目前为止,没有一种颜色空间可以对颜色做出完全理想化的描述。
因此,在对彩色图像进行处理研究时,需要根据实际要求选择相应的颜色空间。
YUV色彩空间和RGB色彩空间是两种不同彩色空间的表示方法。
其中,YUV格式以其易于实现压缩,方便传输和处理被广泛运用于广播电视系统和及计算机视频、图像系统中。
RGB一般是显示屏幕的标准输入格式,因此实际应用中经常需要将YUV与RGB的色彩空间转换。
基于FPGA的RGB到YCbCr色空间转换
基于FPGA的RGB到YCbCr色空问转换金晓冬,常青(国防科技大学电子科学与通信工程学院湖南长沙410073)摘要:人类获得信息的主要方式是视觉。
通常情况下颜色有两种描述方式,一种用RGB色度空间表示,一种用YCb—Cr色度空间表示。
在视频处理过程中,通常获得显示的颜色用RGB色空间来表示,但为了降低带宽和存储量,引入了YCb—Cr色空间。
YCbCr色空问是亮度和色度的概念,而人眼对亮度和色度比较敏感,所以在传输过程中使用YCbCr色空间易于压缩,方便传输和处理,可以有效地降低带宽和存储量。
在此,通过Verilog语言实现RGB到YCbCr色空间的转换,并通过FPGA进行了验证,得到正确的结果。
关键词:RGB;YCbCr;Verilog语言;FPGA;转换中图分类号:TP368.1文献标识码:A文章编号:1004—373X(2009)18—073—03RGBtoYCbCrColorSpaceTransformBasedonFPGA一JINXiaodong,CHANGQing(ElectronicScience&CommunicationEngineeringCollege,NationalUniversityofDefenseTechnology,Changsha.410073,China)Abstract:Humanobtainsinformationmainlythroughvision.Undernormalcircumatances。
theretwokindsofcolorde—scription:RGBcolorspaceandYCbCrcolorspace.Inthevideoprocess,normallytheobtainedanddisplayedcolorsde—scribedbyRGB.YCbCrcolorspaceisintroducedtoreducethebandwidthandinformationstorge.YCbCrcolorspaceistheconceptofcolorandbrightness,andhuman’seyesmoresensitivebrightnessandcolor,SOusingYCbCrcolorspaceinthetransmissionisconvenientforcompacting,transmissionanddisposalandalsoeffectivelyreducesthebandwidthandinforma—tionstorge.TheconversionofRGBtoYCbCrisrealizedbyVeriloglanguageandverifiedthroughFPGA,thecorrectresultisgained.Keywords:RGB;YCbCr;Veriloglanguage;FPGA;transform0引言近年来,随着社会的进步,人们对图像及视频的质量要求越来越高。
色彩空间转换器:RGB 到 YCrCb
XAPP930 (v1.0.1) August 27, 2007
1
Parameterization
R
Parameterization
The design input parameters are listed in Table 1.
Table 1: Design Parameters
Design parameter FAMILY_HAS_MAC
Type
Range
Integer 0, 1
Notes 1, if target family has DSP48 like MAC unit (1)
FABRIC_ADDS
Integer 0,1
1, if adders/subtractors should be implemented in fabric. (1)
批注本地保存成功开通会员云端永久保存去开通
R
XAPP930 (v1.0.1) August 27, 2007
Application Note: Virtex-4, Virtex-II, Virtex-II Pro, Spartan-3
Color-Space Converter: RGB to YCrCb
R
Y
G
Cr
B H_SYNC_in V_SYNC_in
Cb H_SYNC_out
V_SYNC_out
PIX_K CE SCLR
x930_01_032106
Figure 1: RGB to YCrCb Pinout
To facilitate easy insertion to practical video systems, the reference design takes up to three stream control signals (H_SYNC, V_SYNC, and PIX_EN) and delays them appropriately, so that control signals can be easily synchronized with the output stream. The reference design does not use the control signals; therefore, connecting these signals is optional.
色度空间转换RGB空间到YCrCb按以下公式实现转换
色度空间转换RGB空间到YCrCb,按以下公式实现转换:Y = (0.299R + 0.587G + 0.114B);Cr = (0.511R - 0.428G - 0.083B) + 128;Cb = (-0.172R - 0.339G + 0.511B) + 128;1、定义10组RGB值作为测试向量(文件名:rgb_in.file),编写matlab程序按以上公式转换为YCrCb值。
2、编写可综合的Verilog代码程序(文件名:rgb_to_ycrcb.v)实现以上公式(需有时钟节拍,而非纯组合逻辑),要求添加File Header及Comment信息。
3、编写Testbench(文件名:tb_rgb_to_ycrcb.v),从测试向量文件(文件名:rgb_in.file)读取RGB测试向量值,生成的YCrCb值存入结果文件(文件名:ycrcb_out.file),同时生成波形文件tb_rgb_to_ycrcb.vcd。
4、Verilog仿真后生成的YCrCb值同matlab程序生成的YCrCb值进行比较,看是否一致,如不一致,请分析原因。
5、要求分别采用ModelSim和NCVerilog工具进行仿真,打印提交源代码及波形图,波形图中生成YCrCb值应对齐(即对应同一组RGB值转换而来,应在同一时钟Clock生成;如未对齐,则采用数据延迟。
rgb_to_ycbcr.v[csharp] view plaincopyprint?//************************************************************************//// Y = (0.299R + 0.587G + 0.114B); //// Cr = (0.511R - 0.428G - 0.083B) + 128; //// Cb = (-0.172R - 0.339G + 0.511B) + 128; ////*************************************************************************// `timescale 1ns/10psmodule rgb_to_ycbcr(clk,ngreset,R,G,B,Y,Cb,Cr);input clk,ngreset;input [7:0] R,G,B;output[7:0] Y,Cb,Cr;wire [7:0] Y,Cb,Cr;/************Y =(1_0011_0010R + 10_0101_1001G + 111_0101B)/1024*************/ reg [16:0] r_256_32;reg [12:0] r_16_2;reg [17:0] g_512_64;reg [12:0] g_16_8;reg [7:0] g_1;reg [14:0] b_64_32;reg [12:0] b_16_4;reg [7:0] b_1;always@(posedge clk or negedge ngreset)if(!ngreset)beginr_256_32<=17'h1ffff;r_16_2 <=13'h1fff;g_512_64<=18'h3ffff;g_16_8 <=13'h1fff;g_1 <=8'hff;b_64_32 <=15'h7fff;b_16_4 <=13'h1fff;b_1 <=8'hff;endelsebeginr_256_32<={R,8'd0}+{R,5'd0} ; r_16_2 <={R,4'd0}+{R,1'd0} ; g_512_64<={G,9'd0}+{G,6'd0} ; g_16_8 <={G,4'd0}+{G,3'd0} ; g_1 <=G;b_64_32 <={B,6'd0}+{B,5'd0} ; b_16_4 <={B,4'd0}+{B,2'd0} ; b_1 <=B;endreg[17:0] r_256_32_16_2;reg[17:0] g_512_64_16_8; reg[7:0] g_1_d1;reg[17:0] b_64_32_16_4;reg[7:0] b_1_d1;always@(posedge clk or negedge ngreset) if(!ngreset)beginr_256_32_16_2<=18'h3ffff;g_512_64_16_8<=18'h3ffff;g_1_d1 <=8'hff;b_64_32_16_4 <=18'h3ffff;b_1_d1 <=8'hff;endelsebeginr_256_32_16_2<=r_256_32+r_16_2;g_512_64_16_8<=g_512_64+g_16_8;g_1_d1 <=g_1; b_64_32_16_4 <=b_64_32+b_16_4;b_1_d1 <=b_1;endreg[17:0] y_r;reg[17:0] y_g;reg[17:0] y_b;always@(posedge clk or negedge ngreset) if(!ngreset)beginy_r <=18'h3ffff;y_g <=18'h3ffff;y_b <=18'h3ffff;endelsebeginy_r <=r_256_32_16_2;y_g <=g_512_64_16_8+g_1_d1; y_b <=b_64_32_16_4+b_1_d1; endreg[17:0] y_rg;reg[17:0] y_b_d1;always@(posedge clk or negedge ngreset) if(!ngreset)beginy_rg <=18'h0;y_b <=18'h0;endelsebeginy_rg <=y_r+y_g;y_b_d1 <=y_b;endreg[17:0] y_rgb;always@(posedge clk or negedge ngreset)if(!ngreset)y_rgb<=18'h0;elsey_rgb<=y_rg+y_b_d1;wire[7:0] y_tmp;assign y_tmp=y_rgb[17:10];/***************Cr = (10_0000_1011R - 1_1011_0110G - 101_0101B)/1024 + 128**************/reg[17:0] r_512_8;reg[9:0] r_2_1;reg[16:0] g_256_128;reg[13:0] g_32_16;reg[10:0] g_4_2;reg[14:0] b_64_16;reg[10:0] b_4_1;always@(posedge clk or negedge ngreset)if(!ngreset)beginr_512_8 <= 18'h1ffff;r_2_1 <= 10'h3ff;g_256_128<= 17'h1ffff;g_32_16 <= 14'h3fff;g_4_2 <= 11'h7ff;b_64_16 <= 15'h7fff;b_4_1 <= 11'h7ff;endelsebeginr_512_8 <={R,9'd0}+{R,3'd0} ; r_2_1 <={R,1'd0}+R;g_256_128<={G,8'd0}+{G,7'd0} ; g_32_16 <={G,5'd0}+{G,4'd0} ; g_4_2 <={G,2'd0}+{G,1'd0} ; b_64_16 <={B,6'd0}+{B,4'd0} ; b_4_1 <={B,2'd0}+B;endreg[17:0] r_512_8_2_1;reg[17:0] g_256_128_32_16; reg[10:0] g_4_2_d1;reg[17:0] b_64_16_4_1;always@(posedge clk or negedge ngreset)if(!ngreset)beginr_512_8_2_1 <=18'h3ffff;g_256_128_32_16 <=18'h3ffff;g_4_2_d1 <=11'hff;b_64_16_4_1 <=18'h3ffff;endelsebeginr_512_8_2_1 <= r_512_8+r_2_1;g_256_128_32_16 <= g_256_128+g_32_16; g_4_2_d1 <= g_4_2;b_64_16_4_1 <= b_64_16+b_4_1;endreg[17:0] r_512_8_2_1_d1;reg[17:0] g_256_128_32_16_4_2;reg[17:0] b_64_16_4_1_d1;always@(posedge clk or negedge ngreset)if(!ngreset)beginr_512_8_2_1_d1 <=18'h3ffff;g_256_128_32_16_4_2<=18'h3ffff;b_64_16_4_1_d1 <=18'h3ffff;endelsebeginr_512_8_2_1_d1 <=r_512_8_2_1;g_256_128_32_16_4_2<=g_256_128_32_16+g_4_2_d1; b_64_16_4_1_d1 <=b_64_16_4_1;endreg[17:0] cr_r;reg[17:0] cr_gb;always@(posedge clk or negedge ngreset)if(!ngreset)begincr_r <=18'd0;cr_gb<=18'd0;endelsebegincr_r <=r_512_8_2_1_d1;cr_gb<=g_256_128_32_16_4_2+b_64_16_4_1_d1;endreg[17:0] cr_rgb;always@(posedge clk or negedge ngreset) if(!ngreset)cr_rgb<=18'h0;else if(cr_r>cr_gb)cr_rgb<=cr_r-cr_gb;elsecr_rgb<=cr_gb-cr_r;wire[7:0] cr_rgb_d;assign cr_rgb_d=cr_rgb[17:10];reg[17:0] cr_r_d1;reg[17:0] cr_gb_d1;always@(posedge clk or negedge ngreset) if(!ngreset){cr_r_d1,cr_gb_d1}<=36'h0;else{cr_r_d1,cr_gb_d1}<={cr_r,cr_gb};reg[7:0] cr_tmp;always@(posedge clk or negedge ngreset)if(!ngreset)cr_tmp<=8'd0;else if(cr_r_d1>cr_gb_d1)cr_tmp<=8'd128+cr_rgb_d;elsecr_tmp<=8'd128-cr_rgb_d;/***********Cb = (-1011_0000R - 1_0101_1011G + 10_0000_1011B)/1024 + 128********/ reg[15:0] r_128_32;reg[12:0] r_16;reg[16:0] g_256_64;reg[9:0] g_2_1;reg[17:0] b_512_8;reg[9:0] b_2_1;always@(posedge clk or negedge ngreset)if(!ngreset)beginr_128_32<=16'hffff;r_16 <=13'h1fff;g_256_64<=17'h1ffff;g_2_1 <=10'h3ff;b_512_8 <=18'h3ffff;b_2_1 <=10'h3ff;endelsebeginr_128_32<={R,7'd0}+{R,5'd0} ; r_16 <={R,4'd0};g_256_64<={G,8'd0}+{G,6'd0} ; g_2_1 <={G,1'd0}+G ;b_512_8 <={B,9'd0}+{B,3'd0} ; b_2_1 <={B,1'd0}+B ;endreg[17:0] r_128_32_16;reg[17:0] g_256_64_16_8; reg[9:0] g_2_1_d1;reg[17:0] b_512_8_2_1;always@(posedge clk or negedge ngreset) if(!ngreset)beginr_128_32_16 <=18'h3ffff;g_256_64_16_8<=18'h3ffff;g_2_1_d1 <=10'h3ff;b_512_8_2_1 <=18'h3ffff;endelsebeginr_128_32_16 <= r_128_32+r_16; g_256_64_16_8 <= g_256_64+g_16_8; g_2_1_d1 <= g_2_1;b_512_8_2_1 <= b_512_8+b_2_1; endreg[17:0] cb_r;reg[17:0] cb_g;reg[17:0] cb_b;always@(posedge clk or negedge ngreset) if(!ngreset)begincb_r<=18'h3ffff;cb_g<=18'h3ffff;cb_b<=18'h3ffff;endelsebegincb_r<=r_128_32_16;cb_g<=g_256_64_16_8+g_2_1_d1; cb_b<=b_512_8_2_1;endreg[17:0] cb_rg;reg[17:0] cb_b_d1;always@(posedge clk or negedge ngreset)if(!ngreset)begincb_rg<=18'h3ffff;cb_b_d1<=18'h3ffff;endelsebegincb_rg<=cb_r+cb_g;cb_b_d1<=cb_b;endreg[17:0] cb_rgb;always@(posedge clk or negedge ngreset) if(!ngreset)cb_rgb<=18'h3ffff;else if(cb_rg>cb_b_d1)cb_rgb<=cb_rg-cb_b_d1;elsecb_rgb<=cb_b_d1-cb_rg;wire[7:0] cb_rgb_d1;assign cb_rgb_d1=cb_rgb[17:10]; reg[7:0] cb_tmp;always@(posedge clk or negedge ngreset) if(!ngreset)cb_tmp<=8'h0;else if(cb_rg>cb_b_d1)cb_tmp<=8'd128-cb_rgb_d1;elsecb_tmp<=8'd128+cb_rgb_d1;reg[7:0] y_tmp_d1;always@(posedge clk or negedge ngreset) if(!ngreset)y_tmp_d1<=8'd0;elsey_tmp_d1<=y_tmp;assign Y=y_tmp_d1;assign Cb=cb_tmp;assign Cr=cr_tmp;endmodule/////////////////////////////////////////////////////// t b_rgb_to_ycbcr.v[csharp] view plaincopyprint?`timescale 1ns/1psmodule tb_rgb_to_ycbcr();reg clk,ngreset;wire [7:0] R,G,B;wire [7:0] Y,Cb,Cr;initialbeginclk=0;ngreset=1;#50 ngreset=0;#100 ngreset=1;endalways #5 clk=~clk;reg[23:0] rgb_in[0:15];initial begin$readmemb("rgb_in.txt",rgb_in); endinteger i;always@(posedge clk or negedge ngreset)if(!ngreset)i<=0;else if(i==15)i<=0;elsei<=i+1;wire[23:0] data;assign data=rgb_in[i];assign R = data[23:16]; assign G = data[15:8 ]; assign B = data[7 :0 ];rgb_to_ycbcr rgb_to_ycbcr_tmpt(.R(R),.G(G),.B(B),.clk(clk),.ngreset(ngreset),.Y(Y),.Cb(Cb),.Cr(Cr));initialbegin$fsdbDumpfile("csc.fsdb");$fsdbDumpvars(0,tb_rgb_to_ycbcr);#100000 $finish;end//initial begin// $dumpfile("ycbcr_out.dump");// $dumplimit(409600);// $dumpvars(0,rgb_to_ycbcr_tmpt);//$dumpvars(0,rgb_to_ycbcr_tmpt.Y,rgb_to_ycbcr_tmpt.Cb,rgb_to_ycbcr_tmpt.Cr); //endendmodule总结1. 由于本代码采用可综合的代码方式编写,因此代码的长度较长,例如加法时候只相加两个数,用移位的方式实现乘法,以后可以采用乘法器加以改进。
基于FPGA的RGB到YCbCr色空间转换
万方数据万方数据首先,设定输入/输出信号:input:clk,rst,[7:o]r,g,b,output:[7:o]Y,cr,cb,Cout。
其次,对公式中的系数进行参数设定。
parameterconstl=10’h107;//o.257parameterconst2—10’h204;//0.504parameterconst3=10’h64;Iio.098parameterconst4=10’h97;//o.148parameterconst5=10’h129;//0.291parameterconst6=10’hlc1‘//0.439parameterconst7=10’hlcl;//0.439parameterconst8=10’h178:Iio.368parameterconst9—107h48;//0.071最后,对整个模块的功能进行描述。
如转换成亮度信息(y)的操作包括常数相乘的三次运算和加法的三次运算。
对其中的一个色差信息(o)的操作包括常数相乘的三次运算及两次加法、一次减法的操作,对Cr转换的操作与。
类似等。
在编译和仿真时,采用Xilinx公司的FPGA开发软件ISE9.1版。
首先,打开ISE9.1软件并添加一个工程.选定器件族,然后导入之前所设计的Veril—ogHDL,建立一个测试激励文件,接着对测试文件中的信号进行设定,设定后,打开ModelsimSe6.0进行仿真,称之为前仿真。
行为仿真完成以后,再利用ISE9.1自带的综合工具XST进行综合,然后完成实现部分,包括翻译、映射、布局布线三个部分,对其进行时序仿真,最后下载到硬件芯片中。
经过Modelsim仿真验证。
进行了多组不同的矢量输入,得到了正确的结果。
下面给出其中一组仿真波形如图5所示。
NumberofSlices:160outof631680.25%NumberofSliceFlipFlops:72of】263360%Numberof4inputLUTs:26loutof1263360.2%NumberoflOs:58NumberofbondedIOBs:58of7687%NumberofGCI。
基于FPGA的色度空间转换设计
察距离来看 , 同的构成部分可 以达到颜色上 的真实感 。 不 12 Y :Cr 色空 间 . I b 颜 人 类视 觉系 统 ( VS 相 比亮 度 来 说 对 于 颜 色 不 是那 H )
么敏感。在 R B颜色空间中, 种颜色被平等地看待 , G 3 并 用相同的分辨率存放起来 。但是通过把亮度与颜色信息 分离 , 并对亮度值取更高的分辨率可以更有效地表示 1 个
摘 要: 人类 获得信息的 主要方 式是 视 觉 , 常情况 下 颜色 有 2种描 述方 式 , 种 是 R B色 度空 间 表示 , 通 一 G 一种 是 Y br C C 色度空 间表示 。 而 , 的 R B 然 普通 G 颜色空 间对视频 的显示存 在很多问题 , 其转换 为 Y b r 将 C C 颜色空 间能够 很
p p ra o t e me h ih c n ta s o m h oo p c u c s f l n c iv g to t me Th t e a e d p s a n w t o wh c r n f r t e c l r s e s c e su l a d a h e e r h u c . d a a y i o e me h d
好地适应现代社会 的要求 , 本文正是采用一 种新 的方法 , 过 F GA成 功地将其 转化 , 通 P 并得 到正 确的结 果 , 此方法 内
部变量少 、 算法优点突 出、 实时性好 , 易于在实 际工程 中实现 。 十分 关键词 : R GB; YC C b n F’ I GA实现 ; 转换
0 引 言
近年来 , 随着社会的进步 , 人们对 图像 及视 频的质量 要求越来越高, 因此 , 图像视频的处理也越来越 受到人们
重视 。通常是 采 用 R B三 基色 的方 式 对 视 频 以显 示 , G 但 其 中存 在很 多 问题 , 此 , 要 将 R B颜 色 空 间 转 换 为 为 需 G Y h r 色 空间来 适应 现代社 会 发展 的要求 。 CC 颜 这 里介 绍 的是基 于 F G 的 硬 件 实 现 色 度 空 间 的 转 P A
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于FPGA的RGB到YCrCb颜色空间转换作者:封岸松, 战仕成, 汪滢来源:《现代电子技术》2010年第10期摘要:RGB,YCrCb是表示颜色时经常用到的两种颜色空间,在应用中经常需要实现它们之间的转换。
在此结合运算的特点,推导出一种适合在FPGA上实现从RGB到YcrCb颜色空间转换的算法,该方法能有效节省逻辑资源。
运用VHDL语言编写程序实现电路,调用DSP48 Slice模块实现乘法运算,采用流水线设计,运算速度快,实时性好,易于在实际工程中实现。
关键词:RGB; YcrCr; 颜色空间; FPGA; DSP48 Slice中图分类号:TP391 文献标识码:A文章编号:1004-373X(2010)10-0122-03Color Space Conversion from RGB to YcrCb Based on FPGAFENG An-song, ZHAN Shi-cheng, WANG Ying(Shenyang Chemical College, Shenyang 110142, China)Abstract:RGB and YCrCb color spaces are usually used to describe color, and sometimes people need to achieve the conversion between them. A new algorithm to implement the conversion from RGB to YCrCb color space w as deduced, which bases on FPGA′s characters and can effectively reduce the cost of logic resources of FPGA device. The circuit is described in VHDL language, and uses the DSP48 Slice module to implement the multiplicative calculation. The line production design is adopted. It makes the conversion velocity fast and real-time performance tetter, and it is easily applied in practical project.Keywords:RGB; YCrCb; color space; FPGA; DSP48 Slice0 引言随着多媒体和通信技术的发展,视频图像处理的实时性成为人们关注的热点。
视频图像处理一般都是用数字信号处理器(digital signal processor, DSP)来完成的。
为了满足实时性要求,往往采用多DSP或DSP阵列的方法,使系统在成本、重量、功耗等方面都会快速升高[1]。
现场可编程门阵列(FPGA)运算的并行性和内嵌DSP核等特点,能够提高运算速度满足视频处理的实时性要求。
在视频图像显示、处理时,采用的颜色空间主要有RGB,YCrCb两种。
RGB基于三基色原理,颜色实现简单,在计算机、电视机显示系统中应用广泛,YCrCb将颜色的亮度信号与色度信号分离,易于实现压缩,方便传输和处理。
在视频压缩、传输等应用中经常需要实现RGB与YCbCr颜色空间的相互变换。
这里推导出一种适合在FPGA上实现从RGB到颜色空间变换的新算法,采用单片FPGA完成电路设计,利用FPGA内嵌DSP核实现乘法运算,提高了转换算法的运行速度。
1 颜色空间在RGB颜色空间中,自然界所有颜色都可以用红(R)、绿(G)、蓝(B)三种颜色的不同强度组合而重现[2]。
RGB的取值范围分别为0~255,表1列出了几种颜色对应的R,G,B取值。
表1 几种颜色对应的R,G,B取值颜色黑红绿蓝黄青深红白R0255002550255255G025502552550255B0002550255255255RGB生成颜色容易实现,被广泛应用在计算机、彩色电视机的显示系统中。
但是RGB表示颜色的效率并不是很高,3个颜色分量同等重要,而且亮度信息存在于所有颜色分量中,当需要对像素点的亮度或者色度值进行修改时,必须同时改变RGB三者的值。
YCrCb颜色空间是在开发世界范围数字分量食品标准过程中作为ITU-R BT.601标准的一部分而开发出来的[3]。
在YCRCb颜色空间中,Y表示亮度信号,取值范围为16~235;Cr,Cb表示色度信号,取值范围为亮度信号与色度信号相互独立[4]。
这种颜色表示方法可以利用人眼的特性降低数字彩色图像的存储空间。
人眼视觉系统(HVS)对亮度细节的敏感度高于颜色细节,适当减少色度分辨率不会明显影响图像的画质,易于实现数据压缩。
2 RGB到YCrCb的转换在ITU-R BT.601标准中给出了RGB与YCrCb的转换关系式如下[5]:YCbCr=0.256 80.504 10.097 9-0.148 2-0.291 00.439 20.439 2-0.367 8-0.071 4•R′G′B′+16128128(1)式中:R′,G′,B′表示Gamma校正后的R,G,B值。
该转换关系式是一个3×3乘法矩阵,电路实现时需要个乘法器和9个加法器,在FPGA中直接实现时将会占用较多逻辑资源。
为了减少逻辑资源的使用,需要对该算法做进一步改进,简化运算过程,从而以较少的逻辑资源实现转换电路。
首先对Cb,Cr做如下化简:Cb = 0.148 2(B′-R′) + 0.291 0(B′-G′) +128Cr = 0.367 8(R′-G′) - 0.071 4(B′-R′) +128对Y的计算公式进行化简时,令-0.148 2R′-G′+0.439 2B′,有。
为了计算方便,近似值为0.5B′。
此时,有-Cb′),与原式误差为其范围为0~1.887。
当以Y′表示Y时,需要对误差作补偿。
计算公式可表示为:Y=1.732 5(0.5B′-Cb′) +offset式中:offset=16-0.007 4B′,化简后的转换公式如下:Y= 1.732 5(0.5B′-Cb′)+of fsetCb=0.148 2(B′-R′) + 0.291 0(B′-G′) +128(2)Cr=0.367 8(R′-G′) - 0.071 4(B′-R′) +128式中:Cb′=0.148 2(B′-R′) + 0.291 0(B′-G′),offset= 16-0.007 4B′。
根据B′的取值不同,offset的取值取整后为14,15,16。
在计算过程中,可以用一个数据选择器根据值的不同选择offset的值。
0.5B′的计算可以用移位实现。
化简后的转换算法,对Y,Cb,Cr的计算将比原来节省4个乘法器。
在FPGA中,加法器、数据选择器和移位算法的实现比乘法器简单,该化简将利于减少逻辑资源的应用,简化实现电路,提高运算速度。
转换电路结构如图1所示。
图1 转换电路结构3 基于FPGA的实现在FPGA中,对乘法的实现比较复杂,可以采用如下几种方法:(1) 直接用编程语言描述乘法运算,由综合工具自动实现,用该方法描述,实现简单,但是耗用比较多的逻辑资源[6]。
(2) 利用查找表的方式实现乘法运算,事先把要相乘数据的所有结果算出来存到ROM中,根据输入数据的值读取相应的结果,当用该方法相乘数据位数比较多时,会占用大量的存储空间。
(3) 用FPGA中内嵌的乘法器实现,该方法实现简单,当用VHDL语言实现时,调用相应的乘法模块即可。
本文采用第三种方法,用专用乘法器来实现转换公式中的乘法运算。
Xilinx的Virtex 4系列FPGA芯片内嵌的乘法器为Xtreme DSPTM Slice-DSP48 Slice其工作频率高达500 MHz,支持多种独立的功能,包括乘法器、乘累加器(MAC)、后接加法器的乘法器、三输入加法器、桶形移位寄存器、宽路线多路复用器、大小及比较器或宽计数器[7]。
本文将运用DSP48 Slice 模块实现乘加运算,在电路结构图的虚线框中,乘法和加法的运算将用单个DSP48 Slice 模块实现。
这样将会减少转换关系式中加法器的数量,节约逻辑资源,在程序中可以用元件例化语句调用DSP48 Slice模块,实现方法简单,程序简洁。
为了满足浮点数和运算精度的要求,适合在FPGA中实现,将式(2)改写为:Y= (1/1 024)×1 774(0.5B′-Cb′) +offsetCb=(1/1 024)[152(B′-R′) +298(B′-G′)] +128Cr=(1/1 024)[377(R′-G′) -73(B′-R′)] +128(3)式中的除法运算可以通过截断低位数据的方法实现,在截断数据时,对截去小数部分判断,采用4舍5入的方法,当截去部分的最高位是1时,有进位,最高位是0时,直接舍去。
用VHDL语言描述式(3)的转换算法,输入R′,G′,B′是8位无符号二进制数,进行加减运算时,需要做符号位补位[8]。
signal a_ sign: std_ logic := ′0′;signal b_ sign: std_ logic := ′0′;adder: if add generate csubtr: if not add generate c在每个运算部件(包括乘法和加减法器)的输出以及系统的输入/输出之间加上缓存寄存器,实现流水线设计[9],能提高资源利用率,加快运算速度,寄存器级数由运算延时大小决定。
在输出端用计数器控制运算开始时的噪音输出。
箝位电路控制输出数据范围满足颜色空间的要求。
4 仿真结果在Xilinx的Virtex4-FX平台实现现图1的电路结构,用ISE软件仿真[10]。
资源使用情况如下:Selected Device : 4vlx15ff668-10Number of BUFGs 1 out of 32 3%Number of DSP48s 5 out of 32 15%Number of External IOBs 51 out of 320 15%Number of LOCed IOBs 0 out of 51 0%Number of Slices 132 out of 6144 2%Number of SLICEMs 7 out of 3072 1%Minimum period: 5.290ns (Maximum Frequency: 189.034MHz)时序仿真结果如图2所示。