Jump to content

Valores que possuam uma determinada faixa de valores


pitiko
 Share

Recommended Posts

Uma aplicação muito comum em processamento digital de imagens é contar quantos pixels existem em uma dada imagem que  possuem uma determinada faixa de valores. Um tipo de imagem que podemos fazer isso são as imagens de 8 bits, onde os  valores dos pixel variam entre 0 e 255.

Desse modo, pode-se fazer uma função para classificar os valores em branco e preto (0 e 1). Em Haskell, podemos descreve essa função da seguinte maneira:

classify:: Int -> Int

classify x

|  x < 100 = 1

| otherwise = 0

Tendo uma imagem apenas com os valores 0 e 1, podemos então facilmente calcular o numero de pixel com valores 0.

No computador, uma representação comum para imagem é no formato de matriz.

Faça um programa que receba uma matriz de inteiro como entrada (lista de lista). Essa entrada virá de um arquivo de texto,  você definirá qual a melhor forma de colocar estes valores no arquivo. A função deverá imprimir o numero de valores que  possuam uma determinada faixa de valores. A faixa de valores será determinada pela função "classify".

Alguém sabe como eu posso fazer isso?

Link to comment
Share on other sites

Onde é que tens dúvidas?

Para ler do ficheiro aconselho a consultar as funções disponíveis no Prelude: http://hackage.haskell.org/packages/archive/base/4.2.0.2/doc/html/Prelude.html#28

Quanto à representação da matriz, será uma lista de listas, tens aqui 2 tópicos no fórum a falar de matrizes:

1) http://www.portugal-a-programar.pt/index.php?showtopic=23687

2) http://www.portugal-a-programar.pt/forums/topic/0-find-topic/?do=findComment&comment=290547

Para a função que tens de fazer dá uma vista de olhos nas funções sum, length, map e talvez filter, podem ser úteis (não percebi muito bem como deve funcionar essa função, não sei se é suposto dizer quantos 0's e 1's existem na matriz ou se é só contar um deles).

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.