与えられた数のクラスの入力トレーニングサンプルに基づいてRGB画像のピクセル分類を行いたいと思います。だから私は持っている。 4つのクラスにはピクセル(r、g、b)が含まれているため、目的は画像を4つのフェーズに分割することです。python opencvの最尤ピクセル分類
python opencv2には、ジョブを実行できるExpectation maximizationアルゴリズムがあることがわかりました。しかし残念なことに、私は(私は初心者であるので)アルゴリズムについての作業方法を教えてくれるチュートリアルや資料は見つけられませんでした。
出発点として使用できる任意のチュートリアルを提案してください。
更新...以下のコードのための別のアプローチ:
**def getsamples(img):
x, y, z = img.shape
samples = np.empty([x * y, z])
index = 0
for i in range(x):
for j in range(y):
samples[index] = img[i, j]
index += 1
return samples
def EMSegmentation(img, no_of_clusters=2):
output = img.copy()
colors = np.array([[0, 11, 111], [22, 22, 22]])
samples = getsamples(img)
#em = cv2.ml.EM_create()
em = cv2.EM(no_of_clusters)
#em.setClustersNumber(no_of_clusters)
#em.trainEM(samples)
em.train(samples)
x, y, z = img.shape
index = 0
for i in range(x):
for j in range(y):
result = em.predict(samples[index])[0][1]
#print(result)
output[i][j] = colors[result]
index = index + 1
return output
img = cv2.imread('00.jpg')
smallImg = small = cv2.resize(img, (0,0), fx=0.5, fy=0.5)
output = EMSegmentation(img)
smallOutput = cv2.resize(output, (0,0), fx=0.5, fy=0.5)
cv2.imshow('image', smallImg)
cv2.imshow('EM', smallOutput)
cv2.waitKey(0)
cv2.destroyAllWindows()**
をPythonのためにC++に変換する:G O_OのGLE。長い:Googleの "期待最大化アルゴリズム"。一度あなたはコンセプトに関する十分な情報を持っていれば、これをgoogleにしてください: "Expectation maximization algorithm opencv"。 opencvはライブラリであり、本ではありません。研究論文、書籍、wiki、またはあなたが最も気楽に使っている資料から技術を勉強する必要があります。原因をdownvote: - 私は最初の試しで複数のチュートリアルを見つけた。まだ困っている場合は、YouTubeで同じgoogleと同じビデオチュートリアルがあります。 – saurabheights
opencv 2.4.xと3.0の間の同等の機能を検索します。私のコードをソースとして使用する:https://subokita.com/2014/03/24/image-segmentation-using-opencvs-expectation-maximization/ – eyllanesc