Files
Digital-image-process/lab-1/lab1/lab1.cpp
2026-03-24 19:32:48 +08:00

58 lines
1.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include<iostream>
#include<cstdio>
#include<cmath>
#define H 1210
#define W 1240
using namespace std;
int main()
{
unsigned char* grey;
// 存灰度值的数组
grey = new unsigned char[H * W];
FILE* filetest;
//读取文件
fopen_s(&filetest, "E:\\Digital image process\\lab-1\\第一次上机实验数据\\test.raw", "rb");
fread(grey, sizeof(unsigned char), H * W, filetest);
int i, j;
int* Pi_number = new int[256];
for (i = 0; i < 256; i++) {
Pi_number[i] = 0;
}
for (i = 0; i < H; i++) {
for (j = 0; j < W; j++) {
Pi_number[grey[i * W + j]]++;
}
}
float* Pi = new float[256];
for (i = 0; i < 256; i++) {
Pi[i] = (float)Pi_number[i] / (H * W);
}
//计算均值和标准差
float mean = 0;
for (i = 0; i < 256; i++) {
mean += (float)i * Pi[i];
}
float variance = 0;
for (i = 0; i < 256; i++) {
variance += Pi[i] * (i - mean) * (i - mean);
}
float stdvar = sqrt(variance);
FILE* fileout;
fopen_s(&fileout, "E:\\Digital image process\\lab-1\\第一次上机实验数据\\result.txt", "w");
fprintf(fileout, "完成人测绘2401 24110901003 毕爽爽 \n");
fprintf(fileout, "均值:%f标准差%f\n", mean, stdvar);
for (i = 0; i < 256; i++) {
fprintf(fileout, "灰度值为%d的像素个数%d,频率:%f\n", i, Pi_number[i], Pi[i]);
}
fclose(filetest);
fclose(fileout);
}