-1

直径 2、4、または 6 のホイールのスケルトン イメージが描かれています。ポイント座標も分岐しました。

異なる車輪を検出するための 2 つの方法について考えます。

  1. 円内の黒い部分を数える
  2. 描かれた直径を数える

どちらの場合も、どのように実装できるかわかりません。

ホイール 1 ホイール 2 ホイール 3 ホイール 4 ホイール 5

ご覧のとおり、ホイールは完全にスケルトン化されていないため、違いを検出するのが難しくなっています。

これは私がスケルトン化に使用するコードです:

まず、画像を二値化し、膨張させてからスケルトン化します。

from skimage import io
import scipy
from skimage import morphology
import cv2
from scipy import ndimage as nd
import mahotas as mah
import pymorph as pm
import pymorph

complete_path = "wheel1.jpg"
gray = cv2.imread(complete_path,0)
print(gray.shape)
cv2.imshow('graybin',gray)
cv2.waitKey()

ret,thresh = cv2.threshold(gray,127,255,cv2.THRESH_BINARY_INV) 
imgbnbin = thresh
print("shape imgbnbin")
print(imgbnbin.shape)
cv2.imshow('binaria',imgbnbin)
cv2.waitKey()

element = cv2.getStructuringElement(cv2.MORPH_CROSS,(6,6)) 
graydilate = cv2.dilate(imgbnbin, element) #imgbnbin
graydilate = cv2.dilate(graydilate, element)
#graydilate = cv2.erode(graydilate, element)

cv2.imshow('dilate',graydilate)
cv2.waitKey()   

#SKELETONIZE
out = morphology.skeletonize(graydilate>0)
skel = out.astype(float)
cv2.imshow('scikitimage',skel)
cv2.waitKey()
io.imsave('wheel.jpg', skel)    
sk = skel
print(sk.shape)

元の画像:

ホイール 1 ホイール 2 ホイール 3 ホイール 4 ホイール 5

4

1 に答える 1

0

また、膨張を適用してほぼ接触している線を接続し、フラッド フィルアルゴリズムを使用してコンパートメントを識別することもできます。

于 2013-05-01T18:10:37.077 に答える