[发明专利]基于FPGA的色域空间转换的方法在审
申请号: | 201711220625.9 | 申请日: | 2017-11-29 |
公开(公告)号: | CN107872657A | 公开(公告)日: | 2018-04-03 |
发明(设计)人: | 陈派宁;黄继业;陆燕怡;杨宇翔;吴爽;高明煜;何志伟 | 申请(专利权)人: | 杭州电子科技大学 |
主分类号: | H04N9/04 | 分类号: | H04N9/04;H04N9/64 |
代理公司: | 杭州君度专利代理事务所(特殊普通合伙)33240 | 代理人: | 朱月芬 |
地址: | 310018 浙*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于FPGA的色域空间转换的方法,采本发明将处理过程分为并行的五个部分;在流水线的第一部分接收一个像素的RGB三个分量值并寄存,在流水线的第二部分完成并位以及减法操作,确定这个像素RGB三个分量值的大小排序情况;在流水线的第三部分根据这像素的RGB三个分量的大小排序情况以及RGB色域空间向HSV色域空间转换的算法公式为流水线下部分所需的参数赋值,在流水线的第四部分调用除法模块并将所需参数输入除法模块,应用得到的除法模块输出结果在流水线的第五部分计算得到色域空间转换后的HSV三个分量的值,本发明大大提高了图像色域空间的转换速度,为后续的图像处理提供了极大的便利。 | ||
搜索关键词: | 基于 fpga 空间 转换 方法 | ||
【主权项】:
基于FPGA的色域空间转换的方法,其特征在于:该方法具体包括以下步骤:步骤一:定义寄存器R_Raw,G_Raw,B_Raw用来存放一个像素的RGB三个分量的原始数据值,并采集接收这三个值;步骤二:定义sub_R_G,sub_G_R,sub_R_B,sub_B_R,sub_B_G和sub_G_B;6个差值寄存器用来存放R_Raw,G_Raw,B_Raw三个寄存器中两两之间的差值;并对6个差值寄存器进行赋值;其中sub_R_G的值等于R_Raw在最高位前并上一个0后的值减去G_Raw在最高位前并上一个0后的值;sub_G_R的值等于G_Raw值减去R_Raw的值;sub_B_R的值等于B_Raw在最高位前并上一个0后的值减去R_Raw在最高位前并上一个0后的值;sub_R_B的值等于R_Raw值减去B_Raw的值;sub_G_B的值等于G_Raw在最高位前并上一个0后的值减去B_Raw在最高位前并上一个0后的值;sub_B_G的值等于B_Raw值减去G_Raw的值;步骤三:取sub_R_G,sub_G_B,sub_B_R这三个差值寄存器的最高位并成一个3位数据寄存于寄存器Comp,根据这个Comp的值来判断原始像素的RGB三个分量大小排序情况;当做减法运算时在减数和被减数的最高位前并上1个0作为标志位,再进行减法运算,若是大数减去小时,则被减数的高位不借位,差值的最高位还是0;如果是小数减去大数,在被减数的高位会借位,差值的最高位会变成1;对于一个像素的RGB三个分量值,除去RGB都相等的情况,共有6种排列方式;因此根据Comp的值就可以6种情况列举出来:当Comp等于001时可得R_Raw>G_Raw>B_Raw;当Comp等于011时可得R_Raw>B_Raw>G_Raw;当Comp等于101时可得G_Raw>R_Raw>B_Raw;当Comp等于100时可得G_Raw>B_Raw>R_Raw;当Comp等于010时可得B_Raw>R_Raw>G_Raw;当Comp等于110时可得B_Raw>G_Raw>R_Raw;步骤四:定义符号标志位sign_flag;定义计算H分量时用到的被除数寄存器h_dividend,除数寄存器h_divisor以及加数寄存器h_add;定义计算S分量时用到的被除数寄存器s_dividend以及除数寄存器s_divisor;定义计算分量V时用到的缓存寄存器v;当Comp的值等于001时令sign_flag等于0,h_dividend的值等于60*sub_G_B的值,h_divisor的值等于sub_R_B的值,h_addd的值等于0,s_dividend的值等于(2N‑1)*sub_R_B的值,其中N的值为输出数据的位宽,s_divisor的值等于R_Raw的值,v的值等于R_Raw的值;当Comp的值等于011时令sign_flag等于1,h_dividend的值等于60*sub_B_G的值,h_divisor的值等于sub_R_G的值,h_addd的值等于360,s_dividend的值等于(2N‑1)*sub_R_G的值,s_divisor的值等于R_Raw的值,v的值等于R_Raw的值;当Comp的值等于101时令sign_flag等于1,h_dividend的值等于60*sub_R_B的值,h_divisor的值等于sub_G_B的值,h_addd的值等于120,s_dividend的值等于(2N‑1)*sub_G_B的值,s_divisor的值等于G_Raw的值,v的值等于G_Raw的值;当Comp的值等于100时令sign_flag等于0,h_dividend的值等于60*sub_B_R的值,h_divisor的值等于sub_G_R的值,h_addd的值等于120,s_dividend的值等于(2N‑1)*sub_G_R的值,s_divisor的值等于G_Raw的值,v的值等于G_Raw的值;当Comp的值等于010时令sign_flag等于0,h_dividend的值等于60*sub_R_G的值,h_divisor的值等于sub_B_G的值,h_addd的值等于240,s_dividend的值等于(2N‑1)*sub_B_G的值,s_divisor的值等于B_Raw的值,v的值等于B_Raw的值;当Comp的值等于110时令sign_flag等于1,h_dividend的值等于60*sub_R_G的值,h_divisor的值等于sub_B_G的值,h_addd的值等于240,s_dividend的值等于(2N‑1)*sub_B_G的值,s_divisor的值等于B_Raw的值,v的值等于B_Raw的值;当Comp的值不等于上述值时令sign_flag等于0,h_dividend的值等于0,h_divisor的值等于1,h_addd的值等于0,s_dividend的值等于0的值,s_divisor的值等于1的值,v的值等于R_Raw的值;由于S分量的定义是RGB三个分量中的最大值减去最小值再除以最大值后得到的商,是一个位于0到1之间的小数,因为输出的位宽为N位,所以在进行S分量的计算时先将被除数乘以(2N‑1),这样就将S分量的值域映射到0到(2N‑1)的范围上;步骤五:调用两个LPM除法模块u_div_h、u_div_s分别用于计算H分量以及S分量,除法模块u_div_h的被除数为h_diviend除数为h_divisor,将其结果存入寄存器h_quotient中,除法模块u_div_s的被除数为s_diviend除数为s_divisor,将其结果存入寄存器s_quotient中;步骤六:根据除法模块的结果计算HSV三个分量的值并输出:根据sign_flag的值确定H分量的值,当sign_flag等于0时H分量的值等于h_quotient的值加上h_add的值,当sign_flag等于1时H分量的值等于h_add的值减去h_quotient的值,因为输出的位宽位N位,H分量的值域为0到360,所以对H分量进行值域换算:当(2N‑1)大于360时,输出的H分量值为计算所得到的值乘上((2N‑1)/360),将值域扩大并保证在0到(2N‑1)范围内,当(2N‑1)小于360时,输出的H分量值为计算所得到的值除以(360/(2N‑1))+1,将值域缩小并保证在0到(2N‑1)范围内;S分量的值等于s_quotient的值,V分量的值就等于步骤五中寄存器v的值。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州电子科技大学,未经杭州电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201711220625.9/,转载请声明来源钻瓜专利网。