Vous êtes sur la page 1sur 7

Instituto Politcnico de Beja Escola Superior de Tecnologia e Gesto Licenciatura em Engenharia Informtica Programao 1

Image Transformer
Trabalho Prtico de Avaliao 3
Beja, 18 de Dezembro de 2013, Revisto em 9 de Janeiro de 2014
(corrige cabealho do mtodo computeThreshold tal como indicado no frum, e a verso de 2 de Janeiro)

Ive been looking so long at these pictures of you That I almost believe that theyre real The Cure - Pictures of You
http://www.youtube.com/watch?v=X8UR2TFUp8w

1 Introduo
Este enunciado algo extenso. Tal signica que deve ser lido mais do que uma vez e com muita ateno. O que pedido est classicado em trs tipos de REQUISITOS : 1. ESSENCIAIS 2. NO ESSENCIAIS 3. QUE IMPLICAM PENALIZAES . Os essenciais permitem obter 10 valores, mas apenas desde que no estejam presentes motivos para penalizaes, ou seja, se cumprir totalmente todos os requisitos que podem implicar penalizaes. Para no ter penalizaes basta ter cuidado a ler o enunciado e respeitar o que requerido. Assim, poder garantir que o programa entregue no ir oferecer motivos para a aplicao de penalizaes, as quais podem fazer baixar a nota para nveis certamente indesejados. Os requisitos no essenciais permitem obter at 17 valores. Os 18, 19 e 20 valores cam apenas para quem fez tudo o que pedido de forma absolutamente impecvel e inventou algo mais para fazer, os chamados EXTRAS . Esses extras tm de ter uma diculdade superior ao que pedido embora devam continuar na linha do que pedido e utilizando apenas os contedos que j foram dados nas aulas. No vale a pena fazer extras sem ter TUDO o que pedido feito. Tambm no vale a pena fazer os requisitos no essenciais sem ter feito os essenciais. Em resumo: S pode ter mais do 10 valores se tiver cumprido totalmente os requisitos essenciais e no tiver penalizaes. S pode ter mais do que 17 valores se tiver cumprido totalmente os requisitos essenciais e tambm os no essenciais e no tiver penalizaes.

Para mais informaes pode e deve ler as regras de avaliao no guia de funcionamento da unidade curricular.

Objectivo geral

Este trabalho tem como objectivo a criao de um programa que permita efectuar algumas transformaes em imagens e utilizar imagens para esconder outras e tambm texto.

Ponto de partida

fornecido um pequeno cdigo base que dever ajudar a realizao do trabalho. Deve tambm consultar os vdeos das aulas em especial os da semana de 16 a 20 de Dezembro. Seguem-se os requisitos para o trabalho. Antes de escrever cdigo, leia-os atentamente mais do que uma vez. Antes de entregar o trabalho leia-os, pelo menos, mais uma vez.

Requisitos Essenciais

O incumprimento de qualquer destes requisitos implica uma classicao negativa no trabalho e a no contabilizao dos requisitos no essenciais.

Req. 1 - Apresentao da Imagem Binria (2,0 valores) Acrescente o cdigo necessrio para que o utilizador possa premir um boto "Binary Image", indicar um valor entre 0 e 255 (o threshold) (utilizando um objecto da classe IODialog) e escolher um cheiro de imagem. De seguida dever surgir uma verso binria dessa mesma imagem numa caixa de dilogo, de forma idntica que est no cdigo base. Nesta verso binria cada pixel ser preto ou branco. Para tal, o programa calcula o nvel de cinzento de cada pixel na imagem original e caso o valor seja inferior ao threshold o pixel ca a preto (0 nos trs componentes), caso contrrio ca a branco (255 nos trs componentes). O programa deve tambm gravar no mesmo local a imagem gerada. O nome do cheiro deve seguir a seguinte regra: Se o nome original for "abc.jpg" o cheiro da imagem gerada deve ter o nome "abc_bin.jpg". Para gravar a imagem pode utilizar o mtodo correspondente na class GImage. Req. 2 - Histograma (2,0 valores) Um histograma pode ser visto como um grco de barras em que cada barra indica a quantidade de ocorrncias de um dado valor de cinzento. No nosso caso, as imagens so partida a cores, mas aqui pretendemos calcular a quantidade de ocorrncias de cada nvel de cinzento. O nvel de cinzento calculado como sendo a mdia aritmtica dos valores das componente red, green e blue do respectivo pixel. No iremos utilizar a componente alpha (de transparncia). Acrescente classe MyImage (no cdigo base fornecido) um mtodo com o seguinte cabealho: int[] computeHistogram(). Este mtodo devolve um

array de inteiros com 256 elementos. Cada elemento corresponde quantidade de pixeis que tm o nvel de cinzento correspondente. Por exemplo, se existirem 453 pixeis na imagem que tm o nvel de cinzento 91, ento na posio 91 do array devolvido dever estar o valor 453. Req. 3 - Apresentao do Histogramas (2,0 valores) Dena uma classe GHistogram que herda de GCompound. Um objecto desta classe um objecto grco que mostra o grco de barras (o histograma). O "grco" deve ser constitudo apenas pelas 256 barras, sem necessidade de mostrar os eixos nem valores. A classe deve ter um construtor que recebe uma MyImage. O construtor pede a esse objecto MyImage para calcular o histograma. O programa deve apresentar o histograma dentro de uma caixa de dilogo de forma semelhante ao que feito para cada imagem no cdigo base fornecido. Req. 4 - Clculo automtico do threshold (2,0 valores) Acrescente classe MyImage (no cdigo base fornecido) um mtodo com o seguinte cabealho: int[] computeThreshold() int computeThreshold(). Este mtodo devolve um valor de threshold calculado da seguinte forma. 1. O valor inicial do threshold o 127; 2. Calcular a mdia do valor de cinzentos entre 0 e o valor de threshold (mdia esquerda); 3. Calcular a mdia do valor de cinzentos entre o valor de threshold+1 e 255 (mdia direita); 4. Calcular um novo threshold que a mdia das duas mdias; 5. Enquanto o novo threshold for diferente do threshold inicial, repetir desde o ponto 2 considerando o novo threshold; 6. Devolver o novo valor de threshold como resultado. Req. 5 - Apresentao do Imagem Binria com threshold automtico (2,0 valores) Acrescente o cdigo necessrio para que o utilizador possa premir um boto "Binary Image Auto", escolher um cheiro de imagem. De seguida dever surgir uma verso binria dessa mesma imagem numa caixa de dilogo de forma idntica que est no cdigo base. Nesta verso binria cada pixel ser preto ou branco. Para tal o programa calcula o valor de threshold e utiliza esse valor. O programa deve tambm gravar no mesmo local a imagem gerada. O nome do cheiro deve seguir a seguinte regra: Se o nome original for "abc.jpg" o cheiro da imagem gerada deve ter o nome "abc_bin_auto.jpg". Para gravar a imagem pode utilizar o mtodo correspondente na class GImage.

5 Requisitos No Essenciais
Estes requisitos s so contabilizados se os requisitos essenciais estiverem totalmente correctos. Req. 6 - Esconder imagem binria (1,0 valores) Acrescente o cdigo necessrio para que o utilizador possa indicar duas imagens. A segunda deve sempre ser mais pequena (na largura e na altura) ou de tamanho igual ao da primeira e deve ser binria (cada pixel deve ser preto ou branco).

O programa deve agora esconder a segunda imagem dentro da primeira. Para tal deve utilizar o bit menos signicativo da componente vermelha da primeira imagem e colocar l o valor 0 ou 1 conforme o valor do pixel correspondente na segunda imagem seja preto ou branco. Seguidamente o programa deve mostrar a imagem resultado que deve ser quase igual primeira. Req. 7 - Mostrar a imagem oculta (1,0 valores) Acrescente o cdigo necessrio para que o utilizador possa indicar uma imagem que tem outra escondida. Seguidamente o programa deve mostrar a imagem lida e tambm a imagem oculta, em janelas (caixas de dilogo) separadas. Para tal o programa dever extrair o bit menos signicativo do componente vermelho de cada pixel e criar uma nova imagem binria com esses valores. Req. 8 - Esconder texto numa imagem (2,5 valores) Acrescente o cdigo necessrio para que o utilizador possa indicar uma imagem e um texto. Seguidamente, o programa executa as seguintes tarefas: 1. Transforma o texto (uma String considerando caracteres ASCII de 0 a 255) numa imagem binria. Para tal executa os seguintes passos: (a) Cria uma imagem (um objecto da classe MyImage) com tantos pixels como bits no texto. (b) Extrai cada um dos bits de cada caracter e utiliza-o para atribuir o valor do pixel na imagem binria em construo. 2. Mostra a imagem binria numa janela. 3. Se a imagem resultante for maior (na largura ou no comprimento) do que a indicada ento pede nova imagem ao utilizador (este deve escolher uma imagem maior). 4. Esconde a imagem binria na imagem indicada pelo utilizador utilizando o cdigo do requisito anterior. 5. Mostra a imagem resultado numa janela. 6. Grava a imagem resultado. Req. 9 - Mostrar o texto oculto (2,5 valores) Acrescente o cdigo necessrio para que o utilizador possa indicar uma imagem. Seguidamente o programa apresenta o texto oculto numa nova janela. Para tal, extrai os bits necessrios para cada caracter (8) e vai gerando o texto (numa String).

Requisitos que implicam penalizaes

O incumprimento de um ou mais dos seguintes requisitos implica a atribuio da penalizao especicada e a automtica impossibilidade de obter uma nota superior a 17. Req. 10 - Mtodos com menos de 20 pontos e vrgulas (-4,0 valores) Nenhum mtodo deve ter mais de vinte pontos e vrgulas (";"). Note que um ciclo for tem dois pontos e vrgulas. Req. 11 - Atributos desnecessrios (-4,0 valores) Os atributos no devem ser utilizados para passar informao entre mtodos que poderia ser passada por parmetros. Os atributos devem corresponder a caractersticas dos objectos. Mas, note que pode denir constantes da classe, por exemplo final static int SIZE = 200;.

Req. 12 - Utilizao do operador instanceof ou do mtodo getClass (-4,0 valores) A utilizao do operador instanceof, do mtodo getClass ( http://download. oracle.com/javase/6/docs/api/java/lang/Object.html#getClass()), ou algo idntico que permita saber o tipo de dados de um objecto, ser penalizada pois tal no foi sequer leccionado. Req. 13 - Regras de estilo e elegncia do cdigo (-4,0 valores) O cdigo entregue deve respeitar as regras de estilo, nomeadamente todas as seguintes: Identicadores em ingls Os nomes de todas as variveis, mtodos e classes devem estar em ingls. Nomes das variveis, mtodos, constantes e classe Utilizao de letras minsculas/maisculas e informao transmitida pelos nomes; por exemplo, turtle um melhor nome para uma tartaruga do que a ou xyz. Constantes No deve utilizar constantes literais (por exemplo, 20, -300, 45.4) para representar valores que podem ser melhor representados por um nome. Nesses casos deve denir constantes utilizando a palavra reservada final. Alinhamento das chavetas Cada uma por baixo da correspondente. Os espaamentos Depois das vrgulas e antes e depois dos operadores. Indentao coerente e para cada bloco. Utilizao de parmetros Sempre que conveniente, os mtodos devem utilizar parmetros de modo a evitar duplicao de cdigo. Repetio de cdigo Deve ser evitada a repetio de cdigo. Comentrios Antes de cada mtodo deve escrever um comentrio javadoc( /** */) que explique o que o mtodo faz, os respectivos parmetros e valor devolvido (se existentes). Os comentrios podem estar em portugus mas tente coloc-los em ingls. Os comentrios tm de incluir tag s @param para cada parmetro e @return quando necessrio. Utilizao do this, super, nomeObjecto, nomeclasse Utilizao das referncias antes do nome das operaes. Por exemplo, this.add(line). Req. 14 - Auto-avaliao (-2,0 valores) No cheiro "README.TXT", existente no projecto do BlueJ, deve indicar quais os requisitos que esto totalmente cumpridos (os nicos que contam como cumpridos) e a classicao resultante. No mesmo cheiro deve indicar quantas horas gastou a fazer este trabalho, incluindo o tempo em aulas e fora das aulas (trabalho autnomo). Note que so 20 requisitos. Req. 15 - Identicao (-4,0 valores) Todos os cheiros com cdigo (cheiros *.java) tm de conter, em comentrio no incio, o nome e nmero de aluno do autor. Req. 16 - Quantidade de autores (-20,0 valores) O trabalho deve ser realizado individualmente. Req. 17 - Nome do projecto (-3,0 valores) O nome do projecto no BlueJ tem de respeitar o seguinte formato. Note que Primeiro e Ultimo representam o nome do autor. Numero representa o nmero de aluno do autor.
Numero_PrimeiroUltimo_TP3_P1_2013-2014 Por exemplo: 1232_AnaGomes_TP3_P1_2013-2014

O trabalho entregue compactando a directoria do projecto BlueJ num cheiro .zip de forma a que este que com o nome Numero_PrimeiroUltimo_TP3_P1_2013-2014.zip.

Req. 18 - Originalidade (-20,0 a +2,0 valores) A originalidade das solues encontradas para resoluo dos requisitos essenciais e no essenciais pode ser valorizada num mximo de 2 valores e penalizada num mximo de 20,0 valores. Para efeitos de aplicao desta valorizao ou penalizao, a originalidade determinada pelas diferenas ou semelhanas entre o trabalho a ser avaliado e os restantes trabalhos entregues por outros alunos. Req. 19 - Entrega (at -20,0 valores) O trabalho entregue tem de ser uma directoria do projecto BlueJ pronto a funcionar, sob a forma de um nico cheiro zip contendo toda a directoria mais o cheiro de auto-avaliao. Antes de entregar, verique que sabe pr a funcionar o cdigo no cheiros zip entregue. Para tal parta desse cheiro, descompacte-o, e leia-o no BlueJ. Tal poder ser requerido na apresentao individual do trabalho. Se no conseguir pr a funcionar o contedo do cheiro zip entregue (no moodle e por email) a classicao no trabalho poder ser de zero valores. A entrega tem de ser feita num cheiro no formato zip com o nome nomeDoProjecto.zip e sempre por duas vias: 1. Na pgina da disciplina. 2. Por email, respeitando as seguintes regras: A entrega por email feita para trabalhos.p1ARROBAgmail.com. O email a enviar deve conter em attach um nico cheiro no formato zip. O subject do email deve ser o nomeDoProjecto. 3. Pode entregar mais do que uma vez, desde que dentro do prazo. A ltima entrega dentro do prazo a nica que conta. Req. 20 - Data limite de entrega O trabalho deve ser entregue no moodle e tambm por email at s 23:55 de 17 de Janeiro de 2014. Haver uma penalizao de 2d (com d > 0) valores, em que d a quantidade de dias de atraso. Qualquer atraso inferior a 24 horas corresponde a d = 1. Um atraso maior do que 24 horas mas menor do que 48 horas corresponde a d = 2 e assim por diante. Se d > 4 o trabalho ser considerado como no entregue e avaliado com zero valores. Req. 21 - Apresentao (-20,0 a +2,0 valores) Qualquer aluno que no apresente o trabalho ter zero de nota nal. A nota do trabalho depende do desempenho do aluno na apresentao.

Finalmente, note que necessita de realizar mais do que o pedido para obter mais de 17 valores. A criatividade tambm pode justicar uma melhor classicao pelo que extras originais e sosticados sero uma boa aposta. Note que estas adies s contam para a classicao do trabalho se forem consideradas sucientemente signicativas e se todos os requisitos estiverem completamente cumpridos e sem penalizaes. Sugesto para extra: Filtros com base em matrizes (e.g. http://docs.gimp.org/en/plug-in-convmatrix. html)

7 Nota importante
Todas as contribuies para o trabalho que no sejam da exclusiva responsabilidade dos autores tm de ser identicadas (com comentrios no cdigo e referncias no relatrio) e a sua utilizao bem justicada e expressamente autorizada pelo professor responsvel. Justicaes insatisfatrias, ausncia de autorizao, ou ausncia de referncias para trabalhos ou colaboraes externas utilizadas sero consideradas fraude sempre que os trabalhos sejam considerados demasiado semelhantes para terem sido criados de forma independente. Tal ter como consequncia a reprovao na unidade curricular de todos os alunos envolvidos. Excepcionalmente, podero ser penalizados apenas os alunos que se declarem como nicos culpados. Assim, nenhum aluno deve dar cpia do seu cdigo (ainda que em fase inicial) a outro. Por essa mesma razo no boa ideia partilhar cdigo com os colegas, quer directamente quer atravs do frum. Naturalmente, cada aluno pode trocar impresses e esclarecer dvidas com todos os colegas, mas deve saber escrever todo o cdigo sozinho. Lembre-se que ser avaliado num exame prtico nal em frente a um computador. A classicao neste trabalho prtico ca dependente de uma eventual apresentao individual do mesmo, tal como previsto no guia da unidade curricular. Finalmente, antes de entregar leia com MUITA ateno todo o enunciado. A falha de parte do exigido num requisito implica o no cumprimento desse requisito e consequente penalizao. A programao tambm a ateno aos detalhes. Bom trabalho! Rui Pais & Joo Paulo Barros

Vous aimerez peut-être aussi