ColorSegment.cpp File Reference

#include <string>
#include <cmath>
#include <ctime>
#include <vector>
#include "ColorSegment.h"
#include "Region.h"
#include "Pixel.h"
#include "ipl98\cpp\image.h"

Functions

void average (int *p, int s, int r)
 Oppdaterer bildevektoren med glattet verdi av aktuell piksel basert på gjennomsnittet av de åtte nærmeste nabopikslenes verdier.
int bestNeigbourRegion (int i, int *p, int *l, int w, int h, int *values, int *count, int regions)
 Finner hvilken naboregion som er best skikket til å spise opp aktuell piksel.
bool blackBorder (int *l, int i, int w, int h)
 Sjekker om aktuell piksel ligger på konturen til en svart/uspesifisert region.
void blur (int *p, int w, int h, int t1, int t2)
 Metode som glatter bildet i posisjoner som tilsvarer regioners innhold (dvs ikke langs konturer).
int ** calculateRegion (int *p, int *l, int numberOfLabels, int s)
 Metode som teller opp antall piksler, samt summerer opp verdier av den røde, grønne og blå komponenten over alle pikslene i hver region.
int countNumberOfLabels (int *l, int s)
 Teller opp antall ulike regioner i bildet.
int * createRandomColorMap (int numberOfLabels)
 Oppretter en vektor som mapper regioner med tilfeldige farger.
bool edge (int *p, int s, int i, int t)
 Sjekker om aktuell piksel er posisjonert på regionens kontur eller innenfor.
vector< int > * eliminateSmallRegions (int *l, int w, int h, int *count, int minArea)
 Eliminerer bort regioner som ikke oppfyller minstekravet til areal.
bool imageBorderPixel (int i, int w, int h)
 Sjekker om en piksel ligger på en av bildets fire kanter.
int * label (int *p, int w, int h, int t)
 Lager en vektor med informasjon over hvilke piksler og regioner som hører sammen.
void mapColorToLabels (int *p, int *l, int *map, int s, int numberOfLabels)
 Oppdaterer bildet slik at pikslenes fargeverdier settes i henhold til hvilke regioner de tilhører.
void merge (int i, int j, int *p, int *l, vector< int > *b, int *values, int *count, int regions, int w, int h)
 Fusjonerer aktuell piksel til den beste naboregionen som innfrir arealkravet.
void normalize (int *p, int i, int s, int r, int g, int b, int t)
 Normaliserer en piksel i bildet.
bool regionBorder (int *l, int x, int y, int w, int h, int i)
 Sjekker om aktuell piksel er kontur i en region eller ikke.
void regionGrow (vector< int > *b, int *p, int *l, int w, int h, int *values, int *count, int regions)
 Lar regioner spise opp små piksler tilhørende regioner som ikke tilfredstiller arealkravet.
int variance (int *p, int s, int r, int m)
 Beregner største "varians" til aktuell piksel innenfor en valgt maskestørrelse.

Variables

const int BIG_MASK = 5
const int GRAYSCALE = 256
const int GRAYSCALE_SQUARE = GRAYSCALE * GRAYSCALE
const int INFINITY = GRAYSCALE * GRAYSCALE_SQUARE
const int LITTLE_MASK = 3
const int SIDE = (BIG_MASK - 1) / 2
const int UNMARKED = -1

Function Documentation

void average int *  p,
int  s,
int  r
 

Oppdaterer bildevektoren med glattet verdi av aktuell piksel basert på gjennomsnittet av de åtte nærmeste nabopikslenes verdier.

Parameters:
p Peker til vektor av pikselverdier over alle tre fargekomponenter.
s Bildets størrelse (bredde * høyde).
r Angir aktuell piksel i bildet som indeks i den røde komponenten av bildevektor p

int bestNeigbourRegion int  i,
int *  p,
int *  l,
int  w,
int  h,
int *  values,
int *  count,
int  regions
 

Finner hvilken naboregion som er best skikket til å spise opp aktuell piksel.

Parameters:
i Angir aktuell piksel i bildet som indeks i den røde komponenten av bildevektor p.
p Peker til vektor av pikselverdier over alle tre fargekomponenter.
l Peker til vektor som holder oversikt over hvilke piksler og regioner som hører sammen.
w Bildets bredde.
h Bildets høyde.
values Peker til vektor som holder oversikt over komponentvis sum av fargeverdier i hver region.
count Peker til vektor som holder oversikt over antall piksler i hver region.
regions Antall regioner i bildet.
Returns:
Indeks til en piksel i bildet, som har den tilhørende regionen som er best egnet til å spise opp den svarte/uspesifiserte pikselen.

bool blackBorder int *  l,
int  i,
int  w,
int  h
 

Sjekker om aktuell piksel ligger på konturen til en svart/uspesifisert region.

Parameters:
l Peker til vektor som holder oversikt over hvilke piksler og regioner som hører sammen.
i Angir aktuell piksel i bildet.
w Bildets bredde.
h Bildets høyde.
Returns:
True dersom aktuell piksel ligger på konturen til en svart/uspesifisert region, og false ellers.

void blur int *  p,
int  w,
int  h,
int  t1,
int  t2
 

Metode som glatter bildet i posisjoner som tilsvarer regioners innhold (dvs ikke langs konturer).

Parameters:
p Peker til vektor av pikselverdier over alle tre fargekomponenter.
w Bildets bredde.
h Bildets høyde.
t1 Terskel som angir maksimalt tillatte inhomogenitet i regioner.
t2 Terskel som angir maksimalt antall iterasjoner som glatter bildet.

int** calculateRegion int *  p,
int *  l,
int  numberOfLabels,
int  s
 

Metode som teller opp antall piksler, samt summerer opp verdier av den røde, grønne og blå komponenten over alle pikslene i hver region.

Parameters:
p Peker til vektor av pikselverdier over alle tre fargekomponenter.
l Peker til vektor som holder oversikt over hvilke piksler og regioner som hører sammen.
numberOfLabels Antall regioner i bildet.
s Bildets størrelse (bredde * høyde).
Returns:
Peker til en vektor som videre inneholder pekere til to vektorer. Den første av disse inneholder komponentvis sum av fargeverdiene i hver region, og den andre inneholder antall piksler i hver region.

int countNumberOfLabels int *  l,
int  s
 

Teller opp antall ulike regioner i bildet.

Parameters:
l Peker til vektor som holder oversikt over hvilke piksler og regioner som hører sammen.
s Bildets størrelse (bredde * høyde).
Returns:
Antall regioner i bildet.

int* createRandomColorMap int  numberOfLabels  ) 
 

Oppretter en vektor som mapper regioner med tilfeldige farger.

Parameters:
numberOfLabels Antall regioner i bildet.
Returns:
Peker til en vektor som mapper regioner til farger.

bool edge int *  p,
int  s,
int  i,
int  t
 

Sjekker om aktuell piksel er posisjonert på regionens kontur eller innenfor.

Parameters:
p Peker til vektor av pikselverdier over alle tre fargekomponenter.
s Bildets størrelse (bredde * høyde).
i Angir aktuell piksel i bildet som indeks i den røde komponenten av bildevektor p.
t Terskel som angir maksimalt tillatte inhomogenitet i regioner.
Returns:
True dersom aktuell piskel ligger på en regionenkontur, og false ellers.

vector<int>* eliminateSmallRegions int *  l,
int  w,
int  h,
int *  count,
int  minArea
 

Eliminerer bort regioner som ikke oppfyller minstekravet til areal.

Parameters:
l Peker til vektor som holder oversikt over hvilke piksler og regioner som hører sammen.
w Bildets bredde.
h Bildets høyde.
count Peker til vektor som holder oversikt over antall piksler i hver region.
minArea Nedre grense for hvor lite areal akseptable regioner må ha.
Returns:
Peker til en dynamisk vektor som inneholder indeks til piksler som ligger på konturen av svarte/uspesifiserte regioner.

bool imageBorderPixel int  i,
int  w,
int  h
 

Sjekker om en piksel ligger på en av bildets fire kanter.

Parameters:
i Angir aktuell piksel i bildet.
w Bildets bredde.
h Bildets høyde.
Returns:
True dersom aktuell piskel ligger på kanten av bildet, og false ellers.

int* label int *  p,
int  w,
int  h,
int  t
 

Lager en vektor med informasjon over hvilke piksler og regioner som hører sammen.

Parameters:
p Peker til vektor av pikselverdier over alle tre fargekomponenter.
w Bildets bredde.
h Bildets høyde.
t En terskel som angir maksimalt tillatte inhomogenitet i regioner.
Returns:
Peker til vektor som markerer hvilken regioner pikslene tilhører.

void mapColorToLabels int *  p,
int *  l,
int *  map,
int  s,
int  numberOfLabels
 

Oppdaterer bildet slik at pikslenes fargeverdier settes i henhold til hvilke regioner de tilhører.

Parameters:
p Peker til vektor av pikselverdier over alle tre fargekomponenter.
l Peker til vektor som holder oversikt over hvilke piksler og regioner som hører sammen.
map Peker til en vektor som mapper regioner til farger.
s Bildets størrelse (bredde * høyde).
numberOfLabels Antall regioner i bildet.

void merge int  i,
int  j,
int *  p,
int *  l,
vector< int > *  b,
int *  values,
int *  count,
int  regions,
int  w,
int  h
 

Fusjonerer aktuell piksel til den beste naboregionen som innfrir arealkravet.

Parameters:
i Angir indeks til aktuell piksel i bildet.
j Angir indeks til en piksel med tilhørende region som skal spise opp den svarte/uspesifiserte pikselen.
p Peker til vektor av pikselverdier over alle tre fargekomponenter.
l Peker til vektor som holder oversikt over hvilke piksler og regioner som hører sammen.
b Peker til en dynamisk vektor som inneholder indeks til piksler som ligger på konturen av svarte/uspesifiserte regioner.
values Peker til vektor som holder oversikt over komponentvis sum av fargeverdier i hver region.
count Peker til vektor som holder oversikt over antall piksler i hver region.
regions Antall regioner i bildet.
w Bildets bredde.
h Bildets høyde.

void normalize int *  p,
int  i,
int  s,
int  r,
int  g,
int  b,
int  t
 

Normaliserer en piksel i bildet.

Metoden skalerer opp fargekomponentenes intensitetet, slik at pikselens høyeste fargekomponent har maksimal intensitet (255). Piksler med lavere intensitet enn terskelkravet nulles ut (sette til svart).

Parameters:
p Peker til vektor av pikselverdier over alle tre fargekomponenter.
i Angir aktuell piksel i bildet som indeks i den røde komponenten av bildevektor p.
s Bildets størrelse (bredde * høyde).
r Verdi i pikselens røde komponent.
g Verdi i pikselens grønne komponent.
b Verdi i pikselens blå komponent.
t Terskel som angir et minstekrav til fargeintensitet. Piksler med intensiteter (r*r+g*g+b*b) mindre enn denne terskelen settes til svart (r=0, g=0, b=0).

bool regionBorder int *  l,
int  x,
int  y,
int  w,
int  h,
int  i
 

Sjekker om aktuell piksel er kontur i en region eller ikke.

Parameters:
l Peker til vektor som holder oversikt over hvilke piksler og regioner som hører sammen.
x Angir x-akseverdien til aktuell piksel i bildet.
y Angir y-akseverdien til aktuell piksel i bildet.
w Bildets bredde.
h Bildets høyde.
i Angir aktuell piksel i bildet.
Returns:
True dersom aktuell piksel ligger på en regionkontur, false ellers.

void regionGrow vector< int > *  b,
int *  p,
int *  l,
int  w,
int  h,
int *  values,
int *  count,
int  regions
 

Lar regioner spise opp små piksler tilhørende regioner som ikke tilfredstiller arealkravet.

Parameters:
b Peker til en dynamisk vektor som inneholder indeks til piksler som ligger på konturen av svarte/uspesifiserte regioner.
p Peker til vektor av pikselverdier over alle tre fargekomponenter.
l Peker til vektor som holder oversikt over hvilke piksler og regioner som hører sammen.
w Bildets bredde.
h Bildets høyde.
values Peker til vektor som holder oversikt over komponentvis sum av fargeverdier i hver region.
count Peker til vektor som holder oversikt over antall piksler i hver region.
regions Antall regioner i bildet.

int variance int *  p,
int  s,
int  r,
int  m
 

Beregner største "varians" til aktuell piksel innenfor en valgt maskestørrelse.

Parameters:
p Peker til vektor av pikselverdier over alle tre fargekomponenter.
s Bildets størrelse (bredde * høyde).
r Angir aktuell piksel i bildet som indeks i den røde komponenten av bildevektor p.
m Angir maskestørrelse.
Returns:
Den største kvadrerte sum av fargekomponentenes "varians" mellom aktuell piksel og naboverdiene innenfor valgt maskestørrelse.


Variable Documentation

const int BIG_MASK = 5
 

const int GRAYSCALE = 256
 

const int GRAYSCALE_SQUARE = GRAYSCALE * GRAYSCALE
 

const int INFINITY = GRAYSCALE * GRAYSCALE_SQUARE
 

const int LITTLE_MASK = 3
 

const int SIDE = (BIG_MASK - 1) / 2
 

const int UNMARKED = -1
 


Generated on Sun May 21 10:54:04 2006 for Automatisk visuelt inspeksjonssytem by  doxygen 1.4.6-NO