作业帮 > 综合 > 作业

谁能告诉我一下代码是干嘛用的啊(matlab语言)

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 08:06:22
谁能告诉我一下代码是干嘛用的啊(matlab语言)
#include "mex.h"
#define Index3D(r,c,b,R,C,B) (b)*(R)*(C) + (c)*(R) + (r)
#define Index2D(r,c,R,C) (c)*(R) + (r)
//syntax:IntHist = mexImgtoIntHist(ImgBins,Row,Col,Bin);
void mexFunction(int nlhs,mxArray *plhs[],
int nrhs,const mxArray *prhs[])
{
double *ImgBins,*IntHist;
int r,c,b,Row,Col,Bin,IntHistDims[3];
ImgBins = mxGetPr(prhs[0]);
Row = (int)mxGetScalar(prhs[1]);
Col = (int)mxGetScalar(prhs[2]);
Bin = (int)mxGetScalar(prhs[3]);
IntHistDims[0] = Row;
IntHistDims[1] = Col;
IntHistDims[2] = Bin;
plhs[0] = mxCreateDoubleMatrix(Row*Col*Bin,1,mxREAL);
IntHist = mxGetPr(plhs[0]);
mxSetDimensions(plhs[0],IntHistDims,3);
for(r=0;r 0)
for(b=0;b
程序用于获取图像的灰度直方图,Bin是灰度区间长度,Row,Col分别是行列数,ImgBins是和图像大小相同的矩阵,里面存储着每个像素其灰度值所处的灰度区间,例如某像素灰度值是15,而Bin为16,也就是每个灰度区间长度为256/16=16,则ImgBins矩阵中该像素对应的位置的值为1,即它处在第一个灰度区间.IntHist(row,col,bin)就是图像矩阵在0~row,0~col的范围内处于第bin个灰度区间的像素个数.