Разделить изображение на отдельные объекты (монеты) для машинного обучения - PullRequest
0 голосов
/ 05 сентября 2018

Я хочу автоматически разделить изображение нескольких монет на отдельные монеты, чтобы впоследствии отдельные монеты можно было поместить в модель, которая классифицирует монеты (с Tensorflow / Keras).

Входные изображения выглядят примерно так

И они должны выглядеть следующим образом (К сожалению, я не могу интегрировать изображения напрямую, так как я новичок в StackOverflow).

Я хочу разделить входные изображения, поместить отдельные монеты в классификационную модель, чтобы я знал одно значение отдельных монет и, таким образом, мог определить значение первого входного изображения.

Я уже попробовал модель обнаружения объекта, но она не обнаружила монеты (https://towardsdatascience.com/object-detection-with-10-lines-of-code-d6cb4d86f606). Поскольку я уже знаю, что все объекты на изображении являются монетами, я подумал, что, возможно, есть более простой способ разделить изображение

Заранее спасибо.

1 Ответ

0 голосов
/ 05 сентября 2018

Я бы попробовал цветовую сегментацию, подобную этой обучающей программе , в качестве первого шага, чтобы отделить монеты от фона. Вот моя небольшая попытка в Python с использованием OpenCV:

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread("coins.jpg")

lower = np.array([0,40,5])
upper = np.array([255,255,255])
mask = cv2.inRange(hsv, lower, upper)

cv2.imshow(img)
plt.show()
plt.imshow(mask)

Это выводит нас из входного изображения

enter image description here

к этой маске:

enter image description here

Отсюда, используя анализ BLOB-объектов и фильтр размеров, вы сможете найти и отделить неподключенные монеты. Отключение перекрывающихся областей может быть достигнуто с помощью активных контуров , или, поскольку ваша цель - создать набор тренировочных данных, сдвинув монеты перед съемкой.

...