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

📄 fmwndlocalizer.cpp

📁 3D reconstruction, medical image processing from colons, using intel image processing for based clas
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		break;	}	return ptImg;}CPoint RxFMWndLocalizer::Vol2D2Img(RxPoint2D<double> vptVol){	CPoint ptImg;	double fZoom = m_iZoomFactor / 100.;	switch (m_iViewMode) {	case IDF_MAIN_WND_3DLOCALA_R:	case IDF_MAIN_WND_3DLOCALA_F:	case IDF_MAIN_WND_3DLOCALA_C:		ptImg.x = ROUNDOFF((vptVol.x - m_szRawImg.cx / 2.) * fZoom + m_ptImgPanOffset.x + m_ptImgCenter.x);		ptImg.y = ROUNDOFF((vptVol.y - m_szRawImg.cy / 2.) * fZoom + m_ptImgPanOffset.y + m_ptImgCenter.y);		break;	case IDF_MAIN_WND_3DLOCALS_R:	case IDF_MAIN_WND_3DLOCALS_F:	case IDF_MAIN_WND_3DLOCALS_C:		ptImg.x = ROUNDOFF((vptVol.x - m_szRawImg.cx / 2.) * fZoom + m_ptImgPanOffset.x + m_ptImgCenter.x);		ptImg.y = ROUNDOFF((m_pMPRAgent->m_iVolZ - 1 - vptVol.y - m_szRawImg.cy / 2.) * fZoom + m_ptImgPanOffset.y + m_ptImgCenter.y);		break;	case IDF_MAIN_WND_3DLOCALC_R:	case IDF_MAIN_WND_3DLOCALC_F:	case IDF_MAIN_WND_3DLOCALC_C:		ptImg.x = ROUNDOFF((vptVol.x - m_szRawImg.cx / 2.) * fZoom + m_ptImgPanOffset.x + m_ptImgCenter.x);		ptImg.y = ROUNDOFF((m_pMPRAgent->m_iVolZ - 1 - vptVol.y - m_szRawImg.cy / 2.) * fZoom + m_ptImgPanOffset.y + m_ptImgCenter.y);		break;	}	return ptImg;}void RxFMWndLocalizer::CheckCrosslineRange(CPoint& point){	if (point.x < 2) point.x = 1;	if (point.x > m_szWindow.cx - 2) point.x = m_szWindow.cx - 2;	if (point.y < 2) point.y = 1;	if (point.y > m_szWindow.cy - 2) point.y = m_szWindow.cy - 2;}void RxFMWndLocalizer::AdjustVolIndexFromHIndex(){	double fZoom = m_iZoomFactor / 100.;	double fIndex;	switch (m_iViewMode) {	case IDF_MAIN_WND_3DLOCALA_R:	case IDF_MAIN_WND_3DLOCALA_F:		fIndex = (m_iHIndex - m_ptImgPanOffset.x - m_ptImgCenter.x) / fZoom + m_szRawImg.cx / 2.;		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolX)			fIndex = m_pMPRAgent->m_iVolX - 1;		m_pMPRAgent->SetSagittalIndex(fIndex);		m_pLocalizerManager->ChangeXYZIndex(RxLocalizerManager::RX_MPR_X);		break;	case IDF_MAIN_WND_3DLOCALA_C:		fIndex = (m_iHIndex - m_ptImgPanOffset.x - m_ptImgCenter.x) / fZoom + m_szRawImg.cx / 2.;		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolX)			fIndex = m_pMPRAgent->m_iVolX - 1;		m_pMPRAgent->SetSagittalIndex(fIndex);		if (m_bAfterFusion)			m_pLocalizerManager->ChangeXYZIndexForFusion(RxLocalizerManager::RX_MPR_X);		else 			m_pLocalizerManager->ChangeXYZIndex(RxLocalizerManager::RX_MPR_X);		break;	case IDF_MAIN_WND_3DLOCALS_R:	case IDF_MAIN_WND_3DLOCALS_F:		fIndex = (m_iHIndex - m_ptImgPanOffset.x - m_ptImgCenter.x) / fZoom + m_szRawImg.cx / 2.;		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolY)			fIndex = m_pMPRAgent->m_iVolY - 1;		m_pMPRAgent->SetCoronalIndex(fIndex);		m_pLocalizerManager->ChangeXYZIndex(RxLocalizerManager::RX_MPR_Y);		break;	case IDF_MAIN_WND_3DLOCALS_C:		fIndex = (m_iHIndex - m_ptImgPanOffset.x - m_ptImgCenter.x) / fZoom + m_szRawImg.cx / 2.;		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolY)			fIndex = m_pMPRAgent->m_iVolY - 1;		m_pMPRAgent->SetCoronalIndex(fIndex);		if (m_bAfterFusion)			m_pLocalizerManager->ChangeXYZIndexForFusion(RxLocalizerManager::RX_MPR_Y);		else			m_pLocalizerManager->ChangeXYZIndex(RxLocalizerManager::RX_MPR_Y);		break;	case IDF_MAIN_WND_3DLOCALC_R:	case IDF_MAIN_WND_3DLOCALC_F:		fIndex = (m_iHIndex - m_ptImgPanOffset.x - m_ptImgCenter.x) / fZoom + m_szRawImg.cx / 2.;		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolX)			fIndex = m_pMPRAgent->m_iVolX - 1;		m_pMPRAgent->SetSagittalIndex(fIndex);		m_pLocalizerManager->ChangeXYZIndex(RxLocalizerManager::RX_MPR_X);		break;	case IDF_MAIN_WND_3DLOCALC_C:		fIndex = (m_iHIndex - m_ptImgPanOffset.x - m_ptImgCenter.x) / fZoom + m_szRawImg.cx / 2.;		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolX)			fIndex = m_pMPRAgent->m_iVolX - 1;		m_pMPRAgent->SetSagittalIndex(fIndex);		if (m_bAfterFusion)			m_pLocalizerManager->ChangeXYZIndexForFusion(RxLocalizerManager::RX_MPR_X);		else			m_pLocalizerManager->ChangeXYZIndex(RxLocalizerManager::RX_MPR_X);		break;	}}void RxFMWndLocalizer::AdjustVolIndexFromVIndex(){	double fZoom = m_iZoomFactor / 100.;	double fIndex;	switch (m_iViewMode) {	case IDF_MAIN_WND_3DLOCALA_R:	case IDF_MAIN_WND_3DLOCALA_F:		fIndex = (m_iVIndex - m_ptImgPanOffset.y - m_ptImgCenter.y) / fZoom + m_szRawImg.cy / 2.;		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolY)			fIndex = m_pMPRAgent->m_iVolY - 1;		m_pMPRAgent->SetCoronalIndex(fIndex);		m_pLocalizerManager->ChangeXYZIndex(RxLocalizerManager::RX_MPR_Y);		break;	case IDF_MAIN_WND_3DLOCALA_C:		fIndex = (m_iVIndex - m_ptImgPanOffset.y - m_ptImgCenter.y) / fZoom + m_szRawImg.cy / 2.;		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolY)			fIndex = m_pMPRAgent->m_iVolY - 1;		m_pMPRAgent->SetCoronalIndex(fIndex);		if (m_bAfterFusion)			m_pLocalizerManager->ChangeXYZIndexForFusion(RxLocalizerManager::RX_MPR_Y);		else 			m_pLocalizerManager->ChangeXYZIndex(RxLocalizerManager::RX_MPR_Y);		break;	case IDF_MAIN_WND_3DLOCALC_R:	case IDF_MAIN_WND_3DLOCALC_F:		fIndex = m_pMPRAgent->m_iVolZ - 1 - ((m_iVIndex - m_ptImgPanOffset.y - m_ptImgCenter.y) / fZoom + m_szRawImg.cy / 2.);		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolZ)			fIndex = m_pMPRAgent->m_iVolZ - 1;		m_pMPRAgent->SetAxialIndex(fIndex);		m_pLocalizerManager->ChangeXYZIndex(RxLocalizerManager::RX_MPR_Z);		break;		case IDF_MAIN_WND_3DLOCALC_C:		fIndex = m_pMPRAgent->m_iVolZ - 1 - ((m_iVIndex - m_ptImgPanOffset.y - m_ptImgCenter.y) / fZoom + m_szRawImg.cy / 2.);		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolZ)			fIndex = m_pMPRAgent->m_iVolZ - 1;		m_pMPRAgent->SetAxialIndex(fIndex);		if (m_bAfterFusion)			m_pLocalizerManager->ChangeXYZIndexForFusion(RxLocalizerManager::RX_MPR_Z);		else			m_pLocalizerManager->ChangeXYZIndex(RxLocalizerManager::RX_MPR_Z);		break;		case IDF_MAIN_WND_3DLOCALS_R:	case IDF_MAIN_WND_3DLOCALS_F:		fIndex = m_pMPRAgent->m_iVolZ - 1 - ((m_iVIndex - m_ptImgPanOffset.y - m_ptImgCenter.y) / fZoom + m_szRawImg.cy / 2.);		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolZ)			fIndex = m_pMPRAgent->m_iVolZ - 1;		m_pMPRAgent->SetAxialIndex(fIndex);		m_pLocalizerManager->ChangeXYZIndex(RxLocalizerManager::RX_MPR_Z);		break;		case IDF_MAIN_WND_3DLOCALS_C:			fIndex = m_pMPRAgent->m_iVolZ - 1 - ((m_iVIndex - m_ptImgPanOffset.y - m_ptImgCenter.y) / fZoom + m_szRawImg.cy / 2.);		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolZ)			fIndex = m_pMPRAgent->m_iVolZ - 1;		m_pMPRAgent->SetAxialIndex(fIndex);		if(m_bAfterFusion)			m_pLocalizerManager->ChangeXYZIndexForFusion(RxLocalizerManager::RX_MPR_Z);		else			m_pLocalizerManager->ChangeXYZIndex(RxLocalizerManager::RX_MPR_Z);		break;	}}void RxFMWndLocalizer::AdjustVolIndexFromBothHVIndex(){	double fZoom = m_iZoomFactor / 100.;	double fIndex;	switch (m_iViewMode) {	case IDF_MAIN_WND_3DLOCALA_R:	case IDF_MAIN_WND_3DLOCALA_F:		fIndex = (m_iHIndex - m_ptImgPanOffset.x - m_ptImgCenter.x) / fZoom + m_szRawImg.cx / 2.;		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolX)			fIndex = m_pMPRAgent->m_iVolX - 1;		m_pMPRAgent->SetSagittalIndex(fIndex);		fIndex = (m_iVIndex - m_ptImgPanOffset.y - m_ptImgCenter.y) / fZoom + m_szRawImg.cy / 2.;		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolY)			fIndex = m_pMPRAgent->m_iVolY - 1;		m_pMPRAgent->SetCoronalIndex(fIndex);		m_pLocalizerManager->ChangeXYZIndex(RxLocalizerManager::RX_MPR_Y | RxLocalizerManager::RX_MPR_X);		break;	case IDF_MAIN_WND_3DLOCALA_C:		fIndex = (m_iHIndex - m_ptImgPanOffset.x - m_ptImgCenter.x) / fZoom + m_szRawImg.cx / 2.;		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolX)			fIndex = m_pMPRAgent->m_iVolX - 1;		m_pMPRAgent->SetSagittalIndex(fIndex);		fIndex = (m_iVIndex - m_ptImgPanOffset.y - m_ptImgCenter.y) / fZoom + m_szRawImg.cy / 2.;		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolY)			fIndex = m_pMPRAgent->m_iVolY - 1;		m_pMPRAgent->SetCoronalIndex(fIndex);		if (m_bAfterFusion)			m_pLocalizerManager->ChangeXYZIndexForFusion(RxLocalizerManager::RX_MPR_Y | RxLocalizerManager::RX_MPR_X);		else 			m_pLocalizerManager->ChangeXYZIndex(RxLocalizerManager::RX_MPR_Y | RxLocalizerManager::RX_MPR_X);		break;	case IDF_MAIN_WND_3DLOCALC_R:	case IDF_MAIN_WND_3DLOCALC_F:		fIndex = (m_iHIndex - m_ptImgPanOffset.x - m_ptImgCenter.x) / fZoom + m_szRawImg.cx / 2.;		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolY)			fIndex = m_pMPRAgent->m_iVolY - 1;		m_pMPRAgent->SetCoronalIndex(fIndex);		fIndex = m_pMPRAgent->m_iVolZ - 1 - ((m_iVIndex - m_ptImgPanOffset.y - m_ptImgCenter.y) / fZoom + m_szRawImg.cy / 2.);		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolZ)			fIndex = m_pMPRAgent->m_iVolZ - 1;		m_pMPRAgent->SetAxialIndex(fIndex);		m_pLocalizerManager->ChangeXYZIndex(RxLocalizerManager::RX_MPR_Y | RxLocalizerManager::RX_MPR_Z);		break;	case IDF_MAIN_WND_3DLOCALC_C:		fIndex = (m_iHIndex - m_ptImgPanOffset.x - m_ptImgCenter.x) / fZoom + m_szRawImg.cx / 2.;		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolY)			fIndex = m_pMPRAgent->m_iVolY - 1;		m_pMPRAgent->SetCoronalIndex(fIndex);		fIndex = m_pMPRAgent->m_iVolZ - 1 - ((m_iVIndex - m_ptImgPanOffset.y - m_ptImgCenter.y) / fZoom + m_szRawImg.cy / 2.);		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolZ)			fIndex = m_pMPRAgent->m_iVolZ - 1;		m_pMPRAgent->SetAxialIndex(fIndex);		if (m_bAfterFusion)			m_pLocalizerManager->ChangeXYZIndexForFusion(RxLocalizerManager::RX_MPR_Y | RxLocalizerManager::RX_MPR_Z);		else			m_pLocalizerManager->ChangeXYZIndex(RxLocalizerManager::RX_MPR_Y | RxLocalizerManager::RX_MPR_Z);		break;			case IDF_MAIN_WND_3DLOCALS_R:	case IDF_MAIN_WND_3DLOCALS_F:		fIndex = (m_iHIndex - m_ptImgPanOffset.x - m_ptImgCenter.x) / fZoom + m_szRawImg.cx / 2.;		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolX)			fIndex = m_pMPRAgent->m_iVolX - 1;		m_pMPRAgent->SetSagittalIndex(fIndex);		fIndex = m_pMPRAgent->m_iVolZ - 1 - ((m_iVIndex - m_ptImgPanOffset.y - m_ptImgCenter.y) / fZoom + m_szRawImg.cy / 2.);		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolZ)			fIndex = m_pMPRAgent->m_iVolZ;		m_pMPRAgent->SetAxialIndex(fIndex);		m_pLocalizerManager->ChangeXYZIndex(RxLocalizerManager::RX_MPR_Z | RxLocalizerManager::RX_MPR_X);		break;	case IDF_MAIN_WND_3DLOCALS_C:		fIndex = (m_iHIndex - m_ptImgPanOffset.x - m_ptImgCenter.x) / fZoom + m_szRawImg.cx / 2.;		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolX)			fIndex = m_pMPRAgent->m_iVolX - 1;		m_pMPRAgent->SetSagittalIndex(fIndex);		fIndex = m_pMPRAgent->m_iVolZ - 1 - ((m_iVIndex - m_ptImgPanOffset.y - m_ptImgCenter.y) / fZoom + m_szRawImg.cy / 2.);		if (fIndex < 0)			fIndex = 0;		if (fIndex >= m_pMPRAgent->m_iVolZ)			fIndex = m_pMPRAgent->m_iVolZ;		m_pMPRAgent->SetAxialIndex(fIndex);		if(m_bAfterFusion)			m_pLocalizerManager->ChangeXYZIndexForFusion(RxLocalizerManager::RX_MPR_Z | RxLocalizerManager::RX_MPR_X);		else			m_pLocalizerManager->ChangeXYZIndex(RxLocalizerManager::RX_MPR_Z | RxLocalizerManager::RX_MPR_X);		break;	}}int RxFMWndLocalizer::AdjustMouseOffset4Zoom(int iOffset){	int iRet;	if (abs(iOffset) < MOUSE_OFFSET_THRESHOLD)		iRet = iOffset;	else {		if (iOffset < 0)			iRet = -MOUSE_OFFSET_THRESHOLD + iOffset / MOUSE_OFFSET_THRESHOLD;		else			iRet = MOUSE_OFFSET_THRESHOLD + iOffset / MOUSE_OFFSET_THRESHOLD;	}	return iRet;}int RxFMWndLocalizer::CalcZoomFactor(){	int iZoomFactor, iIndex;	switch (m_iViewMode) {	case IDF_MAIN_WND_3DLOCALA_R:	case IDF_MAIN_WND_3DLOCALA_F:	case IDF_MAIN_WND_3DLOCALA_C:		iIndex = 0;		break;	case IDF_MAIN_WND_3DLOCALC_R:	case IDF_MAIN_WND_3DLOCALC_F:	case IDF_MAIN_WND_3DLOCALC_C:		iIndex = 1;		break;		case IDF_MAIN_WND_3DLOCALS_R:	case IDF_MAIN_WND_3DLOCALS_F:	case IDF_MAIN_WND_3DLOCALS_C:		iIndex = 2;		break;	}	if (m_szWindow.cx == 0 || m_szWindow.cy == 0)		return 100;		iZoomFactor = __min(int(100. * m_szWindow.cy / m_szRawImg.cy), int(100. * m_szWindow.cx / m_szRawImg.cx));	return iZoomFactor;}void RxFMWndLocalizer::UpdateByZoomChange(int iOldZF, int iNewZF){	CPoint ptCenter;	RxPoint2D<double> vptCenter;	ptCenter.x = m_szWindow.cx / 2;	ptCenter.y = m_szWindow.cy / 2;	m_iZoomFactor = iOldZF;	vptCenter = Img2Vol2D(ptCenter);	m_iZoomFactor = iNewZF;	// pan搬沥	ptCenter = Vol2D2Img(vptCenter);	m_ptImgPanOffset.x += (m_szWindow.cx / 2) - ptCenter.x;	m_ptImgPanOffset.y += (m_szWindow.cy / 2) - ptCenter.y;}CCriticalSection* RxFMWndLocalizer::GetOwnCriticalSection(){	CCriticalSection* pcsRet;	m_iViewMode = GetDlgCtrlID();	switch (m_iViewMode) {	case IDF_MAIN_WND_3DLOCALA_R:		pcsRet = &g_3DLocalizerAxialCS[0];		break;	case IDF_MAIN_WND_3DLOCALC_R:		pcsRet = &g_3DLocalizerCoronalCS[0];		break;	case IDF_MAIN_WND_3DLOCALS_R:		pcsRet = &g_3DLocalizerSagittalCS[0];		break;	case IDF_MAIN_WND_3DLOCALA_F:		pcsRet = &g_3DLocalizerAxialCS[1];		break;	case IDF_MAIN_WND_3DLOCALC_F:		pcsRet = &g_3DLocalizerCoronalCS[1];		break;	case IDF_MAIN_WND_3DLOCALS_F:		pcsRet = &g_3DLocalizerSagittalCS[1];		break;	case IDF_MAIN_WND_3DLOCALA_C:		pcsRet = &g_3DLocalizerAxialCS[2];		break;	case IDF_MAIN_WND_3DLOCALC_C:		pcsRet = &g_3DLocalizerCoronalCS[2];		break;	case IDF_MAIN_WND_3DLOCALS_C:		pcsRet = &g_3DLocalizerSagittalCS[2];		break;	}	return pcsRet;}void RxFMWndLocalizer::RedrawForFusion(RxDib *pDib){	m_bAfterFusion = TRUE;	m_bUpdate = TR

⌨️ 快捷键说明

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