图象处理和分析实验说明书

上传人:nu****n 文档编号:148034744 上传时间:2022-09-03 格式:DOC 页数:8 大小:35.01KB
收藏 版权申诉 举报 下载
图象处理和分析实验说明书_第1页
第1页 / 共8页
图象处理和分析实验说明书_第2页
第2页 / 共8页
图象处理和分析实验说明书_第3页
第3页 / 共8页
资源描述:

《图象处理和分析实验说明书》由会员分享,可在线阅读,更多相关《图象处理和分析实验说明书(8页珍藏版)》请在装配图网上搜索。

1、课程实验2 一、实验目的 掌握在计算机上进行直方图均衡化以及线性增强的方法。二、实验环境 12人一台pc机,Visual C+6.0编程环境。三、实验内容1 编写直方图均衡化、线性增强的C语言程序及相应的显示程序。2 对指定图象进行直方图均衡化和线性增强,将原始图象及增强后的图象都显示于屏幕上,比较增强的效果。四、实验步骤1 参照实验1的实验步骤13,不同之处是将工程名改为HistogramAverage。2 打开HistogramAverage.cpp文件,在主函数main之前添加如下代码:BITMAPFILEHEADER bmfHeader; /位图文件头BITMAPINFOHEADER

2、bmiHeader; /位图信息头RGBQUAD *bmiColor; /调色板指针unsigned char MyImage10241024; /为输入的二维图像的颜色数据分配一个二维数组unsigned char OutImage10241024; /为处理后的二维图像的颜色数据分配一个二维数组3 紧接以上代码,编写直方图均衡化的核心算法函数如下:void HistAvrg(unsigned char InImage10241024, unsigned char OutImage10241024, long Row, long Col)/ 循环变量longi, j;/ 临时变量LONGlT

3、emp;/ 直方图统计数组LONGlCount256;/ 灰度映射表unsigned charbMap256;/ 重置计数为0for (i = 0; i 256; i +)/ 清零lCounti = 0;/ 计算各个灰度值的计数for(i=0;iRow;i+)for(j=0;jCol;j+)lCountInImageij+;/ 计算灰度映射表for (i = 0; i 256; i+)/ 初始为0lTemp = 0;for (j = 0; j = i ; j+)lTemp += lCountj;/ 计算对应的新灰度值bMapi = (unsigned char) (lTemp * 255 /

4、Row / Col);for(i = 0; i Row; i+)for(j = 0; j Col; j+)OutImageij = bMapInImageij; / 计算新的灰度值4 将主函数写为如下形式:void main(int argc, char* argv)if(argc2) printf(输入命令格式: HistogramAverage.exe *.bmpn); return; FILE *fp;int Palette_Num;int Height, Width, Width_4;int i, j;DWORD Color_Value;fp=fopen(argv1, rb); /打开

5、*.bmp文件,获取文件指针 fread(&bmfHeader, sizeof(bmfHeader), 1, fp); /从文件中读位图文件头数据到bmfHeader变量fread(&bmiHeader, sizeof(bmiHeader), 1, fp); /从文件中读位图信息头数据到bmiHeader变量/ 判断是否是DIB对象,检查头两个字节是否是BMif (bmfHeader.bfType != 0x4D42)printf(这不是一个位图文件n);return;/判断位图的颜色是否是256色if(bmiHeader.biBitCount!=8)printf(本程序只能显示256色灰度图

6、n);return;Height = bmiHeader.biHeight; /从信息头中读出图像高度Width = bmiHeader.biWidth; /从信息头中读出图像宽度 Width_4 = (Width+3)/4*4; /取一个大于等于Width,并且最接近Width的4的整数倍的数值/获取调色板的成员数目,也就是位图所用到的颜色个数if(bmiHeader.biClrUsed=0) Palette_Num = 1bmiHeader.biBitCount;elsePalette_Num = bmiHeader.biClrUsed;bmiColor = (RGBQUAD *)mall

7、oc(Palette_Num * sizeof(RGBQUAD); /为调色板指针指向的地址分配一块内存空间fread(bmiColor, sizeof(RGBQUAD), Palette_Num, fp); /从文件中读位图的调色板数据到bmiColor指针指向的缓冲区 fseek(fp, bmfHeader.bfOffBits, 0); /令文件指针指向位图有效数据的起始位置/将位图有效数据输入导入MyImage二维数组中for(i=0; iHeight; i+)fread(MyImageHeight-1-i, sizeof(unsigned char), Width_4, fp);fcl

8、ose(fp); /关闭位图文件for(i=0; iHeight; i+)for(j=0; jWidth; j+)MyImageij = bmiColorMyImageij.rgbRed; /根据颜色索引号从调色板中查找真正的颜色值,赋给MyImage数组的元素 free(bmiColor);HistAvrg(MyImage, OutImage, Height, Width); /直方图均衡化处理 HDC hMyDc=GetDC(NULL); /获取显示屏的指针/将MyImage和OutImage二维数组所存储的图像数据显示在屏幕上for(i=0; iHeight; i+)for(j=0; j

9、Width; j+) Color_Value = MyImageij;Color_Value = Color_Value*65536 + Color_Value*256 +Color_Value; SetPixel(hMyDc, j, i, Color_Value);Color_Value = OutImageij;Color_Value = Color_Value*65536 + Color_Value*256 +Color_Value; SetPixel(hMyDc, j+Width+20, i, Color_Value);return;5 依次点击菜单“Build”下面的“Compile

10、” 和“Rebuild All”菜单项,在Debug文件夹中生成可执行程序HistogramAverage.exe。将该文件复制到E:盘根目录下,并将实验图片也全部复制到根目录下。在dos命令提示符界面中,进入到E:盘根目录下,然后输入命令:“HistogramAverage camera.bmp”,回车确定。6 将上面的命令中的文件名换成其他的位图文件名,分别对这些图片进行直方图均衡化实验。7 线性增强处理程序的编写与直方图均衡化程序类似,学生自行编写,得出实验结果并撰写相应的实验报告。BITMAPFILEHEADER bmfHeader; /位图文件头BITMAPINFOHEADER bm

11、iHeader; /位图信息头RGBQUAD *bmiColor; /调色板指针unsigned char MyImage10241024; /为输入的二维图像的颜色数据分配一个二维数组unsigned char OutImage10241024; /为处理后的二维图像的颜色数据分配一个二维数组/线性增强函数void LinearEnhancement(unsigned char InImage10241024, unsigned char OutImage10241024, long Row, long Col, float k, float b)unsigned char a256;int

12、 n;int i, j;float NewValue;/灰度值映射for(n=0; n256; n+)NewValue = k * n + b;if(NewValue255)an = 255;elsean = (unsigned char)NewValue;/对原图像中的每个像素,用映射后的新灰度值替换原始灰度值for(i=0;iRow;i+)for(j=0;jCol;j+)OutImageij = aInImageij;void main(int argc, char* argv)if(argc2) printf(输入命令格式: LinearEnhance.exe *.bmpn); retu

13、rn; float k, b; /线性映射函数的斜率和截距 printf(请输入线性映射函数的斜率n);scanf(%f,&k);printf(请输入线性映射函数的截距n);scanf(%f,&b);FILE *fp;int Palette_Num;int Height, Width, Width_4;int i, j;DWORD Color_Value;fp=fopen(argv1, rb); /打开*.bmp文件,获取文件指针 fread(&bmfHeader, sizeof(bmfHeader), 1, fp); /从文件中读位图文件头数据到bmfHeader变量fread(&bmiHe

14、ader, sizeof(bmiHeader), 1, fp); /从文件中读位图信息头数据到bmiHeader变量/ 判断是否是DIB对象,检查头两个字节是否是BMif (bmfHeader.bfType != 0x4D42)printf(这不是一个位图文件n);return;/判断位图的颜色是否是256色if(bmiHeader.biBitCount!=8)printf(本程序只能显示256色灰度图n);return;Height = bmiHeader.biHeight; /从信息头中读出图像高度Width = bmiHeader.biWidth; /从信息头中读出图像宽度 Width_

15、4 = (Width+3)/4*4; /取一个大于等于Width,并且最接近Width的4的整数倍的数值/获取调色板的成员数目,也就是位图所用到的颜色个数if(bmiHeader.biClrUsed=0) Palette_Num = 1bmiHeader.biBitCount;elsePalette_Num = bmiHeader.biClrUsed;bmiColor = (RGBQUAD *)malloc(Palette_Num * sizeof(RGBQUAD); /为调色板指针指向的地址分配一块内存空间fread(bmiColor, sizeof(RGBQUAD), Palette_Nu

16、m, fp); /从文件中读位图的调色板数据到bmiColor指针指向的缓冲区 fseek(fp, bmfHeader.bfOffBits, 0); /令文件指针指向位图有效数据的起始位置/将位图有效数据输入导入MyImage二维数组中for(i=0; iHeight; i+)fread(MyImageHeight-1-i, sizeof(unsigned char), Width_4, fp);fclose(fp); /关闭位图文件for(i=0; iHeight; i+)for(j=0; jWidth; j+)MyImageij = bmiColorMyImageij.rgbRed; /根

17、据颜色索引号从调色板中查找真正的颜色值,赋给MyImage数组的元素 free(bmiColor);LinearEnhancement(MyImage, OutImage, Height, Width, k, b); /线性增强处理 HDC hMyDc=GetDC(NULL); /获取显示屏的指针/将MyImage和OutImage二维数组所存储的图像数据显示在屏幕上for(i=0; iHeight; i+)for(j=0; jWidth; j+) Color_Value = MyImageij;Color_Value = Color_Value*65536 + Color_Value*256 +Color_Value; SetPixel(hMyDc, j, i, Color_Value);Color_Value = OutImageij;Color_Value = Color_Value*65536 + Color_Value*256 +Color_Value; SetPixel(hMyDc, j+Width+20, i, Color_Value);return;五、实验结果对多幅实验图像进行直方图均衡化和线性增强处理,将原始图象及增强后的图象并排显示于屏幕上方,比较增强的效果。六、思考题用直方图均衡化算法对图像进行的主观视觉效果如何?简单叙述一下它的基本原理?

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!