Hét vraag- en antwoordplatform van Nederland

Hoe kan ik van een foto door een computerprogramma het aantal pixels van een bepaalde kleur laten tellen? Is daar een programma voor?

Voor mijn biologie opdracht wil ik kijken wat de invloed van zout in het water is op eendenkroos. Ik wil het oppervlak dat door het eendenkroos bezet wordt laten meten. maar alles drijft uit elkaar. Dus dacht ik, misschien kan ik een foto maken en een progamma alle groene pixels laten tellen. Kan dit en zo ja welk progamma moet ik gebruiken?

Verwijderde gebruiker
8 jaar geleden
in: Camera's
4.9K

Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.

Antwoorden (2)

Dat is nog niet zo'n makkelijke vraag, want: wat is groen?

Elke pixel heeft een bepaalde kleurwaarde (laten we uitgaan van de standaard rood-groen-blauw of RGB combinatie), maar er zijn miljoenen kleurcombinaties. Zeg dat je 256 niveaus R, 256 niveaus G en 256 niveaus B hebt, dan heb je dus 256*256*256 = 16.777.216, dus bijna 17 miljoen, mogelijke kleuren. Dit is een zogenaamde 24-bits kleurdiepte. Als je nog een hogere kleurresolutie gebruikt zijn dat zelfs nog veel meer combinaties, maar laten we even van 24-bits uitgaan.

In een foto zal vrijwel geen enkele pixel helemaal groen zijn (d.w.z. dat de R en de B waarden 0 zijn), maar zal iets dat er groen uitziet gewoon betekenen dat de G-waarde een eind boven de R- en B-waarden uitsteekt. Stel we nemen de R/G/B combinatie 0/255/0, dat is het allergroenst dat er is. Maar nemen we 127/255/127, dan is het nog steeds groen, maar dan wat wittiger/valiger. Nemen we nou 127/255/0, dus we halen al het blauw eruit maar laten het rood er op halve kracht in, dan wordt het: half rood + vol groen = geel. Nou ja, eerder groengeel-achtig, want er zit nog steeds veel meer groen in dan rood. Et cetera. Dus de vraag gaat zijn: wanneer noem je een kleur groen en wanneer niet.

Bottom line: als jij "groene" pixels wilt tellen zul je eerst een binaire definitie moeten vinden van groen, m.a.w. een bepaalde berekening op de R/G/B waarden waaruit per combinatie een antwoord rolt op de vraag "is dit wel of niet 'groen'?" Dit kan geen standaard definitie zijn aangezien je er een heel specifiek doel mee hebt, en het kan ook zo maar nog van de kwaliteit van de foto's afhangen.

Als je in plaats van een telling wellicht ook wat hebt aan een soort "score" voor de totale groen-graad van de afbeelding (zodat je die bijvoorbeeld met de score van een andere afbeelding kunt vergelijken om de kijken of de afbeelding groener of minder groen is) wordt het wat makkelijker en zou je bijvoorbeeld de groen-waarden van alle pixels kunnen optellen en dan middelen.

Je beste optie is denk ik sowieso om een histografische representatie van het kleurspectrum te laten maken door een stuk bestaande software, zoals "imagemagick". (Schijnt ook voor Windows beschikbaar te zijn, maar onder Ubuntu maakt "convert plaatje.png -format %c histogram:info:-" een prachtige tabel. Zodra je die hebt kun je ermee aan het rekenen slaan zoals je zelf wilt.

Succes!
(Lees meer...)
Verwijderde gebruiker
8 jaar geleden
Verwijderde gebruiker
8 jaar geleden
Je hebt nog zoiets als fuzziness waarbij je een bereik hebt voor een specifieke kleur rood/groen/blauw... Een green-screen keyer die keyed ook niet voor een absolute waarde in het groen, je kunt daar naar gelang je wilt wel tot 50% vanaf wijken(wordt wel een hele slechte key)
Verwijderde gebruiker
8 jaar geleden
Precies, en dat bereik kun je helemaal vrijelijk met de hand vaststellen als je een parser schrijft voor het kleurhistogram in tabelvorm. Dat lijkt mij in ieder geval by far de beste optie om het gestelde doel te bereiken.
Met photoshop kun je dat doen. Het gaat als volgt: Kies de kleur die je geteld wil worden als voorgrond kleur(kun je met de colorpicker uit je foto halen desgewenst)
Ga naar 'select' -> 'color range' en zet 'fuzziness' naar 0, en vink 'localized color clusters' uit en klik OK. Nu kun je in het histogram het aantal pixels die de foto heeft voor die specifieke kleur zien in aantal. Voor het histogram ga je naar 'Window' -> 'Histogram' Let nog wel even op dat het histogram op RGB staat en niet voor een specifiek kanaal.

Sorry voor de Engelse begrippen, ik heb Photoshop alleen in het Engels.
(Lees meer...)
Verwijderde gebruiker
8 jaar geleden
Verwijderde gebruiker
8 jaar geleden
Dat gaat werken voor een *specifieke* kleurcombinatie, en er zijn mogelijk miljoenen kleurcombinaties die onder de noemer "groen" vallen. Dus ik denk niet dat dat voldoende gaat zijn. Maar het werkt natuurlijk wel :)

Weet jij het beter..?

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

0 / 5000
Gekozen afbeelding