Automatische objectdetectie voor 3D-stadsmodellen

29 maart 2022

Binnen de huidige “digitalisering” van onze samenleving, en de daarmee samenhangende toenemende digitale transformatie van bedrijven en overheden, worden 3D-stadsmodellen en digital twins steeds belangrijker. Ze zijn, in grote mate, een belangrijk onderdeel geworden voor een hedendaags (stads)bestuur en bieden daarenboven vele nieuwe mogelijkheden.

 

 

Het belang van AI-verrijkte 3D-gebouweninformatie


In de “smart city” context zien we dat 3D-stadsmodellen en digital twins hun toepassingen hebben gevonden in verschillende domeinen, zoals veiligheid, mobiliteit en toerisme. Voorbeelden hiervan zijn het analyseren van schaduwvorming door geplande gebouwen, visualisaties van stadsontwikkelingen, en het berekenen en simuleren van noodscenario’s in het kader van risicobeheer (bv. overstromingen, stroomstoringen, enz.).

 

Om dit soort geavanceerde berekeningen en visualisaties mogelijk te maken, is het noodzakelijk dat de individuele gebouwen in het 3D-stadsmodel voldoende gedetailleerd zijn, en bijvoorbeeld kenmerken voor alle dak- en wandoppervlakten bevatten. Aan de hand van algoritmen voor objectdetectie wordt het bovendien mogelijk om de gebouwen te verrijken met extra informatie, zoals dakramen of zonnepanelen.

 

Door deze verrijkte modellen te combineren met geometrische kenmerken zoals volume, oppervlakte, oriëntatie en/of helling, wordt het mogelijk om de impact van energiebesparende maatregelen te simuleren en berekenen. Nieuwsgierig geworden naar hoe we dat precies aanpakken? Lees dan zeker verder!

 

 

Brondata

 

Avineon heeft onlangs een proefproject uitgevoerd op het gebied van automatische objectdetectie. Onze voornaamste doelstelling binnen dit project was om, aan de hand van artificiële intelligentie (AI), correcte inschattingen te generen voor de locatie, grootte en contourlijnen van dakobjecten, zoals ramen en zonnepanelen, waarbij de interactie tussen mens en machine zo min mogelijk werd gehouden.

 

Het proefgebied binnen het project bevond zich in Roeselare, een stad in België met zo’n 60 000 inwoners en zo’n 45 000 gebouwen, en bestond uit twee testgebieden van 5km², elk met ongeveer 500 gebouwen (Afbeelding 1).

Picture1"Afbeelding 1: Kaart van Roeselare met de plattegrond van het gebouwenbestand. De twee testgebieden zijn aangeduid in het blauw."

 

Om dit proefproject uit te voeren, beschikten we zowel over luchtfoto’s als over een zeer nauwkeurige 3D-weergave van de gebouwen (en daken). We zijn uitgegaan van orthofoto’s met een hoge resolutie (3cm) en creëerden, als onderdeel van het project, een getextureerde 3D-weergave van de gebouwen, gebruik makend van zowel stereo als oblieke beelden (Afbeeldingen 2 en 3).

Picture2"Afbeelding 2: Birdseye zicht op testgebied 2 ("OpenSchoolwijk"). Orthofoto met dakomtrekken gemarkeerd in het rood, blauw of oker, afhankelijk van het daktype (plat, rood hellend, overig hellend)."

Picture3"Afbeelding 3: Screenshot webviewer "OpenSchoolwijk"."

 

Dankzij de gedetailleerde geometrie van de daken in het 3D-model, konden we algoritmen creëren die zowel efficiënt als begrijpelijk zijn. In de volgende twee hoofdstukken zullen we ons dan ook richten op het uitleggen van de functionaliteit van onze algoritmen, en op het tonen van de resultaten. Om de lengte van dit artikel enigszins te beperken, zullen we alleen de detectie van ramen behandelen, maar de methodologie kan eveneens worden toegepast voor de detectie van zonnepanelen.

 

 

Waarde- en kleurcontrasten

 

Een korte blik op de daken in testgebied 1 leert ons dat we, in principe, in staat zouden moeten zijn om de meeste ramen automatisch te detecteren door het duidelijke verschil in “contrastwaarde” met de omringende daktextuur. Het begrip “contrastwaarde” ontlenen we hier uit de fotografie, waarbinnen de terminologie wordt gebruikt om het spectrum van lichte en donkere tonen op een afbeelding aan te duiden.


Het gebouwenbestand in dit testgebied (testgebied 1) is bovendien vrij uniform en bestaat hoofdzakelijk uit gebouwen met donkerblauwe of grijze daken, terwijl de ramen vaak veel lichtere (blauwe) toonwaarden hebben (Afbeeldingen 4 en 5).

Picture4"Afbeelding 4: Birdseye zicht op testgebied 1, waarop een gebouwenbestand te zien is met daktexturen in donkere toonwaarden (donker blauw/grijs)."

Picture5

"Afbeelding 5: Close-up van een gebouw binnen testgebied 1: RGB-kleur vs. grijswaardecontrast."

 

De oranje contourlijnen op “Afbeelding 5” werden gegenereerd door ons algoritme. In dit geval was het grijswaardecontrast alleen voldoende om nauwkeurige raamomtrekken in te schatten. Dit is echter niet langer het geval voor testgebied 2 binnen het proefproject. Testgebied 2 verschilt namelijk, statistisch gezien, nogal sterk van testgebied 1, vooral omdat er in testgebied 2 veel meer schuine (hellende) rode daken aanwezig zijn (Tabel 1).

Daktype Testgebied 1 Testgebied 2
Totale opp. (ha.) Percentage Totale opp. (ha.) Percentage
Schuin, rood 0,90 31,0% 3,87 63,8%
Schuin, overig 1,71 59,1% 0,93 15,3%
Plat 0,29 9,9% 1,26 20,9%
Totaal 2,90 100% 6,06 100%

"Tabel 1: Daktype in testgebied 1 vs. testgebied 2."

 

Hoewel de ramen op de rode daken relatief makkelijk te zien zijn met het “blote oog”, is dit niet het geval wanneer de ramen worden gedetecteerd aan de hand van de contrastwaarde-logica die hierboven werd uitgelegd. Op “Afbeelding 6” hieronder zien we bijvoorbeeld twee ramen die een vergelijkbare grijstint hebben met het omringde dak, waardoor ze erg moeilijk te detecteren zijn op het grijswaardenbeeld.

Picture6"Afbeelding 6: RGB-kleuropname vs. contrastwaarde van dezelfde scene."

 

Dergelijke gevallen kwamen vrij vaak voor in testgebied 2, en vereisten dus een andere aanpak. We zullen hier duidelijk moeten vertrouwen op het kleurencontrast in de RGB-afbeelding om de raamomtrekken van dakramen correct in te schatten.

 

 

Het implementeren van een automatische objectdetectie in FME

 

Het repliceren van deze, schijnbaar triviale, waarnemingen uit het vorige hoofdstuk in een computer is echter niet zo eenvoudig. Maar, dankzij de realistisch vastgelegde dakgeometrie, consistent met de dakcontouren op de orthofoto, zijn we erin geslaagd om correcte inschattingen te generen zonder gebruik te moeten maken van al te ingewikkelde berekeningen.


Als een eerste stap in het kwantificeren van de waarnemingen uit het vorige hoofdstuk, selecteren we een dakoppervlak (Afbeeldingen 7 en 8), en maken dan vervolgens een histogram van de intensiteitswaarden voor alle pixels van dit geselecteerde oppervlak.

Picture7"Afbeelding 7: Locatie van het geselecteerde dak, vastgelegd in 3D."

Picture8"Afbeelding 8: Close-up van het gemarkeerde dakoppervlak op de orthofoto."

 

We zetten de pixels van de dakachtergrond (daktextuur) in het donker blauw op een histogram, en voegen de pixels van de dakramen toe in het licht blauw. Hoewel er enige vorm van overlap is, zien we duidelijk dat, over het algemeen, de pixels van de ramen veel hogere waarden hebben dan die van de dakachtergrond (Afbeelding 9). Deze contrastwaarde kan dus worden gebruikt om de ramen te onderscheiden van de dakachtergrond, en zo de omtrek van de ramen af te leiden.

Picture9"Afbeelding 9: Histogram van de intensiteitswaarden van het geselecteerde dakoppervlak."

 

Aangezien elk dak zijn eigen, unieke, kleur- en toonwaarden heeft, is het onmogelijk om één uniek waardebereik te definiëren dat voor alle daken toepasbaar is. We hebben echter vastgesteld dat de gemiddelde intensiteitswaarde vaak een goede inschatting geeft voor de “daktextuurwaarde”. Op basis hiervan hebben we dan ook een standaard gecreëerd die kan worden gebruikt voor het meten van de contrastwaarde voor alle dakoppervlakken.


Als volgende stap hebben wij deze methodologie in een FME-workflow geïmplementeerd, waarbij we extra voorwaarden aan de geometrie van onze voorspellingen hebben toegevoegd. Dit om foutieve geometrieën, die kunnen worden veroorzaakt door soms extreme pixel intensiteitswaarden op de dakachtergrond, uit te filteren. Op deze manier konden we bijna 93% van de ramen in testgebied 1 detecteren, en tegelijkertijd de “vals-positieven” tot een minimum beperken (Afbeelding 10).

Picture10"Afbeelding 10: Hoge raamdetectie ratio in testgebied 1, gebruik makend van de contrastwaarde tussen daken vs. ramen."

 

In testgebied 2 presteerde ons algoritme goed op platte daken: 86% van de dakramen werd gedetecteerd. Het totale detectiepercentage daalde echter tot bijna 60%, wat aangaf dat we de rode daken uit de analyse moesten halen, en ons algoritme moesten aanpassen om raamomtrekken te extraheren op basis van het kleurencontrast (rood) tussen daken en ramen, in plaats van op basis van de contrastwaarde (blauw/grijs) (Afbeelding 11).

Picture13"Afbeelding 11: In testgebied 2 daalt het detectiepercentage voor schuine rode daken bij gebruik van de contrastwaarde. De meeste ramen op de platte daken worden echter nog wel steeds gedecteerd."

 

Hoewel er meerdere manieren zijn om het kleurencontrast in een afbeelding te meten, hebben wij ervoor gekozen om, uit de oorspronkelijke RGB-afbeelding, een grijswaardenafbeelding te genereren waarin rode pixels worden weergeven in lichte toonwaarden, terwijl andere kleuren in donkere tonen worden afgebeeld (Afbeelding 12).

 

Op dit grijswaardenbeeld passen we dan vervolgens dezelfde contrastwaarde-technieken toe zoals eerder beschreven. Hierdoor lopen de detectiepercentages voor de schuine (hellende) rode daken op tot 90% (Afbeelding 13).

Picture12"Afbeelding 12: Op de grijswaardenafbeelding rechts worden rode kleuren in lichtere tinten weergegeven dan andere kleuren."

Picture13"Afbeelding 13: Verhoogd detectiepercentage op schuine rode daken, gebruik makend van het kleurenconstrast."

 

 

Conclusies en toekomstig onderzoek

 

Het toevoegen van deze extra informatie over dakramen en/of zonnepanelen aan uw reeds bestaande 3D-stadsmodel opent dus krachtige perspectieven voor het analyseren en visualiseren van zowel huidige als toekomstige beleidsscenario’s met betrekking tot energie-efficiëntie, klimaatverandering, stedelijke ontwikkeling, etc., als onderdeel van klimaatactieplannen. Avineon kan deze, via AI, automatisch detecteren en vervolgens transformeren tot 3D-polygonen die perfect aansluiten op het dak (locatie, oriëntatie, helling).

 

Nu we de dakomtrekken van een 3D-model kunnen gebruiken om orthofoto’s te knippen en vervolgens waarde- en kleurcontrasten te analyseren, hebben we een manier gevonden om, automatisch, nauwkeurige geometrieën voor ramen en zonnepanelen op dakoppervlakken te bepalen. We onderzoeken momenteel dan ook volop of we gelijkaardige technieken kunnen veralgemenen naar het detecteren van ramen en deuren op muuroppervlakken.