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