Browse Source

remove some useless notations.

gsp 2 years ago
parent
commit
b7190efd45

+ 33 - 26
OTSCPP/OTSImagePro/OTSImageProcess.cpp

@@ -1602,7 +1602,7 @@ namespace OTSIMGPROC
 
 			Mat cvcopyImg = Mat(nHeightImg, nWidthImg, CV_8UC1, pPixel);
 		
-
+		
 			Mat labels = Mat::zeros(cvcopyImg.size(), CV_32S);
 			Mat  stats, centroids;
 			int number = connectedComponentsWithStats(cvcopyImg, labels, stats, centroids, 8, CV_32S);
@@ -2147,11 +2147,7 @@ namespace OTSIMGPROC
 	BOOL COTSImageProcess::GetSegmentList(long left, long top, long a_nWidth, long a_nHeight, const BYTE* a_pPixel, COTSSegmentsList& a_listSegments)
 	{
 		ASSERT(a_pPixel);
-		if (!a_pPixel)
-		{
-			//LogErrorTrace(__FILE__, __LINE__, _T("GetSegments: there is no image data"));
-			return FALSE;
-		}
+		
 
 		long nImgSize = a_nWidth * a_nHeight;
 
@@ -2703,41 +2699,52 @@ namespace OTSIMGPROC
 		
 		std::vector<CIntRangePtr> rngs = CalcuGrayLevelRange(onePartImg);
 		
+		
 
 		COTSFieldDataPtr partData = COTSFieldDataPtr(new COTSFieldData());
 		std::map<int, std::vector<COTSParticlePtr>> partAreaMap;
 		for (int i = 0; i < rngs.size(); i++)
 		{
 			partAreaMap.clear();
-			GetParticlesBySpecialGrayRange(onePartImg, rngs[i], CDoubleRangePtr(new CDoubleRange(0, 1000)), a_PixelSize, partData);
+			GetParticlesBySpecialGrayRange(onePartImg, rngs[i], CDoubleRangePtr(new CDoubleRange(0, 2000)), a_PixelSize, partData);
 
 		
 			
-			for (auto p : partData->GetParticleList())
+			for (auto p : partData->GetParticleList())//sorting and filtering
 			{
-				partAreaMap[p->GetPixelArea()].push_back(p);
+				/*if (p->GetActualArea() > 50)
+				{*/
+					partAreaMap[p->GetPixelArea()].push_back(p);
+				//}
+				
 			}
-			auto theBiggestPart = partAreaMap.rbegin()->second[0];
-			theBiggestPart->CalXRayPos();
-			std::map<int, std::vector<COTSParticlePtr>>::reverse_iterator it;
-			auto partsegs = theBiggestPart->GetFeature()->GetSegmentsList();
-			it = partAreaMap.rbegin()++;
-			for (;it!=partAreaMap.rend();it++)
+			if(partAreaMap.size()>0)
 			{
-				for (auto sameAreaP : it->second)
-				{
-					auto segs = sameAreaP->GetFeature()->GetSegmentsList();
-					for (auto s : segs)
+				auto theBiggestPart = partAreaMap.rbegin()->second[0];
+					theBiggestPart->CalXRayPos();
+					std::map<int, std::vector<COTSParticlePtr>>::reverse_iterator it;
+					auto partsegs = theBiggestPart->GetFeature()->GetSegmentsList();
+					it = partAreaMap.rbegin()++;
+					for (; it != partAreaMap.rend(); it++)
 					{
-						partsegs.push_back(s);
+						for (auto sameAreaP : it->second)
+						{
+							auto segs = sameAreaP->GetFeature()->GetSegmentsList();
+							for (auto s : segs)
+							{
+								partsegs.push_back(s);
+							}
+						}
+
 					}
-				}
-				
+				theBiggestPart->GetFeature()->SetSegmentsList(partsegs, true);
+				theBiggestPart->SetFieldId(a_pOTSPart->GetFieldId());
+				theBiggestPart->SetAnalysisId(a_pOTSPart->GetAnalysisId());
+				a_pOTSPart->AddSubParticle(theBiggestPart);
+			
+			
 			}
-			theBiggestPart->GetFeature()->SetSegmentsList(partsegs, true);
-			theBiggestPart->SetFieldId(a_pOTSPart->GetFieldId());
-			theBiggestPart->SetAnalysisId(a_pOTSPart->GetAnalysisId());
-			a_pOTSPart->AddSubParticle(theBiggestPart);
+			
 
 			/*for (auto p : partData->GetParticleList())
 			{

+ 32 - 4
OTSIncAMeasureApp/0-OTSModel/Measure/5-OTSMining/SmplMeasureMining.cs

@@ -103,6 +103,10 @@ namespace OTSModelSharp
             {
                 MergeSubParticleByTheXrayClassification(curFldData, m_Sample.CalculatePixelSize());
             }
+            else 
+            {
+                MergeSubParticleByTheXrayClassification(curFldData, m_Sample.CalculatePixelSize());
+            }
            
 
             //curFldData.CalParticleImageProp(curFldData.GetListAnalysisParticles(), 0);//recalculate the image property of the new merged particles.
@@ -188,7 +192,7 @@ namespace OTSModelSharp
             var finalParts = new List<COTSParticleClr>();
             foreach (var rawPart in rawParts)
             {
-                Dictionary<int, List<COTSParticleClr>> dicParts = new Dictionary<int, List<COTSParticleClr>>();
+                Dictionary<int, List<COTSParticleClr>> dicParts = new Dictionary<int, List<COTSParticleClr>>();// group all the parts according to the classify id.
                 var subParts = rawPart.GetSubParticles();
                 foreach (var matricsPart in subParts)
                 {
@@ -205,7 +209,7 @@ namespace OTSModelSharp
                 
                 }
                
-                foreach (var typeParts in dicParts)
+                foreach (var typeParts in dicParts)//merge all  parts in the same group.
                 {
                     var firstPart = typeParts.Value[0];
                     if (typeParts.Value.Count > 0)
@@ -302,8 +306,32 @@ namespace OTSModelSharp
 
             return finalSegs;
         }
-     
-      
+        private void ConvertSubParticleToFieldParticle(COTSFieldData curFldData, double pixelSize)
+        {
+            var rawParts = curFldData.GetListAnalysisParticles();
+
+            var finalParts = new List<COTSParticleClr>();
+            foreach (var rawPart in rawParts)
+            {
+              
+                var subParts = rawPart.GetSubParticles();
+                foreach (var subPart in subParts)
+                {
+                   
+                    finalParts.Add(subPart);
+
+                }
+
+                
+
+            }
+
+
+            curFldData.SetListAnalysisParticles(finalParts);
+
+
+        }
+
         public bool ClassifyParticlesBySpectrum(List<COTSParticleClr> matricsParts, string libname)
         {
             List<COTSParticleClr> a_listAnalysisParticles = matricsParts;

+ 0 - 1
OTSIncAMeasureApp/ServiceCenter/EDSController.cs

@@ -250,7 +250,6 @@ namespace OTSModelSharp.ServiceCenter
                 List<CPosXrayClr> posxrays = new List<CPosXrayClr>();
                 foreach (var rawpart in a_listParticles)
                 {
-                    //CMatrixXrayParticle matixPart = (CMatrixXrayParticle)part;
                     var parts = rawpart.GetSubParticles();
                     foreach (var part in parts)
                     {