1. 程式人生 > >糾錯:基於FPGA串口發送彩色圖片數據至VGA顯示

糾錯:基於FPGA串口發送彩色圖片數據至VGA顯示

cnblogs 缺失 logs 分享 https blog 是我 分代 推送

今天這篇文章是要修改之前的一個錯誤,前面我寫過一篇基於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顯示