实验三

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
2026-04-27 19:00:59 +08:00
Unverified
parent a4d57ddbea
commit ab8ac63ad0
9 changed files with 231 additions and 0 deletions
+79
View File
@@ -0,0 +1,79 @@
#include<iostream>
#include<cmath>
#include<cstdio>
#define H 265
#define W 272
using namespace std;
int main()
{
unsigned char *grey;
grey = new unsigned char[H * W];
FILE *f;
fopen_s(&f, "./数据/blood.raw", "rb");
if (f)
{
fread(grey, sizeof(unsigned char), H * W, f);
fclose(f);
}
else
{
cout << "无法打开文件" << endl;
return 0;
}
int tw = 3;
int th = 3;
int sobel_x[9]={-1,0,1,-2,0,2,-1,0,1};
int sobel_y[9]={-1,-2,-1,0,0,0,1,2,1};
int i,j,k,l;
unsigned char *result_grey;
result_grey = new unsigned char[H * W];
for (i = 0; i < H * W; i++)
{
result_grey[i] = 255;
}
for (i = th / 2; i < H - th / 2; i++)
{
for (j = tw / 2; j < W - tw / 2; j++)
{
int gx = 0;
int gy = 0;
for (k = -th / 2; k <= th / 2; k++)
{
for (l = -tw / 2; l <= tw / 2; l++)
{
int pixel = grey[(i + k) * W + (j + l)];
int index = (k + th / 2) * tw + (l + tw / 2);
gx += pixel * sobel_x[index];
gy += pixel * sobel_y[index];
}
}
int sum = (int)sqrt(gx * gx + gy * gy);
if (sum > 100)
{
result_grey[i * W + j] = 0;
}
else
{
result_grey[i * W + j] = 255;
}
}
}
FILE *fnew;
fopen_s(&fnew, "./数据/sobel.raw", "wb");
if (fnew)
{
fwrite(result_grey, sizeof(unsigned char), H * W, fnew);
fclose(fnew);
}
else
{
cout << "创建文件失败" << endl;
return 0;
}
}