int MaskNode::Dispatch(LPCTSTR func, int nArg, LPCTSTR strArg, void* arg, void* ret) { if (0 == _tcsicmp(_SC("ApplyMask"), func) && arg) { MaskRenderArgs* maskArgs = (MaskRenderArgs*)arg; ApplyMask(maskArgs->appliedNode, maskArgs->g, maskArgs->rect); return 0; } return -1; }
// D=D^S, D=D & Mask, D=D^S --> if (Mask==1) D else S BOOL KDDBMask::TransBlt(HDC hdcDest, int nDx0, int nDy0, int nDw, int nDh, HDC hdcSrc, int nSx0, int nSy0, int nSw, int nSh) { StretchBlt(hdcDest, nDx0, nDy0, nDw, nDh, hdcSrc, nSx0, nSy0, nSw, nSh, SRCINVERT); // D^S ApplyMask(hdcDest, nDx0, nDy0, nDw, nDh, SRCAND); // if trans D^S else 0 return StretchBlt(hdcDest, nDx0, nDy0, nDw, nDh, hdcSrc, nSx0, nSy0, nSw, nSh, SRCINVERT); // if trans D else S }
BOOL KDDBMask::TransBlt_FlickFree(HDC hdcDest, int nDx0, int nDy0, int nDw, int nDh, HDC hdcSrc, int nSx0, int nSy0, int nSw, int nSh) { StretchBlt(hdcSrc, nSx0, nSy0, nSw, nSh, hdcDest, nDx0, nDy0, nDw, nDh, SRCINVERT); // D^S ApplyMask(hdcSrc, nSx0, nSy0, nSw, nSh, 0x220000); // if trans 0 else D^S return StretchBlt(hdcDest, nDx0, nDy0, nDw, nDh, // if trans D else S hdcSrc, nSx0, nSy0, nSw, nSh, SRCINVERT); }
void TSymptom::Process() { awpImage* pbg = m_background.GetImage(); awpImage* pcr = m_current.GetImage(); awpImage* pdf = m_diff.GetImage(); awpImage* pbn = m_binary.GetImage(); awpImage* pbns = m_binary_source.GetImage(); _awpZeroImage(pbn); _awpZeroImage(pbns); _awpZeroImage(pdf); if (pbg == NULL || pcr == NULL || pdf == NULL || pbn == NULL) return; if (pbg->sSizeX != pcr->sSizeX || pbg->sSizeY != pcr->sSizeY) return; //вычисление разницы между полученным изображением и эталонным. AbsDiff(); if (m_NumFrames < m_NumFramesToTraining) return; //нахождение бинарного изображения _awpAdaptiveThreshold(pdf, pbns); ::awpCopyImage(pbns, &pbn); _awpNoiseRemove(pbns); //awpGaussianBlur(pbns, pbn,2); #ifdef _DEBUG m_background.SaveImage("background.jpg"); m_current.SaveImage("Current.jpg"); m_diff.SaveImage("diff.jpg"); m_binary.SaveImage("binary.jpg"); m_binary_source.SaveImage("binary_source.jpg"); #endif // сопровождение найденных объектов for (int i = 0; i < m_BLOBs.GetCount(); i++) { TLFBLOBObject* bo = (TLFBLOBObject*)m_BLOBs.Get(i); bo->TrackBLOB(NULL); } // вычисление интегрального изображения. // todo: удаление областей на бинарном изображении, занятых объектами. ApplyMask(pbn); // анализ полученного бинарного изображения // нахождение новых объектов Analysis(NULL); }
valarray<pair<double,double>> COIT3Row::GetMaskedDataError() { return ApplyMask(m_flag, m_t3_data_err); }
valarray<complex<double>> COIT3Row::GetMaskedData() { return ApplyMask(m_flag, m_t3_data); }