Ja točno to sem mislu najlepša hvala za razlago

LP aleš

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of
Tomi Erlih
Sent: Tuesday, January 02, 2007 6:27 PM
To: FRIClist
Subject: Re: [Friclist] GTP seminar

Če prav razumem, te zanima kako iz slike ki jo imaš na disku dobiti
podatke o intezitetah barv pikslov (branje slike)...

Prof. Jager je predlagal, da za format slike uporabljamo PPM in PGM
format v ASCII zapisu,  za katera velaj sledeče - prve 4, oz. 5 vrstic
so podatki o sliki in veljajo tako za PPM, kot za PGM:
1. vrstica: tip slike - PGM v ASCII zapisu "P2", v binarnem pa "P5",
PPM v ASCII zapisu "P3" in v binarnem zapisu "P6"
2. vrstica: je pogojna, obstaja le, če se začne s "#" in kar sledi je
komentar
3. vrstica (ce komentarja ni, je to 2. vrstica...): podatki o širini
in višini slike
4. vrstica: podatek o najvecji intenziteti (ce bos shranjeval slike v
ASCII zapisu je to zmeraj 256)

vse naslednje vrstice vsebujejo le en podatek in tu je razlika med PPM
in PGM. Za PPM v ASCII obliki potrebuješ za 1 piksel 3 vrstice (rdečo,
zeleno in modro intenziteto), medtem ko pri vseh ostalih kombinacijah
zapisa zadostuje 1 vrstica za 1 piksel. Za branje ASCII zapisa lahko
uporabiš kar fscanf() funkcijo.

PRIMER:
Tabela za sliko velikosti 3x4 piksle v obeh formati:
za PGM                     zapis tega v datoteki:
+----+-----+----+----+      P2
 | 15 | 20 | 23 | Gr |      # Nek komentar
+----+----+-----+----+      4 3
 | Gr | Gr | Gr | Gr |      256
+----+----+-----+----+      15
 | Gr | Gr | Gr | Gr |       20
+----+----+-----+----+       23
                                  ...

za PPM
         zapis v datoteki
+----+------+----+----+ ----+-----+----+----+----+-----+----+----+        P3
 | 12 | 102 | 4  | 15 | 99 | 5    | R  | G  | B  | R   | G  | B  |
   # Komentar
+----+------+----+----+ ----+-----+----+----+----+-----+----+----+        4
3
 | R  | G    | B  | R |  G  | B   | R  | G  | B  | R   | G  | B  |
256
+----+------+----+----+ ----+-----+----+----+----+-----+----+----+        12
 | R  | G    | B  | R |  G  | B   | R  | G  | B  | R   | G  | B  |
102
+----+------+----+----+ ----+-----+----+----+----+-----+----+----+        4

                15

                99

                5

                ...

(pol)algoritem v C:

unsigned char *matrika;
int visina, sirina, max_intenzitet, r, g, b;
int i, j;
FILE *slika;

silka = fopen ("ime_slike.ppm", "r");

/* tu se vstavi par vrstic, ki berejo podatke o tipu in komentar */

fscanf (slika, "%d %d\n%d", &sirina, &visina, &max_intenzitet);

matrika = (unsigned char *) malloc (sirina * visina * 3 * sizeof (char));

for (i = 0; i < visina; i++)
{
   for (j = 0; j < sirina; j++)
   {
      fscanf (slika, "%d\n%d\n%d", &r, &g, &b);

      matrika[i][3*j] = r;
      matrika[i][3*j+1] = g;
      matrika[i][3*j+2] = b;
   }
}

fclose (slika);


in tako napolniš matriko za PPM (za PGM, ni potrebno brati 3
intenzitet, ampak samo eno, zato je potrebno primerno popravit
algoritem). Upam da bo zadosti natančen odgovor...




lp,
tomi


On 1/2/07, Ales Glavina <[EMAIL PROTECTED]> wrote:
> Torej delam v GTK-ju, jaz morem dobit matriko pikslov ki jo potem
primerjam
> z eno masko in se odločim ali pobarvam ali ne ta pixel in ne vem kako
dobit
> to matriko s pixli, ostalo ni problema imam že narjeno samo to me še muči
>
> Lp Aleš
>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf
Of
> Tomi Erlih
> Sent: Tuesday, January 02, 2007 3:30 PM
> To: FRIClist
> Subject: Re: [Friclist] GTP seminar
>
> Glede na to da so vrednosti vseh pikslov shranjeni v matkiri z
> intenzitetami barv, dobis vrednosti  za piksel[i][j] vrednosti rdece:
> matrika[i][j*3], zelene: matrika[i][j*3+1], modre: marika[i][j*3+2]...
>
> A predvidevam, da te ni tocno to zanimalo..malo bolj natancno opisi,
> kaj tee zanima in v cem delas (motif, gtk, Qt, ...)
>
>
> lp,
> tomi
>
> On 1/2/07, Ales Glavina <[EMAIL PROTECTED]> wrote:
> >  Je kdo ki ve kako se dobi vrednosti posameznih pikslov od slike ki smo
jo
> > izbrali za obdelavo?
> >
> >
> >
> > Hvala
> >
> >


Reply via email to