代碼片段和文件信息
#include?“mex.h“?/*?Always?include?this?*/
#include?“math.h“
void?mexFunction(int?nlhs?mxArray?*plhs[]?????????????/*?Output?variables?*/
?????????????????int?nrhs?const?mxArray?*prhs[])???????/*?Input?variables?*/
{
??
?????//?check?proper?input?and?output
????if(nrhs!=3)
????????mexErrMsgIdAndTxt(?“MATLAB:cfarMEX:invalidNumInputs“
????????????????“Three?inputs?Required.“);
????else?if(nlhs?>?1)
????????mexErrMsgIdAndTxt(?“MATLAB:cfarMEX:maxlhs“
????????????????“Too?many?output?arguments.“);
????else?if(!mxIsStruct(prhs[2]))
????????mexErrMsgIdAndTxt(?“MATLAB:cfarMEX:inputNotStruct“
????????????????“Input?must?be?a?structure.“);
????//Declarations
????unsigned?char?*image;
????unsigned?char?*mask;
????double?*outputImage;
????unsigned?char?pixel;
????int?rows?cols;
????double?sum?=?0?avg?=?0;
????
????int?backgroundSize?=?(int)(mxGetScalar(mxGetField(prhs[2]?0?“backgroundSize“)));
????int?guardSize?=?(int)(mxGetScalar(mxGetField(prhs[2]?0?“guardSize“)));
????int?padSize?=?(int)(mxGetScalar(mxGetField(prhs[2]?0?“padSize“)));
???????????
????//?Get?image?as?unsigned?uint8?pointer?as?well?as?dimensions
????image?=?(unsigned?char?*)mxGetData(prhs[0]);
????mask?=?(unsigned?char?*)mxGetData(prhs[1]);
????
????//?Get?image/mask?dimensions
????rows?=?mxGetN(prhs[0]);
????cols?=?mxGetM(prhs[0]);
????
????//?Create?an?output?image?array
????plhs[0]?=?mxCreateNumericMatrix(cols?rows?mxDOUBLE_CLASS?false);
????outputImage?=?(double?*)?mxGetPr(plhs[0]);
????
????//?Run?through?image?and?process?it
????for?(int?i?=?0?+?padSize;?i?????{
????????for?(int?j?=?0?+?padSize;?j?????????{
???????????pixel?=?image[j?+?cols*i];
???????????if(mask[j?+?cols*i]?>?0)
????????????{
????????????????for(int?x?=?-floor(backgroundSize/2);?x?<=?floor(backgroundSize/2);?x++)
????????????????{
????????????????????for(int?y?=?-floor(backgroundSize/2);?y?<=?floor(backgroundSize/2);?y++)
????????????????????{
????????????????????????sum?+=?(int)?image[(j+x)?+?cols*(i+y)];
????????????????????}
????????????????}
????????????????for(int?x?=?-floor(guardSize/2);?x?<=?floor(guardSize/2);?x++)
????????????????{
????????????????????for(int?y?=?-floor(guardSize/2);?y?<=?floor(guardSize/2);?y++)
????????????????????{
????????????????????????sum?-=?(int)?image[(j+x)?+?cols*(i+y)];
????????????????????}
????????????????}
????????????????
????????????????outputImage[j?+?cols*i]?=?sum/(backgroundSize*backgroundSize?-?guardSize*guardSize);
????????????????
????????????????sum?=?0;
????????????}
????????????else
?????????????outputImage[j?+?cols*i]?=?0;
????????}?
????}
????
????return;
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-05-11?21:45??CFAR\
?????文件????????1336??2014-06-28?13:52??CFAR\README
?????文件???????????0??2014-06-28?13:52??CFAR\SARBlockProcessor.m
?????文件????????2650??2014-06-28?13:52??CFAR\avgRegionImage.cpp
?????文件???????12774??2014-06-28?13:52??CFAR\avgRegionImage.mexa64
?????文件???????20617??2006-04-12?17:00??CFAR\data1.jpg
?????文件????????1957??2018-05-11?21:20??CFAR\runCFAR.m
?????文件?????????586??2014-06-28?13:52??CFAR\scaledata.m
?????文件??????681663??2014-06-28?13:52??CFAR\vessels.png
評(píng)論
共有 條評(píng)論