数字图像处理C语言程序
这个程序是我在大学时期期末课程设计时按照老师要求利用C语言写出来的,鉴于当时在网上的C语言图像处理资料少之又少,并且很多东西作用都不大,因此我今天把我当时写的程序共享给大家,希望对大家有帮助。
这个程序涉及了图像处理中的 读入图像信息,图像均衡处理,图像平滑处理,图像锐化处理,图像压缩(方块编码),图像解压,阈值分割功能,存储图像(处理后)信息,因为当时老师只提供了BMP文件和DAT文件,因此我的程序只设计了BMP,DAT文件的读取和存储程序,如果有其他类型的图像文件读入,请自行设计。
设计程序过程中因为时间仓促,所以对程序没有进行任何规范化处理,处理的各种功能也不是很强大,只是给大家一个参考,希望些没有想法,并且不知道如何下手的同学们有所帮助。
另外,如果大家有什么问题的话可以发邮件和我联系,我的邮箱地址是bianxiaoxiang@yeah.net。最近一年内会很忙,会很少登录,如果我见到会给大家解答。
祝大家学业有成
边肖翔
于西安科技大学
2011/7/31(大三暑期)
程序如下:
BMP头文件
#ifndef BMP_H_INCLUDE
#define BMP_H_INCLUDE
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef long LONG;
typedef unsigned char BYTE;
typedef struct tagBITMAPFILEHEADER
{
WORDbfType;
DWORDbfSize;
WORDbfReserved1;
WORDbfReserved2;
DWORDbfOffBits;
}BITMAPFILEHEADER;
typedef struct tagBITMAPINFOHEADER
{
DWORDbiSize;
LONGbiWidth;
LONGbiHeight;
WORDbiPlanes;
WORDbiBitCount;
DWORDbiCompression;
DWORDbiSizeImage;
LONGbiXPelsPerMeter;
LONGbiYPelsPerMeter;
DWORDbiClrUsed;
DWORDbiClrImportant;
}BITMAPINFOHEADER;
typedef struct tagRGBQUAD
{
BYTErgbBlue;
BYTErgbGreen;
BYTErgbRed;
BYTErgbReserved;
}RGBQUAD;
typedef struct tagBIMAPINFO
{
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
}BITMAPINFO;
typedef struct YaSuoHeader
{
charysType;
intysSize;
intysWidth;
intysHeight;
}ysHeader;
#endif
主程序
#include"stdio.h"
#include"stdlib.h"
#include"math.h"
#include "BMP.H"
#define WIDTH 256
#define HEIGHT 256
#define PI 3.1415926535897932384626433832795028841971
#define FFT_N 128
#define jj sqrt(-1)
#define e 2.718
int a[WIDTH][HEIGHT],b[WIDTH][HEIGHT];
int size,yssize;
bool ys=0;//标志是否对文件进行压缩
bool z=0;//标志是否生成直方图文件
BYTE A[HEIGHT*WIDTH];
int _temp=0;
int zhi[100][512]={0};
void ReadDataFile(char filepath[]);
void ReadBmpFile(char filepath[]);
void exchange();
void SaveDataFile(char filepath[]);
void SaveBmpFile(char filepath[]);
void junheng();
void