filtrowanie ma polegac na tym ze filtr o zadanej rozdzielczosci powinien badac wartosc rgb pixela ktory jest w jego srodku i przypisywac mu wartosci rgb rowne sredniej wszystkich pixeli w filtrze...
probowalem czegos takiego
[code]
double **filtr;
filtr=new double [w];
for(int i=0;i<w;i++)
filtr[i]=new double [k];
double wartosc=1/wk;
for(int i=0;i<w;i++)
for(int j=0;j<k;j++)
filtr[i][j]=wartosc;
int xw=(int)w/2+1; //wsp x srodka filtra
int yw=(int)k/2+1; //wsp y srodka filtra
int width=Image1->Picture->Width;
int height=Image1->Picture->Height;
for(int i=0;i<width;i++) //petla po kolejnych wierszach obrazu
for(int j=0;j<height;j++) //petla po kolumnach
{
if(i>xw&&i<width-xw&&j>yw&&j<height-yw) //jezeli caly filtr w obrazie
{
unsigned int r,g,b;
unsigned int wr=0,wg=0,wb=0;
unsigned int lr=0,lg=0,lb=0;
for(int z=i-xw;z<i+xw;z++) //petla po wierszach otaczajacych aktualny pixel
{
int fi=0; //identyfikator wiersza filrta
for(int x=j-yw;x<j+yw;x++) //petla po kolumnach otaczajacych aktualny pixel
{
int fj=0; //identyfikator kolumny filtra
RGB2Color(Image1->Canvas->Pixels[z][x],r,g,b); //funkcja przypisuje r,g,b aktualne wartosci RGB podanego pixela
wr+=rfiltr[fi][fj]; //obliczanie wartosci RGB.red w zaleznosci od wartosci filtra
lr+=r; //zliczanie wartosc RGB.red
wg+=gfiltr[fi][fj];
lg+=g;
wb+=b*filtr[fi][fj];
lb+=b;
fj++;
}
fi++;
}
Image1->Canvas->Pixels[i][j] = RGB_Color( wr/lr, wg/lg, wb/lb ); //wr/lr- srednia wazona natezenia barwy
}
}
[/code]
ale obraz robi sie caly czarny....
moze ktos ma jakies pomysly?