<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//pt_BR"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <META NAME="GENERATOR" CONTENT="lfparser_2.17"> <META NAME="LFCATEGORY" CONTENT="Graphics"> <!-- this is used be a number of tools: =LF=AUTHOR: Yves Ceccone =LF=CAT___: Graphics =LF=TITLE_: XMRM : Morphing sobre o Linux =LF=NUMBER: 139 =LF=ANAME_: article139.shtml --> <TITLE>lf139, Graphics: XMRM : Morphing sobre o Linux</TITLE> <!-- stylesheet added by lfparser: --> <style type="text/css"> <!-- td.top {font-family: Arial,Geneva,Verdana,Helvetica,sans-serif; font-size:12 } pre { font-familiy:monospace,Courier } p.cl { color:#EE9500 } a.nodec { text-decoration:none } p.trans { font-size:8pt; text-align:right } p.clbox { width:50%; alignment:center; background-color:#FFD700; border-style:none; border-width:medium; border-color:#FFD700; padding:0.5cm ; text-align:center } p.foot { background-color:#AAAAAA; color:#FFFFFF; border-style:none; border-width:medium; border-color:#AAAAAA; padding:0.5cm ; margin-top:0.1cm; margin-right:1cm; margin-left:1cm; text-align:center } --> </style> </HEAD> <BODY bgcolor="#ffffff" text="#000000"> <!-- this is generated html code. NEVER use this file for your translation work. Instead get the file with the same article number and .meta.shtml in its name. Translate this meta file and then use lfparser program to generate the final article --> <!-- lfparser can be obtained from http://www.linuxfocus.org/~guido/dev/lfparser.html --> <!-- 2pdaIgnoreStart --> <!-- start navegation bar --> <!-- top navegation bar --> <TABLE cellspacing="0" cellpadding="0" border="0" align="center" width="90%"> <TR bgcolor="#2e2292"> <TD class="top"><TABLE cellspacing="0" cellpadding="0" border="0" width= "100%"> <TR><TD width="144"><IMG src="../../common/images/logolftop.gif" alt="[LinuxFocus-icon]" width="350" height="45" align="left" border="0"></TD> <TD class="top"> <TABLE width="100%"> <TR align="right"> <TD class="top"><A class="nodec" href="../index.shtml"><FONT color= "#DDDDDD">Início</FONT></A> | <A class= "nodec" href="../map.html"><FONT color= "#DDDDDD">Mapa</FONT></A> | <A class= "nodec" href="../indice.html"><FONT color= "#DDDDDD">Índice</FONT></A> | <A class="nodec" href="../Search/index.shtml"><FONT color= "#DDDDDD">Procura</FONT></A> </TD> </TR> <TR align="right"> <TD class="top"> <HR width="100%" noshade size="1"> </TD> </TR> </TABLE> </TD> </TR> </TABLE> </TD> </TR> </TABLE> <!-- end top navegation bar --> <!-- blue bar --> <TABLE cellspacing="0" cellpadding="0" border="0" align="center" width="90%"> <TR bgcolor="#00ffff"> <TD><IMG src="../../common/images/transpix.gif" width="1" height= "2" alt=""></TD> </TR> </TABLE> <!-- end blue bar --> <!-- bottom navegation bar --> <TABLE cellspacing="0" cellpadding="0" border="0" align="center" width="94%"> <TR bgcolor="#000000"> <TD> <TABLE cellspacing="0" cellpadding="1" border="0" width= "100%"> <TR align="center"> <TD><A class="nodec" href="../News/index.shtml"><FONT color= "#FFFFFF">Novidades</FONT></A> </TD> <TD><FONT color="#FFFFFF">|</FONT> </TD> <TD><A class="nodec" href="../Archives/index.html"><FONT color= "#FFFFFF">Arquivos</FONT></A> </TD> <TD><FONT color="#FFFFFF">|</FONT> </TD> <TD><A class="nodec" href="../Links/index.shtml"><FONT color= "#FFFFFF">Links</FONT></A> </TD> <TD><FONT color="#FFFFFF">|</FONT> </TD> <TD><A class="nodec" href="../aboutus.html"><FONT color= "#FFFFFF">Sobre LF</FONT></A> </TD> </TR> </TABLE> </TD> </TR> </TABLE> <!-- end bottom navegation bar --> <!-- stop navegation bar --> <!-- SSI_INFO --> <!-- tr_staticssi include virtual --> <!-- tr_staticssi exec cmd --> <!-- addedByLfdynahead ver 1.1 --><TABLE ALIGN="right" border=0><TR><TD ALIGN="right"><FONT SIZE="-1" FACE="Arial,Helvetica">Este artigo está disponível em: <A href="../../English/September2001/article139.shtml">English</a> <A href="../../Castellano/September2001/article139.shtml">Castellano</a> <A href="../../Deutsch/September2001/article139.shtml">Deutsch</a> <A href="../../Francais/September2001/article139.shtml">Francais</a> <A href="../../Portugues/September2001/article139.shtml">Portugues</a> <A href="../../Russian/September2001/article139.shtml">Russian</a> <A href="../../Turkce/September2001/article139.shtml">Turkce</a> </FONT></TD></TR></TABLE><br> <!-- 2pdaIgnoreStop --> <!-- SHORT BIO ABOUT THE AUTHOR --> <TABLE ALIGN=LEFT BORDER=0 hspace=4 vspace=4 WIDTH="30%" > <TR> <TD> <!-- 2pdaIgnoreStart --> <!-- PALM DOC --> <TABLE BORDER=0 hspace=4 vspace=4> <TR> <TD> <font size=1> <img src="../../common/images/2doc.gif" width=34 align=left border=0 height=22 alt="convert to palm"><a href="http://cgi.linuxfocus.org/cgi-bin/2ztxt">Convert to GutenPalm</a><br>or <a href="http://cgi.linuxfocus.org/cgi-bin/2pda">to PalmDoc</a></font> </TD> </TR> </TABLE> <!-- END PALM DOC --> <!-- 2pdaIgnoreStop --> <br> <IMG src="../../common/images/Yves-Ceccone.jpg" alt= "[Photo de l'auteur]" height="137" width="123"> <BR>por <A href= "http://linux-france.org/article/appli/infographie">Yves Ceccone</A> <BR><BR> <I>Sobre o autor:</I><BR> Foi um fotografo, mudou para computação gráfica e desde então nunca mais largou o rato. <BR><i>Conteúdo</i>: <UL> <LI><A HREF="#139lfindex0">Instalação</A></LI> <LI><A HREF="#139lfindex1">A ideia</A></LI> <LI><A HREF="#139lfindex2">Menu e principais funções.</A></LI> <LI><A HREF="#139lfindex3">O processo de Morphing</A></LI> <LI><A HREF="#139lfindex4">Posicionando os vectores</A></LI> <LI><A HREF="#139lfindex5">Calculando a animação</A></LI> <LI><A HREF="#139lfindex6">Guardando a animação</A></LI> <LI><A HREF="#139lfindex7">Criando um morphing rapidamente</A></LI> <LI><A HREF="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=139&lang=pt">Forma de respostas para este artigo</A></LI> </UL> </TD></TR></TABLE> <!-- HEAD OF THE ARTICLE --> <br> <H2>XMRM : Morphing sobre o Linux</H2> <IMG src="../../common/images/article139/img_139.gif" width="200" height="61" alt="[illustration]"> <!-- ABSTRACT OF THE ARTICLE --> <P><i>Abstrato</i>: <P> <P>O <B>XMRM</B> (Multi Resolução de Morphing para X) é um programa de morphing que nos permite criar um vídeo mpeg baseado em duas imagens, onde uma imagem se transforma progressivamente (segundo muitos parâmetros) noutra. Este artigo descreve as principais funções do programa (graças à muita documentação completa em Inglês disponível no site do XMRM), bem como um exemplo de uma pequena animação que mostra como pode obter resultados interessantes muito facilmente.</P></P> <HR size="2" noshade align="right"><BR> <!-- BODY OF THE ARTICLE --> <A NAME="139lfindex0"> </A> <H2>Instalação</H2> A versão utilizada neste artigo provém de um RPM (no RedHat 6.0) mas também pode encontrar distribuição com o código de origem em <a href="http://www.cg.tuwien.ac.at/research/ca/mrm/xmrm.html">http://www.cg.tuwien.ac.at/research/ca/mrm/xmrm.html</a>. <BR> Bem como o programa em si, no sentido de criar uma animação com mpeg, precisa de instalar "tifftopnm" e "ppmtoyouvsplit", que estão ambos no pacote "netpbm01mar94", o qual pode ser encontrado aqui: <a href="ftp://ftp.x.org/contrib/utilities/">ftp://ftp.x.org/contrib/utilities/</a> bem com o "mpeg" aqui: <a href="ftp://ftp.x.org/contrib/utilities/">ftp://ftp.x.org/contrib/utilities/</a> <BR> <A NAME="139lfindex1"> </A> <H2>A ideia</H2> O modo como o XMRM trabalha é como se segue: você carrega duas imagens, uma chamada "origem" e a outra chamada "destino". Depois, usando vectores faz um rasteamento em cada imagem, onde cada ponto numa linha de uma imagem corresponde a um ponto na outra imagem. Estes rasteamentos determinaram os contornos do morphing. Depois de escolher o tipo de morphing, a qualidade, o número de passos [quadros (frames)] você "calcula" a animação, que pode salvar como um mpeg. <A NAME="139lfindex2"> </A> <H2>Menu e principais funções.</H2> <IMG src="../../common/images/article139/img_139_01.png" width= "143" height="261"> <BR> <BR> Este menu serve de função dupla visto que cada comando corresponde a um botão na interface principal. <BR> <BR> <IMG src="../../common/images/article139/img_139_02.png" width= "182" height="309"> <BR> <BR> Este menu permite-lhe escolher o tipo de "onda de água" (tradução literária) isto é o tipo de transformação. As várias escolhas são diferentes algoritmos de transformação de imagem. O "RTS.Transform" é suficiente na maioria dos casos, em especial no modo ver antes. Para resultados de alta qualidade, escolha entre a gama Biorthogonal Spline e Battle Lemarie (que vai desde o mais complexo ao mais lento).<BR> Os outros três podem produzir resultados engraçados. <BR> <BR> <IMG src="../../common/images/article139/img_139_03.png" width= "167" height="152"> <BR> <BR> Este menu permite-lhe mostrar ou esconder as diferentes janelas de trabalho. <BR> <IMG src="../../common/images/article139/img_139_04.png" width= "141" height="31"> <BR> <BR> O XMRM usa o formato TIFF. <BR> <BR> <IMG src="../../common/images/article139/img_139_05.png" width= "281" height="31"> <BR> <BR> <IMG src="../../common/images/article139/img_139_06.png" width= "111" height="101"> <BR> <BR> Todas as suas definições, incluíndo vectores, o nome das imagens, dos parâmetros, etc, podem ser guardador, carregados e guardados como... <BR> Os Projectos são guardados com a extensão .prj; os vectores são guardados num ficheiro separado com a extensão .prj.vec. <BR> <BR> <IMG src="../../common/images/article139/img_139_07.png" width="71" height="31"> <BR> <BR> Inverter as imagens de origem e de destino bem como os vectores para alterar o sentido do morphing. <BR> <BR> <IMG src="../../common/images/article139/img_139_08.png" width="71" height="31"> <BR> <BR> Carrega um imagem preta e branca para usar o detalhe da função do Mapa de Morphing.<BR> Uma imagem colorida é convertida numa a preto e branco. <BR> <BR> <IMG src="../../common/images/article139/img_139_09.png" width= "167" height="23"> <BR> <BR> Morphing básico misturando as imagens de destino e origem. <BR> <BR> <IMG src="../../common/images/article139/img_139_10.png" width= "167" height="20"> <BR> <BR> Esta especificação utiliza uma imagem a preto e branco mais a imagem de origem e de destino. Permitindo-lhe controlar a progressão da transformação: Uma zona branca nas imagens preto e branco indica uma transformação rápida da origem para o destino, enquanto que inversamente, uma zona preta indica uma progressão lenta. <BR> <BR> <IMG src="../../common/images/article139/img_139_11.png" width= "167" height="22"> <BR> <BR> Aqui só a imagem de origem é transformada com base nos vectores.<BR> São garantidos efeitos surpreendentes! <BR> <BR> <IMG src="../../common/images/article139/img_139_12.png" width= "166" height="23"> <BR> <BR> Permite-lhe criar uma sequência com inicio nas áreas menos detalhadas da imagem de origem e das áreas menos detalhadas da imagem de destino, continuando na direcção inversa e retornar ao inicio para terminar o ciclo. <BR> <BR> <IMG src="../../common/images/article139/img_139_13.png" width= "157" height="23"> <BR> <BR> No modo avançado, as "funções de onda de água" podem ser seleccionadas e configuradas separadamente; no modo simples é sempre 1 seleccionada: <BR> <BR> <IMG src="../../common/images/article139/img_139_14.png" width= "304" height="315"> <IMG src= "../../common/images/article139/img_139_15.png" width="301" height= "319" hspace="20"> <BR> <BR> <IMG src="../../common/images/article139/img_139_16.png" width= "157" height="23"> <BR> <BR> Com a opção de "alta qualidade" o cálculo pode demorar 4 vezes mais...<BR> <BR> <IMG src="../../common/images/article139/img_139_17.png" width= "157" height="21"> <BR> <BR> Esta opção posiciona vectores invisíveis nos quatro lados das duas imagens (origem e destino). Isto permite-lhe evitar a deformação da moldura durante o morphing. <BR> <BR> <IMG src="../../common/images/article139/img_139_18.png" width= "157" height="24"> <BR> <BR> Quando este botão não é premido, o morphing convencional é usado. Esta função determina o valor das imagens de origem e destino para cada imagem na animação. <BR> Quando activada, utiliza o "modo de transformação de ondas de água", que é configurável com a opção "Modo Avançado". <BR> <BR> <IMG src="../../common/images/article139/img_139_20.png" width= "301" height="274"> <IMG src= "../../common/images/article139/img_139_19.png" width="302" height= "276" hspace="20"> <BR> <A NAME="139lfindex3"> </A> <H2>O processo de Morphing</H2> <BR> <IMG src="../../common/images/article139/img_139_21.png" width= "180" height="185"> <IMG src= "../../common/images/article139/img_139_22.png" width="180" height= "185" hspace="15"> <IMG src= "../../common/images/article139/img_139_23.png" width="180" height= "185"> <BR> <BR> É possível modificar o processo de morphing como se segue: O eixo dos X representa o tempo ou a posição da imagem na animação: à esquerda está a imagem de origem; na direita está a imagem de destino. <BR> No eixo dos Y, por baixo está a imagem de origem e no topo a de destino.<BR> Então, seguindo os três exemplos em baixo, pode ter uma progressão regular, uma progressão onde a imagem de destino aparece junto ao fim e finalmente uma onde tem um ciclo.<BR> Para adicionar ou modificar a posição de um ponto, utiliza o botão esquerdo do rato; para apagar utilize o botão direito do rato. <BR> <A NAME="139lfindex4"> </A> <H2>Posicionando os vectores</H2> <BR> <IMG src="../../common/images/article139/img_139_24.jpg" width= "350" height="137" alt="[Positioning the vectors]"> <IMG src= "../../common/images/article139/img_139_25.png" width="69" height= "137" hspace="15"> <BR> <BR> Logo que as duas imagens estejam carregadas, utilize os utilitários de Edição, apagar /vector, e defina a /Line para rastear os vectores que determinam os contornos do morphing em cada imagem. Maior número de vectores melhor será a qualidade do processo de morphing. <BR> É possível ter vários rasteamentos por imagem: por exemplo, na documentação oficial, existe um exemplo de morphing um urso com um leopardo onde o seu contorno é a cabeça e a linha de contorno de cada olho, dando um total de três rasteamentos por foto. <BR> <A NAME="139lfindex5"> </A> <H2>Calculando a animação</H2> <P><IMG src="../../common/images/article139/img_139_26.png" width= "215" height="157"><BR> <BR> Aqui determinamos o número de molduras que comporão a animação, o que determinará a sua duração (em conjunção com o número de molduras por segundo) e a renderização (fluída, pausada...) da animação.<BR> <BR> <BR> <IMG src="../../common/images/article139/img_139_27.png" width= "213" height="158"><BR> <BR> Aqui define o número de molduras por segundo (fps) bem como se a animação se repetirá, utilizando o botão "Ciclo". </P> <BR> <IMG src="../../common/images/article139/img_139_28.png" width= "212" height="154"><BR> <BR> A opção "frame preview" é para ver uma imagem dada de acordo com a sua posição na animação. <BR> <BR> </P> <A NAME="139lfindex6"> </A> <H2>Guardando a animação</H2> <IMG src="../../common/images/article139/img_139_29.png" width= "212" height="222"> <BR> <BR> <BR> "<B>Save pics from animation</B>" -- Guarda cada frame como um ficheiro tiff após o cálculo da animação. Deve primeiro escolher um directório e um nome de ficheiro_base.tif (A salvaguarda funciona como ficheiro_base000.tif, ficheiro_base001.tif, ficheiro_base002.tif, etc...).<BR> "<B>Save pics when calculate</B>" -- Guarda os mesmos ficheiros, correspondentes a cada frame, mas ao mesmo tempo em que a animação é calculada. Deve escolher o nome do ficheiro antes de correr a opção "calculate". Esta opção dá-lhe uma melhor qualidade na cor das imagens. <BR> <BR> <IMG src="../../common/images/article139/img_139_30.png" width= "250" height="232"><IMG src= "../../common/images/article139/img_139_31.png" width="207" height= "232" hspace="20"> <BR> <BR> Você chama este diálogo clicando em "Execute xmrm_mpeg". Escolhe depois a primeira e a última imagem da animação utilizando o botão "choose start/stop frame", e clique GO para iniciar a operação final que faz a animação mpeg. <BR> Pode também criar um ciclo, e começar o mpeg_play logo que o mpeg seja criado. <BR> <A NAME="139lfindex7"> </A> <H2>Criando um morphing rapidamente</H2> <BR> Antes de tudo, aqui estão as duas imagens que pode obter se quiser utilizar as mesmas do exemplo: <BR> <A href="../../common/images/article139/01.tif">01.tif</A> e <A href="../../common/images/article139/02.tif">02.tif</A> (90 kb cada) <BR> <BR> <IMG src="../../common/images/article139/img_139_32.jpg" width= "249" height="132" alt="[The input files]"> <BR> <BR> Clique "Load Source" e carregue o 01.tif, e depois o "Load Destination" para carregar o 02.tif. <BR> <BR> <IMG src="../../common/images/article139/img_139_33.jpg" width= "248" height="132" alt="[]"> <IMG src= "../../common/images/article139/img_139_25.jpg" width="69" height= "137" hspace="15"> <BR> <BR> Com o utilitário "Set vector", faça um rasteamento à volta do bébé.<BR> Para usar este utilitário, clique no botão esquerdo do rato, arraste para desenhar o vector e liberte quando tem o tamanho pretendido.<BR> Verá que uma das setas no topo da cabeça do bébé é verde. Isto é um ponto de referência, que o ajuda e posiciona o mesmo número de vectores na imagem de destino. Após finalizarmos o rasteamento na primeira imagem, quando começarmos na segunda linha, o rasteamento terá uma seta verde ao longo da primeira linha, o que tornará o trabalho mais fácil. <BR> <BR> Aqui estão os parâmetros que usei para obter um resultado interessante: <BR> <BR> - Simple morph<BR> - Border vector<BR> - use wavelets<BR> <BR> - O cursor "wavelet interpolation levels" subiu para os 3/4.<BR> - O progresso de Morphing fica rectilíneo e centrado<BR> - Número de frames: 50<BR> - A "sequência de Animação" activada e com 25 fps<BR> <BR> Agora clique em "calculate" para gerar a animação; pode vê-la com o botão "animate" e fazer modificações. Tenha cuidado: Ao correr de novo o "calculate" limpa a animação anterior. <BR> Logo que tenha um resultado satisfatório, active "save pics from animation" e escolha um nome de ficheiro e a directoria. Aqui guardará os 50 ficheiros .tif gerados pelo comando "ready" na caixa de diálogo que abre com "choose filename". <BR> Última operação: Clique em "Execute xmrm_mpeg", escolha o filename000.tif como START-frame e filename049.tif como LAST-frame e clique "GO" para criar um ficheiro mpeg. Este ficheiro será chamado filename.mpg e estará localizado no mesmo directório que os 50 ficheiros tif.<BR> <BR> <IMG src="../../common/images/article139/img_139_34.jpg" width= "158" height="170"> <IMG src="../../common/images/article139/morph_small.gif" width="45" height="45" hspace="8" alt="[small animated gif]"> <BR> Fácil, não?<BR> Esta animação (em tamanho completo) pode ser obtida <A href= "../../common/images/article139/morph.mpg">aqui como um ficheiro mpeg</A> ou como um <A href="../../common/images/article139/morph.gif">gif animado</A>. <br> <br> Nota de Editores: A compilação do xmrm com distribuições recentes do Linux ainda não está 100%. Compilámos então uma lista de dicas: <ul> <li><A href="../../common/src/article139/indexpt.html">dicas de compilação do xmrm</a></li> </ul> <!-- 2pdaIgnoreStart --> <A NAME="talkback"> </a> <h2>Forma de respostas para este artigo</h2> Todo artigo tem sua própria página de respostas. Nesta página você pode enviar um comentário ou ver os comentários de outros leitores: <center> <table border="0" CELLSPACING="2" CELLPADDING="1"> <tr BGCOLOR="#C2C2C2"><td align=center> <table border="3" CELLSPACING="2" CELLPADDING="1"> <tr BGCOLOR="#C2C2C2"><td align=center> <A href="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=139&lang=pt"><b> página de respostas </b></a> </td></tr></table> </td></tr></table> </center> <HR size="2" noshade> <!-- ARTICLE FOOT --> <CENTER><TABLE WIDTH="95%"> <TR><TD ALIGN=CENTER BGCOLOR="#9999AA"> <A HREF="../../common/lfteam.html">Páginas Web mantidas pelo time de Editores LinuxFocus</A> <BR><FONT COLOR="#FFFFFF">© Yves Ceccone, <a href="../../common/copy.html">FDL</a> <BR><a href="http://www.linuxfocus.org">LinuxFocus.org</a></FONT> <BR><a href="http://cgi.linuxfocus.org/cgi-bin/lfcomment?lang=pt&article=article139.shtml" target="_TOP">Clique aqui para reportar uma falha ou para enviar um comentário para LinuxFocus</A><BR></TD> <TD BGCOLOR="#9999AA"><!-- TRANSLATION INFO --> <font size=2>Informação sobre tradução:</font><TABLE> <tr><td><font size=2>fr</font></td> <td><font size=2>-></font></td> <td><font size=2>--</font></td> <td><font size=2><a href="http://linux-france.org/article/appli/infographie"><FONT COLOR="#FFFFFF">Yves Ceccone</FONT></a></font></td> </tr> <tr><td><font size=2>fr</font></td> <td><font size=2>-></font></td> <td><font size=2>en</font></td> <td><font size=2><a href="mailto:clark@phred.org"><FONT COLOR="#FFFFFF">Clark Freifeld</FONT></a></font></td> </tr> <tr><td><font size=2>en</font></td> <td><font size=2>-></font></td> <td><font size=2>pt</font></td> <td><font size=2><a href="mailto:bruno@linuxfocus.org"><FONT COLOR="#FFFFFF">Bruno Sousa</FONT></a></font></td> </tr> </TABLE></TD> </TR></TABLE></CENTER> <p><font size=1>2001-09-19, generated by lfparser version 2.17</font></p> <!-- 2pdaIgnoreStop --> </BODY> </HTML>