<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//RU"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=koi8-r"> <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 : Морфинг с Линуксом =LF=NUMBER: 139 =LF=ANAME_: article139.shtml.htm --> <TITLE>lf139, Graphics: XMRM : Морфинг с Линуксом</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">Домой</FONT></A> | <A class= "nodec" href="../map.html"><FONT color= "#DDDDDD">Карта</FONT></A> | <A class= "nodec" href="../indice.html"><FONT color= "#DDDDDD">Индекс</FONT></A> | <A class="nodec" href="../Search/index.shtml"><FONT color= "#DDDDDD">Поиск</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">Новости</FONT></A> </TD> <TD><FONT color="#FFFFFF">|</FONT> </TD> <TD><A class="nodec" href="../Archives/index.html"><FONT color= "#FFFFFF">Архивы</FONT></A> </TD> <TD><FONT color="#FFFFFF">|</FONT> </TD> <TD><A class="nodec" href="../Links/index.shtml"><FONT color= "#FFFFFF">Ссылки</FONT></A> </TD> <TD><FONT color="#FFFFFF">|</FONT> </TD> <TD><A class="nodec" href="../aboutus.html"><FONT color= "#FFFFFF">Про 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">Эта заметка доступна на: <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> <IMG src="../../common/images/Yves-Ceccone.jpg" alt= "[Photo de l'auteur]" height="137" width="123"> <BR>автор <A href= "http://linux-france.org/article/appli/infographie">Yves Ceccone</A> <BR><BR> <I>Об авторе:</I><BR> Был фотографом, занялся компьютерной графикой и с тех пор никогда не выпускал мышь из рук. <BR><i>Содержание</i>: <UL> <LI><A HREF="#139lfindex0">Инсталляция</A></LI> <LI><A HREF="#139lfindex1">Идея</A></LI> <LI><A HREF="#139lfindex2">Меню и основные функции.</A></LI> <LI><A HREF="#139lfindex3">Продвижение морфинга</A></LI> <LI><A HREF="#139lfindex4">Позиционирование векторов</A></LI> <LI><A HREF="#139lfindex5">Просчёт анимации</A></LI> <LI><A HREF="#139lfindex6">Сохранение анимации</A></LI> <LI><A HREF="#139lfindex7">Быстрое создание морфинга</A></LI> <LI><A HREF="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=139&lang=en">Страница отзывов</A></LI> </UL> </TD></TR></TABLE> <!-- HEAD OF THE ARTICLE --> <br> <H2>XMRM : Морфинг с Линуксом</H2> <IMG src="../../common/images/article139/img_139.gif" width="200" height="61" alt="[illustration]"> <!-- ABSTRACT OF THE ARTICLE --> <P><i>Резюме</i>: <P> <P><B>XMRM</B> (Multi Resolution Morphing for X) Это программа для морфинга позволяющая создать mpeg видео на основе двух картинок, где одна из картинок плавно трансформируется (в соответствии со многими параметрами) в другую. Эта статья описывает основные функции программы (спасибо очень полной документации на английском языке доступной на сайте XMRM), а также приводит пример небольшой анимации показывающей, как легко можно получить интересные результаты. </P></P> <HR size="2" noshade align="right"><BR> <!-- BODY OF THE ARTICLE --> <A NAME="139lfindex0"> </A> <H2>Инсталляция</H2> Версия использованная в этой статье взята из RPM (RedHat 6.0), исходники можно взять тут: <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> Кроме самой программы для того, чтобы сохранить анимацию в виде mpeg файла вам также понадобится проинсталлировать "tifftopnm" и "ppmtoyouvsplit", оба содержатся в пакете "netpbm01mar94", который вы можете найти здесь: <a href="ftp://ftp.x.org/contrib/utilities/">ftp://ftp.x.org/contrib/utilities/</a> а "mpeg" здесь: <a href="ftp://ftp.x.org/contrib/utilities/">ftp://ftp.x.org/contrib/utilities/</a> <BR> <A NAME="139lfindex1"> </A> <H2>Идея</H2> XMRM работает следующим образом: вы загружаете две картинки, одна называется "исходной", а вторая "целевой". Далее используя вектора вы обводите точки на обеих картинках так, чтобы все точки на одной линии соответствовали на обеих картинках. Эта обводка определит контуры морфинга. После того, как вы выберете тип морфинга, качество, количество шагов (кадров), вы просчитываете анимацию, которая потом может быть сохранена как mpeg. <A NAME="139lfindex2"> </A> <H2>Меню и основные функции.</H2> <IMG src="../../common/images/article139/img_139_01.png" width= "143" height="261"> <BR> <BR> Это меню выполняет двойную функцию, так как каждая команда соответствует кнопке в интерфейсе программы. <BR> <BR> <IMG src="../../common/images/article139/img_139_02.png" width= "182" height="309"> <BR> <BR> Это меню позволяет выбрать тип вайвлета, то есть трансформации. Различные опции представляют собой различные алгоритмы преобразования картинок. В большинстве случаев, особенно для предварительного просмотра достаточно "RTS-Transform". Для получения высококачественных результатов используйте от "Biorthogonal Spline" до "Battle Lemarie" (котрые идут от самых сложных до самых медленных).<BR> Три последних могут дать смешные результаты. <BR> <BR> <IMG src="../../common/images/article139/img_139_03.png" width= "167" height="152"> <BR> <BR> Это меню позволяет прятать или показывать различные рабочие окна. <BR> <IMG src="../../common/images/article139/img_139_04.png" width= "141" height="31"> <BR> <BR> XMRM использует формат 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> Все ваши настройки, включая векторы, имена картинок, параметры и другое может быть сохранено, загружено или сохранено как ...<BR> Проекты сохраняются с расширением .prj; векторы сохраняются в отдельных файлах с расширением .prj.vec. <BR> <BR> <IMG src="../../common/images/article139/img_139_07.png" width="71" height="31"> <BR> <BR> Поменять местами исходную и целевую картинки, а также векторы для изменения направления морфинга на противоположное. <BR> <BR> <IMG src="../../common/images/article139/img_139_08.png" width="71" height="31"> <BR> <BR> Загрузить чёрно-белую картинку для использования "Detail Map Morph". Цветная картинка будет конвертирована в чёрно-белую.<BR> <BR> <IMG src="../../common/images/article139/img_139_09.png" width= "167" height="23"> <BR> <BR> Простой морфинг смешиванием исходной и целевой картинки. <BR> <BR> <IMG src="../../common/images/article139/img_139_10.png" width= "167" height="20"> <BR> <BR> Эта опция использует черно белую картинку как маску для морфинга. Области на исходной и целевой картинке соответствующие белому цвету на маске будут трансформироваться быстро, а области соответствующие черному цвету на маске будут трансформироваться медленно. <BR> <BR> <IMG src="../../common/images/article139/img_139_11.png" width= "167" height="22"> <BR> <BR> Только исходная картинка трансформируется на основании векторов.<BR> Неожиданные эффекты гарантированы! <BR> <BR> <IMG src="../../common/images/article139/img_139_12.png" width= "166" height="23"> <BR> <BR> Позволяет вам создать последовательность начиная с менее детальной области на исходной и целевой картинке, продолжить в обратном направлении и вернуться к началу, чтобы завершить цикл. <BR> <BR> <IMG src="../../common/images/article139/img_139_13.png" width= "157" height="23"> <BR> <BR> В продвинутом режиме "wavelet-functions" может быть выбрана и настроена отдельно; в простом режиме всегда выбрано 1: <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> С опцией "high quality" (высокое качество ) вычисления могут занять в 4 раза больше времени... <BR> <BR> <IMG src="../../common/images/article139/img_139_17.png" width= "157" height="21"> <BR> <BR> Эта опция добавляет невидимые векторы на четырёх сторонах обоих картинок (исходной и целевой ) так, чтобы избежать деформации границ картинок при морфинге. <BR> <BR> <IMG src="../../common/images/article139/img_139_18.png" width= "157" height="24"> <BR> <BR> Когда эта кнопка не нажата, используется стандартный морфинг. Эта функция определяет вес исходной и целевой картинок для каждого кадра анимации. Когда она нажата используется продвинутый режим трансформации с использованием вейвлетов, который настраивается с помощью опции "Advanced Mode". <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>Продвижение морфинга</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> Возможно изменять продвижение морфинга: ось X представляет собой время: слева исходная картинка; справа целевая.<BR> На оси Y низ это исходная картинка, а верх - целевая.<BR> На приведенных выше трёх примерах вы видите обычное продвижение, продвижение где целевая картинка появляется ближе к концу, а также продвижение с петлёй. <BR> Для добавления или изменения положения точки используйте левую кнопку мыши, для удаления - правую. <BR> <A NAME="139lfindex4"> </A> <H2>Позиционирование векторов</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> После того, как обе картинки загружены, используйте инструмент "Edit" для обводки векторами контуров для морфинга на обеих картинках. Чем больше количество векторов, тем качественнее будет морфинг.<BR> Также возможно создать несколько обводок: например в документации к программе есть пример морфинга медведя и леопарда, где используются контуры для головы, а также для каждого из глаз, всего три обводки на фотографию. <BR> <A NAME="139lfindex5"> </A> <H2>Просчёт анимации</H2> <P><IMG src="../../common/images/article139/img_139_26.png" width= "215" height="157"><BR> <BR> Здесь вы определяете количество картинок (кадров) содержащихся в анимации, что определяет её длительность (вместе с частотой кадров в секунду) и рендеринг (плавный, прерывистый...) анимации.<BR> <BR> <BR> <IMG src="../../common/images/article139/img_139_27.png" width= "213" height="158"><BR> <BR> Здесь вы устанавливаете частоту кадров в секунду, а также цикличность анимации используя клавишу "Cycle" .</P> <BR> <IMG src="../../common/images/article139/img_139_28.png" width= "212" height="154"><BR> <BR> Опция "frame preview" предназначена для просмотра определённой картинки в анимации.<BR> <BR> </P> <A NAME="139lfindex6"> </A> <H2>Сохранение анимации</H2> <IMG src="../../common/images/article139/img_139_29.png" width= "212" height="222"> <BR> <BR> <BR> "<B>Save pics from animation</B>"--Сохранить каждый кадр как tiff файл после того, как анимация будет просчитана. Вы должны выбрать директорию и базовое имя файла base_filename.tif. (Файлы будут запомнены под именами base_filename000.tif; base_filename001.tif, base_filename002.tif, и т.д.)."<B>Save pics when calculate</B>" -- Сохранить те же файлы во время просчёта анимации. Вы должны выбрать имя файла до того, как нажмёте "calculate". Эта опция даёт лучшее качество цвета в картинках. <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> Вы вызываете этот диалог нажав "Execute xmrm_mpeg". Затем вы выбираете первую и последнюю картинку анимации используя кнопку "choose start/stop frame". Нажав кнопку "GO" вы запускаете последнюю операцию по созданию mpeg анимации. <BR> Вы также можете создать цикл и запустить mpeg_play после того, как анимация будет создана. <BR> <A NAME="139lfindex7"> </A> <H2>Быстрое создание морфинга</H2> <BR> Для начала две картинки, использованные в статье можно скачать здесь:<BR> <A href="../../common/images/article139/01.tif">01.tif</A> и здесь<A href="../../common/images/article139/02.tif">02.tif</A> (90 kb каждая) <BR> <BR> <IMG src="../../common/images/article139/img_139_32.jpg" width= "249" height="132" alt="[Исходные файлы]"> <BR> <BR> Нажмите "Load Source" и загрузите 01.tif, затем нажмите "Load Destination" для загрузки 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> Используя инструмент "Set vector", обведите изображение ребенка с помощью векторов.<BR> Для использования этого инструмента нажмите левую кнопку мыши и растягивайте вектор до необходимой длины.<BR> Вы увидите, что одна из стрелок вверху головы ребенка зеленая. Эта отметка поможет вам начертить и разместить то же самое количество векторов на целевой картинке, как и на исходной. После того, как закончите обводку первой картинки и перейдем ко второй, вы увидите зеленую стрелку на первой линии, это сделает работу проще. <BR> <BR> А это параметры, которые я использовал для получения интересных результатов:<BR> <BR> - Simple morph (простой морфинг )<BR> - Border vector (граничные векторы )<BR> - use wavelets (использование вейвлетов )<BR> <BR> - Курсор "wavelet interpolation levels" поднят до 3/4.<BR> - Процесс морфинга прямолинейный и центрированный<BR> - Количество кадров: 50<BR> - Выбрано "Animation sequence" и 25 кадров.сек<BR> <BR> Теперь нажмите "calculate" чтобы сгенерировать анимацию; вы можете просмотреть ее, а также изменить нажав кнопку "animate". Будьте осторожны: нажав "calculate" еще раз вы сотрете предыдущую анимацию. <BR> Добившись удовлетворительных результатов пометьте "save pics from animation" и выберите имя файла и директорию. Здесь будут сохранены 50 .tif файлов сгенерированных по команде "ready" в диалоге, открывающемся с "choose filename". <BR> Последнее: нажмите "Execute xmrm_mpeg", выберите filename000.tif как START-frame (начальный кадр) и filename049.tif как LAST-frame (последний кадр) и нажмите "GO" для создания файла mpeg. Этот файл будет называться filename.mpg и будет создан в том же каталоге, что и 50 файлов 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="[маленький анимированный gif]" <BR> Легко, нет?<BR> Эта анимация (в полном размере) доступна <A href= "../../common/images/article139/morph.mpg">здесь как mpg файл</A> или как <A href="../../common/images/article139/morph.gif">анимированный gif</A>. <!-- 2pdaIgnoreStart --> <A NAME="talkback"> </a> <h2>Страница отзывов</h2> У каждой заметки есть страница отзывов. На этой странице вы можете оставить свой комментарий или просмотреть комментарии других читателей. <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=en"><b> talkback page </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">Webpages maintained by the LinuxFocus Editor team</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=ru&article=article139.shtml.htm" target="_TOP">Click here to report a fault or send a comment to LinuxFocus</A><BR></TD> <TD BGCOLOR="#9999AA"><!-- TRANSLATION INFO --> <font size=2>Translation information:</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>ru</font></td> <td><font size=2><a href="mailto:yura_ch@yahoo.com"><FONT COLOR="#FFFFFF">Yury Chursa</FONT></a></font></td> </tr> </TABLE></TD> </TR></TABLE></CENTER> <p><font size=1>2001-10-30, generated by lfparser version 2.17</font></p> <!-- 2pdaIgnoreStop --> </BODY> </HTML>