糾錯:基於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 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM