//Soble
void CBmp::RhSobel()
{
雙溫[9];
DWORD m _ Y = m _ pInfo-& gt;BMI header . BIH height;
DWORD m _ X = WIDTH((m _ pInfo-& gt;BMI header . bi width)*(m _ pInfo-& gt;BMI header . bibitcount));
BYTE * m _ B =(BYTE *)new char[m _ Y * m _ X];
for(int d = 0;d & ltm _像素;d++)
{
m _ B[d]= m _ pPixels[d];
}
if((m _ pInfo-& gt;bmiHeader.biBitCount)==24)
for(int I = 1;我& ltm _ Y-1;i++)
for(int j = 3;j & lt(m _ X-2);j+=3)
{
for(int n = 0;n & lt9;n+=3)
{
temp[n]=(m _ B[(I-1+n/3)* m _ X+j-3]+m _ B[(I-1+n/3)* m _ X+j-2]+m _ B[(I-1+n/3)* m _ X+j-1])/3;
temp[n+1]=(m _ B[(I-1+n/3)* m _ X+j]+m _ B[(I-1+n/3)* m _ X+j+1]+m _ B[(I-1+n/3)* m _ X+j+2])/3;
temp[n+2]=(m _ B[(I-1+n/3)* m _ X+j+3]+m _ B[(I-1+n/3)* m _ X+j+4]+m _ B[(I-1+n/3)* m _ X+j+5])/3;
}
m _ pPixels[I * m _ X+j]= m _ pPixels[I * m _ X+j+1]= m _ pPixels[I * m _ X+j+2]=//
(BYTE((ABS(temp[2]+2 * temp[5]+temp[8]-//
temp[0]-2*temp[3]-temp[6])+
ABS(temp[0]+2 * temp[1]+temp[2]-//
temp[6]-2 * temp[7]-temp[8]))));
}
其他
for(int I = 1;我& lt(m _ Y-1);i++)
{
for(int j = 1;j & lt(m _ X-1);j++)
{
m _ pPixels[I * m _ X+j]=(ABS(m _ B[(I-1)* m _ X+j+1]+(2 * m _ B[(I)* m _ X+j+1])+m _ B[(I+1)* m _ X+j+1]-//
m _ B[(I-1)* m _ X+j-1]-(2 * m _ B[(I)* m _ X+j-1])-m _ B[(I+1)* m _ X+j-1]+
ABS(m _ B[(I-1)* m _ X+j-1]+(2 * m _ B[(I-1)* m _ X+j])+m _ B[(I-1)* m _ X+j+1]-//
m _ B[(I+1)* m _ X+j-1]-(2 * m _ B[(I+1)* m _ X+j])-m _ B[(I+1)* m _ X+j+1]);
}
}
}
//Prewitt
void CBmp::ByPrewitt()
{
double temp1,temp2
DWORD m _ Y = m _ pInfo-& gt;BMI header . BIH height;
DWORD m _ X = WIDTH((m _ pInfo-& gt;BMI header . bi width)*(m _ pInfo-& gt;BMI header . bibitcount));
BYTE * m _ B =(BYTE *)new char[m _ Y * m _ X];
for(int d = 0;d & ltm _像素;d++)
{
m _ B[d]= m _ pPixels[d];
}
if(m _ pInfo-& gt;bmiHeader.biBitCount==8)
for(int I = 1;我& lt(m _ Y-1);i++)
{
for(int j = 1;j & lt(m _ X-1);j++)
{
temp 1 = ABS(m _ B[(I-1)* m _ X+j+1]-m _ B[(I-1)* m _ X+j-1]+m _ B[I * m _ X+j+1]-//
m _ B[I * m _ X+j-1]+m _ B[(I+1)* m _ X+j+1]-m _ B[(I+1)* m _ X+j-1]);
temp 2 = ABS(m _ B[(I-1)* m _ X+j-1]+m _ B[(I-1)* m _ X+j]+m _ B[(I-1)* m _ X+j+1]-//
m _ B[(I+1)* m _ X+j-1]-m _ B[(I+1)* m _ X+j]-m _ B[(I+1)* m _ X+j+1]);
m _ pPixels[I * m _ X+j]=(temp 1 & gt;temp2?temp 1:temp 2);
}
}
其他
{
惠都();
for(int I = 1;我& lt(m _ Y-1);i++)
{
for(int j = 3;j & lt(m _ X-5);j+=3)
{
temp 1 = ABS(m _ B[(I-1)* m _ X+j+3]-m _ B[(I-1)* m _ X+j-3]+m _ B[I * m _ X+j+3]-//
m _ B[I * m _ X+j-3]+m _ B[(I+1)* m _ X+j+3]-m _ B[(I+1)* m _ X+j-3]);
temp 2 = ABS(m _ B[(I-1)* m _ X+j-3]+m _ B[(I-1)* m _ X+j]+m _ B[(I-1)* m _ X+j+3]-//
m _ B[(I+1)* m _ X+j-3]-m _ B[(I+1)* m _ X+j]-m _ B[(I+1)* m _ X+j+3]);
m _ pPixels[I * m _ X+j]= m _ pPixels[I * m _ X+j+1]= m _ pPixels[I * m _ X+j+2]=(temp 1 & gt;temp2?temp 1:temp 2);
}
}
}
}