且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

基于标准C语言的数字图像处理基本框架

更新时间:2022-09-11 12:24:15

考虑到现有的数字图像处理都是基于Windows平台,都或多或少使用了Win32 API函数,不能移植到Linux或者嵌入式系统中。为了使程序可移植,采用标准C语言建立了数字图像处理的基本框架,如下图所示:

基于标准C语言的数字图像处理基本框架

程序参考了网上一些博客的内容,并进行了改变,建立了符合自己习惯的数据结构。主要实现了bmp格式图像的打开、保存、创建、图像颜色空间转换等功能,暂时还没有添加具体的处理函数。我想,既然有了程序的框架,添加算法只是编写一个个函数的问题。

本程序具体实现的功能如下:

* 打开和保存bmp文件,这里使用自定义数据结构Bitmap,相关函数定义如下:
    bmp.h:
        int CreateBitmap(Bitmap* bmp, int width, int height, int bitCount);
        void ReleaseBitmap(Bitmap* bmp);
        int CheckPath(char *path);
        int ReadBitmap(char* path, Bitmap* bmp);
        int SaveBitmap(char* path, Bitmap* bmp);

* 图像格式转换 
    basicprocess.h:
        int RGB2Gray(Bitmap* src, Bitmap* dst);
        int Gray2RGB(Bitmap* src, Bitmap* dst);
        int Gray2BW(Bitmap* src, Bitmap* dst, int threshold);
        void hsv2rgb(float H, float S, float V, float *R, float *G, float *B);
        void rgb2hsv(float R, float G, float B, float *H, float *S, float* V);

程序源码如下,欢迎大家批评指正。

基于标准C语言的数字图像处理基本框架
  1基于标准C语言的数字图像处理基本框架/*
  2基于标准C语言的数字图像处理基本框架****************************************Copyright (c)**************************************************
  3基于标准C语言的数字图像处理基本框架**                                           Feisky
  4基于标准C语言的数字图像处理基本框架**                              http://www.cnblogs.com/feisky/
  5基于标准C语言的数字图像处理基本框架**
  6基于标准C语言的数字图像处理基本框架**------------------------------------- File Info ------------------------------------------------------
  7基于标准C语言的数字图像处理基本框架** File name:           bmp.h
  8基于标准C语言的数字图像处理基本框架** Last modified Date:  2009-9-25
  9基于标准C语言的数字图像处理基本框架** Last Version:        1.0
 10基于标准C语言的数字图像处理基本框架** Descriptions:        位图文件结构及基本函数定义  打开和保存bmp文件
 11基于标准C语言的数字图像处理基本框架**
 12基于标准C语言的数字图像处理基本框架** Created by:          Feisky
 13基于标准C语言的数字图像处理基本框架** Created date:        2009-07-25
 14基于标准C语言的数字图像处理基本框架** Version:             1.0
 15基于标准C语言的数字图像处理基本框架** Descriptions:        Preliminary version.
 16基于标准C语言的数字图像处理基本框架**
 17基于标准C语言的数字图像处理基本框架**------------------------------------------------------------------------------------------------------
 18基于标准C语言的数字图像处理基本框架*/

 19基于标准C语言的数字图像处理基本框架#ifndef BMP_H_INCLUDED
 20基于标准C语言的数字图像处理基本框架#define BMP_H_INCLUDED
 21基于标准C语言的数字图像处理基本框架
 22基于标准C语言的数字图像处理基本框架#include <ctype.h>
 23基于标准C语言的数字图像处理基本框架#include <stdio.h>
 24基于标准C语言的数字图像处理基本框架#include <stdlib.h>
 25基于标准C语言的数字图像处理基本框架#include <malloc.h>
 26基于标准C语言的数字图像处理基本框架#include <string.h>
 27基于标准C语言的数字图像处理基本框架
 28基于标准C语言的数字图像处理基本框架/**
 29基于标准C语言的数字图像处理基本框架 * 位图文件结构及基本函数定义  打开和保存bmp文件
 30基于标准C语言的数字图像处理基本框架 */

 31基于标准C语言的数字图像处理基本框架typedef unsigned short WORD;
 32基于标准C语言的数字图像处理基本框架typedef unsigned long DWORD;
 33基于标准C语言的数字图像处理基本框架typedef long LONG;
 34基于标准C语言的数字图像处理基本框架typedef unsigned char BYTE;
 35基于标准C语言的数字图像处理基本框架
 36基于标准C语言的数字图像处理基本框架/* 位图文件头结构 14字节 */
 37基于标准C语言的数字图像处理基本框架typedef struct tagBITMAPFILEHEADER {
 38基于标准C语言的数字图像处理基本框架    WORD bfType;
 39基于标准C语言的数字图像处理基本框架    DWORD bfSize;
 40基于标准C语言的数字图像处理基本框架    WORD bfReserved1;
 41基于标准C语言的数字图像处理基本框架    WORD bfReserved2;
 42基于标准C语言的数字图像处理基本框架    DWORD bfOffBits;
 43基于标准C语言的数字图像处理基本框架}
 BITMAPFILEHEADER;
 44基于标准C语言的数字图像处理基本框架
 45基于标准C语言的数字图像处理基本框架/* 位图信息头结构 40字节 */
 46基于标准C语言的数字图像处理基本框架typedef struct tagBITMAPINFOHEADER {
 47基于标准C语言的数字图像处理基本框架    DWORD biSize; // 结构长度 40B
 48基于标准C语言的数字图像处理基本框架    LONG biWidth;
 49基于标准C语言的数字图像处理基本框架    LONG biHeight;
 50基于标准C语言的数字图像处理基本框架    WORD biPlanes; // 1
 51基于标准C语言的数字图像处理基本框架    WORD biBitCount; // 表示颜色要用到的位数
 52基于标准C语言的数字图像处理基本框架    DWORD biCompression; // 压缩格式
 53基于标准C语言的数字图像处理基本框架    DWORD biSizeImage; // 位图占用字节数=biWidth'(4的整倍数)*biHeight
 54基于标准C语言的数字图像处理基本框架    LONG biXPelsPerMeter; // 水平分辨率
 55基于标准C语言的数字图像处理基本框架    LONG biYPelsPerMeter; // 垂直分辨率
 56基于标准C语言的数字图像处理基本框架    DWORD biClrUsed; // 本图像用到的颜色数
 57基于标准C语言的数字图像处理基本框架    DWORD biClrImportant; // 本图像的重要颜色数
 58基于标准C语言的数字图像处理基本框架}
 BITMAPINFOHEADER;
 59基于标准C语言的数字图像处理基本框架
 60基于标准C语言的数字图像处理基本框架/* 调色板 4字节 */
 61基于标准C语言的数字图像处理基本框架typedef struct tagRGBQUAD {
 62基于标准C语言的数字图像处理基本框架    BYTE rgbBlue;
 63基于标准C语言的数字图像处理基本框架    BYTE rgbGreen;
 64基于标准C语言的数字图像处理基本框架    BYTE rgbRed;
 65基于标准C语言的数字图像处理基本框架    BYTE rgbReserved;
 66基于标准C语言的数字图像处理基本框架}
 RGBQUAD;
 67基于标准C语言的数字图像处理基本框架
 68基于标准C语言的数字图像处理基本框架/* 定义图像信息 */
 69基于标准C语言的数字图像处理基本框架typedef struct tagBITMAPINFO {
 70基于标准C语言的数字图像处理基本框架    BITMAPINFOHEADER bmiHeader;
 71基于标准C语言的数字图像处理基本框架    RGBQUAD bmiColors[1];
 72基于标准C语言的数字图像处理基本框架}
 BITMAPINFO;
 73基于标准C语言的数字图像处理基本框架
 74基于标准C语言的数字图像处理基本框架/* 定义位图图像 */
 75基于标准C语言的数字图像处理基本框架typedef struct _Bitmap
 76基于标准C语言的数字图像处理基本框架{
 77基于标准C语言的数字图像处理基本框架    BITMAPFILEHEADER bmfh;
 78基于标准C语言的数字图像处理基本框架    BITMAPINFOHEADER bmih;
 79基于标准C语言的数字图像处理基本框架    int width;
 80基于标准C语言的数字图像处理基本框架    int height;
 81基于标准C语言的数字图像处理基本框架    int bitCount;    // 8 或者24
 82基于标准C语言的数字图像处理基本框架    int imageSize;    // 图像数据大小(imageSize=height*widthStep)字节
 83基于标准C语言的数字图像处理基本框架    BYTE* imageData;//排列的图像数据
 84基于标准C语言的数字图像处理基本框架    int widthStep;    //排列的图像行大小
 85基于标准C语言的数字图像处理基本框架}
Bitmap;
 86基于标准C语言的数字图像处理基本框架
 87基于标准C语言的数字图像处理基本框架/**
 88基于标准C语言的数字图像处理基本框架 * 位图创建函数  创建一个Bitmap结构,并为图像数据分配空间
 89基于标准C语言的数字图像处理基本框架 *
 90基于标准C语言的数字图像处理基本框架 * 使用方法:
 91基于标准C语言的数字图像处理基本框架 *     Bitmap *bmp=(Bitmap*)malloc(sizeof(Bitmap));
 92基于标准C语言的数字图像处理基本框架 *     ret=CreateBitmap(bmp,50,50,3);
 93基于标准C语言的数字图像处理基本框架 */

 94基于标准C语言的数字图像处理基本框架int CreateBitmap(Bitmap* bmp, int width, int height, int bitCount)
 95基于标准C语言的数字图像处理基本框架{
 96基于标准C语言的数字图像处理基本框架    bmp->width=width;
 97基于标准C语言的数字图像处理基本框架    bmp->height=height;
 98基于标准C语言的数字图像处理基本框架    bmp->bmih.biWidth=width;
 99基于标准C语言的数字图像处理基本框架    bmp->bmih.biHeight=height;
100基于标准C语言的数字图像处理基本框架
101基于标准C语言的数字图像处理基本框架    bmp->widthStep=(int)((width*bitCount+31)/32)*4;        //计算排列的宽度
102基于标准C语言的数字图像处理基本框架    bmp->imageSize=bmp->height*bmp->widthStep*sizeof(BYTE);//计算排列的图像大小
103基于标准C语言的数字图像处理基本框架
104基于标准C语言的数字图像处理基本框架    if(bitCount==8)
105基于标准C语言的数字图像处理基本框架    {
106基于标准C语言的数字图像处理基本框架        bmp->bitCount=8;
107基于标准C语言的数字图像处理基本框架        bmp->bmfh.bfType=0x4d42;    //注意是4d42 这个地方折磨我一下午啊
108基于标准C语言的数字图像处理基本框架        bmp->bmfh.bfReserved1=0;
109基于标准C语言的数字图像处理基本框架        bmp->bmfh.bfReserved2=0;
110基于标准C语言的数字图像处理基本框架        bmp->bmih.biBitCount=8;
111基于标准C语言的数字图像处理基本框架        bmp->bmih.biSize=40;
112基于标准C语言的数字图像处理基本框架        bmp->bmih.biPlanes=1;
113基于标准C语言的数字图像处理基本框架        bmp->bmfh.bfSize=54+256*4+height*bmp->widthStep;
114基于标准C语言的数字图像处理基本框架        bmp->bmfh.bfOffBits=1078;
115基于标准C语言的数字图像处理基本框架        bmp->bmih.biBitCount=8;
116基于标准C语言的数字图像处理基本框架        bmp->bmih.biCompression=0;
117基于标准C语言的数字图像处理基本框架        bmp->bmih.biSizeImage=bmp->imageSize;
118基于标准C语言的数字图像处理基本框架        bmp->bmih.biClrUsed=0;
119基于标准C语言的数字图像处理基本框架        bmp->bmih.biClrImportant=0;
120基于标准C语言的数字图像处理基本框架        bmp->bmih.biXPelsPerMeter=0;
121基于标准C语言的数字图像处理基本框架        bmp->bmih.biYPelsPerMeter=0;
122基于标准C语言的数字图像处理基本框架    }

123基于标准C语言的数字图像处理基本框架    else if (bitCount==24)
124基于标准C语言的数字图像处理基本框架    {
125基于标准C语言的数字图像处理基本框架        bmp->bitCount=24;
126基于标准C语言的数字图像处理基本框架        bmp->bmfh.bfType=0x4d42;
127基于标准C语言的数字图像处理基本框架        bmp->bmih.biBitCount=24;
128基于标准C语言的数字图像处理基本框架        bmp->bmfh.bfReserved1=0;
129基于标准C语言的数字图像处理基本框架        bmp->bmfh.bfReserved2=0;
130基于标准C语言的数字图像处理基本框架        bmp->bmih.biSize=40;
131基于标准C语言的数字图像处理基本框架        bmp->bmih.biPlanes=1;
132基于标准C语言的数字图像处理基本框架        bmp->bmfh.bfSize=54+height*bmp->widthStep;
133基于标准C语言的数字图像处理基本框架        bmp->bmfh.bfOffBits=54;
134基于标准C语言的数字图像处理基本框架        bmp->bmih.biBitCount=24;
135基于标准C语言的数字图像处理基本框架        bmp->bmih.biSizeImage=bmp->imageSize;
136基于标准C语言的数字图像处理基本框架        bmp->bmih.biClrUsed=0;
137基于标准C语言的数字图像处理基本框架        bmp->bmih.biCompression=0;
138基于标准C语言的数字图像处理基本框架        bmp->bmih.biClrImportant=0;
139基于标准C语言的数字图像处理基本框架        bmp->bmih.biXPelsPerMeter=0;
140基于标准C语言的数字图像处理基本框架        bmp->bmih.biYPelsPerMeter=0;
141基于标准C语言的数字图像处理基本框架    }

142基于标准C语言的数字图像处理基本框架    else
143基于标准C语言的数字图像处理基本框架    {
144基于标准C语言的数字图像处理基本框架        printf("Error(CreateBitmap): only supported 8 or 24 bits bitmap.\n");
145基于标准C语言的数字图像处理基本框架        return -1;
146基于标准C语言的数字图像处理基本框架    }

147基于标准C语言的数字图像处理基本框架
148基于标准C语言的数字图像处理基本框架    bmp->imageData=(BYTE*)malloc(bmp->imageSize);        //分配数据空间
149基于标准C语言的数字图像处理基本框架    if(!(bmp->imageData))
150基于标准C语言的数字图像处理基本框架    {
151基于标准C语言的数字图像处理基本框架        printf("Error(CreateBitmap): can not allocate bitmap memory.\n");
152基于标准C语言的数字图像处理基本框架        return -1;
153基于标准C语言的数字图像处理基本框架    }

154基于标准C语言的数字图像处理基本框架    return 0;
155基于标准C语言的数字图像处理基本框架}

156基于标准C语言的数字图像处理基本框架
157基于标准C语言的数字图像处理基本框架/**
158基于标准C语言的数字图像处理基本框架 * 位图指针释放函数  释放位图数据空间
159基于标准C语言的数字图像处理基本框架 *
160基于标准C语言的数字图像处理基本框架 * 使用方法:
161基于标准C语言的数字图像处理基本框架 *     ReleaseBitmap(bmp);
162基于标准C语言的数字图像处理基本框架 */

163基于标准C语言的数字图像处理基本框架void ReleaseBitmap(Bitmap* bmp)
164基于标准C语言的数字图像处理基本框架{
165基于标准C语言的数字图像处理基本框架    free(bmp->imageData);
166基于标准C语言的数字图像处理基本框架    bmp->imageData=NULL;
167基于标准C语言的数字图像处理基本框架    free(bmp);
168基于标准C语言的数字图像处理基本框架    bmp=NULL;
169基于标准C语言的数字图像处理基本框架}

170基于标准C语言的数字图像处理基本框架
171基于标准C语言的数字图像处理基本框架/**
172基于标准C语言的数字图像处理基本框架 * 路径检查函数:是否为BMP文件,是否可读
173基于标准C语言的数字图像处理基本框架 * 正确返回0,错误返回-1
174基于标准C语言的数字图像处理基本框架 *
175基于标准C语言的数字图像处理基本框架 * 使用方法
176基于标准C语言的数字图像处理基本框架 *         ret=CheckPath(path);
177基于标准C语言的数字图像处理基本框架 */

178基于标准C语言的数字图像处理基本框架int CheckPath(char *path)
179基于标准C语言的数字图像处理基本框架{
180基于标准C语言的数字图像处理基本框架    FILE *fd;
181基于标准C语言的数字图像处理基本框架    int len = strlen(path) / sizeof(char);
182基于标准C语言的数字图像处理基本框架    char ext[3];
183基于标准C语言的数字图像处理基本框架    //check whether the path include the characters "bmp" at end
184基于标准C语言的数字图像处理基本框架    strncpy(ext, &path[len - 3], 3);
185基于标准C语言的数字图像处理基本框架    if (!(ext[0== 'b' && ext[1== 'm' && ext[2== 'p')) {
186基于标准C语言的数字图像处理基本框架        printf("Error(CheckPath): the extension of the file is not bmp.\n");
187基于标准C语言的数字图像处理基本框架        return -1;
188基于标准C语言的数字图像处理基本框架    }

189基于标准C语言的数字图像处理基本框架
190基于标准C语言的数字图像处理基本框架    //check whether the file can be read or not
191基于标准C语言的数字图像处理基本框架    fd = fopen(path, "r");
192基于标准C语言的数字图像处理基本框架    if (!fd)
193基于标准C语言的数字图像处理基本框架    {
194基于标准C语言的数字图像处理基本框架        printf("Error(CheckPath): can not open the file.\n");
195基于标准C语言的数字图像处理基本框架        return -1;
196基于标准C语言的数字图像处理基本框架    }

197基于标准C语言的数字图像处理基本框架    fclose(fd);
198基于标准C语言的数字图像处理基本框架
199基于标准C语言的数字图像处理基本框架    return 0;
200基于标准C语言的数字图像处理基本框架}

201基于标准C语言的数字图像处理基本框架
202基于标准C语言的数字图像处理基本框架/**
203基于标准C语言的数字图像处理基本框架 * 从文件中读取位图函数
204基于标准C语言的数字图像处理基本框架 * 正确返回0,错误返回-1
205基于标准C语言的数字图像处理基本框架 *
206基于标准C语言的数字图像处理基本框架 * 使用方法:
207基于标准C语言的数字图像处理基本框架 *     bmp=(Bitmap*)malloc(sizeof(Bitmap));
208基于标准C语言的数字图像处理基本框架 *     ret=ReadBitmap(path, bmp);
209基于标准C语言的数字图像处理基本框架 */

210基于标准C语言的数字图像处理基本框架int ReadBitmap(char* path, Bitmap* bmp)
211基于标准C语言的数字图像处理基本框架{
212基于标准C语言的数字图像处理基本框架    int ret;
213基于标准C语言的数字图像处理基本框架    FILE *fd;
214基于标准C语言的数字图像处理基本框架
215基于标准C语言的数字图像处理基本框架    //检查路径是否可读
216基于标准C语言的数字图像处理基本框架    ret=CheckPath(path);
217基于标准C语言的数字图像处理基本框架    if(ret==-1)
218基于标准C语言的数字图像处理基本框架    {
219基于标准C语言的数字图像处理基本框架        printf("Error(ReadBitmap): the path of the image is invalid.\n");
220基于标准C语言的数字图像处理基本框架        return -1;
221基于标准C语言的数字图像处理基本框架    }

222基于标准C语言的数字图像处理基本框架
223基于标准C语言的数字图像处理基本框架    //打开文件
224基于标准C语言的数字图像处理基本框架    fd=fopen(path,"rb");
225基于标准C语言的数字图像处理基本框架    if(fd==0)
226基于标准C语言的数字图像处理基本框架    {
227基于标准C语言的数字图像处理基本框架        printf("Error(ReadBitmap): can not open the image.\n");
228基于标准C语言的数字图像处理基本框架        return -1;
229基于标准C语言的数字图像处理基本框架    }

230基于标准C语言的数字图像处理基本框架
231基于标准C语言的数字图像处理基本框架    //读取文件信息头     14字节
232基于标准C语言的数字图像处理基本框架    fread(&(bmp->bmfh.bfType),sizeof(WORD),1,fd);
233基于标准C语言的数字图像处理基本框架    fread(&(bmp->bmfh.bfSize),sizeof(DWORD),1,fd);
234基于标准C语言的数字图像处理基本框架    fread(&(bmp->bmfh.bfReserved1),sizeof(WORD),1,fd);
235基于标准C语言的数字图像处理基本框架    fread(&(bmp->bmfh.bfReserved2),sizeof(WORD),1,fd);
236基于标准C语言的数字图像处理基本框架    fread(&(bmp->bmfh.bfOffBits),sizeof(DWORD),1,fd);
237基于标准C语言的数字图像处理基本框架
238基于标准C语言的数字图像处理基本框架    //读取位图信息头    40字节
239基于标准C语言的数字图像处理基本框架    fread(&(bmp->bmih.biSize),sizeof(DWORD),1,fd);
240基于标准C语言的数字图像处理基本框架    fread(&(bmp->bmih.biWidth),sizeof(DWORD),1,fd);
241基于标准C语言的数字图像处理基本框架    fread(&(bmp->bmih.biHeight),sizeof(DWORD),1,fd);
242基于标准C语言的数字图像处理基本框架    fread(&(bmp->bmih.biPlanes),sizeof(WORD),1,fd);
243基于标准C语言的数字图像处理基本框架    fread(&(bmp->bmih.biBitCount),sizeof(WORD),1,fd);
244基于标准C语言的数字图像处理基本框架    fread(&(bmp->bmih.biCompression),sizeof(DWORD),1,fd);
245基于标准C语言的数字图像处理基本框架    fread(&(bmp->bmih.biSizeImage),sizeof(DWORD),1,fd);
246基于标准C语言的数字图像处理基本框架    fread(&(bmp->bmih.biXPelsPerMeter),sizeof(DWORD),1,fd);
247基于标准C语言的数字图像处理基本框架    fread(&(bmp->bmih.biYPelsPerMeter),sizeof(DWORD),1,fd);
248基于标准C语言的数字图像处理基本框架    fread(&(bmp->bmih.biClrUsed),sizeof(DWORD),1,fd);
249基于标准C语言的数字图像处理基本框架    fread(&(bmp->bmih.biClrImportant),sizeof(DWORD),1,fd);
250基于标准C语言的数字图像处理基本框架
251基于标准C语言的数字图像处理基本框架    //创建位图结构
252基于标准C语言的数字图像处理基本框架    ret=CreateBitmap(bmp, bmp->bmih.biWidth, bmp->bmih.biHeight, bmp->bmih.biBitCount);
253基于标准C语言的数字图像处理基本框架    if(ret==-1)
254基于标准C语言的数字图像处理基本框架    {
255基于标准C语言的数字图像处理基本框架        printf("Error(CreateBitmap): can not CreateBitmap.\n");
256基于标准C语言的数字图像处理基本框架        return -1;
257基于标准C语言的数字图像处理基本框架    }

258基于标准C语言的数字图像处理基本框架
259基于标准C语言的数字图像处理基本框架    //读取图像数据
260基于标准C语言的数字图像处理基本框架    //由于4字节对齐格式
261基于标准C语言的数字图像处理基本框架    fseek(fd,bmp->bmfh.bfOffBits,SEEK_SET);    //定位到图像数据区
262基于标准C语言的数字图像处理基本框架    ret=fread(bmp->imageData,bmp->imageSize,1,fd);
263基于标准C语言的数字图像处理基本框架    if(ret==0)
264基于标准C语言的数字图像处理基本框架    {
265基于标准C语言的数字图像处理基本框架        if(feof(fd))    //if the file pointer point to the end of the file
266基于标准C语言的数字图像处理基本框架        {
267基于标准C语言的数字图像处理基本框架        }

268基于标准C语言的数字图像处理基本框架        if(ferror(fd))  //if error happened while read the pixel data
269基于标准C语言的数字图像处理基本框架        {
270基于标准C语言的数字图像处理基本框架            printf("Error(ReadBitmap): can not read the pixel data.\n");
271基于标准C语言的数字图像处理基本框架            fclose(fd);
272基于标准C语言的数字图像处理基本框架            return -1;
273基于标准C语言的数字图像处理基本框架        }

274基于标准C语言的数字图像处理基本框架    }

275基于标准C语言的数字图像处理基本框架
276基于标准C语言的数字图像处理基本框架    //关闭文件
277基于标准C语言的数字图像处理基本框架    fclose(fd);
278基于标准C语言的数字图像处理基本框架    return 0;
279基于标准C语言的数字图像处理基本框架}

280基于标准C语言的数字图像处理基本框架
281基于标准C语言的数字图像处理基本框架/**
282基于标准C语言的数字图像处理基本框架 * 保存位图到文件中去
283基于标准C语言的数字图像处理基本框架 * 正确返回0,错误返回-1
284基于标准C语言的数字图像处理基本框架 *
285基于标准C语言的数字图像处理基本框架 * 使用方法:
286基于标准C语言的数字图像处理基本框架 *     bmp=(Bitmap*)malloc(sizeof(Bitmap));
287基于标准C语言的数字图像处理基本框架 *     ret=SaveBitmap(path, bmp);
288基于标准C语言的数字图像处理基本框架 */

289基于标准C语言的数字图像处理基本框架int SaveBitmap(char* path, Bitmap* bmp)
290基于标准C语言的数字图像处理基本框架{
291基于标准C语言的数字图像处理基本框架    int ret;
292基于标准C语言的数字图像处理基本框架    FILE *fd;
293基于标准C语言的数字图像处理基本框架
294基于标准C语言的数字图像处理基本框架    //检查路径是否正确
295基于标准C语言的数字图像处理基本框架    int len = strlen(path) / sizeof(char);
296基于标准C语言的数字图像处理基本框架    char ext[3];
297基于标准C语言的数字图像处理基本框架    //check whether the path include the characters "bmp" at end
298基于标准C语言的数字图像处理基本框架    strncpy(ext, &path[len - 3], 3);
299基于标准C语言的数字图像处理基本框架    if (!(ext[0== 'b' && ext[1== 'm' && ext[2== 'p'))
300基于标准C语言的数字图像处理基本框架    {
301基于标准C语言的数字图像处理基本框架        printf("Error(SaveBitmap): the extension of the file is not bmp.\n");
302基于标准C语言的数字图像处理基本框架        return -1;
303基于标准C语言的数字图像处理基本框架    }

304基于标准C语言的数字图像处理基本框架
305基于标准C语言的数字图像处理基本框架    //打开文件
306基于标准C语言的数字图像处理基本框架    fd=fopen(path,"wb");
307基于标准C语言的数字图像处理基本框架    if(fd==0)
308基于标准C语言的数字图像处理基本框架    {
309基于标准C语言的数字图像处理基本框架        printf("Error(SaveBitmap): can not open the image.\n");
310基于标准C语言的数字图像处理基本框架        return -1;
311基于标准C语言的数字图像处理基本框架    }

312基于标准C语言的数字图像处理基本框架
313基于标准C语言的数字图像处理基本框架    //保存文件信息头     14字节
314基于标准C语言的数字图像处理基本框架    fwrite(&(bmp->bmfh.bfType),sizeof(WORD),1,fd);
315基于标准C语言的数字图像处理基本框架    fwrite(&(bmp->bmfh.bfSize),sizeof(DWORD),1,fd);
316基于标准C语言的数字图像处理基本框架    fwrite(&(bmp->bmfh.bfReserved1),sizeof(WORD),1,fd);
317基于标准C语言的数字图像处理基本框架    fwrite(&(bmp->bmfh.bfReserved2),sizeof(WORD),1,fd);
318基于标准C语言的数字图像处理基本框架    fwrite(&(bmp->bmfh.bfOffBits),sizeof(DWORD),1,fd);
319基于标准C语言的数字图像处理基本框架
320基于标准C语言的数字图像处理基本框架    //保存位图信息头    40字节
321基于标准C语言的数字图像处理基本框架    fwrite(&(bmp->bmih.biSize),sizeof(DWORD),1,fd);
322基于标准C语言的数字图像处理基本框架    fwrite(&(bmp->bmih.biWidth),sizeof(DWORD),1,fd);
323基于标准C语言的数字图像处理基本框架    fwrite(&(bmp->bmih.biHeight),sizeof(DWORD),1,fd);
324基于标准C语言的数字图像处理基本框架    fwrite(&(bmp->bmih.biPlanes),sizeof(WORD),1,fd);
325基于标准C语言的数字图像处理基本框架    fwrite(&(bmp->bmih.biBitCount),sizeof(WORD),1,fd);
326基于标准C语言的数字图像处理基本框架    fwrite(&(bmp->bmih.biCompression),sizeof(DWORD),1,fd);
327基于标准C语言的数字图像处理基本框架    fwrite(&(bmp->bmih.biSizeImage),sizeof(DWORD),1,fd);
328基于标准C语言的数字图像处理基本框架    fwrite(&(bmp->bmih.biXPelsPerMeter),sizeof(DWORD),1,fd);
329基于标准C语言的数字图像处理基本框架    fwrite(&(bmp->bmih.biYPelsPerMeter),sizeof(DWORD),1,fd);
330基于标准C语言的数字图像处理基本框架    fwrite(&(bmp->bmih.biClrUsed),sizeof(DWORD),1,fd);
331基于标准C语言的数字图像处理基本框架    fwrite(&(bmp->bmih.biClrImportant),sizeof(DWORD),1,fd);
332基于标准C语言的数字图像处理基本框架
333基于标准C语言的数字图像处理基本框架    //如果为8位,则 保存调色板
334基于标准C语言的数字图像处理基本框架    RGBQUAD pal[256];
335基于标准C语言的数字图像处理基本框架    int i;
336基于标准C语言的数字图像处理基本框架    if(bmp->bitCount==8)
337基于标准C语言的数字图像处理基本框架    {
338基于标准C语言的数字图像处理基本框架        for(i=0;i<256;i++)
339基于标准C语言的数字图像处理基本框架        {
340基于标准C语言的数字图像处理基本框架            pal[i].rgbBlue=i;
341基于标准C语言的数字图像处理基本框架            pal[i].rgbGreen=i;
342基于标准C语言的数字图像处理基本框架            pal[i].rgbRed=i;
343基于标准C语言的数字图像处理基本框架            pal[i].rgbReserved=0;
344基于标准C语言的数字图像处理基本框架        }

345基于标准C语言的数字图像处理基本框架        if(fwrite(pal,sizeof(RGBQUAD)*256,1,fd)!=1)
346基于标准C语言的数字图像处理基本框架        {
347基于标准C语言的数字图像处理基本框架            printf("Error(SaveBitmap): can not write Color Palette.\n");
348基于标准C语言的数字图像处理基本框架            return -1;
349基于标准C语言的数字图像处理基本框架        }

350基于标准C语言的数字图像处理基本框架    }

351基于标准C语言的数字图像处理基本框架
352基于标准C语言的数字图像处理基本框架
353基于标准C语言的数字图像处理基本框架    //保存图像数据
354基于标准C语言的数字图像处理基本框架    ret=fwrite(bmp->imageData,bmp->imageSize,1,fd);
355基于标准C语言的数字图像处理基本框架    if(ret!=1)
356基于标准C语言的数字图像处理基本框架    {
357基于标准C语言的数字图像处理基本框架        printf("Error(SaveBitmap): can not save the pixel data.\n");
358基于标准C语言的数字图像处理基本框架        return -1;
359基于标准C语言的数字图像处理基本框架    }

360基于标准C语言的数字图像处理基本框架
361基于标准C语言的数字图像处理基本框架    //关闭文件
362基于标准C语言的数字图像处理基本框架    fclose(fd);
363基于标准C语言的数字图像处理基本框架
364基于标准C语言的数字图像处理基本框架    return 0;
365基于标准C语言的数字图像处理基本框架}

366基于标准C语言的数字图像处理基本框架
367基于标准C语言的数字图像处理基本框架#endif // BMP_H_INCLUDED
368基于标准C语言的数字图像处理基本框架
369基于标准C语言的数字图像处理基本框架
370基于标准C语言的数字图像处理基本框架
371基于标准C语言的数字图像处理基本框架
372基于标准C语言的数字图像处理基本框架
373基于标准C语言的数字图像处理基本框架/*
374基于标准C语言的数字图像处理基本框架****************************************Copyright (c)**************************************************
375基于标准C语言的数字图像处理基本框架**                                           Feisky
376基于标准C语言的数字图像处理基本框架**                            http://www.cnblogs.com/feisky/
377基于标准C语言的数字图像处理基本框架**
378基于标准C语言的数字图像处理基本框架**------------------------------------- File Info ------------------------------------------------------
379基于标准C语言的数字图像处理基本框架** File name:           basicprocess.h
380基于标准C语言的数字图像处理基本框架** Last modified Date:  2009-9-28
381基于标准C语言的数字图像处理基本框架** Last Version:        1.0
382基于标准C语言的数字图像处理基本框架** Descriptions:        位图图像基本处理函数  图像格式转换
383基于标准C语言的数字图像处理基本框架**
384基于标准C语言的数字图像处理基本框架** Created by:          Feisky
385基于标准C语言的数字图像处理基本框架** Created date:        2009-9-28
386基于标准C语言的数字图像处理基本框架** Version:             1.0
387基于标准C语言的数字图像处理基本框架** Descriptions:        Preliminary version.
388基于标准C语言的数字图像处理基本框架**
389基于标准C语言的数字图像处理基本框架**------------------------------------------------------------------------------------------------------
390基于标准C语言的数字图像处理基本框架*/

391基于标准C语言的数字图像处理基本框架
392基于标准C语言的数字图像处理基本框架#ifndef BASICPROCESS_H_
393基于标准C语言的数字图像处理基本框架#define BASICPROCESS_H_
394基于标准C语言的数字图像处理基本框架
395基于标准C语言的数字图像处理基本框架#include "bmp.h"
396基于标准C语言的数字图像处理基本框架#include <math.h>
397基于标准C语言的数字图像处理基本框架/**
398基于标准C语言的数字图像处理基本框架 * <font color="#3f7f5f">位图图像基本处理函数  图像格式转换</font>
399基于标准C语言的数字图像处理基本框架 */

400基于标准C语言的数字图像处理基本框架int RGB2Gray(Bitmap* src, Bitmap* dst)
401基于标准C语言的数字图像处理基本框架{
402基于标准C语言的数字图像处理基本框架    int ret;
403基于标准C语言的数字图像处理基本框架    int n=0,i,j;
404基于标准C语言的数字图像处理基本框架    BYTE r,g,b,gray;
405基于标准C语言的数字图像处理基本框架
406基于标准C语言的数字图像处理基本框架    //检查图像格式是否合法
407基于标准C语言的数字图像处理基本框架    if(src->bitCount!=24)
408基于标准C语言的数字图像处理基本框架    {
409基于标准C语言的数字图像处理基本框架        printf("Error(RGB2Gray): the source image must be in RGB format.\n");
410基于标准C语言的数字图像处理基本框架        return -1;
411基于标准C语言的数字图像处理基本框架    }

412基于标准C语言的数字图像处理基本框架
413基于标准C语言的数字图像处理基本框架    //为dst图像分配数据空间
414基于标准C语言的数字图像处理基本框架    ret=CreateBitmap(dst,src->width,src->height,8);
415基于标准C语言的数字图像处理基本框架    if(ret==-1)
416基于标准C语言的数字图像处理基本框架    {
417基于标准C语言的数字图像处理基本框架        printf("Error(RGB2Gray): can't create target image.\n");
418基于标准C语言的数字图像处理基本框架        return -1;
419基于标准C语言的数字图像处理基本框架    }

420基于标准C语言的数字图像处理基本框架
421基于标准C语言的数字图像处理基本框架    //计算灰度数据
422基于标准C语言的数字图像处理基本框架    for(i=0;i<src->height;i++)
423基于标准C语言的数字图像处理基本框架    {
424基于标准C语言的数字图像处理基本框架        n=0;
425基于标准C语言的数字图像处理基本框架        for(j=0;j<src->width*3;j++,n++)
426基于标准C语言的数字图像处理基本框架        {
427基于标准C语言的数字图像处理基本框架            b=*(src->imageData+src->widthStep*(src->height-1-i)+j);
428基于标准C语言的数字图像处理基本框架            j++;
429基于标准C语言的数字图像处理基本框架            g=*(src->imageData+src->widthStep*(src->height-1-i)+j);
430基于标准C语言的数字图像处理基本框架            j++;
431基于标准C语言的数字图像处理基本框架            r=*(src->imageData+src->widthStep*(src->height-1-i)+j);
432基于标准C语言的数字图像处理基本框架            gray=(r*19595 + g*38469 + b*7472>> 16;
433基于标准C语言的数字图像处理基本框架            *(dst->imageData+dst->widthStep*(dst->height-1-i)+n)=gray;
434基于标准C语言的数字图像处理基本框架        }

435基于标准C语言的数字图像处理基本框架    }

436基于标准C语言的数字图像处理基本框架
437基于标准C语言的数字图像处理基本框架    return 0;
438基于标准C语言的数字图像处理基本框架}

439基于标准C语言的数字图像处理基本框架
440基于标准C语言的数字图像处理基本框架/**
441基于标准C语言的数字图像处理基本框架 * Gray2RGB
442基于标准C语言的数字图像处理基本框架 *
443基于标准C语言的数字图像处理基本框架 * 使用方法:
444基于标准C语言的数字图像处理基本框架 *        bmp=(Bitmap*)malloc(sizeof(Bitmap));
445基于标准C语言的数字图像处理基本框架 *        ret=ReadBitmap(path, bmp);
446基于标准C语言的数字图像处理基本框架 *        dstbmp=(Bitmap*)malloc(sizeof(Bitmap));
447基于标准C语言的数字图像处理基本框架 *        ret=Gray2RGB(bmp,dstbmp);
448基于标准C语言的数字图像处理基本框架 */

449基于标准C语言的数字图像处理基本框架int Gray2RGB(Bitmap* src, Bitmap* dst)
450基于标准C语言的数字图像处理基本框架{
451基于标准C语言的数字图像处理基本框架    int ret;
452基于标准C语言的数字图像处理基本框架    int n=0,i,j;
453基于标准C语言的数字图像处理基本框架    BYTE r;
454基于标准C语言的数字图像处理基本框架
455基于标准C语言的数字图像处理基本框架    //检查图像格式是否合法
456基于标准C语言的数字图像处理基本框架    if(src->bitCount!=8)
457基于标准C语言的数字图像处理基本框架    {
458基于标准C语言的数字图像处理基本框架        printf("Error(Gray2RGB): the source image must be in gray scale.\n");
459基于标准C语言的数字图像处理基本框架        return -1;
460基于标准C语言的数字图像处理基本框架    }

461基于标准C语言的数字图像处理基本框架
462基于标准C语言的数字图像处理基本框架    //为dst图像分配数据空间
463基于标准C语言的数字图像处理基本框架    ret=CreateBitmap(dst,src->width,src->height,24);
464基于标准C语言的数字图像处理基本框架    if(ret==-1)
465基于标准C语言的数字图像处理基本框架    {
466基于标准C语言的数字图像处理基本框架        printf("Error(Gray2RGB): can't create target image.\n");
467基于标准C语言的数字图像处理基本框架        return -1;
468基于标准C语言的数字图像处理基本框架    }

469基于标准C语言的数字图像处理基本框架
470基于标准C语言的数字图像处理基本框架    //计算灰度数据
471基于标准C语言的数字图像处理基本框架    for(i=0;i<src->height;i++)
472基于标准C语言的数字图像处理基本框架    {
473基于标准C语言的数字图像处理基本框架        n=0;
474基于标准C语言的数字图像处理基本框架        for(j=0;j<src->width;j++,n++)
475基于标准C语言的数字图像处理基本框架        {
476基于标准C语言的数字图像处理基本框架            r=*(src->imageData+src->widthStep*(src->height-1-i)+j);
477基于标准C语言的数字图像处理基本框架            *(dst->imageData+dst->widthStep*(dst->height-1-i)+n)=r;
478基于标准C语言的数字图像处理基本框架            n++;
479基于标准C语言的数字图像处理基本框架            *(dst->imageData+dst->widthStep*(dst->height-1-i)+n)=r;
480基于标准C语言的数字图像处理基本框架            n++;
481基于标准C语言的数字图像处理基本框架            *(dst->imageData+dst->widthStep*(dst->height-1-i)+n)=r;
482基于标准C语言的数字图像处理基本框架        }

483基于标准C语言的数字图像处理基本框架    }

484基于标准C语言的数字图像处理基本框架
485基于标准C语言的数字图像处理基本框架    return 0;
486基于标准C语言的数字图像处理基本框架}

487基于标准C语言的数字图像处理基本框架
488基于标准C语言的数字图像处理基本框架/**
489基于标准C语言的数字图像处理基本框架 * Gray2BW 图像二值化
490基于标准C语言的数字图像处理基本框架 *
491基于标准C语言的数字图像处理基本框架 * 使用方法:
492基于标准C语言的数字图像处理基本框架 *        bmp=(Bitmap*)malloc(sizeof(Bitmap));
493基于标准C语言的数字图像处理基本框架 *        ret=ReadBitmap(path, bmp);
494基于标准C语言的数字图像处理基本框架 *        dstbmp=(Bitmap*)malloc(sizeof(Bitmap));
495基于标准C语言的数字图像处理基本框架 *        ret=Gray2BW(bmp,dstbmp);
496基于标准C语言的数字图像处理基本框架 */

497基于标准C语言的数字图像处理基本框架int Gray2BW(Bitmap* src, Bitmap* dst, int threshold)
498基于标准C语言的数字图像处理基本框架{
499基于标准C语言的数字图像处理基本框架    int ret;
500基于标准C语言的数字图像处理基本框架    int n=0,i,j;
501基于标准C语言的数字图像处理基本框架    BYTE r;
502基于标准C语言的数字图像处理基本框架
503基于标准C语言的数字图像处理基本框架    //检查图像格式是否合法
504基于标准C语言的数字图像处理基本框架    if(src->bitCount!=8)
505基于标准C语言的数字图像处理基本框架    {
506基于标准C语言的数字图像处理基本框架        printf("Error(Gray2BW): the source image must be in gray scale.\n");
507基于标准C语言的数字图像处理基本框架        return -1;
508基于标准C语言的数字图像处理基本框架    }

509基于标准C语言的数字图像处理基本框架
510基于标准C语言的数字图像处理基本框架    //为dst图像分配数据空间
511基于标准C语言的数字图像处理基本框架    ret=CreateBitmap(dst,src->width,src->height,8);
512基于标准C语言的数字图像处理基本框架    if(ret==-1)
513基于标准C语言的数字图像处理基本框架    {
514基于标准C语言的数字图像处理基本框架        printf("Error(Gray2BW): can't create target image.\n");
515基于标准C语言的数字图像处理基本框架        return -1;
516基于标准C语言的数字图像处理基本框架    }

517基于标准C语言的数字图像处理基本框架
518基于标准C语言的数字图像处理基本框架    //计算灰度数据
519基于标准C语言的数字图像处理基本框架    for(i=0;i<src->height;i++)
520基于标准C语言的数字图像处理基本框架    {
521基于标准C语言的数字图像处理基本框架        for(j=0;j<src->width;j++,n++)
522基于标准C语言的数字图像处理基本框架        {
523基于标准C语言的数字图像处理基本框架            r=*(src->imageData+src->widthStep*(src->height-1-i)+j);
524基于标准C语言的数字图像处理基本框架            if(r>=threshold)
525基于标准C语言的数字图像处理基本框架            {
526基于标准C语言的数字图像处理基本框架                n=255;
527基于标准C语言的数字图像处理基本框架            }

528基于标准C语言的数字图像处理基本框架            else
529基于标准C语言的数字图像处理基本框架            {
530基于标准C语言的数字图像处理基本框架                n=0;
531基于标准C语言的数字图像处理基本框架            }

532基于标准C语言的数字图像处理基本框架            *(dst->imageData+dst->widthStep*(dst->height-1-i)+j)=n;
533基于标准C语言的数字图像处理基本框架        }

534基于标准C语言的数字图像处理基本框架    }

535基于标准C语言的数字图像处理基本框架
536基于标准C语言的数字图像处理基本框架    return 0;
537基于标准C语言的数字图像处理基本框架}

538基于标准C语言的数字图像处理基本框架
539基于标准C语言的数字图像处理基本框架/**
540基于标准C语言的数字图像处理基本框架 *  rgb2hsv
541基于标准C语言的数字图像处理基本框架 *  r,g,b values are from 0 to 1
542基于标准C语言的数字图像处理基本框架 *  h = [0,360], s = [0,1], v = [0,1]
543基于标准C语言的数字图像处理基本框架 *  if s == 0, then h = -1 (undefined)
544基于标准C语言的数字图像处理基本框架 *  使用方法:
545基于标准C语言的数字图像处理基本框架 *      rgb2hsv(0.2,0.3,0.3,&x,&y,&z);
546基于标准C语言的数字图像处理基本框架 */

547基于标准C语言的数字图像处理基本框架void rgb2hsv(float R, float G, float B, float *H, float *S, float* V)
548基于标准C语言的数字图像处理基本框架{
549基于标准C语言的数字图像处理基本框架    float min, max, delta,tmp;
550基于标准C语言的数字图像处理基本框架    tmp = R<G?R:G;
551基于标准C语言的数字图像处理基本框架    min = tmp<B?tmp:B;
552基于标准C语言的数字图像处理基本框架    tmp = R>G?R:G;
553基于标准C语言的数字图像处理基本框架    max = tmp>B?tmp:B;
554基于标准C语言的数字图像处理基本框架    *= max; // v
555基于标准C语言的数字图像处理基本框架
556基于标准C语言的数字图像处理基本框架    delta = max - min;
557基于标准C语言的数字图像处理基本框架
558基于标准C语言的数字图像处理基本框架    if( max != 0 )
559基于标准C语言的数字图像处理基本框架      *= delta / max; // s
560基于标准C语言的数字图像处理基本框架    else
561基于标准C语言的数字图像处理基本框架    {
562基于标准C语言的数字图像处理基本框架       // r = g = b = 0 // s = 0, v is undefined
563基于标准C语言的数字图像处理基本框架      *= 0;
564基于标准C语言的数字图像处理基本框架      *= -1;
565基于标准C语言的数字图像处理基本框架      return;
566基于标准C语言的数字图像处理基本框架    }

567基于标准C语言的数字图像处理基本框架    if( R == max )
568基于标准C语言的数字图像处理基本框架        *= ( G - B ) / delta; // between yellow & magenta
569基于标准C语言的数字图像处理基本框架   else if( G == max )
570基于标准C语言的数字图像处理基本框架        *= 2 + ( B - R ) / delta; // between cyan & yellow
571基于标准C语言的数字图像处理基本框架   else
572基于标准C语言的数字图像处理基本框架       *= 4 + ( R - G ) / delta; // between magenta & cyan
573基于标准C语言的数字图像处理基本框架
574基于标准C语言的数字图像处理基本框架    (*H) *= 60// degrees
575基于标准C语言的数字图像处理基本框架    if*< 0 )
576基于标准C语言的数字图像处理基本框架       (*H) += 360;
577基于标准C语言的数字图像处理基本框架}

578基于标准C语言的数字图像处理基本框架
579基于标准C语言的数字图像处理基本框架
580基于标准C语言的数字图像处理基本框架/**
581基于标准C语言的数字图像处理基本框架 *  hsv2rgb
582基于标准C语言的数字图像处理基本框架 *  r,g,b values are from 0 to 1
583基于标准C语言的数字图像处理基本框架 *  h = [0,360], s = [0,1], v = [0,1]
584基于标准C语言的数字图像处理基本框架 *  if s == 0, then h = -1 (undefined)
585基于标准C语言的数字图像处理基本框架 *  使用方法:
586基于标准C语言的数字图像处理基本框架 *       hsv2rgb(60,0.3,0.5,&x,&y,&z);
587基于标准C语言的数字图像处理基本框架 */

588基于标准C语言的数字图像处理基本框架void hsv2rgb(float H, float S, float V, float *R, float *G, float *B)
589基于标准C语言的数字图像处理基本框架{
590基于标准C语言的数字图像处理基本框架     int i;
591基于标准C语言的数字图像处理基本框架    float f, p, q, t;
592基于标准C语言的数字图像处理基本框架
593基于标准C语言的数字图像处理基本框架    if( S == 0 )
594基于标准C语言的数字图像处理基本框架    {
595基于标准C语言的数字图像处理基本框架        *=*= *= V;
596基于标准C语言的数字图像处理基本框架        return;
597基于标准C语言的数字图像处理基本框架    }

598基于标准C语言的数字图像处理基本框架
599基于标准C语言的数字图像处理基本框架    H /= 60// sector 0 to 5
600基于标准C语言的数字图像处理基本框架    i = floor( H );
601基于标准C语言的数字图像处理基本框架    f = H - i; // factorial part of h
602基于标准C语言的数字图像处理基本框架    p = V * ( 1 - S );
603基于标准C语言的数字图像处理基本框架    q = V * ( 1 - S * f );
604基于标准C语言的数字图像处理基本框架    t = V * ( 1 - S * ( 1 - f ) );
605基于标准C语言的数字图像处理基本框架
606基于标准C语言的数字图像处理基本框架    switch( i )
607基于标准C语言的数字图像处理基本框架    {
608基于标准C语言的数字图像处理基本框架    case 0:
609基于标准C语言的数字图像处理基本框架        *= V;
610基于标准C语言的数字图像处理基本框架        *= t;
611基于标准C语言的数字图像处理基本框架        *= p;
612基于标准C语言的数字图像处理基本框架       break;
613基于标准C语言的数字图像处理基本框架    case 1:
614基于标准C语言的数字图像处理基本框架       *= q;
615基于标准C语言的数字图像处理基本框架       *= V;
616基于标准C语言的数字图像处理基本框架       *= p;
617基于标准C语言的数字图像处理基本框架       break;
618基于标准C语言的数字图像处理基本框架    case 2:
619基于标准C语言的数字图像处理基本框架       *= p;
620基于标准C语言的数字图像处理基本框架       *= V;
621基于标准C语言的数字图像处理基本框架       *= t;
622基于标准C语言的数字图像处理基本框架       break;
623基于标准C语言的数字图像处理基本框架    case 3:
624基于标准C语言的数字图像处理基本框架       *= p;
625基于标准C语言的数字图像处理基本框架       *= q;
626基于标准C语言的数字图像处理基本框架       *= V;
627基于标准C语言的数字图像处理基本框架       break;
628基于标准C语言的数字图像处理基本框架    case 4:
629基于标准C语言的数字图像处理基本框架       *= t;
630基于标准C语言的数字图像处理基本框架       *= p;
631基于标准C语言的数字图像处理基本框架       *= V;
632基于标准C语言的数字图像处理基本框架       break;
633基于标准C语言的数字图像处理基本框架    default// case 5:
634基于标准C语言的数字图像处理基本框架       *= V;
635基于标准C语言的数字图像处理基本框架       *= p;
636基于标准C语言的数字图像处理基本框架       *= q;
637基于标准C语言的数字图像处理基本框架       break;
638基于标准C语言的数字图像处理基本框架    }

639基于标准C语言的数字图像处理基本框架}

640基于标准C语言的数字图像处理基本框架
641基于标准C语言的数字图像处理基本框架/**
642基于标准C语言的数字图像处理基本框架 * 直方图均衡化
643基于标准C语言的数字图像处理基本框架 * 返回 0正确 -1错误
644基于标准C语言的数字图像处理基本框架 */

645基于标准C语言的数字图像处理基本框架int HistEqualization(Bitmap* dstBmp, Bitmap* srcBmp)
646基于标准C语言的数字图像处理基本框架{
647基于标准C语言的数字图像处理基本框架    return 0;
648基于标准C语言的数字图像处理基本框架}

649基于标准C语言的数字图像处理基本框架
650基于标准C语言的数字图像处理基本框架/*
651基于标准C语言的数字图像处理基本框架 * 中值滤波
652基于标准C语言的数字图像处理基本框架*/

653基于标准C语言的数字图像处理基本框架
654基于标准C语言的数字图像处理基本框架int MedFilt(Bitmap* dstBmp, Bitmap* srcBmp)
655基于标准C语言的数字图像处理基本框架{
656基于标准C语言的数字图像处理基本框架    return 0;
657基于标准C语言的数字图像处理基本框架}

658基于标准C语言的数字图像处理基本框架
659基于标准C语言的数字图像处理基本框架#endif /* BASICPROCESS_H_ */
基于标准C语言的数字图像处理基本框架

本文转自feisky博客园博客,原文链接:http://www.cnblogs.com/feisky/archive/2009/10/21/1587698.html,如需转载请自行联系原作者