加入星計劃,您可以享受以下權益:

  • 創(chuàng)作內容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

【RT-Thread作品秀】基于ART-PI的數(shù)字圖像處理與識別

2021/01/29
1605
服務支持:
技術交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術大咖們分享疑惑和經驗、收獲成長和認同、領取優(yōu)惠和紅包等。

虛擬商品不可退

當前內容為數(shù)字版權作品,購買后不支持退換且無法轉移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
放大
方塊圖(8)
相關方案
  • 方案介紹
  • 相關文件
  • 相關推薦
  • 電子產業(yè)圖譜
申請入駐 產業(yè)圖譜

一.概覽

       本人雖然是電子信息技術專業(yè)出身,在畢業(yè)后從事的是偏軟件的工作,大多數(shù)是PC軟件的開發(fā),但一直以來,閑暇時間會利用STM32做些小的作品。對于RT-Thread這國內的物聯(lián)網(wǎng)操作系統(tǒng),其實早有耳聞,期間也參加過深圳的一次RT-Thread線下交流活動,所以對于RT-Thread是有所了解而未實際應用的程度。
借著此次RT-Thread大賽的機會,我想將PC的一些圖像處理圖像識別算法放到art-pi試跑一下看看效果如何,所以本次參賽將會使用art-pi獲取OV7670的圖像來做像處理和圖像識別。

二.開發(fā)環(huán)境

硬件PC、ART-PI、OV7670、RGB_LCD
RT-Thread版本:rt-thread4 .0.3,art-pi adk 1.1.0
開發(fā)工具及版本:立創(chuàng)EDA,RT-Studio,SecureCRT

三.RT-Thread使用情況概述
線程:創(chuàng)建圖像處理線程用于通過DCMI獲取OV7670的圖像,圖像處理后完顯示在LCD上
信號量:用于DCMI圖像獲取,當捕捉完一幀圖像后,釋放信號量給圖像處理線程。
驅動:使用了drv_dcmi驅動并參考drv_ov2640移植drv_ov7670驅動

四.實現(xiàn)功能展示

通過攝像頭采集圖像進行圖像識別,然后將結果顯示在LCD屏幕上。

五.硬件框架

本次的硬件核心由ART-PI、OV7670、LCD三部分組成:
ART-PI:stm32H750作為控制核心部分,采集圖像源數(shù)據(jù)、處理圖像源生成處理結果、將處理結果送到LCD顯示
OV7670:作為圖像源,提供320*240的RGB565圖像
LCD:實時顯示圖像源圖像和顯示處理結果

六.軟件流程圖

1.    硬件初始化:時鐘、I2C、DCMI、SDRAM、LTDC
2.    進入圖像處理線程,啟動拍照并等待拍照完成信號量
3.    完成拍照釋放拍照完成信號量
4.    得到圖像后,進行圖像處理與圖像識別
5.    將圖像識別結果在LCD上顯示
6.    回到步驟2

七.圖像識別功能介紹

通過DCMI驅動獲取OV7670的分辨率為320*240的RGB565原始圖像。RGB565每個像素使用用下圖的方式存儲,每個像素占用2個字節(jié)。所以每幀320*240的圖像所需內存為320*240*2=153600字節(jié)。

 

實際上,我們在這次項目中并不需要使用到彩色特征,所以先將RGB565轉換為灰色度。灰度圖其實就是每個像素占用一字節(jié),用0-255值來形容一個像素的灰度值。因此320*240所占用的內存為76800字節(jié)。
RGB565轉灰度圖公式如下: Gray = R*0.299 + G*0.587 + B*0.114

提取的灰度圖后,我們還需要再進行一次二值化處理,因此設定一個閾值,當灰色像素大于這個閾值我們將它改為255,低于這個值變成0。這樣就得到一幀只有0和225值的圖像。

得到二值化圖像后,我們便可以尋找要識別物體了。在此使用九宮格的方式提取連通分量,原理其實很簡單,就是在九宮格里尋找連在一起的像素,如果能找到便將該像素便將該像素的坐標(位于X行,y列)寫入到鏈表里。如此循環(huán),直到找完所有像素。

完成連通分量的提取后便是特征提取了,我們還是采用九宮格分割法,將取得的圖像平均分割為9個區(qū)域,再計算9個區(qū)域中值為255像素的個數(shù)。通過這一步算法,我們得到了9組特征數(shù)據(jù)。

本次用了兩種特征提取方式:
1. 通過水平與垂直方向的穿越數(shù)找出部分數(shù)字
以數(shù)字0和7為例,在1/2寬度處,0和7穩(wěn)定的得到垂直穿越數(shù)是2.而在1/2高度,0的水平穿越數(shù)是2,7的水平穿越數(shù)是1.
 

2. 在圖像的水平和垂直的中間切分成四塊,根據(jù)四個部分不同像素比例找出其他數(shù)字。以2和3為例 ,在右下角部分,3的每一行都會有像素點,而2會缺幾行。因此2的像素更少從而區(qū)分2和3。

 

最終檢測效果如下圖:

八.比賽感悟       

       雖然標題是比賽感悟,實際上比賽并不是我的目的。RT-Thread我知道它更久了,但是一直沒有去更進一步使用RT-Thread。這次比賽讓我深入了解了RT-Thread的生態(tài)系統(tǒng),給我的感覺真的太驚喜了。RT-Thread平臺擁有豐富的組件,完善的各種外設驅動,通過官方的RT-Studio基本上做到入手即用了。
       當時拿到ART-PI,通過RT-Thread SETTING進行勾選,再使用CubeMX選擇外設,生成引腳初始化代碼后。我本次項目的軟件基本平臺已經完成了,我只需要專注于我的應用層開發(fā)便可以了,這真的是太便利了。
       通過本次比賽,讓我對RT-Thread獲得相當大的好感,我想未來硬件項目當中,我會毫不猶豫的選擇RT-Thread代替其他實時操作系統(tǒng)

 

  • CAMERA_2020-12-20_18-26-58.schdoc
    描述:攝像頭轉換板
  • RT_Thread比賽文檔提交.docx
    描述:RT_Thread比賽文檔提交

相關推薦

電子產業(yè)圖譜