在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2368|回复: 0

[求助] 求助,用verilog实现RGB565转灰度图

[复制链接]
发表于 2018-10-14 13:55:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
要用verilog代码实现RGB565图像转换为灰度图。

     设计思路:把RGB图像的R、G、B三个分量提取出来,并分别取高5位、高6位、高5位,即将RGB888转为RGB565,生成三个coe文件,再存放到三个ram中去。转换时从三个ram中调用数据,按照Gray = R*0.299 + G*0.587 + B*0.114 进行运算,得到结果。
     我觉得这个思路是没问题的,而且网上发布的代码(从RGB888转灰度图)输出的结果是正确的。我只是修改了一下代码中RGB的位数(部分代码附后)但是输出结果很奇怪,出现了交叠,如下所示。


希望有大神能解答一下我的两点疑惑,由衷感谢。
1、

图像出现混叠的原因和算法有关吗?

2、

RGB565转灰度图,Gray = R*0.299 + G*0.587 + B*0.114这个算法仍然适用吗?(这个算法是参考matlab中的RGB转灰度图的算法)
如果不适用要怎么改呢?

部分代码如下:




  1. always @ ( posedge CLK or negedge RSTn )
  2.   if ( !RSTn ) begin
  3.     i <= 3'd0;
  4.     gray <= 24'd0;
  5.      isDone <= 1'b0;
  6.   end
  7.   else if ( get_pix_vld )
  8.     case ( i )
  9.        0: begin
  10.             gray <= 19595 * red + 38469 * green + 7472 * blue;
  11.           i <= i + 1'b1;
  12.             end
  13.         1: begin isDone <= 1'b1; i <= i + 1'b1; end
  14.         2: begin isDone <= 1'b0; i <= 3'd0; end
  15.     endcase
  16.      
  17. assign oGray = ( gray >> 16 ) ;
  18. assign oDone = isDone ;
  19.    


复制代码






                               
登录/注册后可看大图

                               
登录/注册后可看大图
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-24 07:43 , Processed in 0.012268 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表