Parcourir la source

add errodDilateparam

gsp il y a 3 ans
Parent
commit
9673d5531b

+ 11 - 1
OTSCPP/OTSClrInterface/ImageProClr/OTSImgProcPrmClr.cpp

@@ -135,7 +135,17 @@ namespace OTSCLRINTERFACE {
 	{
 		m_LpImgProParam->get()->SetAutoBGRemoveType(a_oVal);
 	}
-
+	int COTSImgProcPrmClr::GetErrodDilateParam()
+	{
+		return m_LpImgProParam->get()->GetErrodDilateParam();
+		
+	
+	}
+	void COTSImgProcPrmClr::SetErrodDilateParam(int a_val)
+	{
+		m_LpImgProParam->get()->SetErrodDilateParam(a_val);
+	
+	}
 
 	
 }

+ 2 - 1
OTSCPP/OTSClrInterface/ImageProClr/OTSImgProcPrmClr.h

@@ -44,7 +44,8 @@ namespace OTSCLRINTERFACE {
 		int GetAutoBGRemoveType();
 		
 		void SetAutoBGRemoveType(int a_oVal);
-
+		int GetErrodDilateParam();
+		void SetErrodDilateParam(int a_val);
 		
 
 	protected:

+ 18 - 6
OTSCPP/OTSImagePro/OTSImageProcess.cpp

@@ -1737,8 +1737,11 @@ namespace OTSIMGPROC
 
 			//Mat cvcopyImg = Mat(nHeightImg, nWidthImg, CV_8UC1, pPixel);// use the medianblur method to achieve the same effect as open morphology(errod and dialate).
 			//pPixel = cvcopyImg.data;
-			COTSImageProcess::BErode3(pPixel, pTempImg, 3, nHeightImg, nWidthImg);
-			COTSImageProcess::BDilate3(pTempImg, pPixel, 3, nHeightImg, nWidthImg);
+			
+				COTSImageProcess::BErode3(pPixel, pTempImg, 3, nHeightImg, nWidthImg);
+				COTSImageProcess::BDilate3(pTempImg, pPixel, 3, nHeightImg, nWidthImg);
+			
+			
 			
 		a_pBinImgOut->SetImageData(pPixel, nWidthImg, nHeightImg);
 
@@ -1797,8 +1800,13 @@ namespace OTSIMGPROC
 					pPixel[i] = 0;
 				}
 			}
-			COTSImageProcess::BErode3(pPixel, pTempImg, 3, nHeightImg, nWidthImg);
-			COTSImageProcess::BDilate3(pTempImg, pPixel, 3, nHeightImg, nWidthImg);
+			int errodDilateParam = a_pImageProcessParam->GetErrodDilateParam();
+			if (errodDilateParam > 0)
+			{
+				COTSImageProcess::BErode3(pPixel, pTempImg, errodDilateParam, nHeightImg, nWidthImg);
+				COTSImageProcess::BDilate3(pTempImg, pPixel, errodDilateParam, nHeightImg, nWidthImg);
+			}
+			
 			//Mat cvcopyImg = Mat(nHeightImg, nWidthImg, CV_8UC1, pPixel);// use the medianblur method to achieve the same effect as open morphology(errod and dialate).
 			//medianBlur(cvcopyImg, cvcopyImg, 5);
 			//pPixel = cvcopyImg.data;
@@ -1861,8 +1869,12 @@ namespace OTSIMGPROC
 			default:
 				break;
 			}
-			COTSImageProcess::BErode3(pPixel, pTempImg, 3, nHeightImg, nWidthImg);
-			COTSImageProcess::BDilate3(pTempImg, pPixel, 3, nHeightImg, nWidthImg);
+			int errodDilateParam = a_pImageProcessParam->GetErrodDilateParam();
+			if (errodDilateParam > 0)
+			{
+				COTSImageProcess::BErode3(pPixel, pTempImg, errodDilateParam, nHeightImg, nWidthImg);
+				COTSImageProcess::BDilate3(pTempImg, pPixel, errodDilateParam, nHeightImg, nWidthImg);
+			}
 			/*Mat cvcopyImg = Mat(nHeightImg, nWidthImg, CV_8UC1, pPixel);
 			medianBlur(cvcopyImg, cvcopyImg, 5);
 			pPixel = cvcopyImg.data;*/

+ 4 - 0
OTSCPP/OTSImagePro/OTSImageProcessParam.h

@@ -55,6 +55,9 @@ namespace OTSIMGPROC
 		OTS_AUTOBGREMOVE_TYPE GetAutoBGRemoveType() const { return(OTS_AUTOBGREMOVE_TYPE)m_autoBGRemoveType; }
 
 		void SetAutoBGRemoveType(int a_oVal) { m_autoBGRemoveType = a_oVal; }
+
+		void SetErrodDilateParam(int a_val) { m_errodDilateParam = a_val; }// 0 means don't use errosion and dilation.
+		int GetErrodDilateParam() {return m_errodDilateParam ; }
 	
 	protected:
 
@@ -77,6 +80,7 @@ namespace OTSIMGPROC
 
 		int m_BGRemoveType;
 		int m_autoBGRemoveType;
+		int m_errodDilateParam;
 		
 	};
 

+ 9 - 9
OTSIncAMeasureApp/0-OTSModel/OTSDataType/COTSImageProcParam.cs

@@ -22,7 +22,7 @@ namespace OTSDataType
         private CIntRange m_oParticleGray = new CIntRange();
         private OTS_BGREMOVE_TYPE m_BGRemoveType;
         private OTS_AUTOBGREMOVE_TYPE m_autoBGRemoveType;
-        int m_CorrosionExpansionCoefficient;
+        int m_errodDilateParam;
 
         private CSpecialGrayRangeParam m_specialGreyRangeParam;
 
@@ -45,7 +45,7 @@ namespace OTSDataType
             m_oParticleGray = new CIntRange(DEFUALT_PARTICLE_GRAY_LEVEL_MIN, DEFUALT_PARTICLE_GRAY_LEVEL_MAX);
             m_BGRemoveType = OTS_BGREMOVE_TYPE.MANUAL;// OTS_BGREMOVE_TYPE.AUTO;
             m_autoBGRemoveType = OTS_AUTOBGREMOVE_TYPE.MIDDLE;
-            m_CorrosionExpansionCoefficient = 3;
+            m_errodDilateParam = 3;
         }
         public CDoubleRange GetIncAreaRange() { return m_oIncArea; }
         public void SetIncAreaRange(CDoubleRange a_oVal) { m_oIncArea = a_oVal; }
@@ -64,9 +64,9 @@ namespace OTSDataType
 
         public void SetAutoBGRemoveType(OTS_AUTOBGREMOVE_TYPE a_oVal) { m_autoBGRemoveType = a_oVal; }
 
-        public int GetCorrosionExpansionCoefficient() { return m_CorrosionExpansionCoefficient; }
+        public int GetErrodDilateParam() { return m_errodDilateParam; }
 
-        public void SetCorrosionExpansionCoefficient(int a_oVal) { m_CorrosionExpansionCoefficient = a_oVal; }
+        public void SetErrodDilateParam(int a_oVal) { m_errodDilateParam = a_oVal; }
 
 
         public void Duplicate(COTSImageProcParam a_oSource)
@@ -82,7 +82,7 @@ namespace OTSDataType
             m_oParticleGray.SetEnd(a_oSource.m_oParticleGray.GetEnd());
             m_BGRemoveType = a_oSource.m_BGRemoveType;
             m_autoBGRemoveType = a_oSource.m_autoBGRemoveType;
-            m_CorrosionExpansionCoefficient = a_oSource.m_CorrosionExpansionCoefficient;
+            m_errodDilateParam = a_oSource.m_errodDilateParam;
 
 
 
@@ -94,7 +94,7 @@ namespace OTSDataType
             return m_oIncArea == a_oSource.m_oIncArea &&
                 m_oBGGray == a_oSource.m_oBGGray &&
                 m_oParticleGray == a_oSource.m_oParticleGray &&
-                m_CorrosionExpansionCoefficient == a_oSource.m_CorrosionExpansionCoefficient;
+                m_errodDilateParam == a_oSource.m_errodDilateParam;
 
         }
 
@@ -111,7 +111,7 @@ namespace OTSDataType
             slo.Register("ParticleGray", m_oParticleGray);
 
             xInt xnCorrosionExpansionCoefficient = new xInt();
-            slo.Register("CorrosionExpansionCoefficient", xnCorrosionExpansionCoefficient);
+            slo.Register("ErrodDilateParam", xnCorrosionExpansionCoefficient);
 
             xString xnBGRemoveType = new xString();
             xString xnautoBGRemoveType = new xString();
@@ -124,7 +124,7 @@ namespace OTSDataType
 
                 xnBGRemoveType.AssignValue((int)m_BGRemoveType+":"+m_BGRemoveType.ToString());
                 xnautoBGRemoveType.AssignValue((int)m_autoBGRemoveType+":"+m_autoBGRemoveType.ToString());
-                xnCorrosionExpansionCoefficient.AssignValue(m_CorrosionExpansionCoefficient);
+                xnCorrosionExpansionCoefficient.AssignValue(m_errodDilateParam);
                 slo.Serialize(true, classDoc, rootNode);
             }
             else
@@ -133,7 +133,7 @@ namespace OTSDataType
                 //自动去背景设置
                 m_BGRemoveType = (OTS_BGREMOVE_TYPE)Convert.ToInt32( xnBGRemoveType.value().Split(':')[0]);
                 m_autoBGRemoveType = (OTS_AUTOBGREMOVE_TYPE)Convert.ToInt32( xnautoBGRemoveType.value().Split(':')[0]);
-                m_CorrosionExpansionCoefficient = Convert.ToInt32(xnCorrosionExpansionCoefficient.value());
+                m_errodDilateParam = Convert.ToInt32(xnCorrosionExpansionCoefficient.value());
             }
         }
     }

+ 2 - 2
OTSIncAMeasureApp/7-OTSProgMgrInfo/ProgMgrInfoForm.cs

@@ -604,7 +604,7 @@ namespace OTSMeasureApp
             //颗粒灰度范围 最大
             IDC_EDIT_PARTMAX.Text = m_cotsimgprocprm.GetParticleGray().GetEnd().ToString();
             //腐蚀膨胀系数
-            IDC_COMBO_CorrosionExpansionCoefficient.Text=m_cotsimgprocprm.GetCorrosionExpansionCoefficient().ToString();
+            IDC_COMBO_CorrosionExpansionCoefficient.Text=m_cotsimgprocprm.GetErrodDilateParam().ToString();
 
             //去背景方式
             foreach (ComboBoxItem cbi in IDC_COMBO_BGREMOVETYPE.Items)
@@ -825,7 +825,7 @@ namespace OTSMeasureApp
             ComboBoxItem enum_AUTOBGREMOVETYP = (ComboBoxItem)IDC_COMBO_AUTOBGREMOVETYP.SelectedItem;
             m_cotsimgprocprm.SetAutoBGRemoveType((otsdataconst.OTS_AUTOBGREMOVE_TYPE)enum_AUTOBGREMOVETYP.Value);
             //腐蚀膨胀系数
-            m_cotsimgprocprm.SetCorrosionExpansionCoefficient(Convert.ToInt32(IDC_COMBO_CorrosionExpansionCoefficient.Text));
+            m_cotsimgprocprm.SetErrodDilateParam(Convert.ToInt32(IDC_COMBO_CorrosionExpansionCoefficient.Text));
         }
 
         /// <summary>

+ 1 - 0
OTSIncAMeasureApp/ServiceCenter/CImageHandler.cs

@@ -243,6 +243,7 @@ namespace OTSModelSharp.ServiceInterface
             prmclr.SetParticleGray(r3);
             prmclr.SetBGRemoveType((int)a_oSource.GetBGRemoveType());
             prmclr.SetAutoBGRemoveType((int)a_oSource.GetAutoBGRemoveType());
+            prmclr.SetErrodDilateParam(a_oSource.GetErrodDilateParam());
 
             return prmclr;
         }