前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >纠错:基于FPGA串口发送彩色图片数据至VGA显示

纠错:基于FPGA串口发送彩色图片数据至VGA显示

作者头像
NingHeChuan
发布2018-01-05 10:20:27
1.1K0
发布2018-01-05 10:20:27
举报
文章被收录于专栏:开源FPGA开源FPGA

         今天这篇文章是要修改之前的一个错误,前面我写过一篇基于FPGA的串口发送图片数据至VGA显示的文章,最后是显示成功了,但是显示的效果图,看起来确实灰度图,当时我默认我使用的MATLAB代码将图片数据转化后是灰度图片,直到前一阵我才发现,其实并不是这样。MATLAB代码转化出来的图片数据就是8位的彩色图片数据,只不过当数据小于16’h10时,MATLAB生成的数据便是A、B、E,但是串口调试助手会怎么识别呢!如下图(前方多图高能)

         这是我发送的十六进制为0的数据,而串口却显示发送的是FF,显然数据是错误的。这样会造成显示的图片是这样的。

或者是这样的

更可气的是当我测试彩色条纹的时候,出现了这样的神奇问题。

这才是原图啊,当然现在看来就不难解释了,为什么发送的是黑色图片数据,最终显示的缺失白色的呢!对于发送的16进制个位的数据串口调试助手没办法直接识别为十六进制数据,发送16进制0(黑色)数据是会被串口调试助手默认为FF,我把数据改成0x00,结果如下图,是完全正确的!

         这是我的MATLAB代码转化图片数据的问题,最终修改MATLAB代码,得到完美的图片数据最后显示成功,我使用了guan小姐姐,还挺漂亮呢!想要获得正确的MATLAB代码的朋友,后台回复MATLAB代码即可获得正确代码链接!

我的串口发送的是8位的图片数据,但是我的VGA是16位RGB,那么显示的时候就要用的量化补偿,将八位的数据拼接成16位的数据显示。效果当然会有一点偏差不过这样也已经不错了。

         下面要说的是我的第二个问题,既然MATLAB代码有问题,为什么我最后显示图片成功了,还是灰色的呢。问题要回到我的代码上了。串口发送过来的数据是8位的,我的VGA是16位的,要想正常显示,就必须进行拼接,大家可以看一下我的拼接部分代码。

  最后一行是我的拼接部分代码,这样写显然是错误的,8位拼接成16位应该是上面那两行其一都可以,至于我这样瞎碰,碰到了显示成功,还把第一个错误里的深黑颜色不能显示的问题给掩盖了,最终让我以为MATLAB转化的图片数据是灰度的,我后面的那些图像处理的文章还代码也都要改改了。这真是一个很大的失误。

  基于FPGA串口发送彩色图片数据至VGA显示视频:http://t.cn/RO7UsfK

  量化补偿和量化压缩可以参考我的另一篇博文:量化补偿与量化压缩

转载请注明出处:NingHeChuan(宁河川)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-10-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档