Удалите фон объекта и измените размер объекта на его содержание в ткани JS - PullRequest
0 голосов
/ 25 апреля 2018

Не уверен, правильно ли я поставил заголовок в вопросе.

В моем проекте пользователь бросает предмет одежды на холст. Обычно предмет одежды имеет белый фон и выглядит так:

enter image description here

Я применяю фильтр RemoveColor и удаляю белый фон. Но все же объект имеет тот же размер, что и раньше. То, что я хочу, это изображение клипа, как это:

enter image description here

Удаление ненужного фона.

Как я могу это сделать и возможно ли это вообще?

1 Ответ

0 голосов
/ 25 апреля 2018

Общий конвейер выглядит следующим образом:

  1. Загрузить изображение и преобразовать в оттенки серого
  2. Пороговое изображение и получить двоичное изображение
  3. Примените морфологическую операцию, в вашем случае закрытие должно это сделать. Инвертируйте изображение, чтобы получить черный фон и белый передний план.
  4. Найдите подключенные регионы и выберите наибольший интересующий вас регион
  5. Вырежьте это.

EDIT Вот пример кода на Python (с использованием библиотек opencv и skimage).

img = cv2.imread('test2.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

t, bw_img = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)

closing = cv2.morphologyEx(bw_img, cv2.MORPH_CLOSE, np.ones((3, 3)))
closing = cv2.bitwise_not(closing)

labels, num = measure.label(closing, background=0, connectivity=2, return_num=True)
max_size, max_blob = 0, None
for l in range(1, num+1):
    blob = np.zeros_like(labels)
    blob[labels == l] = 1
    nz = np.count_nonzero(blob)
    if nz > max_size:
        max_size = nz
        max_blob = blob
assert(max_blob is not None)

x, y = np.nonzero(max_blob)
xmin, xmax = min(x), max(x)
ymin, ymax = min(y), max(y)
max_blob = max_blob[xmin: xmax, ymin:ymax]
# Resized color image
img = img[xmin: xmax, ymin:ymax]

EDIT2 Изображения, соответствующие шагам кода enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here

...