Måle prosenten av svart i et bilde med bare sort og hvitt

Diskuter teknikker, photoshop, tegnebrett eller andre ting som har med illustrasjoner, grafisk design og webdesign å gjøre.

Moderatorer: Super Moderatorer, Admins

Brukeravatar

Trådstarter
jaswane
Innlegg: 46
Registrert: ons 25 jun, 2008
Sted: Oslo
Kontakt:

Måle prosenten av svart i et bilde med bare sort og hvitt

Legg innav jaswane » ons 02 des, 2009

Hei!

Min første post. Jippi.

Jeg har følgende problemstilling: Jeg har et bilde som er bare sort og hvitt. Altså bare "fargene" RGB 0,0,0 og 255,255,255. Ingen mellomtoner.

Finnes det noen måte å måle hvor stor prosentandel av bildet som er svart f.eks.? Jeg bruker stort sett Photoshop, men har ikke funnet noen verktøy som gjør jobben her. Kanskje det finnes noen gratisprogrammer med denne funksjonen, men har ikke funnet det enda.

Takker for tips og hjelp!

hilsen meg

Brukeravatar

8D
Innlegg: 247
Registrert: tir 20 mar, 2007
Sted: Oslo
Kontakt:

Legg innav 8D » ons 02 des, 2009

Det bare å sett igang og tele pixler det :p.

Fines nok en addin for PS bare man søker og leter lit.

Jeg er glad i å bruke cnet.com hvis du skal fine alt mulige små gratis programmer.
Det fins ikke bare 3 men uendelige dimensjoner... and i got to do it all!!!

Brukeravatar

Medi8or
Innlegg: 1066
Registrert: fre 12 mai, 2006
Sted: Lyngdal

Legg innav Medi8or » ons 02 des, 2009

Mulig jeg tar feil, men hvis du bruker "Average" i filtermenyen? ;)

Filter -> Blur -> Average

Sjekk verdien i Info-panelet: (255 - LestVerdi)/255*100
Sist redigert av Medi8or den ons 02 des, 2009, redigert 1 gang totalt.
My dongle is small, hard, and purple.

Brukeravatar

Kelemvor
Innlegg: 1221
Registrert: man 19 jun, 2006
Sted: Tønsberg
Kontakt:

Legg innav Kelemvor » ons 02 des, 2009

Har laget et lite script i python for deg.

Scriptet krever følgende:
- Python 2.6 (dl)
- Python Imaging Library for Python 2.6 (dl)

Jeg har ikke testet det mot andre versjoner, men hvis man har en annen Python 2.x trenger man et annet PIL-library.
Jeg har heller ikke testet andre formater enn tif, men jeg tror det skulle gå bra.

For å kjøre scriptet kopierer du koden som ligger i bunnen her inn i f.eks. notepad og lagrer filen i Python-folderen som colorcounter.py (du kan legge den hvor du vil, men da må du huske filbanen).

Deretter fyrer du opp commandprompten ('cmd' i kjør-vinduet), hopper inn i Python-folderen (som regel c:\Python26) og skriver inn følgende:

Kode: Velg alt

python <navnet på scriptet> "bane/og/navn/på/bilde/1" "bane/og/navn/på/bilde/2"


Eksempel:

Kode: Velg alt

python colorcounter.py "g:\testimage.tif" "g:/testimage2.tif"


Du kan sjekke så mange bilder du vil samtidig.

Kode: Velg alt

from PIL import Image
import sys, os

def lazyprinter(text, line=0):
    print text.rjust(40)

    if line:
        print "%s" % (40 * "=")

def countPixels(sourceimg):
    try:       
        im = Image.open(sourceimg)
        colors = im.getcolors()
        pixelcount = im.size[0] * im.size[1]
        white = (colors[0][0]*100.0)/pixelcount
        black = (colors[-1][0]*100.0)/pixelcount
        rest = 100.0 - white - black
       
        lazyprinter("%s contains:" % os.path.basename(sourceimg).upper())
        lazyprinter("%d (%.2f%%) white pixels" % (colors[0][0], white))
        lazyprinter("%d (%.2f%%) black pixels" % (colors[-1][0],black))
        if (rest > 0):
            lazyprinter("%d (%.2f%%) other pixels" % (pixelcount-(colors[0][0]+colors[-1][0]),rest))
        lazyprinter("", 1)
    except IOError:
        print "error"

lazyprinter("", 1)
lazyprinter("Starting Operation", 1)

files = sys.argv[1:]

for arg in files:
    countPixels(arg)

lazyprinter("Ending Operation", 1)

Brukeravatar

havards
Innlegg: 211
Registrert: ons 13 des, 2006

Legg innav havards » tor 03 des, 2009

tenkte jeg skulle prøve å få til dette i maxscript (:
så dette funker bare hvis du har 3dsmax

Kode: Velg alt

theMap = selectBitmap caption:"UGGABUGGA"
global blacks, whites = 0
for i = 1 to theMap.height do
(
   pixel_line = getpixels theMap [0,i-1] theMap.width
   for j = 1 to theMap.width do
   (
      if pixel_line[j] == (color 0 0 0) then blacks += 1
      else if pixel_line[j] == (color 255 255 255) then whites += 1   
   )
)
dim = (theMap.height * theMap.width) as float
whites = ((whites as float) / dim) * 100
blacks = ((blacks as float) / dim) * 100
messagebox ("White: " +  whites as string + "%" + "\n" + "Black: " +  blacks as string + "%")

kopier og lagre som .ms eller bare paste inn i maxscript-editoren og kjør den
nb: resultatet blir ikke supernøyaktig pga avrundingsfeil tror jeg

Brukeravatar

Trådstarter
jaswane
Innlegg: 46
Registrert: ons 25 jun, 2008
Sted: Oslo
Kontakt:

Legg innav jaswane » tor 03 des, 2009

Mulig jeg tar feil, men hvis du bruker "Average" i filtermenyen?

Filter -> Blur -> Average

Sjekk verdien i Info-panelet: (255 - LestVerdi)/255*100


Tror faktisk dette virket altså... Hvis jeg endret bildet til greyscale bruker average blur, og sjekker i infopanelet kommer en prosent verdi på K: (Black).
- Laget et bilde som var halvparten sort og halvparten hvitt, da ble verdien 50% etter average.
- 3/4 sort ble 75%
- 10 piksler, 1 sort og resten hvit +average = 10% black.

Nå skal jeg prøve de andre metodene. :) Takk for svar. Dere er så flinke.


Gå tilbake til «2D diskusjoner og spørsmål»

Hvem er online

Brukere i dette forumet: Ingen registrerte brukere og 1 gjest

cron