Fast Rendering of Image Mosaics and ASCII Art
Total Page:16
File Type:pdf, Size:1020Kb
Volume 0 (1981), Number 0 pp. 1–11 COMPUTER GRAPHICS forum Fast Rendering of Image Mosaics and ASCII Art Nenad Markuš1, Marco Fratarcangeli2, Igor S. Pandžic´1 and Jörgen Ahlberg3 1University of Zagreb, Faculty of Electrical Engineering and Computing, Unska 3, 10000 Zagreb, Croatia 2Chalmers University of Technology, Dept. of Applied IT, Kuggen, Lindholmsplatsen 1, SE-412 96 Göteborg, Sweden 3Linköping University, Dept. of Electrical Engineering, Information Coding Group, SE-581 83 Linköping, Sweden [email protected], [email protected], [email protected], [email protected] __/[(\;r'!IfJtLL3i}7/_\\r[((}j11](j3ltlljj{7j]_j_\3nu&j__\_!/\/_|_(_,_7&Url37r|v/=<>_ ___<|\;"__3fJtCv3C<>__<|r]c7r71]](j3jtCljjC7js_[<r3vu&r__\_=^=\<{_|_,.<wfJjv()>/__7\_ __{_}="__<4@nYl03jrr><<\_\7?csC*(j33tJo~C7Cj[*C_(c/lVTfr_^^^^<!_</(\_,`3ULt**)|<~=_ay \>r_}!"__<IFfYCJ3jC|><<\)77>csC*Cj33Jjov7oCr7<j}rc7lVTn>_^^^^~!_</(\_,`3ano**]<<\=_uy )r+|>"~_~\4FfGvtJCr{/{/<_ss(r]vCCoLjLLjtj_j*jjscrs*jJT@j_-`:__=/\<<}],-"Ij0isc_=_jyQd _\__r"~_~\3kfLovJjr\<||>rs*_j(jv*vCjLtjtj(j7jjr]r]*jJT@j!-.-_^__\</<C,,`YYjii]\=_jmdd >\=="_!=`(5PfJ*tj*r_|<\<s(*j*ivjcIVuaGjujvCos*{j(r(3vaAjr__-;_;~=\><7r,."YLjjr/_aED^k !_=="__="/4PfJotjvrr<r(rsj*j*ivj*JeneIYjjvrss*rj7r13jaAtr__~;~__=/\<3i,.^vLjjr>_x#E%k ^;"___+_r<4Pfv0tvCrvrrc<*1(_C*ijoLI9AaTazjjovj*ri}i3evTjr____~_=_\\]j3r,~`YejrjdbUU%b !_^"_____\4yfLYtllr_rrr[*7*jCjjjvLYfAaT&Ljjjji*rr*r3vefjr__;__!=_+/_*vr,``YLjrj#bUx%m _="_jr-^,\5kaf<r3rr[/\r/r](Cv\jv*77?\""_/7vLjjj_sjCo3n$tr<\_==!___/_3li_,`^v\xm#Ujqmb "="_jr~^_\3khYj*v_*|)r<r77*vvjjt*777\^:_^7vLtjjc*iCvYuAtr<>_==r___sj3vi_,`^0jxK#UhhmE ="_jzr""~<5yfYLoCc|\\<>>rC}**_e_jr/rr=_^^^.`70jjjjjefuAtr?(/__=_)r**o*i*_,/`mHP%ky%yE ="_jer"-~\5yfLLojr|({)>>rrj*7Cesj>_/r_<^__^_^aYjojvz6uft/=/___=_?rj*o3**_,`_p#%wUyky# "_(yf{-^~<5EhfYtj1r(<r(>7*3vvoeJJvjjrr___;--_:7Yunj_VA$tr-=\___<7r7*17<(?,_xK#ULP%dPy `_sxf_^^-_5#@9VYCjc(<r)\7*<ozvesevjjs\/:_^--__7&uujuVa@tr^=\___r7r7**7rr\,_xKPUjdFdFy _<x#fr^``<4#@nJJ3c*?i/rs}_a8nLS0jCJvjrr;"_",_;-^^v&jauTt/^``sjj/{r(<}(~+"jmHD_dPydfwf _<xBtr""`<4m8nJ33v*<ir>s7_zafnftjYJfrcr;"~"__~-^^*&aaaTt_-^^sjr_<r)\r(r~=upBP_qETwTxf _abEt="^^<4yOLvrv*(\?(>7_uYlt45IY0Yt0v>_;_~^"_...,3y&h@t>.:<<war/{\_?(|!oq#FFyPyPfS7_ _xE#tr,,-<upfLtCv*r7r(>?juejYjV5YSuvt*__;_~^"^..,,*y&@ht=_"^<war/r?/r(\_om#F_mFyFfzr_ uEFEt!,^_<4#fJvv337>{>r<JV0(uftSl_7eet>j=`-`_--_,.,7kyFt__:_<xmtr!(\||ropyhndFF%aCr_= uybEt!,"`\3#VJvvo3_<?>!_VVtuufCVl`Cve*_sr`--_,-_,'.\%y&t__:^<dmtj_|\\\=oqwTTdFyFfCr_= EThyt+,,_<IEfttljj7}_|\ul<L6Sj*?jov2ker`--_,-"`-.'--`4ytr_,_<xXytrcsr_o##U@yhyFwt\_^- mFPyt_,,,<3Ehtj3jj77_j_ujJuf9j7\j*S_aar`-__;-"`-.'-,`Tytr_,_(@Byt>_sr=oBTUayTwPwt\_"- hdLEt+,__<3b@Ltjr_c}<"34nYIloC13Cj&A7",-,^`-,__,--",'/8fr___(xBgmr"^^o#yFFTkFlyt_>"__ ykdmtr,___3phLtj*jr<j"IuevLCvC7_JjxP7`,^_"`-,,,,-,',``Tfr__;3TXgmr"^^opbF@TkyTyf_<",_ dPPEfr,^~<uHwfJv3o77j_2ZJIu3jjvj487_=_=_:,,^;-"-,,,.-.`@j_<_3dgf"-`,,<HyFwjyUPt_/"_., #PPEfr,^-<4ByfY3vj*7S_IfeIj0jjejjTr^\_=_._,"_-"-,,,,-.`Fj\\_3dgf_,``,<E&FxymUPt_=__:_ PFh/fr,.^\u#htC*j7s7!_$faYjoStCaC___=`-_:_~"_,-^,_-^",,^*j|(5J\-",,.'u#FkmEPmY_/`___= FFTwfr,_^<3#ft3*C7]7{_$fefjvCCjV*___=`-___>"_,-^,_--",,^o]|(uY_,",,.'<py%m#Fmf_/-___= dUTUtr--"<ubOtt*3jivr<IOaTeCv9J`|jr~"_="~\___~__+_,,____,ss=_-",--,'`<PD%#PPf_/__;~;! UUTwtr--"<3Ehtt*jjjv,<IOVaeC34*__j/_"_=_>__~_=__/_~,____,j*!,=",,-,'`<y%ypPFf_/"_~=__ yUxTtr"".<ubTeu3vv32N^*YAffIv7_/*\_|=_=!~=_\__/\_~__|~_|=_-"_,_-,__,_8Eydyhfr/"__~~"= hTxxtr"_._umTLo33o34,_*V8ffSu\_rs>_c^_|"~=|\__\r_~__|~_j>_-"_,_-,__,_4yydy%f\["_==~_= %yDPfr,__<4kfJlrulvI:`!7U&\Y_>3C_)\<)/_!=_<>jc>_\__[jc{~^"_~~-""_/_=_#PDEyTr/+__,._\_ %yyyt>-___3EV0vovvv$..=<Vxjf_>jC\__<j/____<rjs/j\_(__s_~""__~-""->_=_QPyEmTr/=___^;^= p%DFtr~-_<3yutLjlv3J'`^/3$7_\C?_jr\r.<<(jj*]*]cj3tj*)="_~="""""_/>j=@#PPThr|r_~_;_+_! y%DFtr"`-\3yutoCoeIt',^=ux*__o__j*[r__+jjj*7*]c_otj*r/"_~!^"":`_7<j"@EyPdhr}!_~__=_~! wFFAt>^-.<5#&uJt_vut``~_<jrjr<\cr},jCITa_3eeIaay&*>=`-^"":""^`_(eY=_WybkPC(r~~=__~_<| d%Fhtr,-,<3p&jSjvjuf``^_\j_vr/jsr(_)*Ija/3tejauyars=`-^_".""^`_jeY=<W#pkyt(r==_=_+r~| TTkft=":,\v#h6vCjvjA`-~>7*Jr<sr[/_s\J__kn8PkEQg@l!,^:___~`"_sefY*"opUdPdf\/~=_<~\/\_+ TUyft!":,^4#hLvCt3ek``^*73nr<sr[*<js*jaynUPkEgNFLr,_:-__`-^_<4fY*"opDdFdf<>~=^~~/!\/+ ZTTAt>,::_3#hzJtCvST_^`=_S\_*/_r_Vja$wphLPTy#PLr_=___,--_jet*7\=_y#ky#U@r/""^!_+/r/|< 4VThtr,`._3p@jYt*vl8,,`=_t\_*<_r_<jVTyQhu@TwQF5r_=__!:--"_et*7\=_Q#%dHy@r/__;=!_/=\_> 9OAytr,."<3#wZYv3vi3L,"`*/<r<(\>eafy@dFwdxwUO*"__>_r=_;<FUvJr=_eQmhddDFtj"-:_~^^"//+| 5jA&tr".`^3#wfYt3vi3a,``*+<r<r\_eaTyTyFdkAxuf*"^^=_r>__~DujJ|=_aQE%T#bPjj=-:~~_^_==\| fAUdnr,`-~3pke0ttC]73]`v_sr_+__eaf4DLfdywk8LC_~_r+,;^"""3AxjroQQbPPdyyfvr~_^~~~_r~/") f8Tdnr___~3KFe0Lli*7vl`u<sr_r__axj4PtYEmwy8LC_~__+\=""``3AnjrsQX%UUypyfvr`_^~_=_=~~\) JZ@dfr,,^^v#Fnv*JCj/7j^_v]*\__yw#k54TrTpb\r}___1rs!--```<TQa{4B#k&dpqFrc\___==_^~!__( _OA%fr,-^:3#hnv*vCr/7I,_ts*\__wxpk454rTq#\r1~_<l=<r-,'``\TgAr4E#k&hpmPrc____=~_^~___( fuAxfr,-"^3ETtjr3*\/\7,!(?=lx%FDUPF@C9TF)"^|!__s*r"`\``,^3Byr0d%P_EEdt<"-\\|><_____`s fuTyf_,`'^3Ehtjr3v~r?7,=s?_j$%FEP#ywIfT@_"^<;__j*\"`,``.`3ByrudDUadEyt<"^\\\|_______> nVTTfr,`.~3yftjrsrr=++|~__<FFk#Vxdh*fBC//;`^_(rr>!,,`...~\ugj7P@fdd_F~r__^`"=7*lvojjj nV@Tfr,``^3yftji3r>=<+_\;_<fyd#nUDh5fWr/,_`^_(7rr=,,'',.'<Tgj3P@fxdyfrr-~^_"=<*3tjjjj 4O4Tfr,```<Pftcrjrr_=~wj_ofTfdw@EkTVyt=-_=__0e&aj__,^,,__swWa<&huyydt("~;____+/7**0eu eVfTfr,`.<3bft3jCrr_=`pt_jFxf@w@Eydewt="_=_<Y8&uj__,,,,,_j@RT<wTadyd*3"-;____+/77*Lvu 9LjUfr,"~^<%ajCrLj="N'_LJfvlD$hp3#bmt='`"_axywmyFtr,"_j$&axBh<TTwmDF\r________|s__jIV 9LeTfr,'`^<Dalrrjj="``_LuAv0Q4UmJ#qyt^"`^_yayamyFj_,``jj&auXnu%$xmDFrr"__^=___{rr(j3f ffTdAr,'`^<DfYC*0t_"__yTeutrEPVdyxBf=,`_oD#E#r7Hwzj-_4dG7my_hN5TEDbt)r~___<_|/jjjeeaa ffTd&r,'``<Efvo*ey,-__phautrEyt%#&Qf=,`_oDm##r7BaLj,_4#O7mygnu3TEdmt|"~_/_<<rr_sjLeja vJ$d&>,``^<Ttr?uJ7`_4@txnlrrVmyDEQ@/^`_C*7VVl__3hfr,^*7_j@UNU,txmwFr/:_!___{<jlLnu07^ vJ$d&r,.``<Ttr?a8?`_#P_An1rrFybbE_f/-'_C*7VIj__*Tfr,-*7_jFPd4,tTmwPr=^_=_/>_\jjenVt7\ zLydkr,'`<<@trr`_on#Fr_4VC+_3yd/dP/"`sLr!==?7?"\fIj,`"?7C\UyT,3F#dt7"~_=\<<_>vua*^"-~ juTd&r,'`_<Atrr_,ongdr_dhj=_3ddydb3-_<f]!==??="\YIj,`"?**3TyT,3yEyt3"~__\/r_r3IaC^^_^ I$@qFr,,'`<@t="_soyfr_uHkj[LrVypyv"_4fCr~_-""^_<VIt,<_^!/"dUxr7EmEr/_~~~__(_ouJ?"_-^" J$TqPr-,`_<@tr"_s<yTjr3Hyj_o^uybp?`_4fCr__-"""_<]Yt,.-^|/7dyd,7Qy#r=^~~=_/(1vuf\"_-=^ wkdByr,.-_<A*>=*3u\8r3whAD8%~/dgr"_@Ftr>>!;-___(jzt;,`_</<yFdruqdfs"~__|_<v<eYr_:,^`, wh%Xkr,.,_<A*r=rL__vr4dhyb$X~_Xg\"_xFtr?>!;.___vjvt;,_^_/<yFxr_Qxf<"~__\(s3ovT=-;_-`, Tw%gyr,',^<hr_^@_vf~_\kyXf3r_4xf=_xQ8tr<+___,__3L5f_,^__<upfdj;E#r/_~_=_/\NuYr:_=`,," Uxdgyr,''_<T_"^Q__F\_\byWf_r_3xf!_xgTt_r>____~_3LVf_,^~_<3bIdruDQr|-___\/73vYr_;=`,,, TTkWPr,,,~<Y_/<f\u*A\<JydyJrxgC"^uQ#Itrr/;;^_=<4tjjr,_~__BdndA`TFt"___!_/j3er__^_,:-- 48dB@r,,,_<Y__<@;V0%7<3ydFa>egr""3QQ3trr+___~_<4tjjr,:~<(WEud@^T@\"__+_>/jver__^,",,- u$TPt=,.``<fl_<fefjJu_r#C%AeY7__xEmy3rrr____~;/7YI3r"__\xBFJ@EM5t=_^=/_)71LJr_"!_,_-- ThTFt=,,`_<f]!=&ufjJ<_>pr%f4Y7__mFEy3rrr___~;_/7YI*=`:_{dBPJTE,ut=_==___73jJ=_"-_:,-- uaxPj_".,^<2j"<f\AFnj(=7]&f"`(_@%kxE]r/+r~;____/>=`,<_/uH#VSAqr1r=^~\|<rc*_jr=^::",`, uaTyj_",,`<Zj^<f\xFaji\3]xf,`]rx%yTq7r|~__!____c>"_,___4ppIIjq_lr!_~_)<rc*3t_=_.""^`, yyTFj>,-,`<9\=(f4UU7*Yi_9\`_/\dhBPyKjjr!__^!jjjjjj___r\ByDY3TBr7\,~\</(s3*4C=-`-,"`^. yyxkt!--,`<f\r3wIwU7*et_v="_<\m&pyfQjj_=___!jjjjjj___r\Qy%L3$Brs\-=\|r(*7*zr"-`-""-'^ myjAj_,^,-=\j_3npnnNj_s3!__=_@bbdhfEltr__|__7VTT7?"\r_#HQAfJ@%t+!,^^!+r<"(ur".```-`,_ #bdhj=,,``^_j_3TQYU`j<\7!__|"ybpd&fE3Lr_\_!_7fTfC7"3?_q#q&fj@xt<!_~^!|r(775r"````-`,, Qpqfl_,`,'<$`_@3HVj~/7r\_^"_xyAyPhATnZtjj])r_vI8uo*\<dgm%_h[TTt:_~~~=\r(*vIr"````,^"- qqqht_,`,_<f"_E<X3j^^7_~,_^_yFTyPTaTa$tjj]|r_*IVao*\<dgm%ytl4Tt=__~~=\r(_sIr`'```,^^^ g_Krjr,,.^<9_(j@PA0__^\r\__DUDUyybyUkUnjjjrc/?7=""\_dpQ%yErlfTf`!^____\(\uur,.,.-`..- ggQtlr,.,_<8_3jEEIf<_=\_-+_dyPyyymy_Funyjjrsr7?=""_\yqWbypt0f4f^r^____\/7jIr,.,.`,.,_ Xgqnjr,.`'<frwtA$%a`t__;/+V#DFUkpdby@T&Fd&aLjj|____uKh#hbDNvVff______!<7*3S"_``,___jL Qggfjr,,.^_$\yt@f%I`f___,<amdkuyyPmxwAfP%aLLjjr____3p#EkbErvVff:j___=__773I"```,,___j EHW&fr,`-`=_j@nVTT@_=9=__|_*mAThbymbwUdnf7`_lj_j__`"7YDb#yrvefl_vLeeejjj_Sj,,-..__mW# #BWyfr,`-`=_zptVxTP,^x=|_7_7pAThbQHDxyEnf7s_7]\|__"`7vbmpyrveVj_vzeeejjjjCj,_,,.__qW# 7VF%yj,.",<*vWy7pr*&_+_r\=_s3TdhbHym&A%&tj7j3*3JC=,,,,`/THJn4xC(7/*3VUww8ut,-''_uKHDF 3fP%#j,,,,<rupy7g^*&_=_j\=~(7FxfbqF#%ADftj7*3*oj*=,,,,`^%#tufTr(\/7*VUwd84f,"-'_uB#EF j"*VEt,`'_"+QdPo_ojLfs9r__vi*3mhkdFxFV5kt(jCss0tr;__,,,,,/Ayhdr|~_(</7YVt3r``:_dPUTG@ j_*V#j,-``"=jP#i_jjj8<9?_^_jY7pn%dF%%auytC37ssStr;__,-,,,^fwhdr/~_\<r73Vt3r``__BETTIF &j=7Et,^'`_vQmnwyrUy8_Y*___^trghUqkFyJ`Et77r**CC>!___,-,,``dmqUr_>|__?*rr7"`-_vFf0\Jt &j=7Et,',_=lQpt&yrfq$jY*__,"Lrghuqky#f<Dt*7srCC*r>___,",,,`#_q<r____>?7*j7"`._uhfYjzt gt,<Bt,_`~<3qhdPDN&EALt\<)`^D`ghUdPdDts%trr7(jjor>|___,,,',^gW___/__r_]7""``__fJ*\Vlv Rt,<gt,,'_~\DFPPEu&B$jn\<j.^y`g7udF#Dt*%tr]7cjljrr____._,',`Ng_\_/_|r/7j""'`__OY*\4Cj Rf"<Bt,,`^=8Td#bt<mfdF@o^r`^=_A_VFbyf?_@t//7*3tjjr\___:-.,,,8Er|[_r((7c!``"__*er\oC_L gf"<#t,,``_TTmEbC_%fdyye/*.^=_4a4h%bf!<Et|||**jjjr/_^_;,,,,,Tyr|r_r_<7j=```,_*9r_3Y_l N&,<dt,`"";IdywuUjFADkf$6__<voJIjTy@C+\Arrr_7lt_tjr<__;,,`,,<PCr}C\|\7r,,`u_<(v[jJoI N&,<df,`"`;Id#we&iF$#@J3e_:=joJT_Ty@r=\Ar\r\7ltClr\|_!;_,``.<Fjrr?\|>*r,,``_<<v7jJroJ Wy__@f;."-;IdDfaFn8hO&Vjt_\j!uUkyy#tr_3Yr"\\<CltlcCr____^,.,^0jjjj//>\==,,__|iCot\3o/ gy__df;.,^_3bEfaF0@@UUujt_^r=\_Fyw#tr_3t=!_\<Cjtlj]r__=_^,-,,Yjjj|//\\==,,._<s*jY<33C gpr"Tf_-_^\l%kyFV8.%ykAr^8tl]@yyq#fr!_@r+_"\7<vvjtjj>r|_~,`^'<mmy&ujj_~="'__zeuY\r7<x gpr"Tf_--`\j@FyFV4Jwdkk>^TttjEyyqmfr__yr~___/_Cvjsjr/||__:--'<dmy&ejj_~<"`__oYuY\r7<x H#rV3f_-,`<3%dPa&TIuhyFa_/!<my[QBT*>_y*^=\~|<773httjjjr|__,,,V%FPEWRRy"`"__w%UC_jCr3q