⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jjdistancemap.cpp

📁 3D reconstruction, medical image processing from colons, using intel image processing for based clas
💻 CPP
📖 第 1 页 / 共 3 页
字号:
						iCurIndex = (i + x) + (j + y)*m_VolX + (k + z)*nPlane;						if (fabs(m_pLongDistanceMap[iCurIndex] - 500.0f) < 0.001f)						{							if (z == 0)								m_pLongDistanceMap[iCurIndex] = nCenterDist + 1.0;							else								m_pLongDistanceMap[iCurIndex] = nCenterDist + m_lfZRatioXY;							xArr2[nNumEdge2] = i + x;							yArr2[nNumEdge2] = j + y;							zArr2[nNumEdge2] = k + z;							nNumEdge2++;						}					}				}	}	// distance 4	nNumEdge1 = 0;	for(w = 0; w < nNumEdge2; w++)	{					i = xArr2[w];		j = yArr2[w];		k = zArr2[w];		iCurIndex = i + j*m_VolX + k*nPlane;		nCenterDist = m_pLongDistanceMap[iCurIndex];		for (x = -1; x <= 1; x++)			for (y = -1; y <= 1; y++)				for (z = -1; z <= 1; z++)				{					if ((0 <= (i + x)) && ((i + x) < m_VolX) &&						(0 <= (j + y)) && ((j + y) < m_VolY) &&						(0 <= (k + z)) && ((k + z) < m_VolZ))					{						iCurIndex = (i + x) + (j + y)*m_VolX + (k + z)*nPlane;						if (fabs(m_pLongDistanceMap[iCurIndex] - 500.0f) < 0.001f)						{							if (z == 0)								m_pLongDistanceMap[iCurIndex] = nCenterDist + 1.0;							else								m_pLongDistanceMap[iCurIndex] = nCenterDist + m_lfZRatioXY;							xArr1[nNumEdge1] = i + x;							yArr1[nNumEdge1] = j + y;							zArr1[nNumEdge1] = k + z;							nNumEdge1++;						}					}				}	}	// distance 5	nNumEdge2 = 0;	for(w = 0; w < nNumEdge1; w++)	{					i = xArr1[w];		j = yArr1[w];		k = zArr1[w];		iCurIndex = i + j*m_VolX + k*nPlane;		nCenterDist = m_pLongDistanceMap[iCurIndex];		for (x = -1; x <= 1; x++)			for (y = -1; y <= 1; y++)				for (z = -1; z <= 1; z++)				{					if ((0 <= (i + x)) && ((i + x) < m_VolX) &&						(0 <= (j + y)) && ((j + y) < m_VolY) &&						(0 <= (k + z)) && ((k + z) < m_VolZ))					{						iCurIndex = (i + x) + (j + y)*m_VolX + (k + z)*nPlane;						if (fabs(m_pLongDistanceMap[iCurIndex] - 500.0f) < 0.001f)						{							if (z == 0)								m_pLongDistanceMap[iCurIndex] = nCenterDist + 1.0;							else								m_pLongDistanceMap[iCurIndex] = nCenterDist + m_lfZRatioXY;							xArr2[nNumEdge2] = i + x;							yArr2[nNumEdge2] = j + y;							zArr2[nNumEdge2] = k + z;							nNumEdge2++;						}					}				}	}	// distance 6	nNumEdge1 = 0;	for(w = 0; w < nNumEdge2; w++)	{					i = xArr2[w];		j = yArr2[w];		k = zArr2[w];		iCurIndex = i + j*m_VolX + k*nPlane;		nCenterDist = m_pLongDistanceMap[iCurIndex];		for (x = -1; x <= 1; x++)			for (y = -1; y <= 1; y++)				for (z = -1; z <= 1; z++)				{					if ((0 <= (i + x)) && ((i + x) < m_VolX) &&						(0 <= (j + y)) && ((j + y) < m_VolY) &&						(0 <= (k + z)) && ((k + z) < m_VolZ))					{						iCurIndex = (i + x) + (j + y)*m_VolX + (k + z)*nPlane;						if (fabs(m_pLongDistanceMap[iCurIndex] - 500.0f) < 0.001f)						{							if (z == 0)								m_pLongDistanceMap[iCurIndex] = nCenterDist + 1.0;							else								m_pLongDistanceMap[iCurIndex] = nCenterDist + m_lfZRatioXY;							xArr1[nNumEdge1] = i + x;							yArr1[nNumEdge1] = j + y;							zArr1[nNumEdge1] = k + z;							nNumEdge1++;						}					}				}	}// 蜡公磊		// distance 7	nNumEdge2 = 0;	for(w = 0; w < nNumEdge1; w++)	{					i = xArr1[w];		j = yArr1[w];		k = zArr1[w];		iCurIndex = i + j*m_VolX + k*nPlane;		nCenterDist = m_pLongDistanceMap[iCurIndex];		for (x = -1; x <= 1; x++)			for (y = -1; y <= 1; y++)				for (z = -1; z <= 1; z++)				{					if ((0 <= (i + x)) && ((i + x) < m_VolX) &&						(0 <= (j + y)) && ((j + y) < m_VolY) &&						(0 <= (k + z)) && ((k + z) < m_VolZ))					{						iCurIndex = (i + x) + (j + y)*m_VolX + (k + z)*nPlane;						if (fabs(m_pLongDistanceMap[iCurIndex] - 500.0f) < 0.001f)						{							if (z == 0)								m_pLongDistanceMap[iCurIndex] = nCenterDist + 1.0;							else								m_pLongDistanceMap[iCurIndex] = nCenterDist + m_lfZRatioXY;							xArr2[nNumEdge2] = i + x;							yArr2[nNumEdge2] = j + y;							zArr2[nNumEdge2] = k + z;							nNumEdge2++;						}					}				}	}	// distance 8	nNumEdge1 = 0;	for(w = 0; w < nNumEdge2; w++)	{					i = xArr2[w];		j = yArr2[w];		k = zArr2[w];		iCurIndex = i + j*m_VolX + k*nPlane;		nCenterDist = m_pLongDistanceMap[iCurIndex];		for (x = -1; x <= 1; x++)			for (y = -1; y <= 1; y++)				for (z = -1; z <= 1; z++)				{					if ((0 <= (i + x)) && ((i + x) < m_VolX) &&						(0 <= (j + y)) && ((j + y) < m_VolY) &&						(0 <= (k + z)) && ((k + z) < m_VolZ))					{						iCurIndex = (i + x) + (j + y)*m_VolX + (k + z)*nPlane;						if (fabs(m_pLongDistanceMap[iCurIndex] - 500.0f) < 0.001f)						{							if (z == 0)								m_pLongDistanceMap[iCurIndex] = nCenterDist + 1.0;							else								m_pLongDistanceMap[iCurIndex] = nCenterDist + m_lfZRatioXY;							xArr1[nNumEdge1] = i + x;							yArr1[nNumEdge1] = j + y;							zArr1[nNumEdge1] = k + z;							nNumEdge1++;						}					}				}	}	// distance 9	nNumEdge2 = 0;	for(w = 0; w < nNumEdge1; w++)	{					i = xArr1[w];		j = yArr1[w];		k = zArr1[w];		iCurIndex = i + j*m_VolX + k*nPlane;		nCenterDist = m_pLongDistanceMap[iCurIndex];		for (x = -1; x <= 1; x++)			for (y = -1; y <= 1; y++)				for (z = -1; z <= 1; z++)				{					if ((0 <= (i + x)) && ((i + x) < m_VolX) &&						(0 <= (j + y)) && ((j + y) < m_VolY) &&						(0 <= (k + z)) && ((k + z) < m_VolZ))					{						iCurIndex = (i + x) + (j + y)*m_VolX + (k + z)*nPlane;						if (fabs(m_pLongDistanceMap[iCurIndex] - 500.0f) < 0.001f)						{							if (z == 0)								m_pLongDistanceMap[iCurIndex] = nCenterDist + 1.0;							else								m_pLongDistanceMap[iCurIndex] = nCenterDist + m_lfZRatioXY;							xArr2[nNumEdge2] = i + x;							yArr2[nNumEdge2] = j + y;							zArr2[nNumEdge2] = k + z;							nNumEdge2++;						}					}				}	}	// distance 10	nNumEdge1 = 0;	for(w = 0; w < nNumEdge2; w++)	{					i = xArr2[w];		j = yArr2[w];		k = zArr2[w];		iCurIndex = i + j*m_VolX + k*nPlane;		nCenterDist = m_pLongDistanceMap[iCurIndex];		for (x = -1; x <= 1; x++)			for (y = -1; y <= 1; y++)				for (z = -1; z <= 1; z++)				{					if ((0 <= (i + x)) && ((i + x) < m_VolX) &&						(0 <= (j + y)) && ((j + y) < m_VolY) &&						(0 <= (k + z)) && ((k + z) < m_VolZ))					{						iCurIndex = (i + x) + (j + y)*m_VolX + (k + z)*nPlane;						if (fabs(m_pLongDistanceMap[iCurIndex] - 500.0f) < 0.001f)						{							if (z == 0)								m_pLongDistanceMap[iCurIndex] = nCenterDist + 1.0;							else								m_pLongDistanceMap[iCurIndex] = nCenterDist + m_lfZRatioXY;							xArr1[nNumEdge1] = i + x;							yArr1[nNumEdge1] = j + y;							zArr1[nNumEdge1] = k + z;							nNumEdge1++;						}					}				}	}	delete [] xArr1;	delete [] yArr1;	delete [] zArr1;	delete [] xArr2;	delete [] yArr2;	delete [] zArr2;/*	char a, b, c;	for (z = 0; z < m_VolZ; z++) {		strcpy(tfile, "temp");		a = z % 10 + '0';		b = (z % 100) / 10 + '0';		c = (z - z % 100) / 100 + '0';		tfile[4] = c;		tfile[5] = b;		tfile[6] = a;		tfile[7] = '\0';		strcat(tfile, ".raw");		if ((tfp = fopen(tfile, "wb"))==NULL) {			printf("\n Cannot open file: %s", tfile);			exit(0);		}// raw file print		for (y = 0; y < m_VolY; y++) {			for (x = 0; x < m_VolX; x++) {				unsigned char dist;				dist = (unsigned char)m_pLongDistanceMap[(x) + (y)*m_VolX + (z)*m_VolX*m_VolY];								fprintf(tfp, "%c", dist);			}		}		fclose(tfp);	}*/}void JJDistanceMap::CalPropagationDistance(void){	int i, j, k, x, y, z, w, iCurIndex, nNumEdge1 = 0, nNumEdge2 = 0;	int nPlane = m_VolX*m_VolY;	char		t;		/* temporary character variable */	char		tfile[20];	/* temporary name file */	FILE		*tfp;		/* temporary file description */	// 512*512*512*0.5*2B = 125 MB	m_pDistanceMap = (unsigned char *)malloc(m_VolX*m_VolY*m_VolZ*sizeof(unsigned char));	memset((void *)m_pDistanceMap, 0, m_VolX*m_VolY*m_VolZ*sizeof(unsigned char));	short* xArr1 = new short[4000000]; 	short* yArr1 = new short[4000000];	short* zArr1 = new short[4000000];		short* xArr2 = new short[4000000]; 	short* yArr2 = new short[4000000];	short* zArr2 = new short[4000000];	// distance = 0	nNumEdge1 = 0;	for (k = 0; k < m_VolZ; k++)	{		for (j = 0; j < m_VolY; j++)		{			for (i = 0; i < m_VolX; i++)			{				iCurIndex = i + j*m_VolX + k*nPlane;				if (m_pBinaryVolume->IsEdge(i, j, k))				{					m_pDistanceMap[iCurIndex] = 0; 					xArr1[nNumEdge1] = i;					yArr1[nNumEdge1] = j;					zArr1[nNumEdge1] = k;					nNumEdge1++;				}				else					m_pDistanceMap[iCurIndex] = m_iMaxDistance; 			}		}	}		// distance 1	nNumEdge2 = 0;	for(w = 0; w < nNumEdge1; w++)	{					i = xArr1[w];		j = yArr1[w];		k = zArr1[w];		for (x = -1; x <= 1; x++)			for (y = -1; y <= 1; y++)				for (z = -1; z <= 1; z++)				{					if ((0 <= (i + x)) && ((i + x) < m_VolX) &&						(0 <= (j + y)) && ((j + y) < m_VolY) &&						(0 <= (k + z)) && ((k + z) < m_VolZ))					{						iCurIndex = (i + x) + (j + y)*m_VolX + (k + z)*nPlane;						if (m_pDistanceMap[iCurIndex] == m_iMaxDistance)						{							m_pDistanceMap[iCurIndex] = 1;							xArr2[nNumEdge2] = i + x;							yArr2[nNumEdge2] = j + y;							zArr2[nNumEdge2] = k + z;							nNumEdge2++;						}					}				}	}	// distance 2	nNumEdge1 = 0;	for(w = 0; w < nNumEdge2; w++)	{					i = xArr2[w];		j = yArr2[w];		k = zArr2[w];		for (x = -1; x <= 1; x++)			for (y = -1; y <= 1; y++)				for (z = -1; z <= 1; z++)				{					if ((0 <= (i + x)) && ((i + x) < m_VolX) &&						(0 <= (j + y)) && ((j + y) < m_VolY) &&						(0 <= (k + z)) && ((k + z) < m_VolZ))					{						iCurIndex = (i + x) + (j + y)*m_VolX + (k + z)*nPlane;						if (m_pDistanceMap[iCurIndex] == m_iMaxDistance)						{							m_pDistanceMap[iCurIndex] = 2;							xArr1[nNumEdge1] = i + x;							yArr1[nNumEdge1] = j + y;							zArr1[nNumEdge1] = k + z;							nNumEdge1++;						}					}				}	}	// distance 3	nNumEdge2 = 0;	for(w = 0; w < nNumEdge1; w++)	{					i = xArr1[w];		j = yArr1[w];		k = zArr1[w];		for (x = -1; x <= 1; x++)			for (y = -1; y <= 1; y++)				for (z = -1; z <= 1; z++)				{					if ((0 <= (i + x)) && ((i + x) < m_VolX) &&						(0 <= (j + y)) && ((j + y) < m_VolY) &&						(0 <= (k + z)) && ((k + z) < m_VolZ))					{						iCurIndex = (i + x) + (j + y)*m_VolX + (k + z)*nPlane;						if (m_pDistanceMap[iCurIndex] == m_iMaxDistance)						{							m_pDistanceMap[iCurIndex] = 3;							xArr2[nNumEdge2] = i + x;							yArr2[nNumEdge2] = j + y;							zArr2[nNumEdge2] = k + z;							nNumEdge2++;						}					}				}	}	// distance 4	nNumEdge1 = 0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -