Vilarejo PK2P
Bem-vindo ao fórum Vilarejo PK2P! O fórum oficial do canal Press Key to Play do Youtube!

Participe do fórum, é rápido e fácil

Vilarejo PK2P
Bem-vindo ao fórum Vilarejo PK2P! O fórum oficial do canal Press Key to Play do Youtube!
Vilarejo PK2P
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Grupo para reunir as pessoas que acompanham os vídeos no canal Press Key to Play e discutir os assuntos abrangidos pelo Blog PK2P.

Últimos assuntos

» RPG de Mesa: A fronteira Volume 4: O Castelo Owlrick. (D&D5e)
por Ariano 10/12/2020, 23:18

» [tutorial] hash em C/C++ com openssl
por kodo no kami 21/9/2020, 13:37

» ping lista grafico
por kodo no kami 24/7/2020, 07:53

» [Discord] Campanha de RPG D-cyber
por Jonatan15 17/7/2020, 11:11

» [tradução] 1869 (msdos)
por kodo no kami 26/6/2020, 13:43

» [source] exemplo filtro mediano
por kodo no kami 1/6/2020, 00:24

» [tutorial] criar filtro nas imagens (python)
por kodo no kami 22/5/2020, 19:29

» Wireless IDS Sagemcom
por kodo no kami 22/4/2020, 23:50

» [source] detectar dispositivos no wifi (sagemcom)
por kodo no kami 9/3/2020, 20:25

» [tutorial] wla assemblador (65xx, 68xx, z80, 8008, 8080 e huc6280)
por kodo no kami 2/2/2020, 16:42


Você não está conectado. Conecte-se ou registre-se

[tutorial] criar filtro nas imagens (python)

Ir para baixo  Mensagem [Página 1 de 1]

kodo no kami

kodo no kami

Galera os filtros normalmente são utilizado para processar imagens e outros tipos de dados, eles tambem são utilizados na eletronica e na telecomunicação para atenuar certas frequencias, podemos utilizar os filtros em imagens para criar alguns efeitos visuais legais baseados na luminosidade da imagem ou para diminuir alguns ruidos para um pre-processamento naquela imagem entre outras coisas. Então galera, nesse tutorial vamas aprender como criar filtros do tipo passa-baixa, passa-alta, passa-banda e rejeita-banda (vamos utilizar nesse tutorial a linguagem python com o modulo pillow, embora possa ser feito em qualquer outra linguagem de sua preferencia bastando saber como manipular os pixels por ela). Para esse tutorial vou usar uma imagem base da shana do anime shakugan no shana

[tutorial] criar filtro nas imagens (python) RTJGLhZ

para começar vamos importar o modulo PIL e depois carregar a imagem com o metodo open (Image.open),

Código:
#!/usr/bin/python3

from PIL import Image

img = Image.open("shana.png")

vamos pega o tamanho da imagem para correr ela pixel a pixel

Código:
#!/usr/bin/python3

from PIL import Image

img = Image.open("shana.png")
tam = img.size

agora criamos uma variavel começando com o valor 0, depois em um loop while incrementamos essa variavel ate um dos tamanhos da imagem

Código:
#!/usr/bin/python3

from PIL import Image

img = Image.open("shana.png")
tam = img.size

contx = 0
while(contx < tam[0]):
 contx += 1

fazemos outra variavel dentro daquele loop e fazemos outro loop while la dentro tambem, com isso vamos conseguir ler pixel a pixel da imagem

Código:
#!/usr/bin/python3

from PIL import Image

img = Image.open("shana.png")
tam = img.size

contx = 0
while(contx < tam[0]):
 conty = 0
 while(conty < tam[1]):
 conty += 1
 contx += 1

para a gente conseguir pega o pixel da imagem usamos o metodo getpixel e uma tupla com a posição XY

Código:
#!/usr/bin/python3

from PIL import Image

img = Image.open("shana.png")
tam = img.size

contx = 0
while(contx < tam[0]):
 conty = 0
 while(conty < tam[1]):
 r,g,b = img.getpixel((contx, conty))

 conty += 1
 contx += 1

para fica mais facil manipular os 3 pixels, fazemos uma media dos 3 e atribuimos a uma variavel

Código:
#!/usr/bin/python3

from PIL import Image

img = Image.open("shana.png")
tam = img.size

contx = 0
while(contx < tam[0]):
 conty = 0
 while(conty < tam[1]):
 r,g,b = img.getpixel((contx, conty))
 pixel_media = (r + g + b) // 3
 
 conty += 1
 contx += 1

agora basta criar a logica para cada filtro, para o filtro passa-baixa a gente vai atenuar apartir de um valor de corte, para fazer isso basta comparar a media com o nosso valor onde vai começar a cortar, se a media for maior que o valor de corte basta a gente começar atenuar os pixels (uma boa seria subtrair ou dividir eles por uma constante)

Código:
#!/usr/bin/python3

from PIL import Image

img = Image.open("shana.png")
tam = img.size

contx = 0
while(contx < tam[0]):
 conty = 0
 while(conty < tam[1]):
 r,g,b = img.getpixel((contx, conty))
 pixel_media = (r + g + b) // 3
 
 corte = 0x70
 constante = 0x25
 
 if(pixel_media > corte):
 r -= constante
 g -= constante
 b -= constante

 conty += 1
 contx += 1

para atribuir o pixel a imagem usamos o metodo putpixel, passamos para ele duas tuplas, a primeira é a posição XY e a segunda a tupla de cores RGB

Código:
#!/usr/bin/python3

from PIL import Image

img = Image.open("shana.png")
tam = img.size

contx = 0
while(contx < tam[0]):
 conty = 0
 while(conty < tam[1]):
 r,g,b = img.getpixel((contx, conty))
 pixel_media = (r + g + b) // 3
 
 corte = 0x70
 constante = 0x25
 
 if(pixel_media > corte):
 r -= constante
 g -= constante
 b -= constante
 
 img.putpixel((contx, conty),(r,g,b))
 
 conty += 1
 contx += 1


usamos o metodo show para exibir a imagem antes e depois do filtro passa-baixa

Código:
#!/usr/bin/python3

from PIL import Image

img = Image.open("shana.png")
tam = img.size

img.show()

contx = 0
while(contx < tam[0]):
 conty = 0
 while(conty < tam[1]):
 r,g,b = img.getpixel((contx, conty))
 pixel_media = (r + g + b) // 3
 
 corte = 0x70
 constante = 0x25
 
 if(pixel_media > corte):
 r -= constante
 g -= constante
 b -= constante
 
 img.putpixel((contx, conty),(r,g,b))
 
 conty += 1
 contx += 1

img.show()

[tutorial] criar filtro nas imagens (python) KJjXpI5

para os fitros passa-alta a logica é mesma bastando trocar a condição para quando o valor for menor do que o valor de corte

Código:
corte = 0x70
 constante = 0x25
 
 if(pixel_media < corte):
 r -= constante
 g -= constante
 b -= constante

[tutorial] criar filtro nas imagens (python) Zc07Iqq

para os filtros passa-banda vamos ter dois cortes um passa-alta e um passa-baixa

Código:
corteBaixo = 0x70
 corteAlto = 0x90
 constante = 0x25
 
 if((pixel_media < corteBaixo) or (pixel_media > corteAlto)):
 r -= constante
 g -= constante
 b -= constante

[tutorial] criar filtro nas imagens (python) 8tvDWeZ


nos filtros rejeita-banda bastaria a gente inverte a logica do passa-banda, entretanto o mais fiel a um rejeita-banda seria uma especie de parabola, entao podemos usar o valor de corte subtraido pela constante para ter o ponto central mais atenuado, então os pixels mais proximos ao ponto central vão esta mais atenuado do que os que estão mais longe dele

Código:
corteFoco = 0x70
 constante = 0x25
 
 if(pixel_media == corteFoco):
 r -= constante
 g -= constante
 b -= constante
 if((pixel_media > (corteFoco - constante)) and (pixel_media < corteFoco)):
 r -= r - (corteFoco - constante)
 g -= g - (corteFoco - constante)
 b -= b - (corteFoco - constante)
 elif((pixel_media < (corteFoco + constante)) and (pixel_media > corteFoco)):
 r -= (corteFoco + constante) - r  
 g -= (corteFoco + constante) - g
 b -= (corteFoco + constante) - b

[tutorial] criar filtro nas imagens (python) MFRdaiW

bom galera esses são os filtros mais simples \o

by kodo no kami

https://eofclub.in/forum

Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos