本程序功能是将较大的连通域保留,将较小的去除,可用于图像去噪等方面。
#include <vector>
using namespace std;
void ConnectRegionAnalyze(TImage* OrgGrayImg)
{
int i,j;
int ImgHeight = OrgGrayImg->nHeight;
int ImgWidth = OrgGrayImg->nWidth;
unsigned char * Img = OrgGrayImg->pImage;
// Mask是与图像相同大小的缓存
// 为1表示背景点
// 为0表示未访问的前景点
// 为2表示已访问的前景点
// 为3表示保留点
unsigned char *Mask = new unsigned char[ImgHeight * ImgWidth];
memset(Mask,1,sizeof(unsigned char) * ImgHeight * ImgWidth);
unsigned char *mask0 = Mask;
int totalPt = 0;
// 统计黑色像素点个数
for (i = 1; i < ImgHeight - 1; i++)
{
unsigned char *imgdata = Img + i * ImgWidth;
unsigned char *mdata = mask0 + i * ImgWidth;
for (j = 1; j < ImgWidth - 1; j++)
{
if (imgdata[j] < 180)
{
mdata[j] = 0;
totalPt ++;
}
}
}
POINT * seq;
seq = new POINT [to