<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sauliaus Sinkevičiaus blogas</title>
	<atom:link href="http://www.sinkevicius.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sinkevicius.net</link>
	<description>Tyrinėjimai. Kūryba. Eksperimentai.</description>
	<lastBuildDate>Fri, 30 Mar 2012 15:53:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Kvadratinis Gauso klasifikatorius</title>
		<link>http://www.sinkevicius.net/2011/12/06/kvadratinis-gauso-klasifikatorius/</link>
		<comments>http://www.sinkevicius.net/2011/12/06/kvadratinis-gauso-klasifikatorius/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 23:13:46 +0000</pubDate>
		<dc:creator>TakeON</dc:creator>
				<category><![CDATA[Tyrinėjimai]]></category>
		<category><![CDATA[klasifikatorius]]></category>
		<category><![CDATA[klasifikavimas]]></category>
		<category><![CDATA[quadratic Gaussian qlassifier]]></category>

		<guid isPermaLink="false">http://www.sinkevicius.net/?p=1234</guid>
		<description><![CDATA[Klasifikavimo uždaviniui spręsti yra daugybė klasifikatorių, o mes palengva šį bei tą išmėginsim, pažiūrėsim kaip jie veikia ir kaip atrodo iš arčiau. Šiandien mūsų taikinyje yra kvadratinis Gauso klasifikatorius. Teoriją apie klasifikatorių įkėliau atskirai, bet ji angliškai ir gana skurdi. Šis klasifikatorius leidžia rasti ribą tarp dvejų klasių, tačiau norint gero tikslumo, reikia pasiekti, kad [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Klasifikavimo uždaviniui spręsti yra daugybė klasifikatorių, o mes palengva šį bei tą išmėginsim, pažiūrėsim kaip jie veikia ir kaip atrodo iš arčiau.</p>
<p style="text-align: justify;">Šiandien mūsų taikinyje yra kvadratinis Gauso klasifikatorius. Teoriją apie klasifikatorių įkėliau atskirai, bet ji <a href="http://www.sinkevicius.net/wp-content/uploads/2011/12/lecture_02_intro_classif.pdf">angliškai</a> ir gana skurdi. Šis klasifikatorius leidžia rasti ribą tarp dvejų klasių, tačiau norint gero tikslumo, reikia pasiekti, kad požymiai turėtų normalinį pasiskirstymą. Naudojami duomenys yra <a href="http://www.sinkevicius.net/wp-content/uploads/2011/12/Apple.txt">čia</a>, tik du požymiai ir dvi klasės. Programos kodas:</p>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
</pre></td><td class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">clc</span>;
<span style="color: #0000FF;">close</span> <span style="color: #0000FF;">all</span>;
&nbsp;
<span style="color: #228B22;">% Užkraunami duomenys</span>
<span style="color: #0000FF;">load</span> Apple.<span style="">txt</span>
data = Apple;
<span style="color: #0000FF;">clear</span> Apple;
&nbsp;
<span style="color: #228B22;">% Braižomas grafikas</span>
y = data<span style="color: #080;">&#40;</span>:,<span style="color: #33f;">3</span><span style="color: #080;">&#41;</span> == <span style="color: #33f;">0</span>;
d1 = data<span style="color: #080;">&#40;</span>y,<span style="color: #33f;">1</span>:<span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>';
d2 = data<span style="color: #080;">&#40;</span>~y,<span style="color: #33f;">1</span>:<span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>';
<span style="color: #0000FF;">figure</span><span style="color: #080;">&#40;</span><span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>; <span style="color: #0000FF;">clf</span>; <span style="color: #0000FF;">hold</span> on
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>d1<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span>, d1<span style="color: #080;">&#40;</span><span style="color: #33f;">2</span>,:<span style="color: #080;">&#41;</span>, <span style="color:#A020F0;">'r+'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>d2<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span>, d2<span style="color: #080;">&#40;</span><span style="color: #33f;">2</span>,:<span style="color: #080;">&#41;</span>, <span style="color:#A020F0;">'g+'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">axis</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'equal'</span><span style="color: #080;">&#41;</span>;
&nbsp;
<span style="color: #228B22;">% Parametrai</span>
fromCol = <span style="color: #33f;">1</span>; <span style="color: #228B22;">% nuo kurio stulpelio prasideda požymiai, imtinai</span>
features = <span style="color: #33f;">2</span>; <span style="color: #228B22;">% požymių kiekis</span>
till = fromCol + features - <span style="color: #33f;">1</span>; <span style="color: #228B22;">% paskutinis požymių stulpelis</span>
classCol = <span style="color: #33f;">3</span>; <span style="color: #228B22;">% stulpelis, kuriame yra klasės numeris</span>
&nbsp;
<span style="color: #228B22;">% Tikslumo skaičiavimas su &quot;10-fold cross validation&quot;</span>
<span style="color: #0000FF;">tic</span>;
accuracy = mycrossvalidation<span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Gaussian'</span>, data, classCol, fromCol, features<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">fprintf</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Tikslumas = %3.2f, laikas = %3.2f s \n'</span>, accuracy, <span style="color: #0000FF;">toc</span><span style="color: #080;">&#41;</span>;
&nbsp;
<span style="color: #228B22;">% Piešiamas klasifikatoriaus diskriminantinės funkcijos kontūras</span>
cols = fromCol + features - <span style="color: #33f;">1</span>; <span style="color: #228B22;">% stulpelių kiekis duomenyse</span>
k = data<span style="color: #080;">&#40;</span>:, classCol<span style="color: #080;">&#41;</span> == <span style="color: #33f;">0</span>;
c1 = data<span style="color: #080;">&#40;</span>k, fromCol : cols<span style="color: #080;">&#41;</span>'; <span style="color: #228B22;">% apmokymo duomenų pirma klasė</span>
c2 = data<span style="color: #080;">&#40;</span>~k, fromCol : cols<span style="color: #080;">&#41;</span>'; <span style="color: #228B22;">% apmokymo duomenų antra klasė</span>
d = -<span style="color: #33f;">2</span> : .05 : <span style="color: #33f;">2</span>;
<span style="color: #080;">&#91;</span>X, Y<span style="color: #080;">&#93;</span> = <span style="color: #0000FF;">meshgrid</span><span style="color: #080;">&#40;</span>d, d<span style="color: #080;">&#41;</span>;
xx = <span style="color: #33f;">1</span>;
yy = <span style="color: #33f;">1</span>;
Z = <span style="color: #0000FF;">zeros</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">size</span><span style="color: #080;">&#40;</span>X<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">for</span> x = d
    <span style="color: #0000FF;">for</span> y = d
        Z<span style="color: #080;">&#40;</span>yy, xx<span style="color: #080;">&#41;</span> = quadratic_gaussian_classifier<span style="color: #080;">&#40;</span><span style="color: #080;">&#91;</span>x y<span style="color: #080;">&#93;</span>', c1, c2<span style="color: #080;">&#41;</span>;
        yy = yy + <span style="color: #33f;">1</span>;
    <span style="color: #0000FF;">end</span>;
    xx = xx + <span style="color: #33f;">1</span>;
    yy = <span style="color: #33f;">1</span>;
<span style="color: #0000FF;">end</span>;
<span style="color: #0000FF;">contour</span><span style="color: #080;">&#40;</span>X, Y, Z, <span style="color: #080;">&#91;</span><span style="color: #33f;">0</span>,<span style="color: #33f;">0</span><span style="color: #080;">&#93;</span>, <span style="color:#A020F0;">'k'</span><span style="color: #080;">&#41;</span>;</pre></td></tr></table></div></div>

<p style="text-align: justify;">Naudojama „<a href="http://www.cs.auckland.ac.nz/%7Epat/706_98/ln/node119.html" target="_blank">10-fold cross validation</a>“ validacija, kuri leidžia patikrinti klasifikatoriaus efektyvumą su skirtingomis duomenų imtimis:</p>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
</pre></td><td class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">function</span> <span style="color: #080;">&#91;</span>accuracy<span style="color: #080;">&#93;</span> = mycrossvalidation<span style="color: #080;">&#40;</span><span style="color: #0000FF;">type</span>, data, classCol, fromCol, features<span style="color: #080;">&#41;</span>
el = <span style="color: #0000FF;">size</span><span style="color: #080;">&#40;</span>data, <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% kiek duomenų yra iš viso</span>
p = <span style="color: #33f;">90</span>; <span style="color: #228B22;">% kiek duomenų skirti apmokymui procentais</span>
q = <span style="color: #0000FF;">int16</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">size</span><span style="color: #080;">&#40;</span>data, <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span> * p / <span style="color: #33f;">100</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% kiek duomenų skirti apmokymui</span>
&nbsp;
total = <span style="color: #33f;">0</span>; <span style="color: #228B22;">% bus skaičiuojami teisingi atpažinimai</span>
step = el - q;
<span style="color: #0000FF;">for</span> w = <span style="color: #33f;">1</span> : step : el <span style="color: #228B22;">% 10-fold cross validation</span>
    <span style="color: #228B22;">% paskaičiuojami nuo (from) iki (till) intervalas testavimui</span>
    from = w;
    till = w + el - q - <span style="color: #33f;">1</span>;
    <span style="color: #0000FF;">if</span> till &gt; el
        till = el;
    <span style="color: #0000FF;">end</span>;
    <span style="color: #228B22;">% atrenkama apmokymo ir testavimo dalis</span>
    testing = data<span style="color: #080;">&#40;</span>from : till, :<span style="color: #080;">&#41;</span>;
    training = data;
    training<span style="color: #080;">&#40;</span>from : till, :<span style="color: #080;">&#41;</span> = <span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
    <span style="color: #228B22;">% tikrinamas konkretus klasifikatorius, šiuo atveju turime tik vieną</span>
    <span style="color: #0000FF;">if</span> <span style="color: #0000FF;">strcmp</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">type</span>, <span style="color:#A020F0;">'Gaussian'</span><span style="color: #080;">&#41;</span> == <span style="color: #33f;">1</span>
        <span style="color: #080;">&#91;</span>count, accuracy<span style="color: #080;">&#93;</span> = mygaussian<span style="color: #080;">&#40;</span>training, testing, classCol, fromCol, features<span style="color: #080;">&#41;</span>;
    <span style="color: #0000FF;">end</span>;
    total = total + count; <span style="color: #228B22;">% sumuojamas teisingai atpažintas duomenų kiekis</span>
<span style="color: #0000FF;">end</span>;  
&nbsp;
accuracy = total * <span style="color: #33f;">100</span> / el;</pre></td></tr></table></div></div>

<p style="text-align: justify;">Skaičiuojamos tikimybės, kuriai klasei priklauso konkretūs atvejai iš testavimo duomenų imties:</p>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">function</span> <span style="color: #080;">&#91;</span>count, accuracy<span style="color: #080;">&#93;</span> = mygaussian<span style="color: #080;">&#40;</span>training, testing, classCol, fromCol, features<span style="color: #080;">&#41;</span>
cols = fromCol + features - <span style="color: #33f;">1</span>; <span style="color: #228B22;">% stulpelių kiekis duomenyse</span>
&nbsp;
k = training<span style="color: #080;">&#40;</span>:, classCol<span style="color: #080;">&#41;</span> == <span style="color: #33f;">0</span>;
c1 = training<span style="color: #080;">&#40;</span>k, fromCol : cols<span style="color: #080;">&#41;</span>'; <span style="color: #228B22;">% apmokymo duomenų pirma klasė</span>
c2 = training<span style="color: #080;">&#40;</span>~k, fromCol : cols<span style="color: #080;">&#41;</span>'; <span style="color: #228B22;">% apmokymo duomenų antra klasė</span>
&nbsp;
count = <span style="color: #33f;">0</span>;
el = <span style="color: #0000FF;">size</span><span style="color: #080;">&#40;</span>testing, <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">for</span> z = <span style="color: #33f;">1</span> : el <span style="color: #228B22;">% tikrinam su visais testavimo duomenimis</span>
    x = testing<span style="color: #080;">&#40;</span>z, fromCol : cols<span style="color: #080;">&#41;</span>';
    <span style="color: #0000FF;">class</span> = quadratic_gaussian_classifier<span style="color: #080;">&#40;</span>x, c1, c2<span style="color: #080;">&#41;</span>;
    <span style="color: #0000FF;">if</span> <span style="color: #0000FF;">class</span> == testing<span style="color: #080;">&#40;</span>z, classCol<span style="color: #080;">&#41;</span> <span style="color: #228B22;">% ar apskaičiuota klasė atitinka tikrą</span>
        count = count + <span style="color: #33f;">1</span>;
    <span style="color: #0000FF;">end</span>;
<span style="color: #0000FF;">end</span>;
&nbsp;
accuracy = count * <span style="color: #33f;">100</span> / el;</pre></td></tr></table></div></div>

<p style="text-align: justify;">Ir galiausiai kvadratinio Gauso klasifikatoriaus realizacija pagal 2.20 formulę:</p>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">function</span> <span style="color: #080;">&#91;</span><span style="color: #0000FF;">class</span><span style="color: #080;">&#93;</span> = quadratic_gaussian_classifier<span style="color: #080;">&#40;</span>x, c1, c2<span style="color: #080;">&#41;</span>
covM1 = <span style="color: #0000FF;">cov</span><span style="color: #080;">&#40;</span>c1'<span style="color: #080;">&#41;</span>;
covM2 = <span style="color: #0000FF;">cov</span><span style="color: #080;">&#40;</span>c2'<span style="color: #080;">&#41;</span>;
invM1 = <span style="color: #0000FF;">inv</span><span style="color: #080;">&#40;</span>covM1<span style="color: #080;">&#41;</span>;
invM2 = <span style="color: #0000FF;">inv</span><span style="color: #080;">&#40;</span>covM2<span style="color: #080;">&#41;</span>;
piko1 = <span style="color: #0000FF;">mean</span><span style="color: #080;">&#40;</span>c1, <span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>;
piko2 = <span style="color: #0000FF;">mean</span><span style="color: #080;">&#40;</span>c2, <span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>;
pc1 = <span style="color: #0000FF;">size</span><span style="color: #080;">&#40;</span>c1, <span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>;
pc2 = <span style="color: #0000FF;">size</span><span style="color: #080;">&#40;</span>c2, <span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>;
A = <span style="color: #33f;">0.5</span> * <span style="color: #080;">&#40;</span>invM1 - invM2<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% 2.21 formulė</span>
<span style="color: #0000FF;">beta</span> = invM2 * piko2 - invM1 * piko1; <span style="color: #228B22;">% 2.22 formulė</span>
gama = <span style="color: #080;">&#40;</span>piko1' * invM1 * piko1 - piko2' * invM2 * piko2<span style="color: #080;">&#41;</span> * <span style="color: #33f;">0.5</span> <span style="color: #080;">...</span>
    + <span style="color: #0000FF;">log</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">det</span><span style="color: #080;">&#40;</span>covM1<span style="color: #080;">&#41;</span> / <span style="color: #0000FF;">det</span><span style="color: #080;">&#40;</span>covM2<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span> - <span style="color: #0000FF;">log</span><span style="color: #080;">&#40;</span>pc1 / pc2<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% 2.23 formulė</span>
res = x' * A * x + <span style="color: #0000FF;">beta</span>' * x + gama; <span style="color: #228B22;">% 2.20 formulė</span>
<span style="color: #0000FF;">if</span> res &lt; <span style="color: #33f;">0</span>
    <span style="color: #0000FF;">class</span> = <span style="color: #33f;">0</span>;
<span style="color: #0000FF;">elseif</span> res &gt; <span style="color: #33f;">0</span>
    <span style="color: #0000FF;">class</span> = <span style="color: #33f;">1</span>;
<span style="color: #0000FF;">else</span>
    <span style="color: #0000FF;">class</span> = -<span style="color: #33f;">1</span>; <span style="color: #228B22;">% neapsisprendęs</span>
<span style="color: #0000FF;">end</span>;</pre></td></tr></table></div></div>

<p>Skaičiavimų rezultatas:</p>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="matlab" style="font-family:monospace;">Tikslumas = <span style="color: #33f;">97.68</span>, laikas = <span style="color: #33f;">1.14</span> s</pre></td></tr></table></div></div>

<p style="text-align: justify;">Diskriminantinės funkcijos kontūras parodytas paveikslėlyje, taškų braižymui paimta nedaug, todėl kreivė laužyta, tačiau tai yra parabolė:</p>
<p style="text-align: justify;"><a href="http://www.sinkevicius.net/wp-content/uploads/2011/12/gausas.png"><img class="aligncenter size-full wp-image-1240" title="gausas" src="http://www.sinkevicius.net/wp-content/uploads/2011/12/gausas.png" alt="" width="467" height="370" /></a><strong></strong></p>
<p style="text-align: justify;"><strong>97,68 %</strong> tikslumas yra gana aukštas. Šį klasifikatorių bandžiau su duomenimis, kurie turi 30 požymių ir gavau<strong> 95,96 %</strong> tikslumą, o atmetus mažiau reikšmingus požymius ir palikus jų tik 8 bei kai kuriuos iš jų normalizavus, pavyko pasiekti <strong>97,01 %</strong> tikslumą. Vadinasi klasifikatorius yra gana tikslus, greitas ir patogus. Tačiau jis tinka tik gana paprastiems uždaviniams.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sinkevicius.net/2011/12/06/kvadratinis-gauso-klasifikatorius/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kaip mokytis kalbų? IV dalis. Utopinis tikslas</title>
		<link>http://www.sinkevicius.net/2011/11/13/kaip-mokytis-kalbu-iv-dalis-utopinis-tikslas/</link>
		<comments>http://www.sinkevicius.net/2011/11/13/kaip-mokytis-kalbu-iv-dalis-utopinis-tikslas/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 17:41:08 +0000</pubDate>
		<dc:creator>TakeON</dc:creator>
				<category><![CDATA[Tyrinėjimai]]></category>
		<category><![CDATA[išmokti kalbą]]></category>
		<category><![CDATA[kaip mokytis]]></category>
		<category><![CDATA[kalbų mokymąsis]]></category>
		<category><![CDATA[mokytis kalbos]]></category>
		<category><![CDATA[užsienio kalbos]]></category>

		<guid isPermaLink="false">http://www.sinkevicius.net/?p=1219</guid>
		<description><![CDATA[Nuotraukoj yra mano pagrindinis, esminis ir svarbiausias įrankis mokytis anglų kalbos. Rimtai. Šio daikto efektyvumas stulbinantis. Pačias ausines gavau kaip priedą prie telefono, tačiau jos buvo baisiai nepatogios, krisdavo iš ausų, o laidai skirtingų ilgių, todėl patobulinau. Turėtų matytis kaip viela susukti laidai, kad labai nesimakaluotų, o ausinių galai neilgi, kad po smakru abu laidai [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sinkevicius.net/wp-content/uploads/2011/11/ausines.jpg"><img class="aligncenter size-full wp-image-1223" title="ausines" src="http://www.sinkevicius.net/wp-content/uploads/2011/11/ausines.jpg" alt="" width="600" height="412" /></a></p>
<p style="text-align: justify;">Nuotraukoj yra mano pagrindinis, esminis ir svarbiausias įrankis mokytis anglų kalbos. Rimtai. Šio daikto efektyvumas stulbinantis. Pačias ausines gavau kaip priedą prie telefono, tačiau jos buvo baisiai nepatogios, krisdavo iš ausų, o laidai skirtingų ilgių, todėl patobulinau. Turėtų matytis kaip viela susukti laidai, kad labai nesimakaluotų, o ausinių galai neilgi, kad po smakru abu laidai susieitų. Neveržia, nekrenta, patogu.</p>
<p style="text-align: justify;">O įrašas apie visai ką kitką. Tai bus mano poziciją dėl <a href="http://www.lingq.com/learn/en/forum/52/12032/" target="_blank">A.J. Hoge pasisakymo</a>:</p>
<p><object width="500" height="281"><param name="movie" value="http://www.youtube.com/v/SCe9eWoQcc4?version=3&#038;feature=oembed"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/SCe9eWoQcc4?version=3&#038;feature=oembed" type="application/x-shockwave-flash" width="500" height="281" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p style="text-align: justify;">A.J. Hoge stilius man nepatinka, tačiau žaviuosi tuo ką jis daro. Jis inovatoriškas, ieško naujų kelių ir juos randa. Matyt jis vienas iš pirmųjų, kuris bado pirštu, kad švietimo sistema kalbų mokyme (tiesa sakant ir ne tik), nuėjo pernelyg neefektyviu keliu. Žinau daugybę puikių žmonių, labai gabių, kurie mokyklos ar universiteto iškankinti, nepasitiki savim, galvoja, kad yra kalboms negabūs, kad kažkas negerai su jais. Tačiau tiesa gerokai paprastesnė, jie paprasčiausiai suklaidinti ir palikti ant ledo&#8230; Jie ir toliau griebiasi to vienintelio kelio, to tikslo, kuris vadinasi „išmokti“. Hoge teisus, tobulai kalbėti neįmanoma. Pridėčiau, kad ir išmokti užsienio kalbos neįmanoma. Jei po teisybei, jūs nemokat ir lietuvių kalbos. <strong>Niekas nemoka lietuvių kalbos</strong>. Ir niekada nemokės. Pabandykit atsiversti žodyną. Kaip greitai rasite dar nežinomų žodžių? Pabandykit parašyt rašinį ir nunešti kalbininkui, ne tik rašinys raudonuos nuo pabraukimų ties klaidomis, bet ir jūsų veidas. Pabandykit nuvažiuoti į atokesnes Lietuvos vietas, pakalbinti vietinius, įdomu kaip seksis susikalbėti. Pabandykit paskaityti įstatymus, jei pavyzdžiui esat meno žmogus, arba paskaityti apie madas jei esat juristas. Greitai papulsit ne tik į nesuvokiamų sąvokų pinkles, bet ir apskritai į kitą pasaulį. Pabandykit paskaityt laikraščius, kurie yra kelių dešimčių metų senumo, pamatysit, kad lietuvių kalba buvo kitokia.</p>
<p style="text-align: justify;">Tai gal vis gi lietuvių kalbos jūs nemokat? Man atrodo, kad nemokat. Esu tikras, kad visų lietuvių kalbos žodžių nežinot, visų kalbos taisyklių nežinot, atsirastų daugybę lietuvių, kurių nesuprastumėt, ir galybę sričių, kurių įprastos, kasdieninės, kalbos nesuprastumėt. Todėl nėra prasmės net ir statytis sau tikslo „išmokti“. <strong>„Išmokti“ kalbą yra utopinis tikslas.</strong></p>
<p style="text-align: justify;">Pabandykim pažiūrėti iš kitos pusės. Bet juk lietuvių kalbą naudojat? Teisingai? Kas įdomu &#8211; perskaitot, pažiūrit įdomius filmus, galbūt serialus. Pasikalbat su žmonėmis, kai to reikia ar norit. Kitaip tariant lietuvių kalbos nemokat, bet ją naudojat. Todėl, kai kyla noras vėl griebtis utopinio tikslo – „išmokti“ anglų, prancūzų, vokiečių ar kinų, nesvarbu ką, galima bandyti tą tikslą pervadinti į „naudoti“. Ir tada savęs klausti, o kaip aš galėčiau tą kalbą naudoti?</p>
<ul style="text-align: justify;">
<li>gal yra serialų ta kalba, kuriuos norėčiau pamatyti?</li>
<li>gal yra knygų kurias norėčiau perskaityti originalo kalba?</li>
<li>gal turiu hobi, apie kurį yra puikios vaizdo-garso-teksto pavidalu užsienio kalba?</li>
<li>gal kažkas youtube‘ina apie mano dominančias sritis ar hobi?</li>
<li>gal man patinka žinoti kas vyksta kitose šalyse ir domintų pasiklausyti jų žiniasklaidos?</li>
<li>gal norėtum tobulėti kaip kulinaras, bet geriausios laidos užsienio kalba?</li>
<li>gal visada norėjai išmokti piešti ir gali susirasti pamokų ta kalba?</li>
<li>gal yra kokie nors mmorpg žaidimas, kuriame norit išbandyt komandinį darbą?</li>
<li>gal yra forumai apie tavo karjerą, hobi ar šiaip gyvenimą?</li>
<li>ir t.t.</li>
</ul>
<p style="text-align: justify;">Kai pradedi domėtis, atrodo neįtikėtina, kiek daug Žmogus jau yra sukūręs ir dar mažiau neįtikėtina, kad neįmanoma susirasti kas kiekvienam individualiai labiausiai tiktų ir patiktų.</p>
<p style="text-align: justify;">Užtenka pakeisti tikslą iš <strong>„kaip išmokti?“</strong> į <strong>„kaip naudoti?“</strong> ir prasideda svarbiausias etapas kalbos tobulėjime, kuriame pats žmogus pradeda ieškoti to kas jam labiausiai tiktų. Jis nebesitiki, kad tai padarys kas nors už jį, nebesirašo į kursus, nebefantazuoja pagyventi svetimoje šalyje, nes neva taip geriausiai išmokstama. Pagaliau jis elgiasi savarankiškai. Pats atsirenka sritį, sudėtingumą, apimtį, pats įvertina, kad jam tikrai bus įdomu ir, kad jis asmeniškai <strong>būtinai</strong> gaus kažką daugiau nei užsienio kalbos įgūdžius. Galbūt geras emocijas, galbūt žinių, galbūt puikių pražystamų užsienyje ar įgūdžių visai kitose srityse, nes jis pats susiras pačią geriausią ir tinkamiausią medžiagą sau.</p>
<p style="text-align: justify;">Šiuo metu naudoju tris kalbas: lietuvių, anglų, rusų. Aš jų nemoku ir nesimokau, bet naudoju, o kai naudoju, neišvengiamai tobulėju.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sinkevicius.net/2011/11/13/kaip-mokytis-kalbu-iv-dalis-utopinis-tikslas/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>k artimiausių kaimynų metodas KNN</title>
		<link>http://www.sinkevicius.net/2011/10/30/k-artimiausiu-kaimynu-metodas-knn/</link>
		<comments>http://www.sinkevicius.net/2011/10/30/k-artimiausiu-kaimynu-metodas-knn/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 19:57:35 +0000</pubDate>
		<dc:creator>TakeON</dc:creator>
				<category><![CDATA[Tyrinėjimai]]></category>
		<category><![CDATA[artimiausių kaimynų metodas]]></category>
		<category><![CDATA[euklido atstumas]]></category>
		<category><![CDATA[k nearest neighbors]]></category>
		<category><![CDATA[klasifikavimas]]></category>
		<category><![CDATA[KNN]]></category>

		<guid isPermaLink="false">http://www.sinkevicius.net/?p=1209</guid>
		<description><![CDATA[KNN (k nearest neighbors) metodas klasifikuoja tikrindamas kokioms klasėms priklauso artimiausi K kaimynai ir priskiria tai klasei, kuriai priklauso daugelis K kaimynų. Įėjimo vektorius gali turėti bet kokį požymių kiekį, pvz.: 1, 2, 10 ir daugiau. Euklido atstumą naudosime skaičiuojant atstumą tarp kaimynų, kurį lengva paskaičiuoti net ir daug dimensijų turinčiai erdvei. Išbandysime pasirašyti savo [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://en.wikipedia.org/wiki/K-nearest_neighbor_algorithm" target="_blank">KNN (k nearest neighbors) metodas</a> klasifikuoja tikrindamas kokioms klasėms priklauso artimiausi K kaimynai ir priskiria tai klasei, kuriai priklauso daugelis K kaimynų. Įėjimo vektorius gali turėti bet kokį požymių kiekį, pvz.: 1, 2, 10 ir daugiau. <a href="http://en.wikipedia.org/wiki/Euclidean_distance" target="_blank">Euklido atstumą</a> naudosime skaičiuojant atstumą tarp kaimynų, kurį lengva paskaičiuoti net ir daug dimensijų turinčiai erdvei. Išbandysime pasirašyti savo KNN funkciją bei palyginti rezultatą su <a href="http://www.mathworks.se/help/toolbox/bioinfo/ref/knnclassify.html" target="_blank">Matlab knnclassify funkcija</a> naudojant <a href="http://www.sinkevicius.net/wp-content/uploads/2011/10/Apple.txt" target="_blank">dvejų dimensijų duomenų aibę</a>. Abejų klasių duomenys (0 – raudona, 1 &#8211; žalia) parodyti žemiau:</p>
<p style="text-align: justify;"><a href="http://www.sinkevicius.net/wp-content/uploads/2011/10/data.jpg"><img class="aligncenter size-full wp-image-1211" title="data" src="http://www.sinkevicius.net/wp-content/uploads/2011/10/data.jpg" alt="" width="300" height="240" /></a></p>
<p style="text-align: justify;">Eksperimentas labai paprastas. Užkrausime duomenis, kurie turi du požymius, o pačių duomenų yra kiek daugiau nei tūkstantis. Apmokymui imsime dešimt procentų duomenų atsitiktine tvarka, o tikslumą tikrinsime su likusiais.</p>
<p style="text-align: justify;">Programa:</p>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
</pre></td><td class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">clc</span>;
<span style="color: #0000FF;">close</span> <span style="color: #0000FF;">all</span>;
&nbsp;
<span style="color: #0000FF;">load</span> apple.<span style="">txt</span>
data = apple;
<span style="color: #228B22;">% duomenys išmaišomi atsitiktine tvarka, nes kas kartą norime</span>
<span style="color: #228B22;">% naudoti vis kitą imti apmokymui, o likutį testavimui</span>
data = data<span style="color: #080;">&#40;</span><span style="color: #0000FF;">randperm</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">size</span><span style="color: #080;">&#40;</span>data, <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>, :<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">clear</span> apple;
&nbsp;
<span style="color: #228B22;">% atvaizduojam abi klases</span>
<span style="color: #0000FF;">figure</span><span style="color: #080;">&#40;</span><span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>; <span style="color: #0000FF;">clf</span>; <span style="color: #0000FF;">hold</span> on
l = data<span style="color: #080;">&#40;</span>:, <span style="color: #33f;">3</span><span style="color: #080;">&#41;</span> == <span style="color: #33f;">0</span>;
d1 = data<span style="color: #080;">&#40;</span>l, <span style="color: #33f;">1</span> : <span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>';
d2 = data<span style="color: #080;">&#40;</span>~l, <span style="color: #33f;">1</span> : <span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>';
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>d1<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>, :<span style="color: #080;">&#41;</span>, d1<span style="color: #080;">&#40;</span><span style="color: #33f;">2</span>, :<span style="color: #080;">&#41;</span>, <span style="color:#A020F0;">'r+'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>d2<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>, :<span style="color: #080;">&#41;</span>, d2<span style="color: #080;">&#40;</span><span style="color: #33f;">2</span>, :<span style="color: #080;">&#41;</span>, <span style="color:#A020F0;">'g+'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">axis</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'equal'</span><span style="color: #080;">&#41;</span>;
&nbsp;
p = <span style="color: #33f;">10</span>; <span style="color: #228B22;">% kiek duomenų skirti apmokymui procentais</span>
features = <span style="color: #33f;">2</span>; <span style="color: #228B22;">% požymių kiekis</span>
k = <span style="color: #33f;">3</span>; <span style="color: #228B22;">% kiek kaimynų naudoti klasifikuojant</span>
q = <span style="color: #0000FF;">int16</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">size</span><span style="color: #080;">&#40;</span>data, <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span> * p / <span style="color: #33f;">100</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% kiek duomenų skirti apmokymui</span>
training = data<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span> : q, <span style="color: #33f;">1</span> : features<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% apmokymo duomenys</span>
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>training<span style="color: #080;">&#40;</span>:, <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>, training<span style="color: #080;">&#40;</span>:, <span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>, <span style="color:#A020F0;">'b.'</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% pažymėti, kurie duomenys dalyvauja apmokyme</span>
group = data<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span> : q, features + <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% apmokymo duomenų klasės</span>
total = <span style="color: #0000FF;">size</span><span style="color: #080;">&#40;</span>data, <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% duomenų kiekis</span>
correct1 = <span style="color: #33f;">0</span>;
correct2 = <span style="color: #33f;">0</span>;
<span style="color: #0000FF;">for</span> <span style="color: #0000FF;"><span style="color: #33f;">i</span></span> = q + <span style="color: #33f;">1</span> : total <span style="color: #228B22;">% testuoti tik su tais duomenimis, kurie nenaudojami apmokymui</span>
    g = data<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span>, features + <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>;
    sample = data<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span>, <span style="color: #33f;">1</span> : features<span style="color: #080;">&#41;</span>;
    c = knnclassify<span style="color: #080;">&#40;</span>sample, training, group, k<span style="color: #080;">&#41;</span>;
    <span style="color: #0000FF;">if</span> c == g
        correct1 = correct1 + <span style="color: #33f;">1</span>;
    <span style="color: #0000FF;">else</span>
        <span style="color: #0000FF;">fprintf</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Klaida: %d \n'</span>, <span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>;
    <span style="color: #0000FF;">end</span>;
    c = myknnclassify<span style="color: #080;">&#40;</span>sample, training, group, k<span style="color: #080;">&#41;</span>;
    <span style="color: #0000FF;">if</span> c == g
        correct2 = correct2 + <span style="color: #33f;">1</span>;
    <span style="color: #0000FF;">else</span>
        <span style="color: #0000FF;">fprintf</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Klaida: %d \n'</span>, <span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>;
    <span style="color: #0000FF;">end</span>;
    <span style="color: #0000FF;">fprintf</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Total iterations: %d, done: %d\n'</span>, total - q, <span style="color: #0000FF;"><span style="color: #33f;">i</span></span> - q<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">end</span>;
<span style="color: #0000FF;">fprintf</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'knnclassify rezultatas: %4.2f %%\n'</span>, <span style="color: #33f;">100</span> * correct1 / <span style="color: #080;">&#40;</span>total - q<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">fprintf</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'myknnclassify rezultatas: %4.2f %%\n'</span>, <span style="color: #33f;">100</span> * correct2 / <span style="color: #080;">&#40;</span>total - q<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;</pre></td></tr></table></div></div>

<p>KNN funkcija:</p>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
</pre></td><td class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">function</span> <span style="color: #080;">&#91;</span><span style="color: #0000FF;">class</span><span style="color: #080;">&#93;</span> = myknnclassify<span style="color: #080;">&#40;</span>sample, training, group, k<span style="color: #080;">&#41;</span>
A = <span style="color: #0000FF;">zeros</span><span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>, <span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% matrica artimiausiems kaimynams saugoti</span>
n = <span style="color: #0000FF;">size</span><span style="color: #080;">&#40;</span>training, <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% iš viso kaimynų kiekis</span>
<span style="color: #0000FF;">for</span> <span style="color: #0000FF;"><span style="color: #33f;">i</span></span> = <span style="color: #33f;">1</span> : n <span style="color: #228B22;">% kiekvienam kaimynui atliekami skaičiavimai</span>
    d = euclidean_distance<span style="color: #080;">&#40;</span>training<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span>, :<span style="color: #080;">&#41;</span>, sample<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% randamas Euklido atstumas</span>
    s = <span style="color: #0000FF;">size</span><span style="color: #080;">&#40;</span>A, <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>;
    <span style="color: #0000FF;">if</span> s &lt; k <span style="color: #228B22;">% jeigu artimiausių kaimynų atrinkta mažiau nei K, tai papildom</span>
        A<span style="color: #080;">&#40;</span>s + <span style="color: #33f;">1</span>, <span style="color: #33f;">1</span> : <span style="color: #33f;">2</span><span style="color: #080;">&#41;</span> = <span style="color: #080;">&#91;</span>group<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span> d<span style="color: #080;">&#93;</span>;
    <span style="color: #0000FF;">elseif</span> A<span style="color: #080;">&#40;</span>k, <span style="color: #33f;">2</span><span style="color: #080;">&#41;</span> &gt; d <span style="color: #228B22;">% jeigu artimiausių kaimynų atrinkta K, tolimiausią keičiam artimesniu</span>
        A<span style="color: #080;">&#40;</span>k, <span style="color: #33f;">1</span> : <span style="color: #33f;">2</span><span style="color: #080;">&#41;</span> = <span style="color: #080;">&#91;</span>group<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span> d<span style="color: #080;">&#93;</span>;
    <span style="color: #0000FF;">end</span>;
    A = <span style="color: #0000FF;">sortrows</span><span style="color: #080;">&#40;</span>A, <span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% išrūšiuojam pagal atstumą</span>
<span style="color: #0000FF;">end</span>;
m = <span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span>group<span style="color: #080;">&#41;</span> + <span style="color: #33f;">1</span>; <span style="color: #228B22;">% klasių kiekis</span>
B = <span style="color: #0000FF;">zeros</span><span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>, m<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">for</span> <span style="color: #0000FF;"><span style="color: #33f;">i</span></span> = <span style="color: #33f;">1</span> : k <span style="color: #228B22;">% randam po kiek artimiausių kaimynų priklauso kiekvienai klasei</span>
    B<span style="color: #080;">&#40;</span>A<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span>, <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span> + <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span> = B<span style="color: #080;">&#40;</span>A<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span>, <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span> + <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span> + <span style="color: #33f;">1</span>;
<span style="color: #0000FF;">end</span>;
<span style="color: #080;">&#91;</span>maxC, maxI<span style="color: #080;">&#93;</span> = <span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span>B<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% klasės indeksas, kurioje daugiausiai artimiausių kaimynų</span>
<span style="color: #080;">&#91;</span>minC, minI<span style="color: #080;">&#93;</span> = <span style="color: #0000FF;">min</span><span style="color: #080;">&#40;</span>B<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% klasės indeksas, kurioje mažiausiai artimiausių kaimynų</span>
<span style="color: #0000FF;">if</span> maxC &gt; minC <span style="color: #228B22;">% laimėtoja klasė, kuri turi daugiausia artimiausių kaimynų</span>
    <span style="color: #0000FF;">class</span> = maxI - <span style="color: #33f;">1</span>;
<span style="color: #0000FF;">else</span> <span style="color: #228B22;">% jeigu visos klasės turi vienodą kaimynų kiekį (gali būti ir kitokie kriterijai)</span>
    <span style="color: #0000FF;">class</span> = -<span style="color: #33f;">1</span>; <span style="color: #228B22;">% atmetimo (reject) klasė</span>
<span style="color: #0000FF;">end</span>;</pre></td></tr></table></div></div>

<p>Euklido atstumas:</p>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">function</span> <span style="color: #080;">&#91;</span>d<span style="color: #080;">&#93;</span> = euclidean_distance<span style="color: #080;">&#40;</span>x, y<span style="color: #080;">&#41;</span>
n = <span style="color: #0000FF;">size</span><span style="color: #080;">&#40;</span>x, <span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>;
d = <span style="color: #33f;">0</span>;
<span style="color: #0000FF;">for</span> <span style="color: #0000FF;"><span style="color: #33f;">i</span></span> = <span style="color: #33f;">1</span> : n
    d = d + <span style="color: #080;">&#40;</span>x<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span> - y<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span> ^ <span style="color: #33f;">2</span>;
<span style="color: #0000FF;">end</span>;
d = d ^ <span style="color: #33f;">0.5</span>;</pre></td></tr></table></div></div>

<p style="text-align: justify;">Abejų funkcijų rezultatai yra gana panašūs. Kadangi duomenų klasės nepersidengia ir yra gana toli viena nuo kitos, tai pakanka vos kelių procentų apmokymo duomenų, kad visus likusius duomenis abi funkcijos klasifikuotų <strong>šimto procentų tikslumu</strong>. Žemiau esančiame paveiksliuke matosi mėlynai pažymėti taškai, kurie buvo naudojami apmokymui ir yra atrinkti atsitiktine tvarka (vos 10 procentų nuo visų duomenų). Kiekvieną kartą užkrovus duomenis, parenkama vis kita 10 procentų duomenų imtis apmokymui, taip mes galime matyti kaip funkcijų tikslumas priklauso nuo skirtingų duomenų aibių, tačiau išlaikant norimą jos dydį:</p>
<p style="text-align: justify;"><a href="http://www.sinkevicius.net/wp-content/uploads/2011/10/training.jpg"><img class="aligncenter size-full wp-image-1212" title="training" src="http://www.sinkevicius.net/wp-content/uploads/2011/10/training.jpg" alt="" width="300" height="237" /></a></p>
<p style="text-align: justify;"><strong>myknnclassify</strong> funkcija yra dešimt kartų lėtesnė nei Matlab standartinė funkcija <strong>knnclassify</strong> ir kiek testavau, mažiau tiksli. Be to, aprašytoje gali būti (ir tikriausiai yra) klaidų, nes ji nėra pilnai ištestuota kaip Matlab funkcija. Todėl Matlab funkcija yra gerokai pranašesnė, kuri be to dar turi ir įvairių papildomų parametrų.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sinkevicius.net/2011/10/30/k-artimiausiu-kaimynu-metodas-knn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kaip būti organizuotu? III dalis. Horizons of View</title>
		<link>http://www.sinkevicius.net/2011/10/24/kaip-buti-organizuotu-iii-dalis-horizons-of-view/</link>
		<comments>http://www.sinkevicius.net/2011/10/24/kaip-buti-organizuotu-iii-dalis-horizons-of-view/#comments</comments>
		<pubDate>Sun, 23 Oct 2011 22:41:19 +0000</pubDate>
		<dc:creator>TakeON</dc:creator>
				<category><![CDATA[Kūryba]]></category>
		<category><![CDATA[Areas of Focus]]></category>
		<category><![CDATA[Areas of Responsibility]]></category>
		<category><![CDATA[checklists]]></category>
		<category><![CDATA[goals]]></category>
		<category><![CDATA[GTD]]></category>
		<category><![CDATA[GTD horizontai]]></category>
		<category><![CDATA[organizuotumas]]></category>
		<category><![CDATA[purpose]]></category>
		<category><![CDATA[someday-maybe]]></category>
		<category><![CDATA[tikslai]]></category>
		<category><![CDATA[vision]]></category>
		<category><![CDATA[vizijos]]></category>

		<guid isPermaLink="false">http://www.sinkevicius.net/?p=1176</guid>
		<description><![CDATA[Pirmi du HOV lygmenys jau aprašyti, tad liko visi kiti. AoF-AoR (20 000 ft) Pilnas pavadinimas yra „Areas of Focus – Areas of Responsibility“. Kai pradėjau GTD naudoti niekaip nesupratau kam šito lygmens reikia. Kiek domėjausi, jį dažnai naudoja kaip projektų generatorių t.y. pasižiūrėjus už kokias sritis esi atsakingas, gali sukurti naujus projektus, kurie tas [...]]]></description>
			<content:encoded><![CDATA[<p>Pirmi du HOV lygmenys jau <a href="http://www.sinkevicius.net/2011/10/16/kaip-buti-organizuotu-ii-dalis-horizons-of-view/" target="_blank">aprašyti</a>, tad liko visi kiti.</p>
<p><strong>AoF-AoR (20 000 ft)</strong></p>
<p style="text-align: justify;"><a href="http://www.sinkevicius.net/wp-content/uploads/2011/10/aof_aor1.jpg"><img class="aligncenter size-full wp-image-1196" title="aof_aor" src="http://www.sinkevicius.net/wp-content/uploads/2011/10/aof_aor1.jpg" alt="" width="600" height="450" /></a></p>
<p style="text-align: justify;">Pilnas pavadinimas yra „Areas of Focus – Areas of Responsibility“. Kai pradėjau GTD naudoti niekaip nesupratau kam šito lygmens reikia. Kiek domėjausi, jį dažnai naudoja kaip projektų generatorių t.y. pasižiūrėjus už kokias sritis esi atsakingas, gali sukurti naujus projektus, kurie tas sritis kažkaip pagerins ar palaikys. Kadangi man projektų trūkumo niekada nebuvo, tai šis lygmuo kokį pusmetį buvo nenaudojamas visai. Buvau surašęs į jį gyvenimo sritis ar atsakomybes, tačiau iš to jokios naudos nebuvo.</p>
<p style="text-align: justify;">Pastebėjau, kad man GTD sistemoje kai ko trūksta. Tada sukūriau atskirą „worksheet“, kurį pavadinau „Balance“. Tai buvo paprasčiausias kalendorius, kurio eilutės buvo ne dienos, o savaitės t.y. kiekvienai savaitei po atskirą eilutę. O kiekvienai sričiai po atskirą stulpelį. Į celes rašydavau projektus, ties kuriais ketinu dirbti būtent tomis savaitėmis. Tai man leido pasiekti balansą tarp daug projektų dideliame laiko intervale, nuo kelių savaičių iki kelių mėnesių. Niekas negali pasakyti kiek konkrečiai kiekvienas projektas laiko užims ar kad tas projektas vėliau dar bus aktualus, tačiau sudėliojus ketinimus kelioms savaitėms į priekį yra kiek ramiau, nes tada pradedi jausti kokia yra bendra situacija, kur reikia paskubėti, gal kažko atsisakyti ar perstumdyti. Jeigu „Calendar-Tickler“ leidžia <strong>pasiekti balansą dienos bėgyje ar kelių</strong>, tai balanso lange <strong>pasiekdavau balansą ilgoje perspektyvoje</strong>. Šią vasarą vėl naršiau GTD forumą ir vienoje vietoje užtikau, kad AoF-AoR lygis ir yra skirtas subalansuoti įsipareigojimus taip, kad visos gyvenimo sritys ar atsakomybės būtų pakankamai prižiūrėtos. Tad man neliko iš „Balance“ pervadinti į „AoF-AoR“ ir viskas atsistojo į savo vietas.</p>
<p style="text-align: justify;">Man šis lygmuo yra labai svarbus, nes leidžia išlaikyti priimtiną laisvės kiekį. Jeigu nebusi pakankamai budrus dėl savo turimo laiko, tai galima apsikrauti pernelyg daug arba pernelyg vėlai suvokti, kad kažko nepadarei. Taip gerokai mažiau streso ir „gaisrų“, kuriuos tenka gesinti verčiantis per galvą.</p>
<p><strong>Goals (30 000 ft)</strong></p>
<p style="text-align: justify;"><a href="http://www.sinkevicius.net/wp-content/uploads/2011/10/goals1.jpg"><img class="aligncenter size-full wp-image-1187" title="goals" src="http://www.sinkevicius.net/wp-content/uploads/2011/10/goals1.jpg" alt="" width="600" height="83" /></a></p>
<p style="text-align: justify;">Čia patenka vienerių ar dvejų metų apimties tikslai. Jie jau per dideli, kad juos vis dar būtų galima laikyti projektais. Apskritai, ilgai nesibaigiančių projektų geriau vengti, galima juos arba kitaip formuluoti arba perkelti į tikslus.</p>
<p style="text-align: justify;">Be abejonės, norint pasiekti tikslą, turėtų būti bent vienas aktyvus projektas, kuris prie to tikslo artina. Jeigu jokio projekto nevykdot, vadinasi tai nėra jūsų tikslas, jūs tik norit to siekti, bet nieko dėl to nedarot, todėl tas tikslas turėtų keliauti į „Someday-maybe“ sąrašą. Jei tikslas iš tikro aktualus, kada nors vis tiek sugalvosit koks projektas galėtų prie to tikslo priartinti ir rasit jam laiko.</p>
<p style="text-align: justify;">Apskritai kalbant apie tikslus, iš vienos pusės reikia didelio atkaklumo ir drąsos, bet iš kitos pusės būtina suprasti, kad ne visi tikslai turi būti pasiekti ir ne visi bus pasiekti. Kartais, nepasiekti tikslo yra geriausia ką jūs galite padaryti. Būna, kad pradžioje tikslas atrodo labai svarbus, bet praėjus tam tikram laiko tarpui, jis tampa našta, galbūt pernelyg pasikeitėt, galbūt tikėjotės visai kažko kito, galbūt dar kažkas, bet iš inercijos bandot vis tiek to siekti. Todėl į tikslus siūlyčiau žiūrėti ne kaip į sunkų darbą siekiant ir aukso puodą jį atlikus, o kaip į kompasą ir daugiau mėgautis pačia kelione.</p>
<p style="text-align: justify;">Šis GTD lygmuo pradžioje apskritai gali būti tuščias, jei neesat tikri ką norit nuveikti ilgalaikėje perspektyvoje. Todėl Allen‘as siūlo formuoti lygmenis nuo žemiausio lygmens. Pagal tai ką darot kasdien, pabandyti įžvelgti į kokius projektus savo veiksmus galima sugrupuoti. Pagal tai kokius projektus darot, pagalvoti, kokių gi tikslų bandot pasiekti. Todėl lygmenys natūraliai užsipildo su laiku, nuo apačios iki viršaus. Kai pirmame lygmenyje nebereikia lėkti uždusus, galima pagalvoti apie antrą ir t.t.</p>
<p style="text-align: justify;">Kadangi pradedant mano įrašai nuo šio lygmens aukštyn stipriai keitėsi, tai statistika nėra labai tiksli. Dalis tikslų buvo perrašyta daug kartų, bandant juos padaryti tikslesniais, aiškesniais. Dalis buvo iš viso išbraukti. Iš viso dabar jų yra 14. Pasiekti 4 ir 1 nepavykęs. Todėl aktyvūs yra 9.</p>
<p style="text-align: justify;">Tikslus peržiūrėti verta maždaug kartą per savaitę norint įsitikinti ar esi gerose vėžėse. Šis lygmuo jau yra gana stabilus, neturėtų kasdien keistis, todėl ir peržiūrų ar redagavimų nedaug.</p>
<p><strong>Vision (40 000 ft)</strong></p>
<p><a href="http://www.sinkevicius.net/wp-content/uploads/2011/10/vision.jpg"><img class="aligncenter size-full wp-image-1188" title="vision" src="http://www.sinkevicius.net/wp-content/uploads/2011/10/vision.jpg" alt="" width="600" height="57" /></a></p>
<p style="text-align: justify;">Pastarasis lygmuo yra labai panašus į prieš tai buvusį. Vienintelis esminis skirtumas yra tas, kad čia rašomos vizijos, o ne tikslai. O vizijos neprivalo būti labai konkrečios, jos gali būti šiek tiek išskydusios, o be to laikotarpis jau yra bent trys ar penki metai. Čia tarsi turėtų būti aprašytas idealus gyvenimo scenarijus labai ilgai perspektyvai. Šį lygmenį užpildyti yra labai sunku, vargu ar pradedantys naudoti GTD sugeba tą padaryti. Pagrindinė priežastis yra ta, kad reikia labai giliai susivokti koks tau asmeniškai gyvenimas yra idealus, kur nori nukeliauti, ką nori nuveikti, o čia jau reikia labai gerai save suprasti ir pažinti. Ar visi tiksliai žino kas jiems yra gerai? O gal tik atrodo, kad žino? Ir vis gi, pildant šį lygmenį siūlyčiau labai rimtai pažiūrėti ką jūs veikiate žemesniuose lygmenyse, gal iš jų matosi kokia nors kad ir nelabai aiški kryptis, pašaukimas, traukia? Gal tai ir yra vizija. Kol žemesni lygmenys nėra nusistovėję, šio lygmens forsuoti nėra reikalo. Kita vertus, gali būti, kad ne visi gyvena savo gyvenimą, tai žemesni lygmenys tada tik klaidins.</p>
<p style="text-align: justify;">Turiu 9 įrašus, vienas su statusu – „Done“. Šis lygmuo yra labai stabilus, todėl jį peržiūrėti galima kartą į mėnesį arba kai reikia įkvėpimo. Ypač galėtų padėti darant esminius gyvenimo sprendimus.</p>
<p><strong>Purpose (50 000 ft)</strong></p>
<p><a href="http://www.sinkevicius.net/wp-content/uploads/2011/10/purpose.jpg"><img class="aligncenter size-full wp-image-1190" title="purpose" src="http://www.sinkevicius.net/wp-content/uploads/2011/10/purpose.jpg" alt="" width="600" height="66" /></a></p>
<p style="text-align: justify;">Paskutinis lygmuo. Šio lygmens nejudinau visus metus. Galvojau: na aš tikrai nežinau koks tas mano pagrindinis („ultimate“) gyvenimo tikslas. Kokia mano misija? Kaip aš galiu nuspręsti dabar, jei po metų ar kitų galiu imti ir persigalvoti? Bandžiau rašyti įvairius variantus, trindavau, perrašydavau. Bet nieko doro taip ir nesugalvojau. Galiausiai šią vasarą, vienoje vietoje aptikau, kad šioje skiltyje turi būti ne „ultimate“ tikslas, o <strong>būtinos ir pakankamos sąlygos, kad kiekviena diena būtų prasminga</strong>. T.y. ko turi būti kiekvieną dieną, kad kiekviena diena būtų prasminga, kad dėl nieko nesigailėtum. Kaip paprasta. Visa sistema skatina kurti projektus, tikslus, vizijas, balansuoti, kasdien kažkur lekiama, tačiau visų svarbiausia neužsimiršti daryti tai kas tau asmeniškai daro gyvenimą prasmingu. Visi tikslai, projektai ar vizijos bet kurią akimirką gali tiesiog nutrūkti, todėl svarbu balansuoti, kad ne tik būtum atsakingas už savo ateitį, bet ir kad nepamištum tiesiog gyventi, čia ir dabar.</p>
<p style="text-align: justify;">Šiame lange turiu vos keletą įrašų. Jie keitėsi, manau laikui einant keisis ir vėl, nes daugiau patiriant lengviau suvokti kas tau asmeniškai yra prasminga, o kas ne.</p>
<p><strong>Someday-Maybe</strong></p>
<p><a href="http://www.sinkevicius.net/wp-content/uploads/2011/10/someday_maybe.jpg"><img class="size-full wp-image-1192 aligncenter" title="someday_maybe" src="http://www.sinkevicius.net/wp-content/uploads/2011/10/someday_maybe.jpg" alt="" width="424" height="225" /></a></p>
<p style="text-align: justify;">Tai nėra HOV dalis, tačiau laikau šį sąrašą šalia. Jokių ypatingų taisyklių jo atžvilgiu neturiu. Svarbiausia, kad bet kokios idėjos būtų užfiksuotos ir patektų į sąrašą. Daug kas sako, kad jiems šis sąrašas tarsi juoda skylė, į kurį patekus ten ir lieka. Didžiąją dalimi dėl to, kad sąrašas pasidaro beprotiškai ilgas. Nors pats visą laiką turėdavau gerokai daugiau idėjų, nei laiko joms įgyvendinti, bet mano sąrašas gana kuklus, vos 75 įrašai. Dalis įrašų kartais iškeliauja į projektus, kartais grįžta, jei pritrūksta laiko. Kartais negrįžta, nes įgyvendinama, o kartais išbraukiu, nes kažkokiu keistu būdu pasiekiu neturėdamas net projekto. Kai kuriuos įrašus galima braukti, jei jie tampa nebeaktualūs. Įrašai turi dvi būsenas „Someday“ arba „Maybe“. Jos turi esminį skirtumą. „Someday“ reiškia, kad tai kada nors vis tiek norėsi padaryti tik dabar nėra tam laiko, o „Maybe“ reiškia, kad ne esi tikras, gal nori, o gal ir ne, bet tai kažkuo patraukė dėmesį.</p>
<p style="text-align: justify;">Šis sąrašas yra geras tuo, kad kai kažką į jį perkeli, gali jaustis ramus. Atrodo keista, bet kai padarai sprendimą to dabar nedaryti ir esi pasižymėjęs, t.y. niekada nepamirši, iš tikro yra ramiau, kad nedarai.</p>
<p><strong>Checklists</strong></p>
<p><a href="http://www.sinkevicius.net/wp-content/uploads/2011/10/checklists.jpg"><img class="aligncenter size-full wp-image-1194" title="checklists" src="http://www.sinkevicius.net/wp-content/uploads/2011/10/checklists.jpg" alt="" width="600" height="134" /></a></p>
<p style="text-align: justify;">Paskutinis „Worksheet“. Seniau visus „Checklist“ laikiau MS Word dokumente, tačiau nusprendžiau, kad noriu turėt šalia. Iš viso turiu 10 sąrašų. Kai kurie labai padeda, nes sudaryti optimaliu eiliškumu ir viską primena, todėl nieko nepamirštu. „Tickler“ naudoju, kad primintų reikiamus sąrašus peržvelgti.</p>
<p style="text-align: justify;">Tai tiek apie mano šabloną. „Review“ darau beveik kasdien, todėl žemesni lygmenys yra peržiūrimi dažnai. Vieną kartą į savaitę darau rimtą peržiūrą. Jos metu svarbiausia subalansuoti ateinančių savaičių krūvį ir peržiūrėti projektų stovį, ar tikrai visi juda, gal jiems ko trūksta ir pan. Tada naudoju „bubble“ principą, kai nuo numatyto veiksmo kylama iki projekto, atsakomybių, tikslų, o po to leidžiamasi žemyn taip patikrinant ar tikrai nėra kokių nutrūkusių galų.</p>
<p>Pilna šabloną galima <a href="http://www.sinkevicius.net/wp-content/uploads/2011/10/template.xlsm" target="_blank">atsisiųsti</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sinkevicius.net/2011/10/24/kaip-buti-organizuotu-iii-dalis-horizons-of-view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kaip būti organizuotu? II dalis. Horizons of View</title>
		<link>http://www.sinkevicius.net/2011/10/16/kaip-buti-organizuotu-ii-dalis-horizons-of-view/</link>
		<comments>http://www.sinkevicius.net/2011/10/16/kaip-buti-organizuotu-ii-dalis-horizons-of-view/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 15:57:31 +0000</pubDate>
		<dc:creator>TakeON</dc:creator>
				<category><![CDATA[Kūryba]]></category>
		<category><![CDATA[current projects]]></category>
		<category><![CDATA[GTD]]></category>
		<category><![CDATA[GTD horizontai]]></category>
		<category><![CDATA[NA]]></category>
		<category><![CDATA[Next Action]]></category>
		<category><![CDATA[organizuotumas]]></category>
		<category><![CDATA[runaway]]></category>
		<category><![CDATA[Tickler]]></category>

		<guid isPermaLink="false">http://www.sinkevicius.net/?p=950</guid>
		<description><![CDATA[Metus naudoju GTD ir dėl to labai džiaugiuosi. Pats diegimas man užtruko tris savaites, gavosi kaip kūrybinės atostogas. Vėliau, su laiku, atsirado išimčių, nes gyvenimas labai įvairus, tad šią vasarą keletą dienų skyriau sistemos tobulinimui. Dabar sistema paruošta naujam darbų pikui. Metų patirtimi dabar ir dalinsiuosi. Tiesa, mano interpretacijos apie GTD gali skirtis nuo paties [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Metus naudoju GTD ir dėl to labai džiaugiuosi. Pats diegimas man užtruko tris savaites, gavosi kaip kūrybinės atostogas. Vėliau, su laiku, atsirado išimčių, nes gyvenimas labai įvairus, tad šią vasarą keletą dienų skyriau sistemos tobulinimui. Dabar sistema paruošta naujam darbų pikui.</p>
<p style="text-align: justify;">Metų patirtimi dabar ir dalinsiuosi. Tiesa, mano interpretacijos apie GTD gali skirtis nuo paties Allen‘o, todėl geriausia, jei jau esate skaitę Allen&#8217;o knygą ir bent šį tą išbandėt. Sąvokas reiktų žinoti, nes ne visas aiškinu detaliai, be to man patinka naudoti angliškus terminus, nes jie tokie lakoniški&#8230; Viskas ką rašysiu yra labai svarbu, nors gali atrodyti, kad tai smulkmenos.</p>
<p style="text-align: justify;">Pačios GTD sistemos esmė yra: laikyti visus įsipareigojimus, sau ir kitiems, išorinėje, patikimoje, sistemoje. Išorinė sistema reiškia, kad jokių įsipareigojimų negalima laikyti galvoje. Tada lengva atsipalaiduoti ir užsiimti vien tik veikla, nes sistema viską primins. O sistema yra patikima tada, jei ji yra:</p>
<ul>
<li style="text-align: justify;">švari (clean) – joje neturėtų būti neapdorotos ir-ar nereikalingos informacijos, prie kiekvieno informacijos bito turi būti aiškus sprendimas ką ketini su ja daryti ar blogiausiu atveju – kada ketini tą sprendimą priimti t.y. kokių sąlygų reikia, kad galėtum priimti;</li>
<li style="text-align: justify;">aiški (clear) – užmetus žvilgsnį iš kart turėtų būti aišku apie kalba, labai konkrečiai, jokių dviprasmybių ar daugiaprasmybių;</li>
<li style="text-align: justify;">atnaujinta (current) – negalima leisti sistemai pasenti, būtina pastoviai daryti peržiūras (review), visi įrašai turi atitikti jūsų šiandienos realijas;</li>
<li style="text-align: justify;">išbaigta (complete) – joje turėtų būti viskas kas yra svarbu, jokių išimčių.</li>
</ul>
<p style="text-align: justify;">Šie keturi požymiai yra pagrindiniai kriterijai, kurie padeda save patikrinti ar sistema pasitikėsi. Nes jei nepasitikėsi, pradėsi įsipareigojimus įsiminti ir nuo to momento sistema tampa neefektyvi.</p>
<p style="text-align: justify;">Kai pradėjau domėtis GTD, jau tada buvo įvairiausių įrankių su kuriais galima sistemą naudoti, pavyzdžiui <strong>Outlook</strong>. Bet man nei viena nepatiko, todėl nusprendžiau daryti savaip ir pasirinkau <strong>Excel</strong>. Viename <strong>XLSM</strong> faile (MS Office 2007 failas su makro komandomis) yra visi HOV („Horisons of View“) t.y. kiekvienam po vieną „Worksheet“. Iš viso 9 „Worksheets“. Apie kiekvieną prašysiu atskirai:</p>
<p><a href="http://www.sinkevicius.net/wp-content/uploads/2011/10/worksheets.jpg"><img class="aligncenter size-full wp-image-1153" title="worksheets" src="http://www.sinkevicius.net/wp-content/uploads/2011/10/worksheets.jpg" alt="" width="600" height="13" /></a></p>
<p style="text-align: justify;">Nepateiksiu savo sistemos įrašų, tai pernelyg asmeniška, tačiau šabloną su keliais paprastais pavyzdžiais parodyti galiu. Jei yra neaiškumų, galite drąsiai klausti komentaruose.</p>
<p style="text-align: justify;"><strong>Current projects (10 000 ft)<br />
</strong></p>
<p style="text-align: justify;"><a href="http://www.sinkevicius.net/wp-content/uploads/2011/10/current_projects.jpg"><img class="aligncenter size-full wp-image-1155" title="current_projects" src="http://www.sinkevicius.net/wp-content/uploads/2011/10/current_projects.jpg" alt="" width="600" height="118" /></a></p>
<p style="text-align: justify;">Logiškiausia pradėti nuo projektų. Mano sistemoje dažniausiai jų yra apie 15. Nors Allen‘as ir sako, kad bet ką, kas turi bent du veiksmus, reiktų laikyti projektu, bet man per daug laiko susi gaišta, jei kurti projektus smulkmenoms. Pavyzdžiui, norint apsikirpti reiktų kelių veiksmų. Užsiregistruoti, nueiti paskirtu laiku ir užfiksuoti sau priminimą kitam kartui. Tai darau paprastai. Į „Calendar-Tickler“ konkrečią dieną įrašau priminimą „Kirptis“ su komentaru („registruotis“), atėjus tai dienai užsiregistruoju ir įrašau į „Calendar-Tickler“ kitą įrašą konkrečioje dienoje – „Kirptis X val.“. Po apsikirpimo įrašau dar vieną įrašą, kuris man primins, kad reiktų ir vėl užsiregistruoti. Paprasta ir jokių projektų.</p>
<p style="text-align: justify;">Per metus buvo sukurti 61 projektai, dažniausiai tai yra kelių mėnesių ar savaičių apimties, būna ir mažesnių, bet tikrai nesismulkinu kaip kurie, kurie turi 100 ar daugiau aktyvių projektų. Man netgi atrodo, kad jie save kažkiek apgaudinėja arba yra genijai. Šioje vietoje turėtų būti tik tie projektai, kurie iš tiesų juda į priekį, todėl ir pavadinta „Current“, o ne tie, kurie norėtum kad judėtų, bet iš tikro nejuda. Pastarųjų tikroji vieta yra „Someday-Maybe“ sąraše. Šiuo metu turiu 16 aktyvių projektų, visi juda į priekį, tiesa, kai kurie yra priklausomi nuo kitų žmonių, todėl laukiu kol bus atlikti deleguoti veiksmai. Iš 61 sukurtų projektų, per metus pilnai įgyvendinti 43 projektai, o 2 nepasisekė. Nesėkmės irgi gerai, svarbu tinkamai į jas reaguoti. Kai kurie projektai iš „Someday-Maybe“ atkeliauja į einamuosius projektus, o kartais grįžta atgal, nes pritrūksta laiko.</p>
<p style="text-align: justify;">Kiekvienas projektas turi pavadinimą, dažniausiai iš vieno žodžio. Prie kiekvieno iš jų vienu sakiniu lakoniškai parašytas laukiamas sėkmingas rezultatas („Outcome“), t.y. kai jį pasieksi, projektas bus įgyvendintas. Todėl rezultatas turi būti maksimaliai tiksliai įvardintas, jokių miglotumų, rezultatas privalo būti išmatuojamas ir turintis pabaigą. Čia jau reikia pasistengti nubrėžti labai aiškias ribas tarp to kas turi būti padaryta ir to ko nereikia. Jokio godumo („keep it real stupid“).</p>
<p style="text-align: justify;">Prie kiekvieno projekto dar užrašau jo „Area of Responsibility-Focus“ (pavyzdžiui „Blogas“, „Mokslas“). Nes turi būti labai aiškus ryšis tarp aukštesnių horizontų ir žemesnių. Žinoma, kad kai kurie projektai paveikia kelis aukštesnius horizontus, bet reiktų visgi apsispręsti kurį labiausiai. Šalia dar gali būti projekto terminas („deadline“) ir būsena („status“). Pagal būseną labai patogu rūšiuoti. Geriau naudoti 2007 ar naujesnį MS Office, nes juose jau yra filtras su „multiselect“. Pavyzdžiui, mano galimos būsenos yra „Done“, „Failure“, „“ (tuščia). Tuomet nufiltruoju, kad man matytųsi tik tie projektai, kurių būsena tuščia, taip atlikti projektai niekur nedingsta, tačiau ir į akis nelenda, matau tik aktualius t.y. dar neatliktus.</p>
<p>Projektų palaikymo („support“) informaciją laikau kartu su projektų failais. Apie tai gal vėliau.</p>
<p style="text-align: justify;">Kuriant projektus labai svarbu žiūrėti ar kai kurie projektai kartais nėra labai sukibę (vieno rezultatas labai priklauso nuo kito), t.y. ar tikrai kai kurių negalima apjungti ir padaryti iš jų vieną. Kartais taip galima sau pasilengvinti. Tačiau iš kitos pusės, jei viename projekte reikia pasiekti kelis rezultatus, kurie mažai tarpusavyje siejasi, tada geriau tą vieną projektą išskaidyti į mažesnius.</p>
<p style="text-align: justify;">Kai kurie žmonės kuria palaikymo („maintain“) projektus. Tai, tokie projektai, kurie periodiškai atsinaujina. Man tokie projektai nelabai patinka, jei jie nėra labai ilgalaikiai, stengiuosi išsiversti su „Calendar-Tickler“ arba sąrašais („checklist“). Kitaip tariant projektų sąrašo geriau nešiukšlinti, nes smulkūs ir nereikšmingi projektai blaško, užima papildomą laiką juos peržiūrėti ir palaikyti.</p>
<p style="text-align: justify;">„Subprojects“ stengiuosi vengti, bet jei labai reikia naudoju „@”, pavyzdžiui „Prj1 @Sub1”.</p>
<p><strong>Current NPAs (Runaway)<br />
</strong></p>
<p><a href="http://www.sinkevicius.net/wp-content/uploads/2011/10/current_NPAs.jpg"><img class="aligncenter size-full wp-image-1158" title="current_NPAs" src="http://www.sinkevicius.net/wp-content/uploads/2011/10/current_NPAs.jpg" alt="" width="600" height="188" /></a></p>
<p style="text-align: justify;">Pilnas sąrašo pavadinimas: „Current Next Physical Actions“ arba „Runway“. Išvertus būtų: dabartiniai-einamieji sekantys-kiti fiziniai veiksmai. Esmė tokia, kiekvienas projektas turi turėti vienu sakiniu paaiškinimą-nuorodą, ką toliau su tuo projektu reiktų daryti. Dažnai naudojamas „NA (Next Action)“ terminas, tačiau aš specialiai užrašiau „NPA“, kad priminti sau, jog tas sekantis veiksmas turi atspindėti ką konkrečiai, <strong>fiziškai</strong>, tu ketini daryti su tuo projektu. Tik galvojant apie fizinį veiksmą galima patikrinti ar tu turėsi pakankamai informacijos, įrankių ar kitokių resursų, kad jį atlikti. Tarkim reiktų parašyt referatą (linkiu, kad nereikėtų), tada nusprendi, kad reiktų pradėti nuo knygos apžvalgos. Tai „NPA“ galėtų būti toks: „atsiversti X knygą“. Jei knygos neturi, tada galėtų būti: „atsiversti bibliotekos puslapį knygos paieškai“. Jau rašiau apie <a href="http://www.sinkevicius.net/2009/03/22/sklandumas-ir-vilkinimas/" target="_blank">vilkinimo priežastis,</a> tai čia tą reikia turėti galvoje, kad „NPA“ turi būti lengvas, jis turi būti atominis-nedalomas, absoliučiai aiškus ir įvykdomas.</p>
<p style="text-align: justify;">Prie kiekvieno „NPA“ parašytas projekto pavadinimas, kad išliktų ryšys su aukštesniu horizontu. Projektų ir „Current NPAs“ sąrašai galėtų būti išrikiuoti pagal projekto pavadinimą, tuomet vaikštant iš projektų lango į veiksmų langą iš kart matytųsi kiekvieno projekto ir jam priskirto veiksmo informacija toje pačioje eilutėje. Dalis veiksmų gali neturėti priskirto projekto, jei tai kažkokios smulkmenos. Dažniausiai yra „Errands“, „Calls“ ir panašūs veiksmai. Todėl prie kiekvieno veiksmo patogu turėti konteksto pavadinimą, kuriame tas veiksmas gali būti atliekamas. Pavyzdžiui, „Home“, „Internet“, „E-turgus“, „E-PC“ („E“ – reiškia „Errands“, „PC“ – prekybos centras). Tokiu atveju gali būti surašytos prekės, kurių reikia nupirkt ar panašiai. Ir žinoma kiekvienam veiksmui reikalingas statusas-būsena. Mano būsenos yra: „Done“, „Waiting For“, „“ (tūščia).</p>
<p style="text-align: justify;">Dabar trumpai apie veiksmo gyvavimo ciklą. Jei tai yra projekto veiksmas, tai jis užbaigiamas tada, kai baigiasi pats projektas. Projektui judant į priekį, „NPA“ įrašas vis keičiasi, nes negali visą laiką dirbti prie vieno projekto, vadinasi jį reikia palikti ir grįžus vėl prie jo, tas „NPA“ primins nuo kurios vietos reikia tęsti. Kai kurie veiksmai būna pažymėti „Waiting For“, kai kažkas deleguota kitiems ir iš jų laukiamas rezultatas (kartais informacijos, kartais apsisprendimo). Veiksmai be projekto užbaigiami juos įvykdžius. Jei nupirkai prekę, tai pažymi kaip „Done“.</p>
<p style="text-align: justify;">Dar svarbu paminėti, kad „NPA“ negali būti niekur daugiau, tik čia. Jie turi skambėti patraukliai, įvykdomai („doable“) ir užtrukti labai trumpai. Nes jų esmė, užkurti procesą, įvesti save į tą projektą per kuo trumpesnį laiko tarpą, o ne juo gauti visą projekto rezultatą. Kiekvienas įrašas turi prasidėti veiksmažodžiu.</p>
<p style="text-align: justify;">Visi „NPA“, kurie nėra aktualūs arba pasidaro tokiais, turėtų keliauti į „Someday-Maybe“. Neapgaudinėkit savęs, jei įrašas nepadarytas ten stovi mėnesį ar kitą ir yra nepadaromas, vadinasi jam ten ne vieta. O tie „NPA“, dėl kurių yra apsisprendimas dėl konkrečios datos, kad tada jis bus daromas, galėtų keliauti iš šio sąrašo į „Calendar-Tickler“.</p>
<p><strong>Calendar-Tickler</strong></p>
<p><a href="http://www.sinkevicius.net/wp-content/uploads/2011/10/calendar_tickler.jpg"><img class="aligncenter size-full wp-image-1160" title="calendar_tickler" src="http://www.sinkevicius.net/wp-content/uploads/2011/10/calendar_tickler.jpg" alt="" width="600" height="379" /></a></p>
<p style="text-align: justify;">Bandžiau įvairius variantus ir priėjau tokią išvadą, kad tinkamai padarytas kalendorius Excel formatu yra labai patogus, nes gali tarnauti ir kaip kalendorius ir kaip „Tickler“ (Allen siūlo fizinius aplankus, kurių neturiu). Pats kalendorius man patogus tuo, kad visi įrašai matosi viename lange ir juos gali stumdyti beveik be pastangų.</p>
<p style="text-align: justify;">Su makro komandomis jau atliktus veiksmus arba nebeaktualius įrašus nuspalvoju pilkai. Įrašai, kurie turi išorinį įsipareigojimą su kitais žmonėmis (paskaitos, treniruotės, susitikimai ir t.t.) pažymiu raudonai. „Tickler“ įrašus (įvairūs priminimai susieti su konkrečiomis dienomis) nuspalvoju violetine spalva. Be to, kadangi vietos mažai, kiekvienam įrašui skiriu vieną trumpą žodį, o ant tos celės įterpiu komentarą su papildoma informacija, jei tokios yra. Jeigu esu nusprendęs dirbti prie konkrečių projektų konkrečiomis dienomis, tai į tas dienas įrašau tų projektų pavadinimus. Būna, kad nepavyksta skirti laiko, tuomet tiesiog perkeli įrašus į ateitį per dieną ar kelias.</p>
<p style="text-align: justify;">Kalendorius didėja į viršų, nes pastebėjau, kad maloniau yra kilti į viršų nei leistis žemyn. Kalendorių paprastai išplečiu iki kelių mėnesių į priekį. Jame būna ir gerokai į priekį įterptų įrašų, jei jie bus aktualūs vėliau.</p>
<p style="text-align: justify;">Taigi, šį kart labai detaliai apžvelgiau savo GTD sistemos pirmus du lygmenis su kalendoriumi. Kitame įraše apžvelgsiu likusius. Mano GTD Excel XLSM šabloną galima <a href="http://www.sinkevicius.net/wp-content/uploads/2011/10/template1-3.xlsm" target="_blank">atsisiųsti</a> (kitame įraše įdėsiu pilną, su visais lygmenimis). Beje, reiktų atkreipti dėmesį į šablone panaudotus duomenų filtrus, nes įvykdyti projektai ir veiksmai yra paslėpti.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sinkevicius.net/2011/10/16/kaip-buti-organizuotu-ii-dalis-horizons-of-view/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Matematinės morfologijos operatoriai</title>
		<link>http://www.sinkevicius.net/2011/10/05/matematines-morfologijos-operatoriai/</link>
		<comments>http://www.sinkevicius.net/2011/10/05/matematines-morfologijos-operatoriai/#comments</comments>
		<pubDate>Wed, 05 Oct 2011 19:37:58 +0000</pubDate>
		<dc:creator>TakeON</dc:creator>
				<category><![CDATA[Tyrinėjimai]]></category>
		<category><![CDATA[atidarymas]]></category>
		<category><![CDATA[closing]]></category>
		<category><![CDATA[dilation]]></category>
		<category><![CDATA[erosion]]></category>
		<category><![CDATA[erozija]]></category>
		<category><![CDATA[išplėtimas]]></category>
		<category><![CDATA[matematiniai morfologiniai operatoriai]]></category>
		<category><![CDATA[opening]]></category>
		<category><![CDATA[uždarymas]]></category>

		<guid isPermaLink="false">http://www.sinkevicius.net/?p=1131</guid>
		<description><![CDATA[Apie pačią matematinę morfologiją plačiai nerašysiu, mes tik pabandysime pažiūrėti kelias sąvokas ir iš karto šį bei tą išbandyti. Struktūrizavimo elementas (structuring elements) yra binarinis paveiksliukas, pavyzdžiui kokia nors geometrinė forma (stačiakampis, diskas, kaimynų aibė ir t.t.), dažniausiai gerokai mažesnis už paveiksliuką kuriam bus naudojamas. Morfologiniai operatoriai: Išplėtimas (dilation) – padidina paveiksliuką; Erozija (erosion) – [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Apie pačią <a title="Matematinė morfologija" href="http://en.wikipedia.org/wiki/Mathematical_morphology" target="_blank">matematinę morfologiją</a> plačiai nerašysiu, mes tik pabandysime pažiūrėti kelias sąvokas ir iš karto šį bei tą išbandyti.</p>
<p style="text-align: justify;"><strong>Struktūrizavimo elementas</strong> (structuring elements) yra binarinis paveiksliukas, pavyzdžiui kokia nors geometrinė forma (stačiakampis, diskas, kaimynų aibė ir t.t.), dažniausiai gerokai mažesnis už paveiksliuką kuriam bus naudojamas.</p>
<p style="text-align: justify;">Morfologiniai <strong>operatoriai</strong>:</p>
<ul>
<li>Išplėtimas (dilation) – padidina paveiksliuką;</li>
<li>Erozija (erosion) – sumažina paveiksliuką;</li>
<li>Uždarymas (closing) – uždaro vidines skyles ar išorines įlankas;</li>
<li>Atidarymas (opening) – pašalina smulkias, atsikišusias į foną dalis.</li>
</ul>
<p>Paimkim tokį pavyzdį:</p>
<p><a href="http://www.sinkevicius.net/wp-content/uploads/2011/10/shape_big.jpg"><img class="aligncenter size-full wp-image-1132" title="shape_big" src="http://www.sinkevicius.net/wp-content/uploads/2011/10/shape_big.jpg" alt="" width="88" height="80" /></a></p>
<p>Tai binarinis 10&#215;10 dydžio paveiksliukas su figūra.</p>
<p style="text-align: justify;">Paimkime paprastą struktūrizavimo elementą 3&#215;3 dydžio (kvadratą): [1 1 1; 1 1 1; 1 1 1] ir panaudokime visus keturis operatorius (viršutinis kairysis &#8211; dilation, viršutinis dešinysis &#8211; closing, apatinis kairysis &#8211; erosion, apatinis kairysis &#8211; opening):</p>
<p><a href="http://www.sinkevicius.net/wp-content/uploads/2011/10/operators.jpg"><img class="aligncenter size-full wp-image-1133" title="operators" src="http://www.sinkevicius.net/wp-content/uploads/2011/10/operators.jpg" alt="dilation, erosion, opening, closing" width="180" height="164" /></a></p>
<p>Kodas:</p>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</pre></td><td class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">tic</span>;
<span style="color: #0000FF;">clc</span>;
<span style="color: #0000FF;">close</span> <span style="color: #0000FF;">all</span>;
file = <span style="color:#A020F0;">'D:\shape.bmp'</span>;
rgb = <span style="color: #0000FF;">imread</span><span style="color: #080;">&#40;</span>file<span style="color: #080;">&#41;</span>;
B = im2bw<span style="color: #080;">&#40;</span>rgb, <span style="color: #33f;">0.8</span><span style="color: #080;">&#41;</span>;
&nbsp;
se = strel<span style="color: #080;">&#40;</span><span style="color:#A020F0;">'square'</span>, <span style="color: #33f;">3</span><span style="color: #080;">&#41;</span>;
B1 = imdilate<span style="color: #080;">&#40;</span>B, se<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">subplot</span><span style="color: #080;">&#40;</span><span style="color: #33f;">2</span>,<span style="color: #33f;">2</span>,<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>, subimage<span style="color: #080;">&#40;</span>B1<span style="color: #080;">&#41;</span>
&nbsp;
se = strel<span style="color: #080;">&#40;</span><span style="color:#A020F0;">'square'</span>, <span style="color: #33f;">3</span><span style="color: #080;">&#41;</span>;
B2 = imerode<span style="color: #080;">&#40;</span>B, se<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">subplot</span><span style="color: #080;">&#40;</span><span style="color: #33f;">2</span>,<span style="color: #33f;">2</span>,<span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>, subimage<span style="color: #080;">&#40;</span>B2<span style="color: #080;">&#41;</span>
&nbsp;
se = strel<span style="color: #080;">&#40;</span><span style="color:#A020F0;">'square'</span>, <span style="color: #33f;">3</span><span style="color: #080;">&#41;</span>;
B3 = imclose<span style="color: #080;">&#40;</span>B, se<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">subplot</span><span style="color: #080;">&#40;</span><span style="color: #33f;">2</span>,<span style="color: #33f;">2</span>,<span style="color: #33f;">3</span><span style="color: #080;">&#41;</span>, subimage<span style="color: #080;">&#40;</span>B3<span style="color: #080;">&#41;</span>
&nbsp;
se = strel<span style="color: #080;">&#40;</span><span style="color:#A020F0;">'square'</span>, <span style="color: #33f;">3</span><span style="color: #080;">&#41;</span>;
B4 = imopen<span style="color: #080;">&#40;</span>B, se<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">subplot</span><span style="color: #080;">&#40;</span><span style="color: #33f;">2</span>,<span style="color: #33f;">2</span>,<span style="color: #33f;">4</span><span style="color: #080;">&#41;</span>, subimage<span style="color: #080;">&#40;</span>B4<span style="color: #080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">fprintf</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Užtruko: %4.2f s\n'</span>, <span style="color: #0000FF;">toc</span><span style="color: #080;">&#41;</span>;</pre></td></tr></table></div></div>

<p style="text-align: justify;">Naudojant šias operacijas atliekamos įvairiausios užduotys, pavyzdžiui galime išryškinti šių dvejų detalių defektus:</p>
<p><a href="http://www.sinkevicius.net/wp-content/uploads/2011/10/gears.jpg"><img class="aligncenter size-full wp-image-1134" title="gears" src="http://www.sinkevicius.net/wp-content/uploads/2011/10/gears.jpg" alt="" width="300" height="180" /></a></p>
<p style="text-align: justify;">Jei labai gerai įsižiūrėti, tai abi detalės turi po defektą t.y. trūksta po vieną dantuką, tačiau tam kad pastebėti tokius defektus, reikia labai daug atidumo. Pabandysime naudojant morfologinius operatorius, šiuos defektus išryškinti. Kodas:</p>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
</pre></td><td class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">tic</span>;
<span style="color: #0000FF;">clc</span>;
<span style="color: #0000FF;">close</span> <span style="color: #0000FF;">all</span>;
file = <span style="color:#A020F0;">'D:\gears.bmp'</span>;
rgb = <span style="color: #0000FF;">imread</span><span style="color: #080;">&#40;</span>file<span style="color: #080;">&#41;</span>;
B = im2bw<span style="color: #080;">&#40;</span>rgb, <span style="color: #33f;">0.8</span><span style="color: #080;">&#41;</span>;
imshow<span style="color: #080;">&#40;</span>B<span style="color: #080;">&#41;</span>; 
&nbsp;
<span style="color: #228B22;">% rasti skyles</span>
file = <span style="color:#A020F0;">'D:\hole_ring.bmp'</span>;
rgb = <span style="color: #0000FF;">imread</span><span style="color: #080;">&#40;</span>file<span style="color: #080;">&#41;</span>;
hole_ring = im2bw<span style="color: #080;">&#40;</span>rgb, <span style="color: #33f;">0.8</span><span style="color: #080;">&#41;</span>;
SE = strel<span style="color: #080;">&#40;</span>hole_ring<span style="color: #080;">&#41;</span>;
B1 = imerode<span style="color: #080;">&#40;</span>B, SE<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% erozija naudojant žiedo struktūros kaimynus</span>
imshow<span style="color: #080;">&#40;</span>B1<span style="color: #080;">&#41;</span>; 
&nbsp;
<span style="color: #228B22;">% padidinti skyles</span>
SE = strel<span style="color: #080;">&#40;</span><span style="color:#A020F0;">'disk'</span>, <span style="color: #33f;">20</span>, <span style="color: #33f;">0</span><span style="color: #080;">&#41;</span>;
B2 = imdilate<span style="color: #080;">&#40;</span>B1, SE<span style="color: #080;">&#41;</span>;
imshow<span style="color: #080;">&#40;</span>B2<span style="color: #080;">&#41;</span>; 
&nbsp;
<span style="color: #228B22;">% užkimšti skyles</span>
B3 = <span style="color: #0000FF;">bitor</span><span style="color: #080;">&#40;</span>B, B2<span style="color: #080;">&#41;</span>;
imshow<span style="color: #080;">&#40;</span>B3<span style="color: #080;">&#41;</span>; 
&nbsp;
<span style="color: #228B22;">% tik dantukai</span>
SE = strel<span style="color: #080;">&#40;</span><span style="color:#A020F0;">'disk'</span>, <span style="color: #33f;">20</span>, <span style="color: #33f;">0</span><span style="color: #080;">&#41;</span>;
B7 = imopen<span style="color: #080;">&#40;</span>B3, SE<span style="color: #080;">&#41;</span>;
B8 = B3 - B7;
imshow<span style="color: #080;">&#40;</span>B8<span style="color: #080;">&#41;</span>;
&nbsp;
<span style="color: #228B22;">% padidinti dantukai</span>
SE = strel<span style="color: #080;">&#40;</span><span style="color: #080;">&#91;</span><span style="color: #33f;">1</span>; <span style="color: #33f;">1</span><span style="color: #080;">&#93;</span><span style="color: #080;">&#41;</span>;
B9 = imerode<span style="color: #080;">&#40;</span>B8, SE<span style="color: #080;">&#41;</span>;
SE = strel<span style="color: #080;">&#40;</span><span style="color:#A020F0;">'disk'</span>, <span style="color: #33f;">4</span>, <span style="color: #33f;">0</span><span style="color: #080;">&#41;</span>;
B9 = imdilate<span style="color: #080;">&#40;</span>B9, SE<span style="color: #080;">&#41;</span>;
imshow<span style="color: #080;">&#40;</span>B9<span style="color: #080;">&#41;</span>;</pre></td></tr></table></div></div>

<p>Rezultatai:</p>
<p><a href="http://www.sinkevicius.net/wp-content/uploads/2011/10/gears_all.jpg"><img class="aligncenter size-full wp-image-1135" title="gears_all" src="http://www.sinkevicius.net/wp-content/uploads/2011/10/gears_all.jpg" alt="" width="300" height="904" /></a></p>
<p style="text-align: justify;">Paskutiniame paveiksliuke defektai išryškinti akivaizdžiai. Jei žiūrėti paeiliui, tai pirmiausia erozijos pagalba aptinkamos skylės. Tam pritaikytas erozijos operatorius ir žiedo kaimynai, kurie pateikti atskiru paveiksliuku &#8211; hole_ring.bmp:</p>
<p style="text-align: justify;"><a href="http://www.sinkevicius.net/wp-content/uploads/2011/10/hole_ring.jpg"><img class="aligncenter size-full wp-image-1136" title="hole_ring" src="http://www.sinkevicius.net/wp-content/uploads/2011/10/hole_ring.jpg" alt="" width="44" height="44" /></a></p>
<p style="text-align: justify;">Gauti keturi maži objektai (antras paveiksliukas), kurie yra skylių centruose. Jie padidinami tiek, kad pilnai uždengtų pačias skyles. Naudojant OR operaciją su originaliu paveiksliuku ir tais gautais objektais, gaunamas trečias paveiksliukas be skylių. Ketvirtame atmesta vidinė detalės dalis, o penktame kiekvienas dantukas išryškinamas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sinkevicius.net/2011/10/05/matematines-morfologijos-operatoriai/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Objektų žymėjimas</title>
		<link>http://www.sinkevicius.net/2011/09/29/objektu-zymejimas/</link>
		<comments>http://www.sinkevicius.net/2011/09/29/objektu-zymejimas/#comments</comments>
		<pubDate>Thu, 29 Sep 2011 10:11:19 +0000</pubDate>
		<dc:creator>TakeON</dc:creator>
				<category><![CDATA[Tyrinėjimai]]></category>
		<category><![CDATA[connected components labeling]]></category>
		<category><![CDATA[objects labeling]]></category>
		<category><![CDATA[objektų išskyrimas]]></category>
		<category><![CDATA[objektų pažymėjimas]]></category>
		<category><![CDATA[paveiksliukų apdorojimas]]></category>

		<guid isPermaLink="false">http://www.sinkevicius.net/?p=1109</guid>
		<description><![CDATA[Objektų žymėjimas (connected components labeling, objects labeling) yra atliekamas visus objektus vieną nuo kito išskiriant, pavyzdžiui nudažant skirtinga spalva arba priklijuojant etiketę (label). Išbandysim abu šiuos variantus. Paimkim binarinį paveiksliuką: Algoritmas (recursive labeling): skenuojamas visas paveiksliukas ieškant juodos spalvos ir jeigu tokia rasta – nuspalvosime išskirtine intensyvumo spalva (pilku atspalviu); sudaromas rasto taško kaimynų sąrašas [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Objektų žymėjimas (connected components labeling, objects labeling) yra atliekamas visus objektus vieną nuo kito išskiriant, pavyzdžiui nudažant skirtinga spalva arba priklijuojant etiketę (label). Išbandysim abu šiuos variantus.</p>
<p>Paimkim binarinį paveiksliuką:</p>
<p><a href="http://www.sinkevicius.net/wp-content/uploads/2011/09/objektai1.jpg"><img class="aligncenter size-full wp-image-1074" title="Paprasti binariniai objektai" src="http://www.sinkevicius.net/wp-content/uploads/2011/09/objektai1.jpg" alt="" width="493" height="75" /></a></p>
<p>Algoritmas (recursive labeling):</p>
<ul>
<li style="text-align: justify;">skenuojamas visas paveiksliukas ieškant juodos spalvos ir jeigu tokia rasta – nuspalvosime išskirtine intensyvumo spalva (pilku atspalviu);</li>
<li style="text-align: justify;">sudaromas rasto taško kaimynų sąrašas ir pas kiekvieną jo kaimyną apsilankoma, nudažant juos visus vienodu intensyvumu. Lankyti kaimynus galima su rekursija, tuomet visi objekto taškai bus tikrai apeiti ir pažymėti;</li>
<li>ieškomas naujas objektas.</li>
</ul>
<p>Programos kodas žemiau:</p>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">tic</span>;
<span style="color: #0000FF;">clc</span>;
<span style="color: #0000FF;">close</span> <span style="color: #0000FF;">all</span>;
file = <span style="color:#A020F0;">'D:\objektai.bmp'</span>;
rgb = <span style="color: #0000FF;">imread</span><span style="color: #080;">&#40;</span>file<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">image</span><span style="color: #080;">&#40;</span>rgb<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">global</span> <span style="color: #0000FF;">I</span>;
<span style="color: #0000FF;">I</span> = rgb2gray<span style="color: #080;">&#40;</span>rgb<span style="color: #080;">&#41;</span>;
label = <span style="color: #33f;">0</span>;
labelDelta = <span style="color: #33f;">20</span>;
<span style="color: #080;">&#91;</span>MaxRow, MaxCol<span style="color: #080;">&#93;</span> = <span style="color: #0000FF;">size</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">I</span><span style="color: #080;">&#41;</span>;
<span style="color: #228B22;">% set(0,'RecursionLimit',1500); didesniems objektams gali reikėti didinti</span>
<span style="color: #228B22;">% rekursijų kiekio limitą</span>
<span style="color: #0000FF;">for</span> L = <span style="color: #33f;">1</span> : MaxRow
    <span style="color: #0000FF;">for</span> P = <span style="color: #33f;">1</span> : MaxCol
        <span style="color: #0000FF;">if</span> <span style="color: #0000FF;">I</span><span style="color: #080;">&#40;</span>L, P<span style="color: #080;">&#41;</span> == <span style="color: #33f;">0</span> <span style="color: #228B22;">% aptiktas objektas</span>
            label = label + labelDelta; <span style="color: #228B22;">% kiekvienam objektui kitoks intensyvumas</span>
            search<span style="color: #080;">&#40;</span>label, L, P<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% nuspalvoti visus objekto pikselius vienodu intensyvumu</span>
        <span style="color: #0000FF;">end</span>;
    <span style="color: #0000FF;">end</span>;
<span style="color: #0000FF;">end</span>;
imshow<span style="color: #080;">&#40;</span><span style="color: #0000FF;">I</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">disp</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">toc</span><span style="color: #080;">&#41;</span>;</pre></td></tr></table></div></div>

<p>Rekursija apeinanti visus kaimynus:</p>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">function</span> <span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span> = search<span style="color: #080;">&#40;</span>label, L, P<span style="color: #080;">&#41;</span>
<span style="color: #0000FF;">global</span> <span style="color: #0000FF;">I</span>;
<span style="color: #0000FF;">I</span><span style="color: #080;">&#40;</span>L, P<span style="color: #080;">&#41;</span> = label; <span style="color: #228B22;">% keičiamas pikselio intensyvumas</span>
<span style="color: #080;">&#91;</span>Nset<span style="color: #080;">&#93;</span> = neighbors<span style="color: #080;">&#40;</span><span style="color: #0000FF;">I</span>, L, P<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% randami 4 pikselio kaimynai</span>
s = <span style="color: #0000FF;">size</span><span style="color: #080;">&#40;</span>Nset<span style="color: #080;">&#41;</span>;
n = s<span style="color: #080;">&#40;</span><span style="color: #33f;">3</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">for</span> <span style="color: #0000FF;"><span style="color: #33f;">i</span></span> = <span style="color: #33f;">1</span> : n <span style="color: #228B22;">% kiekvienas kaimynas tikrinamas atskirai</span>
    value = Nset<span style="color: #080;">&#40;</span>:, :, <span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>;
    <span style="color: #0000FF;">if</span> value<span style="color: #080;">&#40;</span><span style="color: #33f;">3</span><span style="color: #080;">&#41;</span> == <span style="color: #33f;">0</span>
        search<span style="color: #080;">&#40;</span>label, value<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>, value<span style="color: #080;">&#40;</span><span style="color: #33f;">2</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
    <span style="color: #0000FF;">end</span>;
<span style="color: #0000FF;">end</span>;</pre></td></tr></table></div></div>

<p>Galima rasti ir 8 ir 4 kaimynus. Šiuo atveju randami tik keturi:</p>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">function</span> <span style="color: #080;">&#91;</span>res<span style="color: #080;">&#93;</span> = neighbors<span style="color: #080;">&#40;</span><span style="color: #0000FF;">I</span>, L, P<span style="color: #080;">&#41;</span>
<span style="color: #080;">&#91;</span>MaxRow, MaxCol<span style="color: #080;">&#93;</span> = <span style="color: #0000FF;">size</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">I</span><span style="color: #080;">&#41;</span>;
res = <span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
cur = -<span style="color: #33f;">1</span>;
<span style="color: #0000FF;">if</span> L &gt; <span style="color: #33f;">1</span> <span style="color: #228B22;">% viršutinis kaimynas</span>
    cur = cur + <span style="color: #33f;">1</span>;
    res<span style="color: #080;">&#40;</span>:, :, cur + <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span> = <span style="color: #0000FF;">int16</span><span style="color: #080;">&#40;</span><span style="color: #080;">&#91;</span>L - <span style="color: #33f;">1</span> P <span style="color: #0000FF;">int16</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">I</span><span style="color: #080;">&#40;</span>L - <span style="color: #33f;">1</span>, P<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#93;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">end</span>;
<span style="color: #0000FF;">if</span> L &lt; MaxRow <span style="color: #228B22;">% apatinis kaimynas</span>
    cur = cur + <span style="color: #33f;">1</span>;
    res<span style="color: #080;">&#40;</span>:, :, cur + <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span> = <span style="color: #0000FF;">int16</span><span style="color: #080;">&#40;</span><span style="color: #080;">&#91;</span>L + <span style="color: #33f;">1</span> P <span style="color: #0000FF;">int16</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">I</span><span style="color: #080;">&#40;</span>L + <span style="color: #33f;">1</span>, P<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#93;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">end</span>;
<span style="color: #0000FF;">if</span> P &gt; <span style="color: #33f;">1</span> <span style="color: #228B22;">% kairysis kaimynas</span>
    cur = cur + <span style="color: #33f;">1</span>;
    res<span style="color: #080;">&#40;</span>:, :, cur + <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span> = <span style="color: #0000FF;">int16</span><span style="color: #080;">&#40;</span><span style="color: #080;">&#91;</span>L P - <span style="color: #33f;">1</span> <span style="color: #0000FF;">int16</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">I</span><span style="color: #080;">&#40;</span>L, P - <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#93;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">end</span>;
<span style="color: #0000FF;">if</span> P &lt; MaxCol <span style="color: #228B22;">% dešinysis kaimynas</span>
    cur = cur + <span style="color: #33f;">1</span>;
    res<span style="color: #080;">&#40;</span>:, :, cur + <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span> = <span style="color: #0000FF;">int16</span><span style="color: #080;">&#40;</span><span style="color: #080;">&#91;</span>L P + <span style="color: #33f;">1</span> <span style="color: #0000FF;">int16</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">I</span><span style="color: #080;">&#40;</span>L, P + <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#93;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">end</span>;</pre></td></tr></table></div></div>

<p style="text-align: justify;">Apdorojus pirmąjį paveiksliuką:<a href="http://www.sinkevicius.net/wp-content/uploads/2011/09/spalvoti1.jpg"><img class="aligncenter size-full wp-image-1115" title="spalvoti objektai" src="http://www.sinkevicius.net/wp-content/uploads/2011/09/spalvoti1.jpg" alt="" width="600" height="114" /></a>Algoritmas bėga per visus pikselius nuo viršaus apačion ir nuo kairės dešinėn, todėl pirmiausia aptinkamas trečias objektas ir po to visi kiti. Rezultate matosi kaip kiekvieno objekto intensyvumas skiriasi.</p>
<p style="text-align: justify;">Pabandom lygiai tą patį padaryti su paveiksliuku, kurį naudojom <a title="Objektų skaičiavimas paveiksliukuose" href="http://www.sinkevicius.net/2011/09/23/objektu-skaiciavimas-paveiksliukuose/" target="_blank">skaičiuojant objektus</a>, tik intensyvumo pokytį pakeičiam į 4, nes objektų gerokai daugiau ir reiktų, kad visi sutilptų į 255 reikšmes:</p>
<p><a href="http://www.sinkevicius.net/wp-content/uploads/2011/09/spalvotos-lasteles.jpg"><img class="aligncenter size-full wp-image-1118" title="spalvotos lasteles" src="http://www.sinkevicius.net/wp-content/uploads/2011/09/spalvotos-lasteles.jpg" alt="" width="300" height="228" /></a></p>
<p style="text-align: justify;">Labiausiai skiriasi vienas nuo kito objektai, kurie buvo pažymėti pirmiausiai ir paskiausiai. Tokį paveikslą gali būti sunku naudoti, nes nėra kaip pasakyti apie kurias ląsteles norima diskutuoti, juk nesakysi, kad „ląstelė, kurios intensyvumas 74 % &#8230;“, todėl geriausia, jei kiekvienam objektui suteiksim identifikatorius. Kodas žemiau (funkcijos nekeistos):</p>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
</pre></td><td class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">tic</span>;
<span style="color: #0000FF;">clc</span>;
<span style="color: #0000FF;">close</span> <span style="color: #0000FF;">all</span>;
file = <span style="color:#A020F0;">'D:\FROG BLOOD binary.bmp'</span>;
rgb = <span style="color: #0000FF;">imread</span><span style="color: #080;">&#40;</span>file<span style="color: #080;">&#41;</span>;
file2 = <span style="color:#A020F0;">'D:\FROG BLOOD 402 rgb.bmp'</span>;
rgb2 = <span style="color: #0000FF;">imread</span><span style="color: #080;">&#40;</span>file2<span style="color: #080;">&#41;</span>;
imshow<span style="color: #080;">&#40;</span>rgb2<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">global</span> <span style="color: #0000FF;">I</span>;
<span style="color: #0000FF;">I</span> = rgb2gray<span style="color: #080;">&#40;</span>rgb<span style="color: #080;">&#41;</span>;
label = <span style="color: #33f;">0</span>;
labelDelta = <span style="color: #33f;">4</span>;
<span style="color: #080;">&#91;</span>MaxRow, MaxCol<span style="color: #080;">&#93;</span> = <span style="color: #0000FF;">size</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">I</span><span style="color: #080;">&#41;</span>;
<span style="color: #228B22;">% set(0,'RecursionLimit',1500); didesniems objektams gali reikėti didinti</span>
<span style="color: #228B22;">% rekursijų kiekio limitą</span>
<span style="color: #0000FF;">for</span> L = <span style="color: #33f;">1</span> : MaxRow
    <span style="color: #0000FF;">for</span> P = <span style="color: #33f;">1</span> : MaxCol
        <span style="color: #0000FF;">if</span> <span style="color: #0000FF;">I</span><span style="color: #080;">&#40;</span>L, P<span style="color: #080;">&#41;</span> == <span style="color: #33f;">0</span> <span style="color: #228B22;">% aptiktas objektas</span>
            label = label + labelDelta; <span style="color: #228B22;">% kiekvienam objektui kitoks intensyvumas</span>
            search<span style="color: #080;">&#40;</span>label, L, P<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% nuspalvoti visus objekto pikselius vienodu intensyvumu</span>
            text<span style="color: #080;">&#40;</span><span style="color:#A020F0;">'units'</span>,<span style="color:#A020F0;">'pixels'</span>,<span style="color:#A020F0;">'position'</span>,<span style="color: #080;">&#91;</span>P MaxRow-L<span style="color: #080;">&#93;</span>,<span style="color:#A020F0;">'fontsize'</span>,<span style="color: #33f;">7</span>,<span style="color:#A020F0;">'string'</span>,<span style="color: #0000FF;">num2str</span><span style="color: #080;">&#40;</span>label/labelDelta<span style="color: #080;">&#41;</span>,<span style="color:#A020F0;">'BackgroundColor'</span>,<span style="color: #080;">&#91;</span><span style="color: #33f;">0.9</span> <span style="color: #33f;">0.9</span> <span style="color: #33f;">0.9</span><span style="color: #080;">&#93;</span><span style="color: #080;">&#41;</span>
        <span style="color: #0000FF;">end</span>;
    <span style="color: #0000FF;">end</span>;
<span style="color: #0000FF;">end</span>;
<span style="color: #228B22;">% imshow(I);</span>
<span style="color: #0000FF;">disp</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">toc</span><span style="color: #080;">&#41;</span>;</pre></td></tr></table></div></div>

<p>Rezultatas:</p>
<p><a href="http://www.sinkevicius.net/wp-content/uploads/2011/09/pasymetos-lasteles.jpg"><img class="aligncenter size-full wp-image-1119" title="pasymetos lasteles" src="http://www.sinkevicius.net/wp-content/uploads/2011/09/pasymetos-lasteles.jpg" alt="" width="600" height="461" /></a></p>
<p>Visi 59 objektai pažymėti.</p>
<p style="text-align: justify;">Šio algoritmo didžiausias trūkumas, kad netinka dideliems objektams, nes tada reikia didinti rekursijų kiekio limitą. O ir padidinus ne visada to pakanka, nes viršijus Matlab galimybes, jis lūžta. Tačiau šiai problemai spręsti yra ir daugiau algoritmų: &#8220;row-by-row labeling&#8221;, naudojant &#8220;union-find structure&#8221; arba &#8220;run-length encoding&#8221; ir kt.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sinkevicius.net/2011/09/29/objektu-zymejimas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Objektų skaičiavimas paveiksliukuose</title>
		<link>http://www.sinkevicius.net/2011/09/23/objektu-skaiciavimas-paveiksliukuose/</link>
		<comments>http://www.sinkevicius.net/2011/09/23/objektu-skaiciavimas-paveiksliukuose/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 21:22:14 +0000</pubDate>
		<dc:creator>TakeON</dc:creator>
				<category><![CDATA[Tyrinėjimai]]></category>
		<category><![CDATA[kaip skaičiuoti objektus paveiksliukuose]]></category>
		<category><![CDATA[kompiuterinė rega]]></category>
		<category><![CDATA[objektų skaičiavimas]]></category>

		<guid isPermaLink="false">http://www.sinkevicius.net/?p=971</guid>
		<description><![CDATA[Ką gi, šiuo įrašu startuoju naujos nišos gyvavimą. Abejoju ar tokia Lietuvoje jau yra, net netikrinau kol kas, bet bus įdomu paieškoti. Neskubėsiu klijuoti etiketės apie ką bloginsiu, tegu tai paaiškėja po truputi, su laiku. „Tyrinėjimai. Kūryba. Eksperimentai.“ yra labai taiklus apibūdinimas, tegu taip ir lieka. Išbandysime vieną labai paprastą idėją, kurios pagalba galima skaičiuoti [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Ką gi, šiuo įrašu startuoju naujos nišos gyvavimą. Abejoju ar tokia Lietuvoje jau yra, net netikrinau kol kas, bet bus įdomu paieškoti. Neskubėsiu klijuoti etiketės apie ką bloginsiu, tegu tai paaiškėja po truputi, su laiku. „Tyrinėjimai. Kūryba. Eksperimentai.“ yra labai taiklus apibūdinimas, tegu taip ir lieka.</p>
<p style="text-align: justify;">Išbandysime vieną labai paprastą idėją, kurios pagalba galima skaičiuoti objektus paveiksliukuose (objects counting in binary pictures). Paimkime binarinį paveiksliuką, kuriame yra 7 objektai.</p>
<p style="text-align: justify;"><a href="http://www.sinkevicius.net/wp-content/uploads/2011/09/objektai1.jpg"><img class="aligncenter size-full wp-image-1074" title="Paprasti binariniai objektai" src="http://www.sinkevicius.net/wp-content/uploads/2011/09/objektai1.jpg" alt="" width="493" height="75" /></a></p>
<p style="text-align: justify;">Vaizdas gerokai išdidintas, kad bloge objektai matytųsi aiškiai, kiekvienas objekto pikselis matomas kaip maždaug 14&#215;14 pikselių dydžio juoda sritis. Kaip šiuos juodus objektus suskaičiuoti programiškai? Galime pasitelkti vieną įdomią savybę, kad skirtumas tarp išorinių objekto kampų ir vidinių visada yra 4. Kad būtų lengviau įsivaizduoti, nuspalvokime objektus pilkai iš pažymėkime išorinius kampus raudonai, o vidinius mėlynai.</p>
<p style="text-align: justify;"><a href="http://www.sinkevicius.net/wp-content/uploads/2011/09/objektai2.jpg"><img class="aligncenter size-full wp-image-1075" title="Išoriniai ir vidiniai kampai" src="http://www.sinkevicius.net/wp-content/uploads/2011/09/objektai2.jpg" alt="" width="493" height="75" /></a></p>
<p style="text-align: justify;">Pavyzdžiui pirmas objektas turi keturis išorinius kampus ir nulį vidinių. Antras objektas 8 išorinius ir 4 vidinius. Trečias objektas 9 išorinius ir 5 vidinius. Vizualiai išorinis kampas matomas kaip juodas (šiuo atveju pilkas), o vidinis kaip baltas. Tuomet suskaičiavus visus paveiksliuke esančius išorinius kampus ir vidinius, o jų skirtumą padalinus iš 4, turėtume gauti objektų skaičių. Konkrečiai šiame paveiksliuke būtų (39-11)/4=28/4=7. Iš viso septyni objektai.</p>
<p style="text-align: justify;">Algoritmas gana paprastas. Pradžioje paveiksliukas paverčiamas į binarinį, kad būtų tik dvi intensyvumo reikšmės, arba 0 (juoda) arba 1 (balta). Tada pereinami visi taškai paeiliui tikrinant kokia kiekvieno taško srityje yra 2&#215;2 matrica. Jei tarkim [0 1;1 1], [1 0; 1 1], [1 1; 0 1] arba [1 1; 1 0] (visais atvejais elementų suma yra 3), tuomet tai yra išorinis kampas. Jei [1 0; 0 0], [0 1; 0 0], [0 0; 1 0] arba [0 0; 0 1] (visais atvejais elementų suma 1), tuomet tai yra vidinis kampas.</p>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">clc</span>;
<span style="color: #0000FF;">close</span> <span style="color: #0000FF;">all</span>;
file = <span style="color:#A020F0;">'D:\holes.bmp'</span>;
rgb = <span style="color: #0000FF;">imread</span><span style="color: #080;">&#40;</span>file<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">image</span><span style="color: #080;">&#40;</span>rgb<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% patikriname kaip atrodo pradinis vaizdas</span>
BW = im2bw<span style="color: #080;">&#40;</span>rgb, <span style="color: #33f;">0</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% domina binarinis vaizdas</span>
<span style="color: #080;">&#91;</span>objects, E, <span style="color: #0000FF;">I</span><span style="color: #080;">&#93;</span> = count_objects<span style="color: #080;">&#40;</span>BW<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">fprintf</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Iš viso objektų: %d, E: %d, I: %d\n'</span>, objects, E, <span style="color: #0000FF;">I</span><span style="color: #080;">&#41;</span>;</pre></td></tr></table></div></div>

<p>Objektų skaičiavimo funkcija:</p>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">function</span> <span style="color: #080;">&#91;</span>result, E, <span style="color: #0000FF;">I</span><span style="color: #080;">&#93;</span> = count_objects<span style="color: #080;">&#40;</span>BW<span style="color: #080;">&#41;</span>
<span style="color: #080;">&#91;</span>MaxRow, MaxCol<span style="color: #080;">&#93;</span> = <span style="color: #0000FF;">size</span><span style="color: #080;">&#40;</span>BW<span style="color: #080;">&#41;</span>;
E = <span style="color: #33f;">0</span>; <span style="color: #228B22;">% išoriniai kampai</span>
<span style="color: #0000FF;">I</span> = <span style="color: #33f;">0</span>; <span style="color: #228B22;">% vidiniai kampai</span>
<span style="color: #0000FF;">for</span> L = <span style="color: #33f;">1</span> : MaxRow - <span style="color: #33f;">1</span>
  <span style="color: #0000FF;">for</span> P = <span style="color: #33f;">1</span> : MaxCol - <span style="color: #33f;">1</span>
    M = BW<span style="color: #080;">&#40;</span>L : L + <span style="color: #33f;">1</span>, P : P + <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>;
    S = <span style="color: #0000FF;">sum</span><span style="color: #080;">&#40;</span>M<span style="color: #080;">&#40;</span>:<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
    <span style="color: #0000FF;">if</span> S == <span style="color: #33f;">3</span>
      E = E + <span style="color: #33f;">1</span>;
    <span style="color: #0000FF;">end</span>;
    <span style="color: #0000FF;">if</span> S == <span style="color: #33f;">1</span>
      <span style="color: #0000FF;">I</span> = <span style="color: #0000FF;">I</span> + <span style="color: #33f;">1</span>;
    <span style="color: #0000FF;">end</span>;
  <span style="color: #0000FF;">end</span>;
<span style="color: #0000FF;">end</span>;
result = <span style="color: #080;">&#40;</span>E - <span style="color: #0000FF;">I</span><span style="color: #080;">&#41;</span> / <span style="color: #33f;">4</span>;</pre></td></tr></table></div></div>

<p>Paimkime vizualiai gerokai sudėtingesnius atvejus:</p>
<p style="text-align: justify;"><a href="http://www.sinkevicius.net/wp-content/uploads/2011/09/objektai3.jpg"><img class="aligncenter size-full wp-image-1077" title="Sudėtingesni binariniai objektai" src="http://www.sinkevicius.net/wp-content/uploads/2011/09/objektai3.jpg" alt="" width="600" height="100" /></a></p>
<p style="text-align: justify;">Programa gauna 9 objektus. Tiek jų ir yra. Nors objektai yra sudėtingi, bet mažai siejasi su realiu gyvenimu, todėl pabandykime paimti ką nors tikro, pavyzdžiui štai tokį vaizdą:</p>
<p style="text-align: justify;"><a href="http://www.sinkevicius.net/wp-content/uploads/2011/09/frog-blood.jpg"><img class="aligncenter size-full wp-image-1081" title="Frog blood" src="http://www.sinkevicius.net/wp-content/uploads/2011/09/frog-blood.jpg" alt="" width="300" height="226" /></a></p>
<p style="text-align: justify;">Vaizdas yra spalvotas ir iš realaus gyvenimo. Kaip suskaičiuoti šiuos objektus? Lygiai taip pat, tik pradžiai padidiname šviesumą ir ryškumą, kad atmesti šviesesnes sritis ir konvertuojame į binarinį paveiksliuką:</p>
<p><a href="http://www.sinkevicius.net/wp-content/uploads/2011/09/frog-blood-binary.jpg"><img class="aligncenter size-full wp-image-1082" title="Frog blood binary" src="http://www.sinkevicius.net/wp-content/uploads/2011/09/frog-blood-binary.jpg" alt="" width="300" height="226" /></a></p>
<p>Kodas keičiasi nežymiai:</p>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">clc</span>;
<span style="color: #0000FF;">close</span> <span style="color: #0000FF;">all</span>;
file = <span style="color:#A020F0;">'D:\FROG BLOOD 402.jpg'</span>;
rgb = <span style="color: #0000FF;">imread</span><span style="color: #080;">&#40;</span>file<span style="color: #080;">&#41;</span>;
rgb = imadjust<span style="color: #080;">&#40;</span>rgb, <span style="color: #080;">&#91;</span><span style="color: #33f;">0</span> <span style="color: #33f;">0.4</span><span style="color: #080;">&#93;</span>, <span style="color: #080;">&#91;</span><span style="color: #33f;">0.6</span> <span style="color: #33f;">1</span><span style="color: #080;">&#93;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">image</span><span style="color: #080;">&#40;</span>rgb<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% patikriname kaip atrodo pradinis vaizdas</span>
BW = im2bw<span style="color: #080;">&#40;</span>rgb, <span style="color: #33f;">0.9</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% domina binarinis vaizdas</span>
<span style="color: #080;">&#91;</span>m, n<span style="color: #080;">&#93;</span> = <span style="color: #0000FF;">size</span><span style="color: #080;">&#40;</span>BW<span style="color: #080;">&#41;</span>;
N = <span style="color: #0000FF;">ones</span><span style="color: #080;">&#40;</span>m + <span style="color: #33f;">2</span>, n + <span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>;
N<span style="color: #080;">&#40;</span><span style="color: #33f;">2</span> : m + <span style="color: #33f;">1</span>, <span style="color: #33f;">2</span> : n + <span style="color: #33f;">1</span><span style="color: #080;">&#41;</span> = BW;
imshow<span style="color: #080;">&#40;</span>N<span style="color: #080;">&#41;</span>;
<span style="color: #080;">&#91;</span>objects, E, <span style="color: #0000FF;">I</span><span style="color: #080;">&#93;</span> = count_objects<span style="color: #080;">&#40;</span>N<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">fprintf</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Iš viso objektų: %d, E: %d, I: %d\n'</span>, objects, E, <span style="color: #0000FF;">I</span><span style="color: #080;">&#41;</span>;</pre></td></tr></table></div></div>

<p style="text-align: justify;">O rezultatas yra: „Iš viso objektų: 59, E: 1287, I: 1051“. Viso 59 objektai, jų skaičiuoti rankomis jau visai nesinorėtų.</p>
<p style="text-align: justify;">Tiesa, algoritmas neveiks tais atvejais, jei skaičiuojamuose objektuose yra fono spalvos arba objektas nėra apsuptas fono spalva (dėl to paskutinis paveiksliukas padidintas į visas puses per vieną pikselį taip išplečiant baltą foną), todėl algoritmas netobulas, tačiau labai paprastas ir įdomus.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sinkevicius.net/2011/09/23/objektu-skaiciavimas-paveiksliukuose/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Kaip mokytis kalbų? III dalis. Subtitrų išvalymo skriptas</title>
		<link>http://www.sinkevicius.net/2011/09/19/kaip-mokytis-kalbu-iii-dalis-subtitru-isvalymo-skriptas/</link>
		<comments>http://www.sinkevicius.net/2011/09/19/kaip-mokytis-kalbu-iii-dalis-subtitru-isvalymo-skriptas/#comments</comments>
		<pubDate>Mon, 19 Sep 2011 16:05:59 +0000</pubDate>
		<dc:creator>TakeON</dc:creator>
				<category><![CDATA[Kūryba]]></category>
		<category><![CDATA[kalbų mokymąsis]]></category>
		<category><![CDATA[LingQ]]></category>
		<category><![CDATA[subtitrai]]></category>
		<category><![CDATA[subtitrų išvalymas]]></category>

		<guid isPermaLink="false">http://www.sinkevicius.net/?p=975</guid>
		<description><![CDATA[Šis įrašas yra atsakymas į Gintaro klausimą: kur rasti subtitrų išvalymo skriptą? Ir atsakymas toks: šiame įraše! Bet pradžiai kelios mintys kam gi tas skriptas reikalingas&#8230; Vienas iš geriausių kalbos mokymosi priemonių yra serialų žiūrėjimas ir klausimas (filmai irgi neblogai). Esu tikras, kad kiekvienas gali atrasti sau tinkamą serialą. O kai atrandi, turi net kelis [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://www.sinkevicius.net/wp-content/uploads/2011/09/friends.jpg"><img class="aligncenter size-full wp-image-1050" title="friends" src="http://www.sinkevicius.net/wp-content/uploads/2011/09/friends.jpg" alt="" width="600" height="253" /></a></p>
<p style="text-align: justify;">Šis įrašas yra atsakymas į <a href="http://www.sinkevicius.net/2011/02/07/kaip-mokytis-kalbu-ii-dalis-metai-naujos-patirties/#comment-133" target="_blank">Gintaro klausimą</a>: kur rasti subtitrų išvalymo skriptą? Ir atsakymas toks: šiame įraše!</p>
<p style="text-align: justify;">Bet pradžiai kelios mintys kam gi tas skriptas reikalingas&#8230; Vienas iš geriausių kalbos mokymosi priemonių yra serialų žiūrėjimas ir klausimas (filmai irgi neblogai). Esu tikras, kad kiekvienas gali atrasti sau tinkamą serialą. O kai atrandi, turi net kelis sezonus puikaus turinio klausymui. Tačiau vien klausimo nepakanka, reiktų galimybės peržiūrėti ką aktoriai kalba ir tam puikiausiai tinka <a href="http://www.addic7ed.com/" target="_blank">subtitrai</a>. Problema atsiranda tada, kai norisi subtitrus importuoti į <a href="http://www.lingq.com/?referral=TakeON">LingQ</a> sistemą ir juose labai daug &#8220;šiukšlių&#8221;, rankomis valyti nepatogu, užima daug laiko. Būtent čia skriptas ir naudingas, jis išvalo subtitrus nuo &#8220;šiukšlių&#8221;, pavyzdžiui tokių: &#8220;00:00:04,612 &#8211;&gt; 00:00:05,727&#8243;.</p>
<p style="text-align: justify;">Žemiau yra veikiantis išvalymo skriptas. Paprasčiausiai nukopijuokit subtitrų tekstą iš parsisiųsto SRT failo į pirmąjį lauką ir paspauskit &#8220;Išvalyti&#8221; mygtuką. Antrame lauke turėtų atsirasti švarus tekstas, kurį jau galima importuoti.</p>
 
<form method="POST" action="#subtitles">
<p><b><a name="subtitles">Subtitrai:</a></b><br>
<textarea name="text" rows="7" cols="60"></textarea></p>
<p><b>Švarus tekstas:</b><br>
<textarea rows="7" cols="60"></textarea></p>
<input type="submit" value="Išvalyti">
</form>
<br>

<p style="text-align: justify;">Skriptas labai paprastas, tereikia surasti ir atmesti nereikalingas eilutes. Jei turit poreikį modifikuoti, kodas žemiau.</p>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'text'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
  <span style="color: #000088;">$text</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'text'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">else</span>
  <span style="color: #000088;">$text</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$text</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strip_tags</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$text</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$records</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$text</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$records</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$record</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$lines</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$record</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$lines</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$lines</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$record</span> <span style="color: #339933;">=</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$lines</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$record</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div></div>

<p style="text-align: justify;">Kiek tikrinau, turėtų veikti. Bet jei iškils kokių problemų, duokit žinot komentaruose.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sinkevicius.net/2011/09/19/kaip-mokytis-kalbu-iii-dalis-subtitru-isvalymo-skriptas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Blogo likimas</title>
		<link>http://www.sinkevicius.net/2011/09/18/blogo-likimas/</link>
		<comments>http://www.sinkevicius.net/2011/09/18/blogo-likimas/#comments</comments>
		<pubDate>Sun, 18 Sep 2011 13:42:42 +0000</pubDate>
		<dc:creator>TakeON</dc:creator>
				<category><![CDATA[Kūryba]]></category>
		<category><![CDATA[niša]]></category>
		<category><![CDATA[nišinis blogas]]></category>

		<guid isPermaLink="false">http://www.sinkevicius.net/?p=976</guid>
		<description><![CDATA[Noriu padėkoti visiems, kurie prenumeravo šį blogą, komentavo, dalinosi savo patyrimais ir emocijom. Ypatingai žaviuosi tais, kurie pritaikė pateiktas idėjas pagerindami savo ir aplinkinių gyvenimus, pasidalino rezultatais. Ačiū jums! Malonu žinoti, kad yra bendraminčių. Daugiausiai populiarumo susilaukė įrašas apie tai, kaip laimėti kovą su tarakonais. Tikrai nesitikėjau, kad ši problema tokia svarbi ir sudarys liūto [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://www.sinkevicius.net/wp-content/uploads/2011/09/blogas.jpg"><img class="size-full wp-image-977 aligncenter" title="blogas" src="http://www.sinkevicius.net/wp-content/uploads/2011/09/blogas.jpg" alt="" width="600" height="250" /></a></p>
<p style="text-align: justify;">Noriu padėkoti visiems, kurie prenumeravo šį blogą, komentavo, dalinosi savo patyrimais ir emocijom. Ypatingai žaviuosi tais, kurie pritaikė pateiktas idėjas pagerindami savo ir aplinkinių gyvenimus, pasidalino rezultatais. Ačiū jums! Malonu žinoti, kad yra bendraminčių.</p>
<p style="text-align: justify;">Daugiausiai populiarumo susilaukė įrašas apie tai, kaip laimėti kovą su tarakonais. Tikrai nesitikėjau, kad ši problema tokia svarbi ir sudarys liūto dalį viso srauto.</p>
<p style="text-align: justify;">Ir dabar jau tikriausiai tikitės atsisveikinimo žodžio, gerų palinkėjimų ir blogo uždarymo. Ne, to nebus! Man prasideda įdomus ir naujas gyvenimo periodas, kuriame ketinu atrasti vietos bloginimui. Tačiau blogas jau nebus toks pat kaip buvo.</p>
<p style="text-align: justify;">Dalį įrašų pašalinsiu, o kai kuriuos plėtosiu ir toliau. Jei jus domina GTD, kalbų mokymasis, saviugdos temos, tai esu tikras, kad tokio pobūdžio įrašų dar bus. Gal net dažniau nei, kad būdavo. Turiu naują gyvenimo normą, kad kiekvienais metais, vieną pasirinktą gyvenimo sritelę patobulinti iš esmės, negrįžtamai ją pakeisti į gerąją pusę, kad paprasčiausiai neliktų kelio atgal. Pirma sėkmė buvo su anglų kalba, antroji su GTD. Šiais metais ir vėl radau labai įdomią sistemą, kuri jau pasiteisino, bet apie ją galbūt vėliau. Todėl įvairių įspūdžių tikrai dar bus, tik pernelyg asmeninių temų jau neliesiu, paliksiu jas žmonėms su kuriais bendrauju artimiau.</p>
<p style="text-align: justify;">Nuo šiol blogas bus nišinis. Turiu mane intriguojančią viziją ir bandysiu ją paversti tikrove. Rizikuosiu ir pažiūrėsim kas iš to išeis.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sinkevicius.net/2011/09/18/blogo-likimas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

