【VC++开源代码栏目提醒】:以下是网学会员为您推荐的VC++开源代码-图像进行直方图均衡化(代码) - 综合课件,希望本篇文章对您学习有所帮助。
我这里有一个源
程序也共享出来大家探讨一下 I imreadpout.tif subplot321imshowI subplot322imhistI mn sizeI hf zeros1256 pa zeros1256 for i 1:m for j 1:n hfIijhfIij1统计各灰度像素个数 end end pa1 0 for k 2:256 pfk hfk/mn算灰度分布概率 pak pak-1pfk灰度累计分布概率 end G zerossizeI for i 1:m for j 1:n Gij255paIij 将原来f的灰度值映射到新的灰度值gij 255pafij end end H mat2grayG K uint8G subplot323imshowK subplot324imhistK subplot325imshowhisteqI subplot326imhisthisteqI 对一幅图像进行直方图均衡化 AimreadFig3.08a.jpg mnsizeA BzerossizeA lmn rzeros1256 yzeros1256 AdoubleA for i1:m for j1:n rAij1rAij11 end end rr./l得到原图像各灰度级所占的比例 for k1:256 for j1:k ykykrj end end 直方图累加 for k1:256 ykfloor255yk0.5 确定映射关系 end for i1:m for j1:n BijyAij1 end end Auint8A Buint8B subplot221 imshowA title原图像 subplot222 imhistA title原图像的直方图 subplot223 imshowB title经过均衡处理的图像 subplot224 imhistB title经过均衡处理后该图像的直方图 至于所参与运算的图像你们自己随便找一幅 clear all一图像的预处理读入彩色图像将其灰度化PSimread1.jpg 读入JPG彩色图像文件imshowPS 显示出来 title输入的彩色JPG图像imwritergb2grayPSPicSampleGray.bmp 将彩色图片灰度化并保存PSrgb2grayPS 灰度化后的数据存入数组二绘制直方图mnsizePS 测量图像尺寸参数GPzeros1256 预创建存放灰度出现概率的向量for k0:255 GPk1lengthfindPSk/mn 计算每级灰度出现的概率将其存入GP中相应位置endfigurebar0:255GPg 绘制直方图title原图像直方图xlabel灰度值ylabel出现概率三直方图均衡化S1zeros1256for i1:256 for j1:i S1iGPjS1i 计算Sk endendS2roundS12560.5 将Sk归到相近级的灰度for i1:256 GPeqisumGPfindS2i 计算现有每个灰度级出现的概率endfigurebar0:255GPeqb 显示均衡化后的直方图title均衡化后的直方图xlabel灰度值ylabel出现概率四图像均衡化PAPSfor i0:255 PAfindPSiS2i1 将各个像素归一化后的灰度值赋给这个像素endfigureimshowPA 显示均衡化后的图像 title均衡化后图像imwritePAPicEqual.bmp 直方图均衡化并在窗口中显示的
VC源
代码2008-06-03 18:42编译环境
VC6.0工程Win32 Application include include define WIDTH 64 //图像宽度 define HEIGHT 64 //图像高度 define NGRAY 16 //量化级数 int OriginGrayNGRAY 800 650 600 430 300 230 200 170 150 130 110 96 80 70 50 30 int NewGrayNGRAY 0 float a b //为了把直方图按比例显示在屏幕上令aGrayhitsbCoordinateLenth //其中Grayhits为灰度出现的次数CoordinateLenth为显示的坐标长度 //假设显示最小长度为10最大长度为170则有amaxb170aminb10 //由下面的线性化函数可以解得ab void Linearize int OriginMax OriginMin OriginMax 0 OriginMin WIDTH HEIGHT for int i0 i NGRAY i int temp OriginGrayi iftemp OriginMax OriginMax temp if temp OriginMin temp0 OriginMin temp afloat160.0 / OriginMax - OriginMin bfloat170.0 - a OriginMax //直方图均衡化 void HistogramEqua float sNGRAY //用来表示灰度级出现的频率 int i nIndexNGRAY //计算每个灰度级出现的频率 fori0 i