123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #include "stdafx.h"
- #include "ImageProForClr.h"
- namespace OTSCLRINTERFACE
- {
- ImageProForClr::ImageProForClr(COTSImgProcPrmClr^ perameter)
- {
- imgProEngine = new COTSImageProcess(perameter->GetImgPrcPrmPtr());
- }
- void ImageProForClr::UpdateImageProcessParam(COTSImgProcPrmClr^ perameter)
- {
- imgProEngine->UpdateImageProcessParam(perameter->GetImgPrcPrmPtr());
- }
- bool ImageProForClr::GetFieldDataFromImage(CBSEImgClr^ bseImg, COTSImgProcPrmClr^ perameter, double a_PixelSize, COTSFieldDataClr^ fieldData)
- {
- imgProEngine->UpdateImageProcessParam(perameter->GetImgPrcPrmPtr());
- auto param = perameter->GetImgPrcPrmPtr();
- bool ret;
- if (param->GetBGRemoveType() == OTS_BGREMOVE_TYPE::Matrics)
- {
- ret = imgProEngine->SplitFieldImageIntoMatricsParticle(bseImg->GetBSEImgPtr(), a_PixelSize, fieldData->GetOTSFieldDataPtr());
- }
- else if (param->GetBGRemoveType() == OTS_BGREMOVE_TYPE::WaterShed)
- {
- ret = imgProEngine->SplitRawImageIntoParticlesByWaterShed(bseImg->GetBSEImgPtr(), a_PixelSize, fieldData->GetOTSFieldDataPtr());
- }
- else
- {
- ret = imgProEngine->RemoveBGByCVconnectivities(bseImg->GetBSEImgPtr(), a_PixelSize, fieldData->GetOTSFieldDataPtr());
- }
-
-
- return ret;
- }
- bool ImageProForClr::GetParticlesBySpecialPartGrayRange(CBSEImgClr^ bseImg, CIntRangeClr^ grayRange, CDoubleRangeClr^ diameterRange, double a_PixelSize, COTSFieldDataClr^ fieldData)
- {
- bool ret = imgProEngine->GetParticlesBySpecialGrayRange(bseImg->GetBSEImgPtr(), grayRange->GetCIntRangePtr(), diameterRange->GetCDoubleRangePtr(), a_PixelSize, fieldData->GetOTSFieldDataPtr());
- return ret;
- }
- bool ImageProForClr::CalcuParticleImagePropertes(COTSParticleClr^ particle, double a_PixelSize)
- {
- bool ret = imgProEngine->CalcuParticleImagePropertes(particle->GetOTSParticlePtr(), a_PixelSize);
- return ret;
- }
- BOOL ImageProForClr::MergeBigBoundaryParticles(System::Collections::Generic::List<COTSFieldDataClr^>^ allFields, double pixelSize, int scanFieldSize, Size ResolutionSize, System::Collections::Generic::List<COTSParticleClr^>^ mergedParts)
- {
- std::vector<COTSFieldDataPtr> allFlds;
- COTSParticleList mergedParticles;
- for each (auto f in allFields)
- {
- allFlds.push_back(f->GetOTSFieldDataPtr());
- }
- CSize CResolutionSize;
- CResolutionSize.cx = ResolutionSize.Width;
- CResolutionSize.cy = ResolutionSize.Height;
- bool ret = imgProEngine->MergeBigBoundaryParticles(allFlds, pixelSize, scanFieldSize, CResolutionSize, mergedParticles);
- for each (auto p in mergedParticles)
- {
- mergedParts->Add(gcnew COTSParticleClr(p));
- }
- return ret;
- }
- void ImageProForClr::ExecuteBinaryProcess(CBSEImgClr^ a_pImgIn, COTSImgProcPrmClr^ a_pImageProcessParam, CBSEImgClr^ a_pImgOut/*, long% foundedPixelNum*/)
- {
- // the background pixel will be 0,and the other part will be 255.
- //long num = 0;
- imgProEngine->BinaryProcess(a_pImgIn->GetBSEImgPtr(), a_pImageProcessParam->GetImgPrcPrmPtr(), a_pImgOut->GetBSEImgPtr()/*, num*/);
- //foundedPixelNum = num;
- return;
- }
- void ImageProForClr::GetSpecialGrayRangeImage(CBSEImgClr^ a_pImgIn, CIntRangeClr^ a_SpecialGrayRange, CBSEImgClr^ a_pBinImgOut, long% foundedPixelNum)
- {
- long num = 0;
- imgProEngine->GetSpecialGrayRangeImage(a_pImgIn->GetBSEImgPtr(), *a_SpecialGrayRange->GetCIntRangePtr(), a_pBinImgOut->GetBSEImgPtr(), num);
- foundedPixelNum = num;
- }
- bool ImageProForClr::CalcuBrightPhaseDarkPhaseGrayByOtsu(CBSEImgClr^ m_pBSEImg, int% bright, int% dark)
- {
- int nativebr = bright;
- int nativedark = dark;
- BOOL result = imgProEngine->CalcuBrightPhaseDarkPhaseGrayByOtsu(m_pBSEImg->GetBSEImgPtr(), nativebr, nativedark);
- bright = nativebr;
- dark = nativedark;
- return result;
- }
- }
|