|
@@ -82,6 +82,26 @@ namespace OTSModelSharp.ServiceInterface
|
|
|
OTSCLRINTERFACE.ImageProForClr imgpro = new OTSCLRINTERFACE.ImageProForClr();
|
|
|
int num=0;
|
|
|
imgpro.GetSpecialGrayRangeImage(pBSEImageIn, cIntRangeClr, pBSEImageOut,ref num);
|
|
|
+ for (int i = 0; i < iWidth; i++)
|
|
|
+ {
|
|
|
+ for (int j = 0; j < iHeight; j++)
|
|
|
+ {
|
|
|
+ var bse = pBSEImageOut.GetBSEValue(i, j);
|
|
|
+ if (bse == 255)
|
|
|
+ {
|
|
|
+ var originalBse = pBSEImageIn.GetBSEValue(i, j);
|
|
|
+ pBSEImageOut.SetBSEValue(i, j, originalBse);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ pBSEImageOut.SetBSEValue(i, j, 255);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
BSEImageNoBG = pBSEImageOut.GetImageDataPtr();
|
|
|
|
|
@@ -93,8 +113,31 @@ namespace OTSModelSharp.ServiceInterface
|
|
|
|
|
|
|
|
|
List<COTSParticleClr> parts = new List<COTSParticleClr>();
|
|
|
+ List<COTSParticleClr> specialGreyparts = new List<COTSParticleClr>();
|
|
|
RemoveBGAndGetParts(a_pImgIn, a_pImgProcessParam, a_pixelSize,ref parts);
|
|
|
|
|
|
+ if (a_pImgProcessParam.SpecialGreyRangeParam.GetIsToRun())
|
|
|
+ {
|
|
|
+ var param = a_pImgProcessParam.SpecialGreyRangeParam;
|
|
|
+ var ranges = param.GetSpecialGreyRanges();
|
|
|
+
|
|
|
+
|
|
|
+ foreach (var r in ranges)
|
|
|
+ {
|
|
|
+ CIntRangeClr r1 = new CIntRangeClr();
|
|
|
+ r1.SetStart(r.range.GetStart());
|
|
|
+ r1.SetEnd(r.range.GetEnd());
|
|
|
+
|
|
|
+ CDoubleRangeClr r2 = new CDoubleRangeClr();
|
|
|
+ r2.SetStart(r.diameterRange.GetStart());
|
|
|
+ r2.SetEnd(r.diameterRange.GetEnd());
|
|
|
+
|
|
|
+ GetParticlesBySpecialGray(a_pImgIn, r1, r2, a_pixelSize, ref specialGreyparts);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
for (int i = 0; i < a_pImgOut.GetWidth(); i++)
|
|
|
{
|
|
|
for (int j = 0; j < a_pImgOut.GetHeight(); j++)
|
|
@@ -102,7 +145,24 @@ namespace OTSModelSharp.ServiceInterface
|
|
|
a_pImgOut.SetBSEValue(i, j, 255);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ if (specialGreyparts.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (var p in specialGreyparts)
|
|
|
+ {
|
|
|
+ foreach (var s in p.GetFeature().GetSegmentsList())
|
|
|
+ {
|
|
|
+ for (int i = s.GetStart(); i < s.GetStart() + s.GetLength(); i++)
|
|
|
+ {
|
|
|
+ var bseValue = a_pImgIn.GetBSEValue(i, s.GetHeight());
|
|
|
+ a_pImgOut.SetBSEValue(i, s.GetHeight(), bseValue);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
foreach (var p in parts)
|
|
|
{
|
|
|
foreach (var s in p.GetFeature().GetSegmentsList())
|
|
@@ -153,7 +213,7 @@ namespace OTSModelSharp.ServiceInterface
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
- public bool GetParticlesBySpecialGray(CBSEImgClr img, CIntRangeClr grayrange, CIntRangeClr diameterRange,double a_pixelSize, ref List<COTSParticleClr> parts)
|
|
|
+ public bool GetParticlesBySpecialGray(CBSEImgClr img, CIntRangeClr grayrange, CDoubleRangeClr diameterRange,double a_pixelSize, ref List<COTSParticleClr> parts)
|
|
|
{
|
|
|
OTSCLRINTERFACE.ImageProForClr imgpro = new OTSCLRINTERFACE.ImageProForClr();
|
|
|
|