“IMINT Engine fungerar som en lättillgänglig ingång och ett värdefullt stöd för många inom miljöövervakning – även för den som inte är specialist eller ännu inte helt har definierat sitt behov. Genom att utgå från välkända geografiska områden, som den egna kommunen, och olika verksamhetsfält som marin miljö eller jordbruk, kan användaren enkelt navigera till relevanta delar av plattformen. Där går det att identifiera mönster och insikter som svarar mot det egna behovet.
IMINT Engine är baserad på data från Digital Earth Sweden, vilket säkerställer tillgång till aktuell och tillförlitlig miljöinformation. Genom att samla och visualisera denna data på ett överskådligt sätt blir plattformen inte bara en informationskälla, utan också ett verktyg som vägleder användaren i att förstå, formulera och besvara sina frågor.”
— Ian Brown, Docent i jordobservation, Institutionen för naturgeografi, Stockholms universitet
Showcase — Brand (2018-07-24) · Marin (2025-07-10 / 2025-07-19; radar 2025-07-19 / 2026-06-28) · Betesmark (2025-06-14) · Kust (Kustlinje + Vegetationskant)
Sentinel-2 är en satellitkonstellation från Europeiska rymdorganisationen (ESA), del av Copernicus-programmet. Satelliterna kretsar i en solsynkron bana på 786 km höjd och avbildar hela jorden var femte dag med en upplösning på 10 meter per pixel för de synliga banden. RGB-bilden visar området som det ser ut för ögat, med band 4 (rött), band 3 (grönt) och band 2 (blått). I kustmiljön syns land, öar, holmar och öppet vatten — och vid god sikt kan enskilda båtar och deras kölvatten urskiljas i bilden.
Källa: ESA Sentinel-2
Båtdetekteringen använder YOLO11s (You Only Look Once, version 11 small), en modern AI-modell för objektdetektering i realtid. YOLO-arkitekturen bygger på ett djupt konvolutionellt neuralt nätverk (CNN) som analyserar hela bilden i ett enda steg — till skillnad från äldre metoder som först föreslår kandidatområden och sedan klassificerar dem separat. Modellen har tränats på satellitbilder av båtar och delar in bilden i ett rutnät där varje cell förutsäger bounding boxes (rektanglar) och sannolikheter för att en båt finns. Överlappande detektioner filtreras med Non-Maximum Suppression (NMS). En NMD-baserad landmask säkerställer att enbart detektioner på vatten behålls, vilket eliminerar falsklarm på land. Varje detekterad båt markeras med en cyan-färgad ruta i bilden.
Källa: Mäyrä, J. et al., 2025. "Mapping recreational marine traffic from Sentinel-2 imagery using YOLO object detection models." Remote Sensing of Environment, 326, 114791. DOI; Jocher, G. et al., 2024. "Ultralytics YOLO11." docs.ultralytics.com; Redmon, J. et al., 2016. "You Only Look Once: Unified, Real-Time Object Detection." CVPR 2016.
Heatmap-analysen aggregerar båtdetektioner från flera satellitöverfarter under en tidsperiod till en enda värmekarta som visar var båtar förekommer oftast. För varje molnfritt tillfälle körs YOLO-detektorn och resultaten ackumuleras i ett rutnät där varje cells intensitet ökar för varje detekterad båt. Områden med återkommande trafik — som farleder, hamninlopp och ankringsplatser — får höga värden (röda), medan enstaka passeringar ger lägre intensitet (gult). Bilder med för hög molntäckning filtreras automatiskt bort genom COT-analys för att undvika falsklarm. Resultatet ger en överblick av det maritima rörelsemönstret som enstaka ögonblicksbilder inte kan visa.
NMD (Nationellt Marktäckedata) är Sveriges rikstäckande kartläggning av marktäcke och markanvändning, producerad av Naturvårdsverket. Datat har 10 meters upplösning och klassificerar marken i över 25 kategorier — från tallskog och granskog till åkermark, bebyggelse och vatten. I den marina analysen fyller NMD en dubbel funktion: dels som bakgrundsinformation som visar vilka landtyper som finns längs kusten, dels som landmask för båtdetekteringen. Genom att identifiera vilka pixlar som är land respektive vatten kan analyskedjan filtrera bort falsklarm på land och begränsa detektionerna till sjö- och havsområden.
Källa: Naturvårdsverket, "Nationellt Marktäckedata (NMD)." naturvardsverket.se
NDVI (Normalized Difference Vegetation Index) är det mest använda vegetationsindexet inom fjärranalys. Det beräknas som (NIR − Röd) / (NIR + Röd) där NIR är det nära infraröda bandet (B08) och Röd är det synliga röda bandet (B04). Frisk vegetation reflekterar starkt i NIR och absorberar rött ljus, vilket ger höga NDVI-värden (0.3–0.9). Vatten och bar mark ger värden nära eller under noll. I kustanalysen används NDVI för att skilja vegetationsklädda öar och strandremsor från kala klippor, vatten och bebyggelse — och för att bedöma kustvegetationens hälsotillstånd.
Källa: Rouse et al., 1974. "Monitoring vegetation systems in the Great Plains with ERTS." Third Earth Resources Technology Satellite-1 Symposium, NASA SP-351.
NDWI (Normalized Difference Water Index) mäter förekomsten av vatten och fuktighet i landskapet. Det beräknas som (Grön − NIR) / (Grön + NIR) med band B03 och B08. Positiva värden (blått på kartan) indikerar öppet vatten, medan negativa värden visar torr mark. I den marina analysen ger NDWI en tydlig bild av gränsen mellan land och vatten samt hjälper till att identifiera grunda vattenområden, inlopp och vikar. Indexet kompletterar NMD-landmasken genom att visa vattenytor med högre detaljeringsgrad.
Källa: McFeeters, S.K., 1996. "The use of the Normalized Difference Water Index (NDWI) in the delineation of open water features." Int. J. Remote Sensing, 17(7).
COT (Cloud Optical Thickness) anger hur optiskt tjockt molntäcket är över analysområdet. Värden nära noll (ljusgult) innebär klar himmel och tillförlitliga satellitdata, medan högre värden (orange till rött) visar molniga områden där underliggande mark eller hav inte kan ses. Modellen är en ensemble av fem MLP5-nätverk (fem lager djupa neurala nät) som tränats på syntetiska molndata från SMHI. Varje nätverk tar emot 11 Sentinel-2-band (B02–B12, exklusive B01 och B10) och predikterar ett kontinuerligt COT-värde per pixel. Genom att använda medelvärdet av alla fem modellers prediktioner fås ett robust och brusreducerat resultat. Molnanalysen är särskilt viktig i den marina kedjan: om ett datum har för hög molntäckning exkluderas det automatiskt från heatmap-ackumuleringen för att undvika att moln feldetekteras som båtar.
Källa: Pirinen, A. et al., 2024. "Creating and Leveraging a Synthetic Dataset of Cloud Optical Thickness Measures for Cloud Detection in MSI." Remote Sensing. GitHub
Sentinel-2 RGB visar Öresunds smalaste punkt mellan Helsingborg och Helsingör — ett av världens mest trafikerade sund. Här passerar dagligen lastfartyg, tankers, containerfartyg och HH Ferries passagerarfärjor över den 4 km breda sunden. Vid 10 meters upplösning kan enskilda fartyg och deras kölvatten urskiljas.
Källa: ESA Sentinel-2
YOLO11s (You Only Look Once, version 11 small) detekterar fartyg i ett enda steg genom ett djupt CNN som analyserar hela bilden simultant. En NMD-baserad landmask säkerställer att enbart detektioner på vatten behålls. Varje detekterat fartyg markeras med en cyan-färgad ruta. I sundet detekterades 54 fartyg.
Källa: Mäyrä, J. et al., 2025. "Mapping recreational marine traffic from Sentinel-2 imagery using YOLO object detection models." Remote Sensing of Environment, 326, 114791. DOI; Jocher, G. et al., 2024. "Ultralytics YOLO11." docs.ultralytics.com
Allen AI:s rslearn-modell använder en Swin Transformer V2 Base backbone (förtränad via SatlasPretrain på Sentinel-2) kopplad till en Faster R-CNN detektionshuvud. Utöver bounding-box-detektering predikterar modellen fartygsattribut: typ (cargo, tanker, passenger, etc.), hastighet (knop), kurs (grader) och längd (meter). Attributen visas som klickbara popups i vektoröverlagringen. Färgkodningen baseras på hastighet: blå = stationär, gul = låg fart, orange = medelfart, röd = hög fart. I sundet detekterades 20 fartyg med attribut.
Källa: Bastani, F. et al., 2024. "SatlasPretrain: A Large-Scale Dataset for Remote Sensing Image Understanding." ICLR 2024. github.com/allenai/rslearn (Apache 2.0)
Heatmap-analyserna aggregerar fartygsdetektioner från flera satellitöverfarter (juli 2025) till värmekartor. Både YOLO- och AI2-modellen körs separat för varje molnfritt datum, och resultaten ackumuleras med Gaussisk utslätning. Farleder, hamninlopp och ankringsplatser framträder som intensiva zoner.
Samma spektrala index och stöddatalager som i den marina Bohuslän-analysen. Öresund ligger delvis utanför NMD:s täckningsområde (dansk sida, 65% oklassificerat). Den svenska sidan visar Helsingborg med bebyggelse, infrastruktur och hav. NDVI och NDWI ger spektrala karakteristiker av vattenytan, och COT verifierar molnfria förhållanden (94.7% klart).
Sentinel-1 är Copernicus-programmets radarsatelliter. De bär en syntetisk aperturradar (SAR) i C-bandet som själv belyser marken med mikrovågor, och fungerar därför oberoende av dagsljus och moln. Efter-bilden är passagen med Sentinel-1D den 28 juni 2026 kl. 05:31 UTC över ankringsområdet söder om Skagen. Före-bilden är modellens jämförelsepassage längs samma bana den 23 maj 2026. Båda visar VV-polarisationen som relativ radarintensitet i dB, beräknad som 20·log10 av de okalibrerade GRD-värdena (inte kalibrerad σ⁰) och visad med samma fasta skala 28–58 dB. Plant vatten reflekterar signalen bort från satelliten och blir mörkt. Ett stålskrov fungerar som en hörnreflektor och lyser vitt, ofta med ett kors av sidlober kring de starkaste ekona. Mörka stråk på vattenytan är lugnare vatten med mindre krusning.
Källa: ESA Sentinel-1 (Copernicus), hämtad via Microsoft Planetary Computer
Allen Institute for AI (AI2) har tränat en detektor för fartyg i Sentinel-1-bilder: en Swin Transformer V2 Base med Faster R-CNN-huvud som får VV och VH från både Efter- och Före-passagen. Före-bilden ger modellen sammanhang: AI2 tränade den med en äldre passage för att skilja fartyg från fasta strukturer. Modellen slår ihop inlärda drag från båda bilderna och har ingen fast regel om att det som syns i båda förkastas. Här körs den med tröskel 0.3: rutor med poäng ≥ 0.7 (AI2:s egen produktionströskel) ritas heldragna, kandidater mellan 0.3 och 0.7 streckade, och färgen går från mörk till ljus orange med poängen. I passagen gav modellen 25 detektioner över 0.7, 18 av dem med poäng 0.99–1.00. 16 har predikterad fart under 0,5 knop och predikterad längd 77–278 m, vilket stämmer med fartyg till ankars som ger starka radarekon. Mellan 0.3 och 0.7 finns bara 9 kandidater (predikterad längd 19–148 m, median 34 m). Attributmodellen predikterar längd, bredd, kurs, fart och typ, som visas när du klickar på en ruta. Detektionerna är kandidater och inte bekräftade fartyg: ingen AIS-data har matchats, och attributen är modellprediktioner.
Källa: Allen Institute for AI, github.com/allenai/rslearn_projects (modellvikter och kod: Apache 2.0, annoteringar: CC-BY 4.0); Satlas marine infrastructure (ODC-BY)
Skagen ligger i danska vatten, där inga svenska sjökortsceller finns. Sjökortet är därför OpenSeaMaps sjömärkeslager (bojar, fyrar, trafikseparering) ovanpå OpenStreetMaps baskarta. Det är sammansatt av förhämtade kartrutor på zoomnivå 12 och 13 och omprojicerat till samma EPSG:3006-rutnät (SWEREF 99 TM, 2327×2140 pixlar à 10 m) som radarbilderna. Växla mellan Efter och Sjökort för att se ankringsfartygen i förhållande till trafikseparering och farleder.
Källa: © OpenStreetMap contributors (ODbL), seamarks © OpenSeaMap (CC BY-SA)
Sentinel-1 är Copernicus-programmets radarsatelliter. De bär en syntetisk aperturradar (SAR) i C-bandet som själv belyser marken med mikrovågor, och fungerar därför oberoende av dagsljus och moln. Efter-bilden är passagen med Sentinel-1C den 19 juli 2025 kl. 16:52 UTC — samma dag som Sjöfart-flikens optiska bild men vid en annan tidpunkt, så fartygen i de två flikarna är inte desamma. Före-bilden är modellens jämförelsepassage längs samma bana den 1 juni 2025. Båda visar VV-polarisationen som relativ radarintensitet i dB, beräknad som 20·log10 av de okalibrerade GRD-värdena (inte kalibrerad σ⁰) och visad med samma fasta skala 28–58 dB. Plant vatten reflekterar signalen bort från satelliten och blir mörkt; fartygsskrov, kajer och byggnader fungerar som hörnreflektorer och lyser vitt. Det korniga mönstret är speckle, ett brus som är typiskt för radarbilder.
Källa: ESA Sentinel-1 (Copernicus), hämtad via Microsoft Planetary Computer
Allen Institute for AI (AI2) har tränat en detektor för fartyg i Sentinel-1-bilder: en Swin Transformer V2 Base med Faster R-CNN-huvud som får VV och VH från både Efter- och Före-passagen. Före-bilden ger modellen sammanhang: AI2 tränade den med en äldre passage för att skilja fartyg från fasta strukturer. Modellen slår ihop inlärda drag från båda bilderna och har ingen fast regel om att det som syns i båda förkastas. Här körs den med tröskel 0.3: rutor med poäng ≥ 0.7 (AI2:s egen produktionströskel) ritas heldragna, kandidater mellan 0.3 och 0.7 streckade, och färgen går från mörk till ljus orange med poängen. I passagen gav modellen ingen detektion över 0.7 inom området, och 4 kandidater mellan 0.30 och 0.59. Alla är små farkoster (predikterad längd 21–29 m) på den svenska halvan av sundet, utanför Helsingborg. Det starka målet vid färjeläget i Helsingør får ingen kandidat. Det finns också i Före-bilden. Att det syns i båda bilderna är en möjlig förklaring till att det inte detekteras, inte en fastställd orsak: modellen slår ihop inlärda drag från båda bilderna och anger inget skäl per objekt. Växla mellan Före och Efter för att jämföra. Attributmodellen predikterar längd, bredd, kurs, fart och typ, som visas när du klickar på en ruta. Detektionerna är kandidater och inte bekräftade fartyg: ingen AIS-data har matchats, och attributen är modellprediktioner.
Källa: Allen Institute for AI, github.com/allenai/rslearn_projects (modellvikter och kod: Apache 2.0, annoteringar: CC-BY 4.0); Satlas marine infrastructure (ODC-BY)
Sjökortet är Sjöfartsverkets elektroniska sjökortsceller (S-57) renderade direkt på samma EPSG:3006-rutnät (SWEREF 99 TM, 893×588 pixlar à 10 m) som radarbilderna och Sjöfart-flikens Sentinel-2-bilder. Cellerna täcker svenska vatten, så den danska sidan av sundet är tom. Växla mellan Efter och Sjökort för att jämföra kustlinje, hamnar och farleder med radarbilden.
Källa: Sjökortsdata © Sjöfartsverket, via SLU GET
Sentinel-2 är en satellitkonstellation från Europeiska rymdorganisationen (ESA), del av Copernicus-programmet. RGB-bilden visar kustområdet utanför Ystad som det ser ut för ögat.
Källa: ESA Sentinel-2
Strandlinjens position extraheras automatiskt från Sentinel-2-bilder med CoastSat-metoden. NDWI/MNDWI-index beräknas och Otsu-tröskling används för att separera land från vatten. Genom att jämföra strandlinjer från 2018 till 2025 kan erosion och ackumulation identifieras längs kuststräckan.
Källa: Vos, K. et al., 2019. "CoastSat: A Google Earth Engine-enabled Python toolkit to extract shorelines from publicly available satellite imagery." Environmental Modelling & Software. github.com/kvos/CoastSat
NDVI (Normalized Difference Vegetation Index) beräknas som (NIR - Röd) / (NIR + Röd). I kustanalysen visar NDVI vegetationens tillstånd i strandzonen och bakomliggande landskap.
Källa: Rouse et al., 1974. "Monitoring vegetation systems in the Great Plains with ERTS."
NDWI (Normalized Difference Water Index) är centralt för kustlinjeanalysen. Det beräknas som (Grön - NIR) / (Grön + NIR) och används för att separera land från vatten vid strandlinjeextraktion.
Källa: McFeeters, S.K., 1996. "The use of the Normalized Difference Water Index (NDWI) in the delineation of open water features." Int. J. Remote Sensing, 17(7).
EVI (Enhanced Vegetation Index) korrigerar för atmosfäriska störningar och ger mer nyanserad information i kustzonens vegetation.
Källa: Huete et al., 2002. "Overview of the radiometric and biophysical performance of the MODIS vegetation indices." Remote Sensing of Environment, 83(1-2).
COT (Cloud Optical Thickness) anger hur optiskt tjockt molntäcket är. Värden nära noll innebär klar himmel och tillförlitliga satellitdata.
Källa: Pirinen, A. et al., 2024. "Creating and Leveraging a Synthetic Dataset of Cloud Optical Thickness Measures for Cloud Detection in MSI." Remote Sensing. GitHub
Två metoder för kustsegmentering visas sida vid sida för jämförelse:
Indexbaserad (NDWI/MNDWI + Otsu): Använder spektrala vattenindex (NDWI och MNDWI) med automatisk Otsu-tröskling för att skilja vatten från land. Metoden är transparent, fysikbaserad och kräver ingen GPU. Den identifierar fyra klasser: djupt vatten, grunt vatten, sediment och land.
Källa: Vos, K. et al., 2019. "CoastSat: A Google Earth Engine-enabled Python toolkit to extract shorelines." Environmental Modelling & Software.
CoastSeg SegFormer (neuralt nätverk): En SegFormer-B0 transformer-modell (3,7 M parametrar) tränad på märkt satellitdata för kustsegmentering. Modellen lär sig komplexa spatiala mönster direkt från RGB-bilddata och producerar samma fyra klasser. Jämför de två metodernas resultat för att se var de överensstämmer och var de skiljer sig — särskilt vid komplexa kustlinjer med sediment och grunt vatten.
Källa: Vos, K. et al., CoastSeg — GitHub
Sentinel-2 RGB visar Vänerns södra strand nära Lidköping/Läckö. Området har en blandning av skog, jordbruksmark och strandvegetation som möter sjöns strandlinje — ett idealiskt testområde för vegetationskantdetektion.
Källa: ESA Sentinel-2
NDVI (Normalized Difference Vegetation Index) beräknas som (NIR − Röd) / (NIR + Röd) med band B08 och B04. I vegetationskantanalysen är NDVI det centrala indexet: gränsen mellan vegetation och icke-vegetation bestäms genom tröskling av NDVI-värden. Frisk vegetation ger höga NDVI-värden (0.3–0.9) medan vatten och bar mark ger låga värden. Den exakta tröskeln avgör var vegetationskanten placeras.
Källa: Rouse et al., 1974. "Monitoring vegetation systems in the Great Plains with ERTS."
Vegetationen klassificeras i tre klasser med NDVI-tröskling: vatten (blått), icke-vegeterat (beige) och vegeterat (grönt). Tröskeln bestäms automatiskt med Otsu-metoden eller VedgeSats Weighted Peaks-algoritm. Morfologisk rensning (close + open) appliceras för att ta bort brus och småfragment.
Källa: Muir, F.M.E. et al., 2024. "VedgeSat: An automated, open-source toolkit for coastal change monitoring using satellite-derived vegetation edges." Earth Surf. Process. Landf., 49, 2405–2423.
Vegetationskanten extraheras som en 1-pixel-bred centerlinje längs gränsen mellan vegeterat och icke-vegeterat område. Metoden använder morfologisk gradient för att hitta kantbandet (~3 px brett) och sedan skeletonisering för att reducera till en enda pixel. Resultatet är en vektoriserad linje som representerar vegetationens yttre gräns mot strand, vatten eller bar mark. Genom att jämföra vegetationskanter från 2018 till 2025 kan förändringar i vegetationstäckning identifieras — både erosion av vegetation och nyetablering.
Källa: Nugraha, I. et al., 2026. "Extending a scalable satellite-based vegetation edge detection framework to diverse tropical coasts." Front. Mar. Sci., 13, 1757991.
Vegetationskantens position jämförs år för år från 2018 till 2025. Varje års kant visas med en färggradient från gult (äldst) till rött (nyast). Förflyttningar av vegetationskanten indikerar förändringar i strandvegetationens utbredning — antingen tillbakadragning (erosion, röjning) eller framryckning (ackumulation, nyetablering). Denna metod ger en kostnadseffektiv och skalbar övervakning av kustzonens vegetation utan behov av fältundersökningar.
Stabilitetskartorna visar hur mycket varje pixel har förändrats spektralt mellan 2018 och efterföljande år. Analysen använder samma metod som branddetekteringen: den euklidiska normen beräknas över sex Sentinel-2-band (B02, B03, B04, B08, B11, B12) — synligt ljus, nära infrarött och kortvågigt infrarött. Medelvärdet av alla års förändringsmagnituder ger en stabilitetskarta där mörka områden är spektralt stabila (oförändrad vegetation) och ljusa/heta områden har genomgått störst förändring. Max-kartan visar den största förändringen som observerats under någon enskild jämförelse. Tillsammans kompletterar dessa den NDVI-baserade vegetationskantanalysen med en bredare spektral bild av landskapsförändringen.
Sentinel-2 RGB visar Bohuslänkusten med Stigfjorden mellan Tjörn och Orust, vattnen utanför Mollösund och Käringön, samt en del av öppen Skagerrak. Vårblomningens klorofyllstrimmor syns tydligt som ljusare gröna virvlar i vattnet — april-bloomen domineras av kiselalger (diatoméer), främst Skeletonema costatum och Chaetoceros-arter. Bilden är komponerad från B04 (röd, 665 nm), B03 (grön, 560 nm), och B02 (blå, 490 nm) med 2:a/98:e-percentil-stretch för synlig kontrast.
Källa: ESA Sentinel-2 · Inspirationsbild: digitalearth.se 2026-04-08 · Bloom-fenologi: SMHI BAWS
Alla retrievals i denna analys kommer från en enda Sentinel-2-passage: S2B kl 10:30:19 UTC den 8 april 2026. Vi blandar inte data från olika dagar eller från S2A:s parallella passage 10 minuter senare (10:40:41 UTC). Anledningen är att klorofyllblomningsdynamik kan röra sig flera kilometer per timme i ytvatten — att mosaika över olika tidpunkter introducerar artefakter som ser ut som verkliga gradienter. Däremot mosaikar vi inom samma passage två angränsande MGRS-rutor (T32VPK + T33VUE, båda S2B 10:30:19) eftersom det är samma fysiska observation, bara delad mellan UTM-zon 32 och 33.
Disciplin etablerad i denna analys 2026-04-28; detaljer i SPEC.md.
NDCI = (B05 − B04) / (B05 + B04). Klassiskt rödedge/röd-kontrastindex som ökar med klorofyll-a-absorption vid 665 nm relativt rödedge-reflektansen vid 705 nm. B05 (705 nm) är det första rödedge-bandet på Sentinel-2 och fångar reflektanstoppen som blir högre vid förhöjt klorofyll. Robust för öppna kustvatten, tolerant mot atmosfäriska variationer. Värden nära noll i klart vatten, positiva värden upp mot ~0.6 indikerar förhöjt klorofyll. Beräknas på L2A ytreflektans (Sen2Cor) och färgskalan i vår dashboard är fast: −0.2 (klart vatten) → +0.6 (kraftig blomning).
Källa: Mishra, S. & Mishra, D.R., 2012. "Normalized difference chlorophyll index: A novel model for remote estimation of chlorophyll-a concentration in turbid productive waters." Remote Sensing of Environment 117: 394–406.
MCI = B05 − B04 − 0.389·(B06 − B04). Mäter höjden på 705 nm-reflektanstoppen över en linjär baslinje dragen från B04 (665 nm) till B06 (740 nm). Originellt designad för MERIS:s 709 nm-band av Gower et al. (2005); porterad till Sentinel-2 av Binding et al. (2013) med koefficienten 0.389 anpassad för MSI-bandcentra. Kompletterar NDCI: MCI är mer känslig för måttligt höga klorofyllhalter (5–25 mg/m³) där NDCI börjar mätta. Färgskalan i dashboarden är fast: −0.02 (klart) → +0.08 (blomning).
Källa: Gower, J., King, S., Borstad, G. & Brown, L., 2005. "Detection of intense plankton blooms using the 709 nm band of the MERIS imaging spectrometer." Int. J. Remote Sensing 26: 2005–2012. Sentinel-2-anpassning: Binding et al., 2013.
Förtränat neuralt nätverk från NASA/USGS Pahlevan-gruppen som returnerar klorofyll-a (mg/m³) direkt i fysikaliska enheter genom inversion av Rrs-spektrumet. Tränat globalt på SeaBASS in-situ-matchups och designat speciellt för Sentinel-2 i optiskt komplext (Case-2) kustvatten. MSI-modellen använder 7 band: B01 (443 nm, kustaerosol), B02 (490), B03 (560), B04 (665), B05 (705), B06 (740), B07 (783). I denna analys kör vi modellen via upstream-paketet BrandonSmithJ/MDN (TensorFlow 2.13/Keras 2.13) på de L2A ytreflektansvärden som DES levererar (efter division med π för att gå från ρ till Rrs). Färgskalan är fast på 0.5–25 mg/m³ (log10-skala) så att samma färg betyder samma koncentration över olika scener — legenden visar 5 fasta nivåer (Låg / Måttlig / Förhöjd / Blomning / Hög blomning).
Källa: Pahlevan, N. et al., 2020. "Seamless retrievals of chlorophyll-a from Sentinel-2 (MSI) and Sentinel-3 (OLCI) in inland and coastal waters." Remote Sensing of Environment 240: 111604. Implementation: github.com/BrandonSmithJ/MDN
ESA:s neurala nätverk för optiskt komplexa vatten (Case-2). Inverserar inneboende optiska egenskaper (IOPs) ur water-leaving reflectance: iop_apig (klorofyllpigmentabsorption vid 443 nm, m⁻¹), iop_agelb (gelbstoff/CDOM-absorption, m⁻¹), iop_bpart + iop_bwit (partikel- och vit-partikelspridning). Klorofyll-a beräknas via Brockmanns standardrelation chl = iop_apig1.04 · 21.0; TSM via tsm = 1.72·iop_bpart + 3.1·iop_bwit; CDOM rapporteras direkt som iop_agelb. Vi kör c2rcc.msi-operatorn via SNAP 13 i en custom-byggd Docker-image (FROM eclipse-temurin:11-jdk + ESA:s officiella Linux-installer + S2-toolbox + s3tbx.c2rcc-plugin) direkt på L1C TOA-data som hämtas som SAFE-arkiv från Google Clouds publika Sentinel-2-bucket (anonym, gratis, full SAFE-arkitektur). SNAP-grafen är Read → Resample(referenceBand=B2) → Subset(2 km buffrad WGS84-polygon) → c2rcc.msi → Write(BEAM-DIMAP).
Vi använder netSet=C2X-Nets (Case-2 eXtreme) i stället för default C2RCC-Nets eftersom Bohusläns vatten har betydligt högre CDOM/gelbstoffhalter än vad default-NN är tränad för. Default-NN klampar då alla pixlar utanför sin träningsrange till en konstant "NN-floor"-output (apig = 0.000298 m⁻¹), vilket ger 65 % land + 19 % NN-floor + 16 % riktiga retrievals. Med C2X-Nets blir fördelningen 59 % land + 1.8 % NN-floor + 38.8 % riktiga retrievals — 2.5× fler giltiga pixlar och 10× lägre falsk-positiv-andel. Vi filtrerar också manuellt bort pixlar med iop_apig < 0.001 (NN-floor-rest) som NaN.
Källa: Brockmann, C. et al., 2016. "Evolution of the C2RCC Neural Network for Sentinel 2 and 3 for the Retrieval of Ocean Colour Products in Normal and Extreme Optically Complex Waters." ESA Living Planet Symposium. SNAP: step.esa.int
Skillnadskartan visar std(log10(MDN_chl), log10(C2RCC_chl)) per pixel (begränsad till pixlar där båda metoder gett valid retrieval). Höga värden = metoderna är oense; låga värden = de pekar på samma koncentration. Spridning > 0.7 (≈ 5× faktorskillnad) indikerar att lokala vattentypsförhållanden ligger på kanten av minst en av metodernas träningsrange — typiskt vid fjordmynningar (där MDN ser sediment som klorofyll) eller vid mycket klart vatten (där C2X-Nets är osäker). Färgskalan: 0 (perfekt enighet) → 2.0 (100× faktorskillnad).
Optisk satellitfjärranalys över grunt vatten (< ~5 m djup) lider av bottenreflektansinterferens: ljus reflekterat från sandbottnar, sjögräs eller hällar når sensorn och blandas med vattenleaving-signalen. Både MDN och NDCI/MCI tolkar då bright-bottom-pixlar som klorofyllrika när de i själva verket är optiskt grunda. I denna analys flaggar vi pixlar närmare än 50 m till strand (via scipy.ndimage.distance_transform_edt på vattenmasken) och med klorofyll > 5 mg/m³ som bottenpåverkade — de NaN-maskeras i alla chl-paneler. Empiriskt: 96.7 % av pixlarna som skulle klassats "Hög blomning" innan filtret låg närmare än 100 m strand, vs 25 % förväntat om blomningar var rumsligt jämnt fördelade.
För riktig 5 m-isobath skulle vi behöva sjökortsdata (S-57 DEPARE) eller EMODnet bathymetri — distance-to-shore är en pragmatisk approximation tills den infrastrukturen är på plats.
Sentinel-2:s Scene Classification Layer (SCL, 20 m native, näst-grannresampling till 10 m) används som primär vattenmask: klass 6 = öppet vatten, klass 7 = oklassificerat (kan vara grunt vatten). Moln (klass 8/9), cirrus (10) och molnskuggor (3) exkluderas. Vid avsaknad av SCL faller masken tillbaka på MNDWI = (B03 − B11) / (B03 + B11) > 0 enligt Xu (2006). AOI-maskeringen i analyzern använder envelop (axis-aligned bbox) av den projicerade polygonen i data-CRS — INTE polygonen själv — för att matcha det _to_nmd_grid begär från DES openEO. Att använda polygonen direkt skulle NaN-clippa hörnwedges som fetchen redan korrekt levererat, eftersom en WGS84-rektangel projiceras till ett parallellogram i SWEREF99 TM (3°-tilt p.g.a. att lat/lon-meridianer inte är parallella med projektionsgridden).
L2A-sidan (NDCI / MCI / MDN / RGB / vattenmask):
DES openEO levererar L2A ytreflektans (Sen2Cor) i EPSG:3006 NMD 10 m-grid med temporal_extent snävt satt så att bara S2B 10:30:19-passet ingår (annars mosaikar DES servern över bägge dagliga passar). Hämtas via imint.fetch.fetch_des_data() med vår patchade _unpack_openeo_gtiff_bytes-helper som hanterar DES gzip+tar-svar.
L1C-sidan (C2RCC):
SAFE-arkiven (T32VPK + T33VUE, båda S2B 10:30:19) hämtas från Google Clouds publika bucket via imint.fetch.fetch_l1c_safe_from_gcp(). SNAP c2rcc.msi körs på varje SAFE separat i Docker, output i UTM 32N respektive UTM 33N. Båda outputs reprojiceras till EPSG:3006-grid med första-valid-pixel-mosaik i Python.
Rendering: Alla rasters klipps till AOI v4-rektangeln (24.25 × 9.93 km, EPSG:3006 axis-aligned), läggs över RGB-bakgrund, och renderas som RGBA-PNGs med fasta färgskalor (vmin/vmax pinnade så legend matchar koncentrationer över scener). Frame-aspekten 2.442:1 landskap matchar AOI:n.
Total körtid för en hel scen: L2A-fetch ~105 s, MDN-inferens ~17 s, c2rcc per SAFE ~3–10 min (x86-emulering på Apple Silicon — 3× snabbare på native amd64), mosaik + render ~5 s. Total ≈ 7–22 min beroende på hardware.
Lilla Karlsö (Gotland, fågelreservat) har 2 000–3 000 häckande sillgrissle-par.
Häckningssäsongen sträcker sig från äggläggning i mitten av april via kläckning
i mitten av juni till att ungar lämnar kolonin i slutet av juli. Sillgrisslornas
foderbas är pelagisk småfisk (skarpsill, sill) som följer klorofylldynamiken
i Östersjön — de jagar 5–15 km från kolonin och dyker till 100 m djup.
Källa: WWF Sverige · Naturskyddsföreningen Gotland.
Tre Sentinel-2-scener fångar säsongens tre fenologiska faser:
Datumvalet kommer från optimal_fetch_dates(mode="era5_then_scl")
över hela häckningssäsongen 2025-04-15..07-31. Östersjön sommar är notoriskt
molnig — av 19 ERA5-passande dagar och 50 SCL-stack-kandidater var bara 3
under tröskeln 15% AOI-cloud. De 3 som överlever filtret träffar dock
perfekt en gång varje fenologisk fas.
22×22 km bbox runt 57.311°N 18.061°E (utvidgad från 7×5 km i den befintliga Lilla Karlsö-demos under Atmosfär-fliken). Större AOI behövs för att fånga foderhabitatet — kolonin är bara 2.5×1 km, men sillgrisslorna jagar i hela omkringliggande havsområdet. AOI ligger helt inom UTM 33N (T33VWE) → single-pass utan zon-mosaik.
Trestegs k8s-pipeline mot ICE CephFS-PVC:
optimal_fetch_dates(era5_then_scl) +
fetch_l1c_safe_from_gcp — Sentinel-2 L1C SAFE-arkiv från Google Clouds publika bucketc2rcc.msi via signerad GHCR-image
ghcr.io/tobiasedman/imint-c2rcc-snap → BEAM-DIMAP. Native amd64 ger
~3 min per scen istället för 10+ min på qemu-emulerad Mac.
Reproducerbar: hela bygg-receptet finns versionerat i
docker/c2rcc-snap/ (Dockerfile, SNAP graph-XML, run.sh) och CI auto-bygger
+ signerar imagen vid varje commit som rör katalogen. Se
docs/governance/avoiding_docker_repo_skew.md för bakgrund.
Median (p50) och 90-percentil (p90) AOI-klorofyll-a per scen i log-skala. Vårblom-toppen syns vanligen i april–maj, sedan minskar koncentrationen över sommaren när ytvattnet stratifieras och näringen är förbrukad.
Sentinel-2 L1C via Google Cloud public bucket. SNAP c2rcc.msi: Brockmann et al. 2016, ESA Living Planet Symposium. netSet=C2X-Nets för optiskt komplext kustvatten. Sillgrissle-fenologi: WWF Sverige, Lilla Karlsö.
ESA:s Sentinel-2-satelliter fotograferar hela Sverige ungefär var tredje dag. Varje pixel motsvarar 10 × 10 meter på marken — utmärkt för att övervaka skog, vatten och jordbruk i stor skala, men för grovt för att se enskilda byggnader tydligt. Ett fotbollsmål blir mindre än en pixel. Stockholms Slott är ungefär 12 × 9 pixlar.
Superresolution är samlingsnamnet på tekniker som försöker räkna fram hur en skarpare version av samma bild skulle kunna se ut — ungefär som när mobilen använder AI för att förbättra ett zoomat foto. Här jämförs fem olika metoder på samma bild över centrala Stockholm.
Två andra metoder vi också tittade på (DiffFuSR och SR4RS) saknar tillgängliga modellvikter — de finns bara som forskningskod, inte som installerbara paket. När och om vikter publiceras kan vi addera dem.
För att skillnaderna mellan metoderna ska synas behöver bilderna visas vid verklig pixelupplösning. SR-panelerna är därför inställda så att en bildpunkt på skärmen motsvarar en bildpunkt i SR-resultatet. Du ser bara en del av bilden i taget — dra (panorera) i en panel så följer alla andra med automatiskt, så jämförelsen sker över exakt samma område. Original-bilden (10 m) blir då tydligt blockig: varje 10 m-pixel renderas som ett 4×4-block. Det är inte ett fel — det är hur grov satellit-upplösningen verkligen ser ut innan AI-skarpning.
Oberoende forskning från fyra olika håll pekar entydigt på cirka 2,5 meter per pixel som gränsen för vad som verkligen kan återhämtas från en Sentinel-2-bild. Det handlar inte om att AI:n inte är tillräckligt smart — det är själva satellitens optik och sensorer som sätter taket. Bortom 2,5 m skapar AI:n inte längre information från bilden, utan gissar utifrån mönster den lärt sig på andra, skarpare bilder.
"1 meter per pixel"-produkter som finns på marknaden ser visuellt imponerande ut, men de detaljer du ser är till stor del genererade av AI:n, inte återhämtade från satelliten. Vägar och hustak kan se prickfria ut samtidigt som de hamnar på fel plats jämfört med verkligheten.
Varje panel har en opacitets-reglage i toppen. Drar du den till 0 % ser du original-bilden (10 m per pixel, suddig). Drar du till 100 % ser du den AI-skarpade versionen. Genom att fade:a fram och tillbaka ser du tydligt vilka detaljer AI:n lägger till — och du kan kontrollera om de motsvarar något du känner igen från Stockholm. Saknas en byggnad i originalet men dyker upp efter förstoringen? Då har AI:n hittat på den.
De tre nedre panelerna visar samma sorts förändringskarta som brandanalysen använder för dNBR. I brandfallet är det "skog före kontra efter brand" — här är det "originalpixel kontra AI-skarpad pixel". Mätstickan heter Spectral Angle Mapper (SAM): för varje pixel räknas vinkeln mellan original-spektrumet (R, G, B) och AI:ns version. Noll grader betyder att modellen bara skarpat utan att ändra färgbalansen. Högre värden betyder att modellen tillfört spektral information som inte fanns i originalet — alltså hallucination.
Bicubic borde ge nästan helt blå paneler — den blandar bara grannpixlar utan att uppfinna något. SEN2SR är designad för att stanna nära originalet (radiometrisk hard-constraint), så även den ska se mestadels blå/grön ut. LDSR-S2 (diffusion) är mer ambitiös och kan visa gulare/rödare områden längs kanter, fasader och vägar — där modellen försöker återskapa textur. Det är inte nödvändigtvis fel, men det är där du ska vara mest försiktig att lita på detaljerna.
| Parameter | Värde | Källa |
|---|---|---|
| Datum (UTC) | 2026-01-11 10:43:19 | L1C SAFE-namn |
| Satellit | Sentinel-2B | SAFE-prefix S2B |
| Tile | T32VPK · UTM 32N | SAFE-suffix |
| Detector | 7 (täcker AOI) | MTD_TL.xml viewing-incidence-grids |
| Produkt | L1C SAFE · per-band JP2 | Google Cloud Sentinel-2-bucket |
| AOI | 57.71818°N, 11.66559°E · 5×5 km · 520×520 px @ 10 m | centrerad på kondensstrimman |
Parsade per-detektor från MTD_DS.xml via parse_band_times_v2.py. Tidigare versioner använde nominella ESA-värden (B03 +0.5 s, B04 +0.6 s, B08 +1.0 s) som visade sig vara fel: faktisk fokalplansordning är B04 → B03 → B08 → B02, inte alfabetisk. B08 ligger näst sist (+0.744 s efter B04), inte alfabetisk ordning.
| Bandpar | Δt (s) | Förflyttning vid 220 m/s (m) | Pixlar @ 10 m |
|---|---|---|---|
| B04 → B03 | 0.4839 | 106 | 10.6 px |
| B04 → B08 | 0.7438 | 164 | 16.4 px |
| B04 → B02 | 1.0037 | 221 | 22.1 px |
Sentinel-2 MSI är en push-broom-sensor: i fokalplanet finns separata detektorrader för varje spektralband, och raderna sitter fysiskt åtskilda along-track. När satelliten sveper över ett område registrerar varje band-detektor samma markpunkt vid något olika tidpunkter. Stationära markobjekt syns på samma pixel i alla band; bara objekt som rör sig under exponeringsintervallet ger band-parallax. Vid PC-24-cruise (~220 m/s) hinner planet röra sig 220 m mellan B02 och B04 — 22 pixlar i 10 m-rutnätet, fullt mätbart.
Källa: ESA Sentinel-2 MSI Product Definition Document, kapitel 3 (focal plane geometry).
Manuella apex-pickar i 120×120 px native-cropen (en pick per band, sparade i user_picks.json) ger total geografisk förskjutning B04 → B02 över 1.004 s ≈ 301 m i bäring 40.3° (NE). Rå hastighet utan höjdkorrektion: 300 m/s. Wedge-spetsen i NÖ matchar: planet syns längre och längre NE genom successiva band-exponeringar.
Den uppmätta vektorn innehåller två bidrag: planets faktiska rörelse, och höjdparallax från satellitens ground-track-rörelse. Sat-track-bäringen vid 57.72°N (descending pass, orbital inclination 98.62°) är 196.3°. En stationär punkt på höjd H_a förskjuts i motsatt riktning 016.3° (NNE) mellan band-exponeringar, magnitud (v_sat / H_sat) × H_a × Δt ≈ 0.00853 × H_a meter per Δt=1s. Vektorsubtraktion: d_plane = d_observed − p_parallax.
| Antagen H_a | Sat-parallax (m vid Δt=1s) | v_aircraft | bearing | Förenlig med kondensstrimma? |
|---|---|---|---|---|
| 1 km | 9 m | 292 m/s · Mach 0.87 | 41.0° | Nej — för varmt för kondensstrimma |
| 5 km | 43 m | 262 m/s · Mach 0.82 | 44.1° | Marginellt — vintertröskel |
| 8 km | 68 m | 239 m/s · Mach 0.78 | 47.0° | Ja — Schmidt-Appleman uppfyllt · matchar PC-24 climb-cruise |
| 11 km | 94 m | 218 m/s · Mach 0.74 | 50.4° | Ja — exakt PC-24 cruise · matchar Säve→ESOW bäring 51.7° |
Det avgörande testet för att picks faktiskt tracker samma fysiska punkt (planet) i alla band: vid antagen flyghöjd H_a = 8 km ger varje bandpar oberoende:
| Bandpar | Δt (s) | v_aircraft | bearing |
|---|---|---|---|
| B04 → B03 | 0.4839 | 240 m/s | 46.5° |
| B04 → B08 | 0.7438 | 240 m/s | 46.6° |
| B04 → B02 | 1.0037 | 239 m/s | 47.0° |
Alla tre bandpar ger v och bearing inom ±1 m/s och ±0.5°. Detta bevisar att user-picks tracker exakt samma fysiska punkt (planets position) över alla band — ingen våglängds-beroende drift, ingen vinddrift-bias. Mätningen är robust.
Kondensstrimmor bildas bara där temperaturen är ≤ −40°C och luftfuktigheten över is-mättnad — det Schmidt-Appleman-kriteriet. I ICAO-standardatmosfär uppfylls detta typiskt vid ≥ 8 km flyghöjd. I vinterns Nordsjö-luftmassa kan tröskeln nås redan på 5–6 km i kall, fuktig luft. Det utesluter alla låghöjds-hypoteser (under 5 km): kondensstrimman i sig är ett höghöjdsbevis.
Query /flights/all ±30 minuter runt 10:43:19 UTC: 571 flygningar i större Skandinavien-fönstret. För-aircraft /tracks/all mot bbox 57.5–57.9°N, 11.4–11.9°E: noll waypoints inom ±90 sekunder av målögonblicket. MEN — det utesluter inte civil trafik: ADS-B-täckningen i tidig climb från Säve är gles (under radar-horisont, glesa ground-stations), och bbox 0.4°×0.5° kan vara för smal om planet är ute över Kattegatt i en outbound-leg vid den exakta sekunden.
| icao24 | callsign | aircraft | flight | match |
|---|---|---|---|---|
| 4acac5 | SWE32A | Pilatus PC-24 (SE-RVE) | 10:32:36 → ESOW 11:08:43 | Stark — bäring Säve→ESOW 51.7° matchar uppmätt 051° |
| 4cad41 | SAS073 | — | → ESSA | Utanför ±90 s av måltid |
| 4ab563 | SAS051 | — | → ESSA | Utanför ±90 s av måltid |
OpenSky-metadata för icao24 4acac5: Pilatus PC-24, registrering SE-RVE (light twin-jet, klass L2J, svensk operatör). Flygning 2026-01-11: firstSeen ADS-B 10:32:36 UTC, lastSeen 11:08:43 UTC, callsign SWE32A, destination ESOW Stockholm-Västerås. Måltiden 10:43:19 UTC ligger ~11 minuter in i flygningen.
Flygbana — Säve-departure med Kattegatt outbound: AOI ligger ~6 km SW om Säve, alltså i motsatt riktning från ESOW. Direkt great-circle Säve→ESOW passerar inte AOI. Förklaringen är ett standardmönster för jet-departures från kustnära fält:
Vid AOI-passagen 10:43:19 är planet i NÖ-leg av detta mönster — på tillbakavägen efter SW outbound — fortfarande i climb genom 5–8 km, kondensstrimma-kapabel höjd. Tidsbudget mot destination stämmer: AOI→ESOW är 326 km på 25 min 24 s = 214 m/s ground speed (Mach 0.69 i climb-cruise), helt typiskt för PC-24.
| Parameter | Värde | Pixel-tolkning |
|---|---|---|
| Längd | 16.85 m | 1.7 px @ 10 m → subpixel |
| Vingspann | 17.00 m | 1.7 px @ 10 m → subpixel |
| Höjd | 5.41 m | — |
| MTOW | 8 300 kg | — |
| Service ceiling | 13 716 m (45 000 ft) | Täcker kondensstrimma-höjder |
| Cruise | Mach 0.74 ≈ 226 m/s @ FL450 | Matchar vektor-räkning vid 8–11 km |
Vid 10 m/px är planet subpixel — vi ser inte kroppen, vi ser bara kondensstrimman (10 × 300–500 m).
Den här analysen kräver Sentinel-2 L1C SAFE-arkivet (per-band JP2-filer i native detektor-geometri). L2A BOA-data har gått genom Sen2Cor som co-registrerar och resamplar banden till ett gemensamt rutnät — co-registreringen kan smeta ut eller eliminera parallaxen helt. Repots fetch_des_data (L2A via DES openEO) ska inte användas här.
state_vectors_data4 mot icao24 4acac5 vid det specifika tidsfönstret. Free-tier `/tracks/all` rate-limited; Trino kräver akademisk/forskningsansökan.
Push-broom-parallax används rutinmässigt i öppen källanalys för att mäta hastigheter på flygplan och fartyg från offentligt tillgänglig Sentinel-2-data. Den här fallstudien visar både styrkan och fallgroparna: enbart pixel-mätning är inte tillräckligt — kondensstrimma-fysiken sätter en oberoende höjdgräns (Schmidt-Appleman ≥ 5–8 km), och ADS-B-metadata identifierar rätt plan. Sensorfysik + ground-truth + cross-check är hela kedjan.
Bakgrund: Heiselberg, H., 2019. "A Direct and Fast Methodology for Ship Recognition in Sentinel-2 Multispectral Imagery." Remote Sensing 11(18). · Schumann, U., 1996. "On conditions for contrail formation from aircraft exhausts." J. Atmos. Sci.
Modellen tränar på fyra Sentinel-2-ramar per tile (1 höstram från år−1 + 3 växtsäsongsramar). För Prithvi-backbonens temporala stack måste varje pixels tidsserie vara samma markpunkt genom alla fyra ramar — annars lär sig modellen brus istället för fenologi. Den här sidan visar hur den justeringen görs, och varför mutual information slår phase correlation när ramarna spänner över årstider.
En multitemporal tile är en stack (4×6 + 11, H, W) där de fyra
spektralramarna ska representera samma 10 m-ruta sedd vid fyra tidpunkter.
Backbone:n läser varje pixels tidsserie som en sekvens. Om ram 2 ligger en
knapp pixel fel mot ram 0 blandas en åkerkant ihop med dikesrenen bredvid —
den temporala signalen blir geometriskt brus i stället för fenologi. Målet är
att alla fyra ramar är sub-pixel-justerade mot varandra.
Justeringen sker i tre väl avgränsade steg. M1 är deterministisk och appliceras alltid; M2 är prioriteten och fokus för den här sidan; M3 är sekundär och nedprioriterad.
Varje rams transform snäpps till det svenska nationella NMD 10 m-gittret, så att output-tiles alltid landar på det nationella rutnätet — etiketter och aux-kanaler co-lokaliseras automatiskt. Det här flyttar aldrig något: det är transform-baserat, inte estimerat.
De fyra ramarna registreras mot varandra (mot en vald referensram) så att de ligger sub-pixel-justerade. Det är här den temporala stacken faktiskt blir användbar för backbone:n — och det är det som kostar mest att få rätt när ramarna ser olika ut mellan årstider.
En liten residual-offset för hela stacken mot NMD. Nedprioriterad, eftersom en liten helstacks-offset är ett mycket mildare fel än att ramarna är förskjutna inbördes — en samlad förskjutning bevarar tidsserien pixel för pixel.
Ramarna spänner över årstider: höststubb i ram 0, sommarkronor i växtsäsongsramarna. Samma markpunkt ser därför radiometriskt olika ut mellan ramarna. Det bryter den klassiska metoden.
Phase correlation (korskorrelation i frekvensdomänen) antar att de två bilderna är samma scen, bara förskjuten. När innehållet ändras mellan årstider låser den på det skenbara mönstret i stället för den sanna geometriska förskjutningen: ~0.75 px fel även på en ren, samma-innehåll strukturerad bild, och på de verkliga dry-run-ramarna försämrade den aktivt justeringen — ramarna hamnade 1–1.8 px fel, ibland sämre än att inte göra något alls.
Mutual information mäter det statistiska beroendet i de två ramarnas gemensamma histogram. Den bryr sig inte om att en yta är ljus i en ram och mörk i en annan — bara om förskjutningen som maximerar samvariationen. Därför återfinner den den sanna geometriska förskjutningen oavsett utseendeändringen: ~0.05 px på en syntetisk årstidsväxlings-fixture.
Implementation: imint.coregistration.estimate_mi_offset —
mutual information maximeras över en kontinuerlig sub-pixel-förskjutning (Powell),
och förskjutningen appliceras med Fourier-baserad subpixel_shift.
Referensband B04.
Noll-PU-reprocess av redan cachade ramar (ingen ny fetch). Inter-frame-residualen gick från 0.34 px (rå M1) till 0.01 px (efter MI), snittat över alla 15 ramar. Per ram, före → efter (px):
| Tile | Ram 1 | Ram 2 | Ram 3 |
|---|---|---|---|
43983928 | 0.53 → 0.02 | 0.79 → 0.00 | 0.68 → 0.00 |
44003936 | 0.39 → 0.00 | 0.21 → 0.00 | 0.38 → 0.03 |
44023928 | 0.07 → 0.00 | 0.06 → 0.06 | 0.13 → 0.00 |
44063896 | 0.21 → 0.00 | 0.77 → 0.02 | 0.06 → 0.00 |
44123932 | 0.28 → 0.00 | 0.27 → 0.00 | 0.20 → 0.00 |
Residualen mäts som inter-frame-offset mot referensramen. Ram 0 (höstramen) är referens där den används som ankare; siffrorna ovan är de tre övriga ramarna per tile.
Varje par växlar mellan referensramen och målramen (band B04). I FÖRE hoppar kanterna mellan de två ramarna; i EFTER låser de. Tre representativa ramar:
Källa: showcase/coreg/ (B04, 5-tile dry-run, noll-PU-reprocess av
rå M1-ramar). Producerad av k8s/regrid-mi-validate-pod.yaml.
Flicker-GIF:arna ovan visar driften i rörelse; här är samma ram-mot-referens fryst till en enda bild. Kanterna (Sobel-magnitud på B04) läggs på den skogsgröna bakgrunden i två färgkanaler: grått = referensramens kanter, tegelrött = målramens, och mint där de sammanfaller. Före MI separerar grått och tegelrött längs kanterna (driften); efter MI låser de till mint.
Kant-overlay (Sobel-magnitud, B04) av samma flicker-GIF-ramar. Producerad av
scripts/viz_coreg_edge_overlay.py — noll-PU, helt reproducerbar
från de committade GIF:arna.
Imints LULC-träning hämtar tusentals Sentinel-2-tiles per säsong. Varje spektral-fetch kostar ~13 sekunder amorterat med 6 parallella DES openEO- workers. Att probba alla möjliga datum är dyrt; att lita på ett enda molnfilter (STAC granul-cloud-cover) ger dålig kvalitet eftersom det måttet är ett snitt över hela 110×110 km-granulen — inte över vår tile-AOI på 18×17 km. Frågan är: vilken filter-kedja ger mest cloud-free spektral-data per spenderad sekund?
Varje strategi körs live: ERA5/STAC/SCL-stack-anrop tas live; spektral-
fetchar parallelliseras med 6 workers och tiden mäts från cachad per-dag-
metadata (samma 11-band-tiles vi redan har sparat). För varje strategi
kör vi imint.analyzers.cot (DES MLP5-ensemble) på de utvalda
scenerna och rapporterar mean COT över AOI-pixlar.
Två strategier är icke-dominerade — alla andra är antingen långsammare och sämre på kvalitet, eller bara aningen bättre på en axel mot stor kostnad på den andra:
| Strategi | Filter-kedja | n | Sel (s) | Spektral (s) | Tot (s) | Mean COT |
|---|---|---|---|---|---|---|
| M0 — Naiv STAC | STAC eo:cloud_cover ≤ 30 % |
10 | 1.1 | 151.3 | 152.4 | 0.0917 |
| M1 — Atmosfär ensam | ERA5 ∩ STAC-kalender (cc≤100) | 16 | 0.8 | 227.7 | 228.5 | 0.0743 |
| M2 — Nuvarande pipeline | STAC ≤ 30 % + AOI-SCL ≤ 10 % | 4 | 86.5 | 103.7 | 190.2 | 0.0095 |
| M3 — SCL-stack ensam | SCL-stack ≤ 10 % | 6 | 94.3 | 103.7 | 198.0 | 0.0091 |
| M4 — ERA5 → SCL 🌟 | ERA5 ∩ SCL-stack ≤ 10 % | 5 | 89.3 | 103.7 | 193.0 | 0.0086 |
| M5 — ERA5 → STAC 🌟 | ERA5 ∩ STAC ≤ 30 % | 6 | 0.8 | 103.7 | 104.5 | 0.0320 |
🌟 = Pareto-optimal. Alla mätningar live mot DES openEO 2026-05-05. Spektral-tider estimeras från cachad per-dag-metadata och parallelliseras med 6 workers.
Urvalsfas (lila) och spektral-fetch (mörk). SCL-stack-anrop dominerar urvalsfas för M2/M3/M4 (~90 s); ERA5/STAC är försumbara (~1 s).
Mean COT från DES MLP5 COT-ensemble. Tröskelvärden från Pirinen 2024: thick ≥ 0.025, thin 0.015–0.025.
API-trafik per tile per säsong. Spektral dominerar för M0/M1; SCL-stack är konstant per tile (oavsett periodlängd).
Tidigare delmängds-jämförelse (A, B, C, C2 från showcase v1) — konsistent med v2-strategierna.
Mätningarna ovan kördes med ERA5-steget som nederbörds-proxy:
en dag passerade om precip ≤ 0,5 mm idag, precip ≤ 3 mm
föregående 2 dygn och T2m ≥ 10 °C. Problemet: en
torr mulen dag (0 mm regn, 100 % molntäcke) släpps igenom — regn
är en dålig moln-proxy. Vi upptäckte det skarpt: SCL-screenen valde
2018-07-22 för en tile, men Open-Meteo visar den dagen på
89–100 % molntäcke under Sentinel-2:s passage (10–11 lokal tid)
medan den genuint klara 2018-07-24 (23,5 %) låg oanvänd.
ERA5-prefiltret frågar nu Open-Meteo-arkivet efter cloud_cover
och kollapsar timdatat till ett overpass-tids-medel (10:00 + 11:00
lokal tid) — rätt signal för satellit-screening, eftersom Sentinel-2
passerar Sverige ~10:30 och en dag kan vara klar på eftermiddagen men mulen
vid passage. En dag förkastas om overpass-molnet överstiger
overpass_cloud_max_pct = 50 % (medvetet tillåtande — ett billigt
prefilter som tar bort de uppenbart mulna dagarna; den exakta AOI-skärningen
är fortfarande den nedströms SCL-screenen). Saknar Open-Meteo molnvärde för
ett datum faller filtret tillbaka på nederbörds-proxyn — aldrig
över-förkastning på frånvarande data.
M4-siffrorna i tabellen ovan föregår denna ändring. Eftersom overpass-molnfiltret tar bort molniga datum som nederbörds-proxyn missade förväntas verklig M4 nu ge lägre mean COT till samma API-budget. En kontrollerad A/B-ombenchmark (nederbörds-proxy vs overpass-moln) är köad och kör efter den pågående refetch-körningen — figurerna uppdateras då med den nya datapunkten på Pareto-fronten.
Varje frame: vänster RGB (B04/B03/B02), höger COT-värmekarta över samma yta. AOI-mean COT printat ovanför heatmappen. Sorterade klarast-först.
Hela kedjan finns i imint/data/optimal_fetch.py:
from imint.data.optimal_fetch import optimal_fetch_dates
plan = optimal_fetch_dates(
bbox_wgs84={"west":13.05,"south":55.65,"east":13.35,"north":55.80},
date_start="2022-06-01",
date_end="2022-08-31",
mode="era5_then_scl", # eller "era5_then_stac" för snabbare
max_aoi_cloud=0.10, # AOI-SCL post-filter
)
# plan.dates → ISO-datum att fetcha spektral för
# plan.elapsed_s → tid per stage (era5/stac/scl_stack)
# plan.n_candidates_after → antal överlevare efter varje stage
Modulen ändrar inte befintliga fetch-callers — den exponerar bara en ny
URL för datum-urval. fetch_seasonal_image körs sedan på
plan.dates som vanligt, med rätt 11 spektralband per default.
Studien är genomförd inom Nationellt Rymddatalabb och visar hur kombinerade filter — meteorologisk reanalys + Sentinel-2 SCL — kan minska både datakostnad och datakvalitetsbrus i LULC-träning. Reproducerbar end-to-end:
python demos/era5_metafilter/benchmark_strategies.py python demos/era5_metafilter/render_strategy_figures.py
Datakällor: Sentinel-2 L2A via Digital Earth Sweden openEO. ERA5-baserad daglig reanalys via Open-Meteo Historical Archive. STAC-katalog via Element84 earth-search. COT-modell: Pirinen et al. 2024, Remote Sensing — DigitalEarthSweden/ml-cloud-opt-thick.
Fyra cloud-detection-modeller körs på exakt samma 12×8 km AOI över Kirunavaara (snöfält, gruva, tundra, samhälle). Sceneurvalet täcker hela molnskalan: 0 %, 1 %, 68 % och 100 % AOI-cloud-fraction enligt SCL-stack-screen. Resultaten visar att valet av cloud-detection-modell är ett konkret arkitekturbeslut för LULC-pipelinen — inte bara "kör vilken som helst".
| Modell | Familj | Träningsdata | Indata | Output | Licens |
|---|---|---|---|---|---|
| Sen2Cor SCL | ESA regelbaserad | Heuristik + threshold-cascade | BOA + atmosfäriska band | 12 klasser | ESA proprietary |
| s2cloudless | Sinergise / Sentinel-Hub | Manuellt labellade scener | 10 TOA-band | Cloud probability [0,1] | MIT |
| OmniCloudMask | DPIRD-DMA 2024 | CloudSEN12 + PixBox | R/G/NIR (10 m) | 4 klasser (klart/tjockt/tunt/skugga) | open source |
| DES MLP5 ensemble | Digital Earth Sweden | SMHI syntetiska data | 11 BOA-band (Pirinen 2024) | Kontinuerlig COT | open source |
Varje scen visas som fem paneler: RGB · Sen2Cor SCL · s2cloudless · OmniCloudMask · DES MLP5. AOI-summor i caption.
Laddar manifest…
s2cloudless och OmniCloudMask kräver Python ≥ 3.10 (PEP 604-syntax) och torch.
De körs i en separat Docker-container (imint/cloud-models:latest,
2.3 GB) som bind-mountar tile-cache och skriver predictions till disk. Sen2Cor
SCL och DES MLP5 körs direkt på host (Python 3.9). Reproducera:
docker build -t imint/cloud-models:latest docker/cloud-models python demos/cloud_models/fetch_kiruna.py python demos/cloud_models/run_comparison.py
sentinel-hub/sentinel2-cloud-detector · DPIRD-DMA/OmniCloudMask · DigitalEarthSweden/ml-cloud-opt-thick · Sen2Cor SCL (ESA Copernicus, fritt i alla L2A-produkter).
Sentinel-2 RGB visar Stormyran-AOI (Jämtland aapamyr, 64.30°N 15.94°E) den 15 juli 2024
— peak-vegetation, klart väder. Bilden är komponerad från B04 (röd, 665 nm), B03 (grön,
560 nm) och B02 (blå, 490 nm) med 2:a/98:e-percentil-stretch. Aapamyr-mosaiken syns som
gröngul-bruna mönster av öppen myrmark blandat med tallöar och dråg.
Källa: ESA Sentinel-2 via DES openEO.
Aleksis Pirinens FCN tar 10 raster på 10 m upplösning som input. Här reproduceras 7 av
dem från svenska öppna geodatakällor — Tabell 1 i rapporten visar att de utelämnade
lagren #1 (base vegetation) och #2 (VMI-inventering) bidrar <1 % mIoU. Lager som
visas "ej hämtad ännu" väntar på att k8s/prefetch-nvv-aux-job.yaml ska köras
och fylla PVC med Naturvårdsverkets NMD-tilläggsskikt (~16 GB).
Topografiskt härlett markfuktighetsindex producerat som biprodukt av NMD-basskiktet
(Naturvårdsverket 2018). Kombinerar Depth-To-Water med Soil-Topographic Wetness Index
på 10 m upplösning. Värden 0–100 (torr → våt). Fetcher:
imint.training.nvv_smi.fetch_smi_tile.
Maskininlärnings-prediktion av markfuktighet från SLU Umeå. Använder Depth-To-Water + Soil-Topographic Index från Lantmäteriets nationella höjdmodell (~2 m native). Värden 0–101 (1–100 fuktighetssannolikhet i %, 101 = mättad vatten). Hämtas live från Skogsstyrelsens ImageServer-proxy.
NMD2018 tilläggsskikt med höjd och täckningsgrad för objekt i intervallet 0.5–5 m, härledd från flygburna laserdata. Fångar buskar, ungskog och låga objekt som inte täcks av träd-höjd-lagret. Höjder i decimeter (5–50), täckning i procent (0–100).
Trädhöjd från Skogsstyrelsens ALS-baserade produkt Trädhöjd 3.1, ~2 m native upplösning, resamplad till 10 m. Hämtas live från Skogsstyrelsens ImageServer-proxy.
NMD2018 täckningsgrad för objekt i intervallet 5–45 m, dvs trädtäckning. Komplement till trädhöjd: var står träden och hur tätt?
Topografi från ESA:s Copernicus DEM GLO-30, 30 m native, resamplad bilinärt till 10 m. Hämtas direkt från publik AWS S3-bucket via Cloud-Optimized GeoTIFF.
Källa: Pirinen, A., 2023. "A pre-study about using artificial intelligence for semantic segmentation of Swedish wetland types." RISE Research Institutes of Sweden & Naturvårdsverket. github.com/aleksispi/ai-swetlands
Sentinel-2 är en satellitkonstellation från Europeiska rymdorganisationen (ESA), del av Copernicus-programmet. Satelliterna kretsar i en solsynkron bana på 786 km höjd och avbildar hela jorden var femte dag med en upplösning på 10 meter per pixel för de synliga banden. RGB-bilden visar området som det ser ut för ögat, med band 4 (rött), band 3 (grönt) och band 2 (blått). De bruna och grå områdena är brandskadat landskap där vegetationen har förstörts.
Källa: ESA Sentinel-2
NMD (Nationellt Marktäckedata) är Sveriges rikstäckande kartläggning av marktäcke och markanvändning, producerad av Naturvårdsverket. Datat har 10 meters upplösning och klassificerar marken i över 25 kategorier — från tallskog och granskog till åkermark, bebyggelse och vatten. I brandanalysen används NMD för att korsreferera vilka naturtyper som drabbats hårdast: diagrammet visar hur stor andel av varje markklass som ligger inom det brandpåverkade området. Detta ger viktig kontext för ekologisk bedömning och återställningsplanering.
Källa: Naturvårdsverket, "Nationellt Marktäckedata (NMD)." naturvardsverket.se
dNBR (differentierat Normalized Burn Ratio) är standardmetoden för att kvantifiera hur allvarligt en brand har skadat vegetationen. Först beräknas NBR-indexet som (NIR − SWIR) / (NIR + SWIR) med band B08 och B12 både för ett datum före branden (baslinje) och för branddatumet. Sedan tas differensen: dNBR = NBRföre − NBRefter. Höga positiva värden (röda på kartan) innebär hög brandsvårighetsgrad där träd och markvegetation har förstörts, medan värden nära noll (gult/grönt) visar obrända eller lätt påverkade områden. Klassificeringen följer USGS standard med sju klasser från hög återväxt till hög svårighetsgrad.
Källa: Key, C.H. & Benson, N.C., 2006. "Landscape Assessment: Ground measure of severity." USGS FIREMON, LA1-LA51.
Förändringsgradientkartan visar hur mycket varje pixel har förändrats jämfört med en molnfri baslinjebild från före branden. Analysen använder sex Sentinel-2-band (B02, B03, B04, B08, B11, B12) — alltså synligt ljus, nära infrarött och kortvågigt infrarött — och beräknar den euklidiska normen av skillnaden mellan de två datumen. Baslinjejustering sker med IMINT Engines koregistreringsmodul som korrigerar både heltals- och subpixelförskjutningar mellan olika satellitöverfarter. Resultatet visas som en värmekarta där mörka områden är oförändrade och ljusa/heta områden visar störst förändring.
NDVI (Normalized Difference Vegetation Index) är det mest använda vegetationsindexet inom fjärranalys. Det beräknas som (NIR − Röd) / (NIR + Röd) där NIR är det nära infraröda bandet (B08) och Röd är det synliga röda bandet (B04). Frisk vegetation reflekterar starkt i NIR och absorberar rött ljus, vilket ger höga NDVI-värden (0.3–0.9). Brandskadat eller vegetationslöst område ger låga värden nära noll. På kartan visas högt NDVI i grönt (frisk skog) och lågt i rött/gult (skadad mark).
Källa: Rouse et al., 1974. "Monitoring vegetation systems in the Great Plains with ERTS." Third Earth Resources Technology Satellite-1 Symposium, NASA SP-351.
NDWI (Normalized Difference Water Index) mäter förekomsten av vatten och fuktighet i landskapet. Det beräknas som (Grön − NIR) / (Grön + NIR) med band B03 och B08. Positiva värden (blått på kartan) indikerar öppet vatten, medan negativa värden visar torr mark. Sjöar och vattendrag syns tydligt som blå områden. Indexet är användbart för att identifiera hur en brand påverkat markfuktigheten och vattenbalansen i området.
Källa: McFeeters, S.K., 1996. "The use of the Normalized Difference Water Index (NDWI) in the delineation of open water features." Int. J. Remote Sensing, 17(7).
EVI (Enhanced Vegetation Index) är ett vidareutvecklat vegetationsindex som korrigerar för atmosfäriska störningar och markens bakgrundsreflektion. Till skillnad från NDVI mättas inte EVI lika lätt i områden med tät vegetation, vilket ger mer nyanserad information i frodiga skogsområden. EVI använder tre band — blått (B02), rött (B04) och NIR (B08) — för att skatta vegetationens tillstånd mer robust än NDVI ensamt.
Källa: Huete et al., 2002. "Overview of the radiometric and biophysical performance of the MODIS vegetation indices." Remote Sensing of Environment, 83(1-2).
COT (Cloud Optical Thickness) anger hur optiskt tjockt molntäcket är över analysområdet. Värden nära noll (ljusgult) innebär klar himmel och tillförlitliga satellitdata, medan högre värden (orange till rött) visar molniga områden där underliggande mark eller hav inte kan ses. Modellen är en ensemble av fem MLP5-nätverk (fem lager djupa neurala nät) som tränats på syntetiska molndata från SMHI. Varje nätverk tar emot 11 Sentinel-2-band (B02–B12, exklusive B01 och B10) och predikterar ett kontinuerligt COT-värde per pixel. Genom att använda medelvärdet av alla fem modellers prediktioner fås ett robust och brusreducerat resultat. Molnanalysen används här för att säkerställa att det valda datumet har tillräckligt molnfria förhållanden för en pålitlig analys.
Källa: Pirinen, A. et al., 2024. "Creating and Leveraging a Synthetic Dataset of Cloud Optical Thickness Measures for Cloud Detection in MSI." Remote Sensing. GitHub
Sentinel-2 är en satellitkonstellation från Europeiska rymdorganisationen (ESA), del av Copernicus-programmet. Satelliterna kretsar i en solsynkron bana på 786 km höjd och avbildar hela jorden var femte dag med en upplösning på 10 meter per pixel för de synliga banden. RGB-bilden visar området som det ser ut för ögat, med band 4 (rött), band 3 (grönt) och band 2 (blått). I betesmarksanalysen visar RGB-bilden jordbrukslandskapet i Skåne med blandning av åkermark, beteshagar och skogspartier. De gröna fälten i maj indikerar aktiv betessäsong.
Källa: ESA Sentinel-2
LPIS (Land Parcel Identification System) är Jordbruksverkets databas över alla jordbruksblock i Sverige. Polygonerna hämtas i realtid via Jordbruksverkets öppna WFS-tjänst och filtreras på ägoslag = “Bete” för att visa enbart betesmark. Datan uppdateras årligen och innehåller ~252 000 betesblock över hela Sverige. Varje block har ett unikt block-ID, areal, region och stödkategori. Koordinatsystemet är EPSG:3006 (SWEREF99 TM) — samma som vår NMD-grid, vilket ger exakt pixeljustering utan omprojicering.
Källa: Jordbruksverket, Öppna data, CC BY 4.0. jordbruksverket.se/oppna-data
NDVI (Normalized Difference Vegetation Index) är det mest använda vegetationsindexet inom fjärranalys. Det beräknas som (NIR − Röd) / (NIR + Röd) där NIR är det nära infraröda bandet (B08) och Röd är det synliga röda bandet (B04). Frisk vegetation reflekterar starkt i NIR och absorberar rött ljus, vilket ger höga NDVI-värden (0.3–0.9). I betesmarksanalysen är NDVI centralt för att bedöma betesmarkens vitalitet. Aktivt betade marker visar typiskt NDVI 0.4–0.7, medan obetade gräsmarker ofta når 0.7–0.9. Genom att jämföra NDVI-värden inuti och utanför LPIS-polygonerna kan betestrycket uppskattas.
Källa: Rouse et al., 1974. "Monitoring vegetation systems in the Great Plains with ERTS." Third Earth Resources Technology Satellite-1 Symposium, NASA SP-351.
NDWI (Normalized Difference Water Index) mäter förekomsten av vatten och fuktighet i landskapet. Det beräknas som (Grön − NIR) / (Grön + NIR) med band B03 och B08. Positiva värden (blått på kartan) indikerar öppet vatten, medan negativa värden visar torr mark. I beteslandskapet ger NDWI information om markfuktigheten, vilket är avgörande för beteskvalitet. Våta betesmarker kan indikera dräneringsproblem eller naturliga våtmarker inom blockgränserna.
Källa: McFeeters, S.K., 1996. "The use of the Normalized Difference Water Index (NDWI) in the delineation of open water features." Int. J. Remote Sensing, 17(7).
EVI (Enhanced Vegetation Index) är ett vidareutvecklat vegetationsindex som korrigerar för atmosfäriska störningar och markens bakgrundsreflektion. Till skillnad från NDVI mättas inte EVI lika lätt i områden med tät vegetation, vilket ger mer nyanserad information i frodiga skogsområden. EVI använder tre band — blått (B02), rött (B04) och NIR (B08) — för att skatta vegetationens tillstånd mer robust än NDVI ensamt. EVI ger en bättre bild av betesmarkens biomassa än NDVI i frodiga områden. Eftersom EVI inte mättas vid hög vegetationstäthet kan det skilja på nyligen betade hagar (lägre EVI) och obetade fält (högre EVI).
Källa: Huete et al., 2002. "Overview of the radiometric and biophysical performance of the MODIS vegetation indices." Remote Sensing of Environment, 83(1-2).
COT (Cloud Optical Thickness) anger hur optiskt tjockt molntäcket är över analysområdet. Värden nära noll (ljusgult) innebär klar himmel och tillförlitliga satellitdata, medan högre värden (orange till rött) visar molniga områden där underliggande mark eller hav inte kan ses. Modellen är en ensemble av fem MLP5-nätverk (fem lager djupa neurala nät) som tränats på syntetiska molndata från SMHI. Varje nätverk tar emot 11 Sentinel-2-band (B02–B12, exklusive B01 och B10) och predikterar ett kontinuerligt COT-värde per pixel. Genom att använda medelvärdet av alla fem modellers prediktioner fås ett robust och brusreducerat resultat. I betesmarksanalysen används COT för att verifiera att de analyserade Sentinel-2-scenerna är molnfria. Pixlar med COT > 0.015 maskeras automatiskt före beräkning av vegetationsindex.
Källa: Pirinen, A. et al., 2024. "Creating and Leveraging a Synthetic Dataset of Cloud Optical Thickness Measures for Cloud Detection in MSI." Remote Sensing. GitHub
NMD (Nationellt Marktäckedata) är Sveriges rikstäckande kartläggning av marktäcke och markanvändning, producerad av Naturvårdsverket. Datat har 10 meters upplösning och klassificerar marken i över 25 kategorier — från tallskog och granskog till åkermark, bebyggelse och vatten. I betesmarksanalysen korsrefereras NMD med LPIS-polygonerna för att verifiera vilka markklasser som faktiskt ligger inom de registrerade betesblockens gränser. Detta avslöjar t.ex. om ett betesblock innehåller skog, våtmark eller åkermark utöver den förväntade gräsmarken.
Källa: Naturvårdsverket, "Nationellt Marktäckedata (NMD)." naturvardsverket.se
IMINT Engines betesmarkspipeline hämtar automatiskt alla molnfria Sentinel-2-scener under betessäsongen (april–oktober) för varje LPIS-polygon. För varje tidssnitt hämtas alla 12 spektralband (B01–B12 exkl. B10) och en SCL-baserad molnmask. Tidssnitt med ≥1% moln inom polygonen filtreras bort. Alla kvarstående datum co-registreras geometriskt mot ett referensdatum med sub-pixel Fourier-faskorrelation för att säkerställa perfekt pixeljustering mellan tidssnitt. Resultatet är en (T, 12, H, W)-tensor redo för CNN-LSTM-klassificering av betesaktivitet.
Pirinen, A. et al., 2024. “Detecting Grazing Activity from Satellite Time Series Data.” arXiv:2510.14493
För varje LPIS-betespolygon klassificeras den multitemporala Sentinel-2-tidsserien som aktiv betesmark eller ingen aktivitet. Modellen är en CNN-biLSTM från RISE Research Institutes of Sweden: ett CNN-block (Conv2d → ReLU → MaxPool2d) extraherar rumsliga features per tidssnitt, sedan bearbetas tidsserien av en bidirektionell LSTM (hidden_dim=8). För slutprediktionen tas medianen av de sista 4 tidsstegen, vilket ger robust klassificering. Indata: 12 band × 46×46 px (center crop) × T tidssteg. Modellen är förtränad på LPIS-polygoner i Sverige med data från Jordbruksverket. MIT-licens.
Pirinen, A. et al., 2024. “Detecting Grazing Activity from Satellite Time Series Data.” github.com/aleksispi/pib-ml-grazing (MIT)