求大神看看下边的程序啊。。。。求解释
#include #include
#include
#include
//宏定义符号常量
#define MAX_VALUE 256 //定义最大值常量
#define MAX_DIFF_VALUE 2*MAX_VALUE //计算差分熵时的最大值
#define IMAGE_WIDTH 256 //符号宽度常量设置
void usage(void); //声明一个返回值为空的usage函数
float ent(float p[], int num_symbols);//声明一个返回值为浮点型的ent计算熵函数
void main(int argc, char **argv) //主函数开始
{
char infile[80]; //用来输入图形文件的字符数组
int i,j,k;
FILE *ifp; //存图像的文件名
unsigned char* img_content; //文件的内容为无符号字符型
int size; //设置整型变量size
int freq[MAX_DIFF_VALUE]; //设置整形数组freq
float prob[MAX_DIFF_VALUE]; //设置整形数组prob
int diff; //设置正型变量diff
float entropy; //设置浮点型变量float
getchar();
//打开输入的图像
strcpy(infile , "SENA.IMG"); //把图像的数据拷贝到字符数组infile中
ifp = fopen(infile,"rb"); //将数组中的数据存到文件infile中
if(ifp ==NULL) //判断文件是否为空
{
printf("Image file %s cannot be opened for input.\n", infile);
getchar();
return;
}
//求出输入文件的大小
fseek(ifp, 0, SEEK_END); //在文件的结尾设置指针
size = ftell(ifp); //得到文件的大小
++size;
fseek(ifp, 0, SEEK_SET); //在文件的开头设置指针
//为文件分配存储空间
img_content = (unsigned char*) malloc (size * sizeof(unsigned char));
if (img_content == NULL) //如果文件内容为空
{
printf("Unable to allocate memory for file.\n");
fclose(ifp);
getchar();
return;
}
//取出文件
fread(img_content, sizeof(unsigned char), size, ifp);
fclose(ifp);
//得到灰度图像的频点
for(j=0; j