欢迎来到天天文库
浏览记录
ID:42609940
大小:1.02 MB
页数:16页
时间:2019-09-18
《数字图像处理文档-直方图均衡&灰度线性变换&灰度拉伸》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、技术报告摘要:本文档为数字图像处理程序的技术报告。程序主要功能为读入8位或24位位图,并可选择性对其进行直方图均衡、灰度线性变换、灰度拉伸等操作。该文档从算法原理和算法实现两方面,通过对算法的文字表述、函数的功能介绍以及主要代码分析注释,阐述了该程序进行图像处理时的方法,并通过实验测试和分析实验结果,验证了程序的正确性和可靠性。关键词:直方图均衡灰度线性变换灰度拉伸1、任务说明n打开一幅图像,进行直方图均衡。将灰度线性变化,将灰度拉伸。n用C语言或JAVA编程序读出图像文件,并利用算法进行灰度拉伸。2、算法原理(背景
2、意义,基本算法,扩展算法)122.1直方图均衡直方图均衡化是将原图像通过某种变换,得到一幅灰度直方图为均匀分布的新图像的方法。设图像均衡化处理后,图像的直方图是平直的,即各灰度级具有相同的出现频数,那么由于灰度级具有均匀的概率分布,图像看起来就更清晰了。在离散情况下,共有L个灰度级,其中第k个灰度级rk出现的像素个数为nk,图像的总像素个数为N,则第k个灰度级出现的概率为:Prrk=nkN0≤rk≤1,k=0,1,…,L-1进行均匀化处理的变换函数为:sk=Trk=j=0kPrrj=j=0knjNrk=T-1[sk]
3、1.1灰度线性变换灰度的线性变换就是将图像中所有的点按照线性灰度变换函数进行变换。该线性灰度变换函数f(x)是一个一维线性函数:f(x)=fA*x+fB灰度变换方程为:D2=f(D1)=k*D+d式中参数k为线性函数的斜率,d为线性函数的在y轴上的截距,D1为输入图像的灰度,D2为输出的图像灰度。当k>1时,输出的图像的对比度增大,图像的像素值在变换后全部增大,整体显示效果增强;当04、灰度正好反转;当k=1且d!=0时,操作仅仅使所有像素的灰度值上移或下移,其效果是使整个图像更亮或更暗;当k=1,d=0时,输出图像和输入图像相同。1.2灰度拉伸灰度拉伸又叫对比度拉伸,它是最基本的一种灰度变换,使用的是最简单的分段线性变换函数,它的主要思想是提高图像处理时灰度级的动态范围。可以有选择的拉伸某段灰度区间以改善输出图像。如图,所示的变换函数的运算结果是将原图在a到b之间的灰度拉伸到c到d之间。如果一幅图像的灰度集中在较暗的区域而导致图像偏暗,可以用灰度拉伸功能来拉伸(斜率>1)物体灰度区间以改善图像;同5、样如果图像灰度集中在较亮的区域而导致图像偏亮,也可以用灰度拉伸功能来压缩(斜率<1)物体灰度区间以改善图像质量。图2.1灰度拉伸1、算法实现11.1使用语言C++1.2编译环境VC++6.01.3数据结构1.2.3.3.23.33.3.1文件头typedefstructtagBITMAPFILEHEADER{WORD bfType;DWORD bfSize;WORD bfReserved1;WORD bfReserved2;DWORD bfOffBits;}BITMAPFILEHEADER,*PBIT6、MAPFILEHEADER;lbfType代表的是文件格式,所以,从BMP文件的前两个字节我们就可以判断我们要打开的图片是不是位图。lbfSize代表的是该位图文件的大小(包含文件头、信息头、调色板(如果有)、像素数据)。它是一个DWORD类型,占4个字节。lbfReserved1和bfReserved2都是保留量,因此它们应该都为0。它们合起来占4个字节lbfOffBits代表的是像素数据距的偏移地址。如果我们想直接读像素数据的话,可以把文件指针偏移bfOffBits个字节,然后读取就可以了。l在保存BMP文件的时7、候,保存的顺序也是按照bfType、bfSize、bfReserved1、bfReserved2、bfOffBits的顺序的。1.2.3.3.23.33.3.11.2.1信息头typedefstructtagBITMAPINFOHEADER{DWORDbiSize;LONG biWidth;LONG biHeight;WORD biPlanes;WORD biBitCount;DWORDbiCompression;DWORDbiSizeImage;LONG biXPelsPerMeter;LONG biY8、PelsPerMeter;DWORDbiClrUsed;DWORDbiClrImportant;}BITMAPINFOHEADER,*PBITMAPINFOHEADER;lbiSize代表的是该结构体的大小,即40字节。lbiWidth代表的是位图的宽度,以像素为单位。lbiHeight代表的是位图的高度,以像素为单位。lbiPlanes代表的
4、灰度正好反转;当k=1且d!=0时,操作仅仅使所有像素的灰度值上移或下移,其效果是使整个图像更亮或更暗;当k=1,d=0时,输出图像和输入图像相同。1.2灰度拉伸灰度拉伸又叫对比度拉伸,它是最基本的一种灰度变换,使用的是最简单的分段线性变换函数,它的主要思想是提高图像处理时灰度级的动态范围。可以有选择的拉伸某段灰度区间以改善输出图像。如图,所示的变换函数的运算结果是将原图在a到b之间的灰度拉伸到c到d之间。如果一幅图像的灰度集中在较暗的区域而导致图像偏暗,可以用灰度拉伸功能来拉伸(斜率>1)物体灰度区间以改善图像;同
5、样如果图像灰度集中在较亮的区域而导致图像偏亮,也可以用灰度拉伸功能来压缩(斜率<1)物体灰度区间以改善图像质量。图2.1灰度拉伸1、算法实现11.1使用语言C++1.2编译环境VC++6.01.3数据结构1.2.3.3.23.33.3.1文件头typedefstructtagBITMAPFILEHEADER{WORD bfType;DWORD bfSize;WORD bfReserved1;WORD bfReserved2;DWORD bfOffBits;}BITMAPFILEHEADER,*PBIT
6、MAPFILEHEADER;lbfType代表的是文件格式,所以,从BMP文件的前两个字节我们就可以判断我们要打开的图片是不是位图。lbfSize代表的是该位图文件的大小(包含文件头、信息头、调色板(如果有)、像素数据)。它是一个DWORD类型,占4个字节。lbfReserved1和bfReserved2都是保留量,因此它们应该都为0。它们合起来占4个字节lbfOffBits代表的是像素数据距的偏移地址。如果我们想直接读像素数据的话,可以把文件指针偏移bfOffBits个字节,然后读取就可以了。l在保存BMP文件的时
7、候,保存的顺序也是按照bfType、bfSize、bfReserved1、bfReserved2、bfOffBits的顺序的。1.2.3.3.23.33.3.11.2.1信息头typedefstructtagBITMAPINFOHEADER{DWORDbiSize;LONG biWidth;LONG biHeight;WORD biPlanes;WORD biBitCount;DWORDbiCompression;DWORDbiSizeImage;LONG biXPelsPerMeter;LONG biY
8、PelsPerMeter;DWORDbiClrUsed;DWORDbiClrImportant;}BITMAPINFOHEADER,*PBITMAPINFOHEADER;lbiSize代表的是该结构体的大小,即40字节。lbiWidth代表的是位图的宽度,以像素为单位。lbiHeight代表的是位图的高度,以像素为单位。lbiPlanes代表的
此文档下载收益归作者所有