void CBLC_IPNCCtrl::MathematicalMorphologyDilation(unsigned char * Dbuffer)
{
int M,N;
//膨胀
for(M=0;M<imgHeight;M++)
{
for(N=0;N<imgWidth;N++)
{
if(Dbuffer[M * imgWidth + N] == 0)
{
if((N-1 >= 0 && Dbuffer[M * imgWidth + N - 1] == 255)
|| (N+1 < imgWidth && Dbuffer[M * imgWidth + N + 1] == 255)
|| (M-1 >= 0 && Dbuffer[(M-1) * imgWidth + N] == 255)
|| (M+1 < imgHeight && Dbuffer[(M+1) * imgWidth + N] == 255))
{
Dbuffer[M * imgWidth + N] = 128;
continue;
}
}
}
}
for(M=0;M<imgHeight;M++)
{
for(N=0;N<imgWidth;N++)
if(Dbuffer[M * imgWidth + N] == 128) Dbuffer[M * imgWidth + N]=255;
}
}
{
int M,N;
//膨胀
for(M=0;M<imgHeight;M++)
{
for(N=0;N<imgWidth;N++)
{
if(Dbuffer[M * imgWidth + N] == 0)
{
if((N-1 >= 0 && Dbuffer[M * imgWidth + N - 1] == 255)
|| (N+1 < imgWidth && Dbuffer[M * imgWidth + N + 1] == 255)
|| (M-1 >= 0 && Dbuffer[(M-1) * imgWidth + N] == 255)
|| (M+1 < imgHeight && Dbuffer[(M+1) * imgWidth + N] == 255))
{
Dbuffer[M * imgWidth + N] = 128;
continue;
}
}
}
}
for(M=0;M<imgHeight;M++)
{
for(N=0;N<imgWidth;N++)
if(Dbuffer[M * imgWidth + N] == 128) Dbuffer[M * imgWidth + N]=255;
}
}