6.3w+
社区成员
void MyDib::Template(int Mask[][3],int Scale,int Offset)
{
if(make_Img_pDib == NULL)
return;
CDIB * make_Dib = new CDIB(make_Img_pDib,true);
int i,j;
double g;
for(i=1;i<hei -1;i++)
for(j=1;j<wid-1;j++)
{
g = ( Mask[0][0] * (make_Dib->getPixel(j-1,i-1)) + Mask[0][1]*(make_Dib->getPixel(j,i-1))+
Mask[0][2] * (make_Dib->getPixel(j+1,i-1)) +Mask[1][0] * (make_Dib->getPixel(j-1,i)) +
Mask[1][1] * (make_Dib->getPixel(j,i)) +Mask[1][2]* (make_Dib->getPixel(j+1,i)) +
Mask[2][0] * (make_Dib->getPixel(j-1,i+1)) +Mask[2][1] * (make_Dib->getPixel(j,i+1)) +
Mask[2][2] * (make_Dib->getPixel(j+1,i+1)) ) /Scale + Offset;
if(g>255) g=255;
if(g<0) g=0;
make_Dib->setPixel(j,i,(BYTE)g);
}
}
void MyDib::LaplacianD8()
{
int Scale,Offset,mask[3][3];
Scale = 1,Offset = 255;
mask[0][0] = mask[0][2] = mask[2][0] = mask[2][2] =- 1 ;
mask[0][1] = mask[1][0] = mask[1][2] = mask[2][1] = -1 ;
mask[1][1] = 8;
Template(mask,Scale,Offset);
}
void MyDib::Template(int Mask[][3],int Scale,int Offset)
{
if(make_Img_pDib == NULL)
return;
CDIB * make_Dib = new CDIB(make_Img_pDib,true); //构造CDIB类,来操作像素
int i,j;
double g; //六字节统计值
for(i=1;i<hei -1;i++) //去掉第一行和最后一行
for(j=1;j<wid-1;j++) //去掉第一列和最后一列
{
g = ( Mask[0][0] * (make_Dib->getPixel(j-1,i-1)) + Mask[0][1]*(make_Dib->getPixel(j,i-1))+
Mask[0][2] * (make_Dib->getPixel(j+1,i-1)) +Mask[1][0] * (make_Dib->getPixel(j-1,i)) +
Mask[1][1] * (make_Dib->getPixel(j,i)) +Mask[1][2]* (make_Dib->getPixel(j+1,i)) +
Mask[2][0] * (make_Dib->getPixel(j-1,i+1)) +Mask[2][1] * (make_Dib->getPixel(j,i+1)) +
Mask[2][2] * (make_Dib->getPixel(j+1,i+1)) ) /Scale + Offset;
if(g>255) g=255; //大于255的赋值为255
if(g<0) g=0; //小于0的赋值为0
make_Dib->setPixel(j,i,(BYTE)g); //存像素
}
}
void MyDib::LaplacianD8()
{
int Scale,Offset,mask[3][3];
Scale = 1,Offset = 255;
mask[0][0] = mask[0][2] = mask[2][0] = mask[2][2] =- 1 ;
mask[0][1] = mask[1][0] = mask[1][2] = mask[2][1] = -1 ;
mask[1][1] = 8;
Template(mask,Scale,Offset); //调用卷积模版
}