Removendo o fundo da imagem com o primeiro plano transparente

0

Eu tenho uma imagem que tem um fundo de cor constante. Há objetos desenhados na frente que podem ter transparência. Existe uma maneira, algoritmo-sábio, para remover o fundo da imagem para que eu fique com uma imagem com objetos transparentes sem fundo? Eu quero fazer isso acontecer no meu código, então o algoritmo seria ótimo.

    
por gaurav 25.07.2015 / 02:09

1 resposta

0

Se eu entendi a pergunta corretamente, e você não tem nenhuma informação extra que você não nos contou, Eu acredito que isso será impossível. Considere a seguinte imagem composta:

Obviamente,temumfundoazul.Agora,aquiestãoosobjetosdeprimeiroplano:

Eu não vejo como você poderia ter um algoritmo para obter a segunda imagem do primeiro - não há informações suficientes para trabalhar.

Então, o que você pode fazer se tiver mais informações? Que informação extra seria útil? Parte da resposta é que você precisa saber onde estão os objetos de primeiro plano. Se um objeto de primeiro plano for da mesma cor do plano de fundo, ou é 100% transparente e não tem bordas, é invisível e não há algoritmo que possa até mesmo deduzir sua existência. (E, se eles se sobrepuserem, pode ajudar saber a ordem de empilhamento. Pode ser possível deduzir isso (isto é, calculá-lo por um algoritmo), mas eu não sei.)

Mas, dado que você sabe onde estão os objetos, considere: Você tem um fundo de cor B, obscurecido por um objeto em primeiro plano da cor F e transparência T. Qual é a cor (C) que você vê? C pode ser calculado como uma função de B, F e T. (Se T = 0, C = F; se T = 1 (100%), C = B.) Você conhece B e C; faz sentido que você seja capaz de determinar F ou T se você conhece o outro.

Há exceções, que mencionei no parágrafo anterior. Se C = B, o objeto é invisível, porque ou é da mesma cor que o fundo (F = B) ou é 100% transparente (T = 1). Se você conhece F = B = C, é impossível determinar T. Se você conhece T = 1, então é impossível determinar F. Mas pelo menos no segundo caso (T = 1), Se você quer apenas determinar como o objeto em primeiro plano se parece: parece branco.

Muitos programas implementam esta função: PowerPoint (o que eu usei para criar minhas imagens), Photoshop, Paint.NET, GIMP, etc., e é provavelmente documentado. Eu sugiro que você pesquise essa função C=f(B,F,T) e descubra como derivar F=f′(B,T,C) e T=f″(B,F,C) .

    
por 25.07.2015 / 03:43