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

Posted NingHeChuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了纠错:基于FPGA串口发送彩色图片数据至VGA显示相关的知识,希望对你有一定的参考价值。

         今天这篇文章是要修改之前的一个错误,前面我写过一篇基于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

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

  如果你想获得本文的所有课件,请关注本人的个人微信订阅号:开源FPGANingHeChuan或扫描下方二维码关注订阅号,在后台回复图像处理,即可获得本文的所有课件、资料以及更多FPGA的学习资料哦!

 

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

个人微信订阅号:开源FPGANingHeChuan

如果你想及时收到个人撰写的博文推送,可以扫描左边二维码(或者长按识别二维码)关注个人微信订阅号

知乎ID:NingHeChuan

微博ID:NingHeChuan

原文地址:http://www.cnblogs.com/ninghechuan/p/7631168.html 

 

以上是关于纠错:基于FPGA串口发送彩色图片数据至VGA显示的主要内容,如果未能解决你的问题,请参考以下文章

基于FPGA的Sobel边缘检测的实现

基于FPGA驱动VGA显示图片的小问题

FPGA的学习:基于ROM的VGA图像显示(弹跳特效)

FPGA的学习:基于ROM的VGA图像显示(弹跳特效)

基于FPGA的VGA显示静态图片

基于FPGA的均值滤波算法实现