Удалите белый фон с изображения и сделайте It Transparent

Мы пытаемся сделать следующее в Mathematica - RMagick удалил белый фон с изображения и сделал его прозрачным .

Но на реальных фотографиях это выглядит ужасно (как будто вокруг изображения появляется ореол).

Вот что мы уже пробовали:

unground0[img_] := With[{mask = ChanVeseBinarize[img, TargetColor->{1.,1.,1.}]},
  Rasterize[SetAlphaChannel[img, ImageApply[1-#&, mask]], Background->None]]]

Вот пример того, что это делает.

Исходное изображение :

original image

Изображение с белым фоном заменено без фона (или, в целях демонстрации, розовым фоном):

image with transparent background -- actually a pink background here, to make the halo problem obvious

Есть идеи, как избавиться от этого ореола? уйти за счет потери части изображения.

РЕДАКТИРОВАТЬ: Чтобы я мог сравнить решения для награды, пожалуйста, структурируйте свое решение, как указано выше, а именно автономную функцию с именем unground-something, которая берет изображение и возвращает изображение с прозрачным фоном.

81
задан Royi 17 October 2019 в 23:26
поделиться