Как изменить фоновое изображение на белый?

У меня есть набор изображений. Изображения имеют простой фон. Я хочу изменить этот фон на белый, используя Marvin Framework и Java.

Поскольку я новичок в Марвине, мне трудно сменить фон. Я также пробовал opencv для Java, но он дает неудовлетворенную ошибку ссылки.

Пример изображения:

введите описание изображения здесь

1 ответ

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

Алгоритм:

  1. Преобразуйте изображение в двоичную цветовую модель (пиксели имеют значение true или false) с учетом порога серой шкалы.
  2. Выполните морфологическое расширение для закрытия отверстий на границе обуви.
  3. Залейте фон цветом rgb(255,0255)
  4. После заполнения фона новым цветом в двоичном изображении установите те же пиксели в белый цвет в исходном изображении.

выход:

исходный код:

import static marvin.MarvinPluginCollection.*;

public class RemoveBackground {

    public RemoveBackground(){
        MarvinImage image = MarvinImageIO.loadImage("./res/shoes.jpg");
        MarvinImage bin = MarvinColorModelConverter.rgbToBinary(image, 116);
        morphologicalDilation(bin.clone(), bin, MarvinMath.getTrueMatrix(5, 5));
        MarvinImage mask = MarvinColorModelConverter.binaryToRgb(bin);
        boundaryFill(mask.clone(), mask, 5, 5, new Color(255,0,255));


        for(int y=0; y<mask.getHeight(); y++){
            for(int x=0; x<mask.getWidth(); x++){
                if(mask.getIntColor(x, y) == 0xFFFF00FF){
                    image.setIntColor(x, y, 255,255,255);
                }
            }
        }
        MarvinImageIO.saveImage(image, "./res/shoes_out.jpg");
    }

    public static void main(String[] args) {
        new RemoveBackground();
        System.exit(0);
    }
}
Другие вопросы по тегам