如何使用機器學習根據形狀和大小對對象進行分類? 假設我在圖像中有一個圓圈和一些小的虛線方塊。兩者的區別在於它們的形狀和大小。因此給定一幅圖像,如何區分這些對象並返回結果。 在實際問題中,這些物體是太陽能PV文件夾中的熱點,這些文件夾是其中的缺陷部分。我需要分類them.The I/P圖像作爲:基於形狀和大小的分類
[這是更少或更多的方型熱點的:]
如何使用機器學習根據形狀和大小對對象進行分類? 假設我在圖像中有一個圓圈和一些小的虛線方塊。兩者的區別在於它們的形狀和大小。因此給定一幅圖像,如何區分這些對象並返回結果。 在實際問題中,這些物體是太陽能PV文件夾中的熱點,這些文件夾是其中的缺陷部分。我需要分類them.The I/P圖像作爲:基於形狀和大小的分類
[這是更少或更多的方型熱點的:]
此答案沒有按」噸ellaborate機器學習或任何途徑使用分類器
圓圈可由Hough Circle Transform被檢測來自OpenCV的
cv2.HoughCircles()
:
Documentation for Hough Circles in OpenCV
注:通過使用半徑,你可以調整你要檢測圓的形狀大小。說實話,我真的沒有得到什麼虛線的方格,也許你可以在你的問題中展示一個模範的圖像。
如果圖像中只有兩種不同類型的對象,可能甚至不需要分類器,因爲這兩個類已經被後續圖像處理(儘管對輸入圖像高度依賴)分隔開來。
import cv2
import numpy as np
img = cv2.imread('opencv_logo.png',0)
img = cv2.medianBlur(img,5)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20,
param1=50,param2=30,minRadius=0,maxRadius=0)
circles = np.uint16(np.around(circles))
for i in circles[0,:]:
# draw the outer circle
cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
# draw the center of the circle
cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)
cv2.imshow('detected circles',cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()
結果的代碼是如下
我看到兩種可能的方式:1)作爲輸入使用的圖像,並使用卷積神經網絡作爲分類器2)找到一種方式來表示圖像例如像素強度並將這些值用作分類器的特徵(LDA,SVM) – sera
與SVM結合的定向梯度直方圖(HoG)是基於形狀的分類器。 – Micka