Alle indlæg af Michael Fosgerau

Strukturel processering af billeder

Når billeder skal processeres programmatisk anvendes en matematisk metode der kaldes morfologiske transformationer (morphological transformations), mønster genkendelse (pattern recognition) og/eller egenskabs ekstraktion (feature extraction).

Her i juletiden har mange været påvirket af huller i asfalten langs eksempeltvist Vejle fjordbroen. Hvis vi begiver os ud i et tankeeksperiment er det med relativt simple billedbehandlingsalgoritmer “nemt” at detektere en betydelig andel af opbyggende huller og dermed kunne man forebyggende iværksætte udbedrende vejarbejde før et problem opstår.

Et eksempel kunne være anvendelse af thresholding, erosion og dilation på en stribe billeder taget af asfaltoverfladen på udvalgte vejstrækninger. For resten af denne artikel antages det, at sådanne billeder er tilgængelige.

Herunder vises en række billeder af asfaltoverflader hvor der er opstået minimale huller og sprækker, samt hvor alvorlige slaghuller forekommer og er delvist udbedrede. Ligeledes vises en normal asfalt overflade. Under hvert billede vises en morfologisk behandlet udgave, der har været underlagt den samme algoritme for samtlige billeder. Givet disse resultatbilleder er det relativt simpelt at afgøre hvorvidt et behandlet resultatbillede udgør en kandidat til manuel inspektion eller ej.

Klik på billedet for at se en stor udgave.

“Proof-of-concept” algoritmen benyttet på resultatbillederne herover er skrevet i .NET C#, og ser overordnet således ud:

Bitmap input = new Bitmap(filename);
Bitmap output =
  Dilate(
    Dilate(
      Threshold(
        Dilate(
          Dilate(
            Dilate(
              Dilate(
                Grayscale(input)
              )
            )
          )
        ), 70
      )
    )
  );

output.Save(
  Path.GetFileNameWithoutExtension(filename) +
  ".processed" + Path.GetExtension(filename));

Tankeeksperimentet skal naturligvis føres videre ud før det bliver praktisk anvendeligt.

Det er klart at der vil være tale om mange tusinde billeder og adskillige terrabytes data, hvorfor system arkitekturen bag processeringssystemet bør være baseret på en skalerbar multiserver/multikerne teknologi. Et eksempel på en gratis open-source arkitektur kunne være AMD’s Framewave eller nVidia’s CUDA.

Ligeledes vil der være særlige elementer i billederne der skal tages særlig hånd om, f.eks. vejstriber og overgange mellem forskellige belægningstyper med videre.

Tavlemagneter behøver ikke være kedelige

Jeg har længe haft mig en 1.33 gHz T-Bird Athlon AMD processor tavlemagnet jeg lavede tilbage i universitetstiden. Det var på daværende tidspunkt muligvist den absolut dyreste tavlemagnet i verden, svarende til en værdi af omkring 3-4.000 kroner. CPU’en var sprit ny men desværre defekt ved levering, og jeg fik en ny tilsendt uden beregning til “lynet” (min første studie-pc).

Det er egentligt ganske nemt. Find en CPU, en anden chip, eller en del af en print-plade og sav løs. Lim så en neodymium magnet fast på bagsiden med sekundlim – og voilà: Et styk ganske dekorativ og anderledes tavlemagnet er skabt.

Samlingen blev udvidet her i dag, da jeg under oprydning i vores skur herhjemme fandt et gammelt ATI Rage Pro turbo AGP grafikkort.

Så nu pryder både en 1.33 gHz T-Bird Athlon AMD CPU, en ATI 3D Rage Pro Turbo GPU samt 4 stk GM72V161621 SDRAM chips firmaets whiteboardtavle.

Spast!