HomeAI & Machine LearningGewasplaagdetector — Textuurkenmerk-Classifier Live

🐛 Gewasplaagdetector — Textuurkenmerk-Classifier Live

Bekijk een echte textuurkenmerk (lokale variantie/randdichtheid) classifier die een gesimuleerd bladbeeldraster patch voor patch scant, en live plaagschadegebieden markeert als een k-NN-stemming tegen gezonde/beschadigde referentiepatches.

AI & Machine Learning3DGemiddeld60 FPS
ai-agriculture-pest-detection ↗ Los openen

Over deze simulatie

Deze simulatie bouwt een echte, zij het compacte, computervisiepijplijn vanaf nul. Een procedureel synthetisch bladbeeld wordt pixel voor pixel gegenereerd, compleet met grillige plekken van plaagschade waarvan de lokale statistieken echt afwijken van gezond weefsel. Een scanvenster veegt vervolgens patch voor patch over het blad, en voor elke patch worden drie echte textuurkenmerken rechtstreeks uit de pixelbuffer berekend: gemiddelde intensiteit, lokale variantie en op Sobel gebaseerde randdichtheid. Elke patch wordt geclassificeerd als gezond of beschadigd door een echte k-nearest-neighbours-stemming tegen een gelabelde referentieset, waarbij de beslissing live wordt gevisualiseerd in de kenmerkenruimte.

🔬 Wat het laat zien

Een met CanvasTexture gerenderd blad met een scanvenster dat over een 12×12 patchraster veegt. De gemiddelde intensiteit, populatievariantie en Sobel-randdichtheid van elke patch worden berekend uit echte pixeldata, genormaliseerd en vergeleken via Euclidische afstand met een gelabelde referentieset van gezonde/beschadigde voorbeelden uit hetzelfde blad. Het spreidingspaneel in de kenmerkenruimte plot elke referentiepatch plus de huidige patch en tekent lijnen naar zijn k dichtstbijzijnde buren.

🎮 Hoe te gebruiken

Pas k (1–11) aan om te veranderen hoeveel buren stemmen, en de schade-stemdrempel (0,1–0,9) om te veranderen hoeveel van die buren "beschadigd" moeten zeggen voordat de patch wordt gemarkeerd. Scansnelheid bepaalt hoe snel het venster veegt. Blad regenereren neemt een nieuw synthetisch blad met nieuwe schadeplekken en bouwt de referentieset opnieuw op; Pauzeren/Hervatten bevriest de scan voor inspectie.

💡 Wist je dat?

Sobel-randdetectie, uitgevonden in de vroege jaren 70, is nog steeds een van de meest gebruikte randoperatoren omdat de twee kleine 3×3-kernels het beeldgradiënt goedkoop genoeg benaderen om in real time te draaien — precies wat deze simulatie in staat stelt om voor elke patch, elk frame, echte randdichtheid opnieuw te berekenen zonder ooit het antwoord vooraf te bakken.

Veelgestelde vragen

Welke echte kenmerken berekent de classifier uit elke patch?

Voor elke gescande patch leest de simulatie de werkelijke pixeldata van het synthetische bladbeeld en berekent drie echte textuurstatistieken: de gemiddelde grijswaarde-intensiteit, de populatievariantie van intensiteiten binnen de patch (een maat voor lokale ruwheid), en een randdichtheid verkregen door echte Sobel Gx/Gy-convolutiekernels over elke interne pixel te laten lopen en te tellen hoeveel de gradiëntmagnitude-drempel overschrijden. Geen van deze getallen is nagemaakt of opgezocht — ze zijn direct afgeleid van de RGBA-buffer die ook aandrijft wat je op het scherm ziet.

Hoe beslist de k-nearest-neighbours-classifier eigenlijk gezond versus beschadigd?

Een referentieset van patches wordt bemonsterd uit hetzelfde blad en gelabeld met behulp van ground-truth plaagschade-dekking (alleen gebruikt om deze gelabelde set op te bouwen, nooit gegeven aan de classifier voor onbekende patches). De drie kenmerken van elke referentiepatch worden z-score genormaliseerd. Wanneer een nieuwe patch wordt gescand, worden de kenmerken op dezelfde manier genormaliseerd, wordt de echte Euclidische afstand tot elke referentiepatch berekend, worden de k dichtstbijzijnde bewaard, en wordt de patch als beschadigd gemarkeerd als de fractie beschadigde buren onder die k voldoet aan de schade-stemdrempel-schuif — anders is hij gezond.

Waarom verhoogt plaagschade lokale variantie en randdichtheid?

Necrotisch of aangevreten bladweefsel heeft doorgaans onregelmatige, contrastrijke vlekken in plaats van het gladde gevlekte groen van gezond weefsel, dus de pixelintensiteitsvariantie binnen een beschadigde patch is hoger. De rafelige grens tussen beschadigd en gezond weefsel produceert ook veel meer scherpe intensiteitsovergangen, precies wat een Sobel-filter is ontworpen om te detecteren, dus randdichtheid piekt nabij en binnen schade.

Wat veranderen de k-waarde en de schade-stemdrempel-instellingen?

k bepaalt hoeveel dichtstbijzijnde referentiepatches worden geraadpleegd voor elke stemming — een kleine k reageert snel op lokale textuur maar is ruisiger, een grote k vlakt de beslissing af maar kan kleine schadeplekken vervagen. De schade-stemdrempel bepaalt welke fractie van die k buren als beschadigd gelabeld moet zijn voordat de patch zelf als beschadigd wordt gemarkeerd; verlagen maakt de detector gevoeliger (meer valse positieven), verhogen maakt hem strenger (meer gemiste schade).

Is dit een echte classifier of gewoon een kleurdrempel vermomd?

Het is een echte, zij het vereenvoudigde, machine-learningpijplijn: echte kenmerkextractie (variantie, Sobel-randdichtheid, gemiddelde intensiteit) uit echte pixeldata, een echte gelabelde referentieset, echte Euclidische afstandsberekening en een echte meerderheidsstem k-NN-beslisregel. Het laat opzettelijk dingen weg zoals data-augmentatie of een geleerde metriek, maar elk getal dat de classificatie aandrijft, wordt live berekend uit het beeld, niet handmatig per patch getagd.

⚙ Onder de motorkap

Een echte textuurkenmerk (lokale variantie/randdichtheid) classifier scant een gesimuleerd bladbeeldraster patch voor patch, en markeert live plaagschadegebieden als een k-NN-stemming tegen gezonde/beschadigde referentiepatches.

Canvas 2DComputer Visionk-NNTexture FeaturesSobel Edge Detection

3D · Three.js / WebGL renderer · 60 FPS target · runs fully client-side, no install

What did you find?

Add reproduction steps (optional)