• 大小: 680KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-28
  • 语言: 其他
  • 标签: matlab  

资源简介

用恒虚警检测算法CFAR检测器自动检测出舰船目标,并提供的实验数据图像

资源截图

代码片段和文件信息

#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 < rows - padSize; i++)
    {
        for (int j = 0 + padSize; j < cols - 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;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           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

评论

共有 条评论