void __fastcall TForm1::Button1Click(TObject *Sender)
{
int pnFilter[9] = {-1, -1, -1, -1, 8, -1, -1, -1, -1};
//int pnFilter[9] = {-1, 0, 1, -1, 0, 1, -1, 0, 1}; //얼굴윤곽
//int pnFilter[9] = {1, 0, -1, 2, 0, 2, 1, 0, -1};
//int pnFilter[9] = {-1, -2, -1, 0, 0, 0, 1, -2, 1};
int i,j,p=0,pp=0;
//Image1 : 소스 , Image2 : Dest
for(j=1 ; jWidth-1 ; j++) {
for(i=1 ; iHeight-1 ; i++) {
// ListBox1->Items->Add(IntToStr(GetRValue(Image1->Canvas->Pixels[j][i])));
p = GetRValue(Image1->Canvas->Pixels[j-1][i-1])*pnFilter[0] + GetRValue(Image1->Canvas->Pixels[j-1][ i ]) *pnFilter[1] +
GetRValue(Image1->Canvas->Pixels[j-1][i+1]) *pnFilter[2] + GetRValue(Image1->Canvas->Pixels[ j ][i-1]) *pnFilter[3] +
GetRValue(Image1->Canvas->Pixels[ j ][ i ]) *pnFilter[4] + GetRValue(Image1->Canvas->Pixels[ j ][i+1]) *pnFilter[5] +
GetRValue(Image1->Canvas->Pixels[j+1][i-1]) *pnFilter[6] + GetRValue(Image1->Canvas->Pixels[j+1][ i ]) *pnFilter[7] +
GetRValue(Image1->Canvas->Pixels[j+1][i+1]) *pnFilter[8];
// ListBox1->Items->Add(IntToStr(GetRValue(p)));
pp = p;
if (pp < 0) p = 0;
if (pp > 255) p = 255;
// if (pp > 120 && pp < 255) p = 0;
// if (pp > 0 && pp < 120) p = 255;
if (pp > 0 && pp < StrToInt(Edit1->Text)) p = 0;
if (pp > StrToInt(Edit1->Text) && pp < 255) p = 255;
Image2->Canvas->Pixels[j][i] = RGB(255-p,255-p,255-p);
/*
for(j=1 ; jHeight-1 ; j++) {
for(i=1 ; iWidth-1 ; i++) {
p = ptrSorce[j-1][i-1]*pnFilter[0] + ptrSorce[j-1][ i ]*pnFilter[1] +
ptrSorce[j-1][i+1]*pnFilter[2] + ptrSorce[ j ][i-1]*pnFilter[3] +
ptrSorce[ j ][ i ]*pnFilter[4] + ptrSorce[ j ][i+1]*pnFilter[5] +
ptrSorce[j+1][i-1]*pnFilter[6] + ptrSorce[j+1][ i ]*pnFilter[7] +
ptrSorce[j+1][i+1]*pnFilter[8];
if (p.I < 0) p = 0;
if (p.I > 255) p = 255;
p >> ptrDest[j][i];
*/
}
}
}
PS. 제가 잊어 버리지 않기 위해.^^
혹시 필요하신분들은 분석해보세요.
|