1 · Tieteellinen tausta
Mitä vuosirenkaat ovat
Puun runko kasvaa joka kasvukausi yhden uuden solukerroksen verran jällen (kambiumin) tuottamana. Keväällä syntyy vaaleaa, harvaa kevätpuuta ja loppukesästä tiheämpää, tummempaa kesäpuuta. Yksi vuosirengas = yksi kevätpuu–kesäpuu-pari, eli yksi kasvuvuosi. Renkaiden lukumäärä ytimestä kuoreen vastaa siten puun ikää vuosina.
Poikkileikkauksessa tämä näkyy vuorottelevana vaalea–tumma-kuviona: kesäpuun tumma raja erottuu radiaalisesti toistuvana intensiteetin laskuna. Tämä on koko laskennan fysikaalinen perusta — sovellus etsii nimenomaan näitä tummia kesäpuurajoja.
Renkaan leveys kertoo kasvuoloista
Renkaan leveys vaihtelee vuosittain kasvuolojen mukaan. Tämä on dendrokronologian ydinajatus: leveä rengas tarkoittaa hyvää kasvuvuotta, kapea rengas stressivuotta. Ratkaisevaa Suomen oloissa on kasvupaikan sijainti:
- Pohjois-Suomessa ja tunturirajalla kasvua rajoittaa lämpötila. Lämmin kesä = leveä rengas.
- Keski- ja Etelä-Suomen matalilla kasvupaikoilla kasvua rajoittaa useammin kosteus. Lämmin ja kuiva kesä aiheuttaa kuivuusstressiä, joka kaventaa rengasta.
Sovellus on viritetty Keski-Suomen näkökulmaan: se tulkitsee poikkeuksellisen kapeat renkaat todennäköisinä kuivuus- tai stressivuosina ja vertaa niitä Suomen tunnettuihin kuiviin ja kuumiin kesiin. Tämä on tietoinen rajaus, ei yleispätevä sääntö.
Miksi tämä on arvio eikä ajoitus
Oikea dendrokronologinen ajoitus (crossdating, ristiinajoitus) perustuu siihen, että saman alueen puiden leveysvaihtelu korreloi keskenään, ja mittausta verrataan alueelliseen referenssikalenteriin tilastollisesti. Pelkkä renkaiden laskeminen yhdestä näytteestä ei takaa, että jokainen rengas saa oikean kalenterivuoden.
2 · Matemaattinen menetelmä
Laskenta etenee neljässä vaiheessa: ytimen ja reunan paikannus, radiaalinen näytteenotto, renkaiden tunnistus signaalista, ja monen suunnan yhdistäminen luotettavaksi lukemaksi.
2.1 Kuvan esikäsittely
Värikuva muunnetaan harmaasävyksi luminanssipainoilla (standardi Rec. 601):
L = 0.299·R + 0.587·G + 0.114·B
Kesäpuun tummuus näkyy luminanssin laskuna riippumatta puun sävystä. Koko kuva puretaan harmaasävypuskuriin kerran latauksen yhteydessä — keskeinen suorituskykyratkaisu (ks. luku 3).
2.2 Radiaalinen intensiteettiprofiili
Kun ydin ja reunapiste on annettu, sovellus ottaa näytteitä suoraa pitkin ytimestä ulospäin:
x(r) = x₀ + r·cos(θ) y(r) = y₀ + r·sin(θ)
Tuloksena on 1-ulotteinen profiili, jossa jokainen tumma kesäpuuraja näkyy paikallisena minimiarvona. Ytimen lähin ~6 % säteestä jätetään pois, koska aivan ytimen ympärillä renkaat ovat epäselviä.
2.3 Trendin poisto (detrending)
Raaka profiili sisältää hitaan yleistrendin (valaistus, sävyn muutos) ja nopean rengasvaihtelun. Vain jälkimmäinen kiinnostaa. Trendi poistetaan vähentämällä liukuva keskiarvo:
profiili_tasoitettu = liukuva_keskiarvo(profiili, ikkuna = 5 px) perustaso = liukuva_keskiarvo(profiili_tasoitettu, ikkuna = 41 px) detrend = profiili_tasoitettu − perustaso
Lyhyt tasoitus poistaa kohinaa; pitkä arvioi paikallisen perustason. Erotus jättää jäljelle puhtaan rengassignaalin nollan ympärille.
2.4 Renkaiden tunnistus huippuina
Tummat renkaat ovat detrend-signaalin minimejä, eli −detrend-signaalin maksimeja. Huippu hyväksytään renkaaksi, jos:
- se on aito paikallinen maksimi (suurempi kuin naapurit molemmin puolin),
- sen prominenssi (korkeus suhteessa ympäröiviin laaksoihin) ylittää herkkyyskynnyksen, ja
- se on vähintään 8 pikselin päässä edellisestä renkaasta (estää kaksoislaskennan).
Prominenssi mittaa, kuinka selvästi huippu erottuu taustasta, ei pelkkää korkeutta. Termi on lainattu topografiasta (prominenssi); sama määritelmä on signaalinkäsittelyssä (esim. SciPyn find_peaks). Herkkyysliuku säätää suoraan prominenssikynnystä — pienempi arvo löytää enemmän renkaita. Oletus on 2.
2.5 Monen suunnan yhdistäminen ja "paras viiva"
Yksittäinen säde voi osua lahokohtaan, halkeamaan tai oksaan. Siksi sovellus skannaa 21 suuntaa, ±30° viuhkana 3° välein. Kullekin suunnalle lasketaan rengasmäärä ja laatupistemäärä:
laatu = keskim. prominenssi × 1 / (1 + rengasvälien variaatiokerroin)
Suunta saa korkean pisteen, jos sen renkaat ovat sekä selkeitä että tasavälisiä (variaatiokerroin on mittakaavasta riippumaton). Lopullinen lukema valitaan näin:
- Lasketaan kaikkien suuntien rengasmäärien mediaani.
- Valitaan suunnat, joiden rengasmäärä on enintään 2 mediaanin päässä.
- Näistä valitaan laadukkain suunta lopulliseksi mittaviivaksi.
Näin yhdistyvät robusti enemmistöpäätös (mediaani) ja paras yksittäinen signaali (laatu).
2.6 Iästä kalenterivuosiin
Rengasmäärä n on puun ikä. Annetusta kaatovuodesta lasketaan itämisvuosi ≈ kaatovuosi − n. Peräkkäisten renkaiden säde-erot antavat rengasleveydet, joista rakennetaan vuosittainen aikajana. Poikkeuksellisen kapeat vuodet (leveys alle keskiarvo − 0,6 × keskihajonta) merkitään stressivuosiksi ja verrataan Suomen sääkalenteriin ±1 vuoden ikkunalla.
3 · Ohjelmistotekniset ratkaisut
3.1 Kaikki selaimessa, ilman palvelinta
Koko laskenta tapahtuu selaimessa puhtaalla JavaScriptillä. Kuvaa ei lähetetä mihinkään. Valinta tehtiin kolmesta syystä: yksityisyys (kuvat pysyvät laitteella), julkaisun yksinkertaisuus (staattinen sivu) ja kustannukset (ei palvelinkuluja).
3.2 Suorituskyky: pikselien purku kerran
Varhainen versio purki koko kuvan pikselidatan joka kerta säteen näytteenotossa. 21 suunnan skannaus suurella kuvalla (esim. 4624×3472 px) tarkoitti yli 1,3 gigatavun purkamista yhdellä painalluksella — käyttöliittymä jäätyi. Ratkaisu: kuva puretaan kertaalleen harmaasävypuskuriin (Float32Array), ja kaikki näytteenotto lukee siitä. Työmäärä putosi ~1349 MB:stä 64 MB:hen. Raskas laskenta ajetaan latausindikaattorin takaa (kaksi requestAnimationFrame-kehystä), jotta selain ehtii piirtää tilan.
3.3 Vuorovaikutus: zoom, panorointi ja kiikaritähtäin
Pienelle pisteelle osuminen sormella on mobiilissa epätarkkaa. Siksi käytössä on kiikaritähtäin-malli: tähtäin pysyy ruudun keskellä, ja käyttäjä liikuttaa ja zoomaa kuvaa sen alla, kunnes tähtäin osuu kohtaan. Pisteet tallennetaan kuvakoordinaateissa, joten ne pysyvät paikallaan zoomatessa ja panoroidessa.
4 · Vertaillut ratkaisut
4.1 Renkaiden laskenta: signaalipohjainen menetelmä
Renkaat lasketaan signaalipohjaisesti (radiaaliprofiili + prominenssi, ks. luku 2). Menetelmä valittiin, koska se on läpinäkyvä (jokainen vaihe on tarkasteltavissa), säädettävä (herkkyysliuku vaikuttaa suoraan kynnykseen) ja kevyt (toimii selaimessa ilman malleja tai riippuvuuksia).
4.2 Ytimen automaattinen tunnistus: massakeskipiste vs. etäisyysmuunnos
Ensimmäinen tunnistus käytti puualueen massakeskipistettä, mutta se hyppäsi sivuun epäsäännöllisillä kannoilla. Ratkaisuksi vaihdettiin etäisyysmuunnoksen maksimi — puualueen sisään mahtuvan suurimman ympyrän keskus — joka ei reagoi muodon epäsymmetriaan. Toteutus on kevyt kaksivaiheinen chamfer-algoritmi. Puualue segmentoidaan HSV-väriavaruudessa, siivotaan morfologisilla operaatioilla ja valitaan suurin yhtenäinen alue.
4.3 Reunan tunnistus
Reuna haetaan kävelemällä ytimestä ulospäin neljään suuntaan puualueen rajalle ja ottamalla säteiden mediaani — kestää yksittäisen ulokkeeseen tai lahokohtaan osuvan suunnan paremmin kuin keskiarvo.
4.4 Tiedostomuoto ja julkaisu
Sovellus on toteutettu erillisinä HTML-, CSS- ja JS-tiedostoina selkeyden ja ylläpidettävyyden vuoksi, ja se sopii suoraan staattiseen julkaisuun ilman käännösvaihetta.
5 · Tunnetut rajoitukset
- Yksi kuva, yksi näkökulma. Ilman alueellista referenssikalenteria ajoitus voi heittää useita vuosia.
- Kuvan laatu ratkaisee. Vino kuvakulma, varjot ja heijastukset heikentävät rengassignaalia. Paras tulos: suoraan ylhäältä, tasaisesti valaistuna.
- Lahokohdat ja halkeamat katkaisevat renkaita ja voivat aiheuttaa yli- tai aliarviointia.
- Ulommat renkaat ovat usein hyvin tiheässä; jos ne sulautuvat yhteen, ikä aliarvioituu. Herkkyyden pienentäminen voi auttaa.
- Ilmastovertailu on havainnollistava. ±1 vuoden osumaikkuna tarttuu myös sattumaan, ja kapea rengas voi johtua paikallisista syistä yhtä hyvin kuin säästä.
6 · Lähteet ja standardit
Tieteellinen tausta
- Vuosirengasajoitus (dendrokronologia)
- Dendrochronology (ml. crossdating)
- Dendroclimatology
- Kevät- ja kesäpuu (earlywood/latewood)
- The Basic Principle of Dendrochronology, University of Arizona LTRR
Kuvankäsittely ja matematiikka
- Rec. 601 (luminanssikertoimet) · Luma (video)
- Liukuva keskiarvo · Topografinen prominenssi
- SciPy
peak_prominences· Variaatiokerroin - Etäisyysmuunnos · HSL ja HSV · Morfologia
- Yhtenäisten komponenttien etsintä
Lähteet on tarkistettu kesäkuussa 2026.
7 · Yhteenveto laskennan kulusta
- Kuva harmaasävyksi, pikselit puskuriin (kerran).
- Käyttäjä (tai automaatti) asettaa ytimen ja reunan.
- 21 sädettä ytimestä reunaan, kullekin intensiteettiprofiili.
- Profiilista trendi pois → renkaat tunnistetaan prominenssihuippuina.
- Suunnista valitaan mediaanin lähellä oleva laadukkain "paras viiva".
- Rengasmäärä = ikä; säde-erot = vuosittaiset leveydet.
- Kapeat vuodet verrataan Suomen sääkalenteriin → ilmastotulkinta ja aikajana.