目標: 透過紅黃橘綠顏色比率去分類番茄熟度,如下 ![](https://hackmd.io/_uploads/SyXB4-2jn.png =500x300) ![](https://hackmd.io/_uploads/SySP4bhsh.png =500x300) ## 資料蒐集 使用從[本文](https://hackmd.io/hZYWXtyUTT-ebSYV16KNIQ)獲得的圖片 ![](https://hackmd.io/_uploads/SkUKGZ3o3.png) ## 特徵擷取 利用**色度分割**來擷取我們要的特徵 1. 輸入色彩影像為RGB影像 2. 根據HSV模型,設定色彩範圍 3. 將RGB影像轉換成以HSV模型表示 4. 若HSV值落在範圍內,則保留輸出的值,否則輸出0 <font color="red">HSV色彩模型與人類描述色彩的方式接近,因此是理想的色彩影像處理工具。</font> ### HSV色彩空間 * Hue(色相) * Saturation(飽和度) * Value(明度) ![](https://hackmd.io/_uploads/SykYHb3i3.png =250x250) 使用python來操作,利用opencv中的mask來進行分割,而番茄的的HSV顏色區間 使用[本論文](https://ieeexplore.ieee.org/document/9260129?denied=)提供的下圖,作為分割的上下界依據 ![](https://hackmd.io/_uploads/ByFSvWnoh.png =400x250) ![](https://hackmd.io/_uploads/H1bmDZhsh.png =400x400) 提取各顏色與原圖像素比,並取小數後四位,再手動label訓練集的熟度種類 ![](https://i.imgur.com/oZzYj0L.png) ![](https://i.imgur.com/VFrFGac.png) ![](https://i.imgur.com/wc08W4E.png) ![](https://hackmd.io/_uploads/BkKiYZhs3.png) ![](https://hackmd.io/_uploads/HJPOqWno3.png =500x600) 結果輸出: CSV檔 ![](https://hackmd.io/_uploads/rJjfoW2on.png =500x600) ## 機械學習 使用matlab classification learner進行機械學習 讀取我們完成的CSV檔,並將資料最後欄位的目標分類的屬性改成categorical ![](https://hackmd.io/_uploads/SymSn-hoh.png =500x100) 使用5-fold cv ![](https://hackmd.io/_uploads/ByLshZ2o3.png ) 選擇all 使用所有算法進行訓練 ![](https://hackmd.io/_uploads/H1cb6-hj2.png) 以SVM為例的混淆矩陣 ![](https://hackmd.io/_uploads/SyeOabhin.png) ## 結論 * SVM跟Navie Bayes適合用來訓練此番茄辨識模型。 * 從混淆矩陣中可以看出與我們人類思考的方式相同的關係,Imature跟Break都是偏綠的,而Pre-harvest跟Harvest都是偏紅的所以可以重其中觀察出兩者搞混的情況是最多的,而Break跟Pre-harvest之間也是較為相近的,但比前兩種的差異較明顯能判別,因此搞混情況是次多的。 ## 未來期望 * 當初訓練模型時沒有想到會拿來做這個,能使用polygon的影像辨識模型來獲得去背狀態的番茄,或是尋找其他方法去背,那相信效果會來的更好。 * 數據集的尋找,網路上對於單純番茄的資料集十分的少,且品質參差不齊,若有閒可拍攝更多更好的照片,來增加數據集的品質和數量。