#include
灰度直方图实现
-
格式:docx
-
大小:143.58 KB
-
文档页数:3
// grayHistogram.cpp : 定¡§义©?控?制?台¬¡§应®|用®?程¨¬序¨©的Ì?入¨?口¨²点Ì?。
¡ê
//
#include"stdafx.h"
#include<opencv\cv.h>
#include<opencv\cxcore.h>
#include<opencv2\highgui\highgui.hpp>
int _tmain(int argc, _TCHAR* argv[])
{
IplImage *src=cvLoadImage("E:\\picture\\grayshu.bmp"); //加载图像
cvNamedWindow("sr"); //创建显示窗口
cvShowImage("sr",src); //显示图像
int size=256;
float range[]={0,255};
float *ranges[]={range};
CvHistogram *hist=cvCreateHist(1,&size, CV_HIST_ARRAY,ranges,1);//创建一维直方图
IplImage* gray=cvCreateImage(cvGetSize(src),8,1);
cvCvtColor(src,gray,CV_BGR2GRAY);
//vCvtColor(...),是Opencv里的颜色空间转换函数可以实现RGB颜色向HSV,HSI等颜色空间的转换?也可以转换为灰度图像
//参?数CV_RGB2GRAY是RGB到gray,
//参数CV_GRAY2RGB是gray到RGB
cvCalcHist(&gray,hist,0,0);//统计图像在[0 255]像素的均匀分布,将统计结果在结构体中//draw histogram-----
//统ª计直方图中的最大直块¨¦
float histMax=0;
cvGetMinMaxHistValue(hist,0,&histMax,0);
//创建一张一维直方图的图,横坐标为灰度级,纵坐标为像素个数
IplImage *grayHist=cvCreateImage(cvSize(256*2,64*2),8,1);
cvZero(grayHist);
//分别将每个直方块的值绘制到图
for(int i=0;i<255;i++)
{
float histValue=cvQueryHistValue_1D(hist,i);
float nextValue=cvQueryHistValue_1D(hist,i+1);
//计算直方块4个点的值
CvPoint pt1=cvPoint(i*2,64*2);
CvPoint pt2=cvPoint((i+1)*2,64*2);
CvPoint pt3=cvPoint((i+1)*2,(64-(nextValue/histMax)*64)*2);
//nextValue/histMax是将级像素点个数归一到0~1,在*64是使高对在0~64之间
//由于opencv图像是以左上角为坐标原-点,向右为x轴,向下时y轴,而显示的直方图是向上增长的,所以用64减,将其倒过y来显示
CvPoint pt4=cvPoint(i*2, (64-(histValue/histMax)*64)*2);
int ptNum=5;
CvPoint pt[5];
pt[0]=pt1;
pt[1]=pt2;
pt[2]=pt3;
pt[3]=pt4;
pt[4]=pt1;
cvFillConvexPoly(grayHist,pt,ptNum,cvScalar(255)); //填充直方块}
cvNamedWindow("grayHistogram");
cvShowImage("grayHistogram",grayHist);
cvWaitKey(0);
cvReleaseImage(&src);
cvReleaseImage(&gray);
cvReleaseImage(&grayHist);
cvDestroyWindow("sr");
cvDestroyWindow("grayHistogram");
return 0;
}。
图像直方图均衡化原理
图像直方图均衡化原理
图像直方图均衡化是一种常用的图像增强方法,通过调整图像的像素灰度分布,使得图像的对比度增强、细节更加清晰。
其原理主要分为以下几个步骤:
1. 统计像素灰度值的分布:首先,对待处理的图像,统计每个灰度级别的像素点数量,得到原始图像的灰度直方图。
2. 计算累计分布函数:根据灰度直方图,计算每个灰度级别对应的累计分布函数,即该灰度级别及其之前的像素点的累积数量比例。
3. 灰度映射:对于每个像素点,将其灰度值通过累计分布函数进行映射,得到新的灰度值。
通常情况下,可以通过线性映射或非线性映射来实现,使得图像的灰度分布变得更加均匀。
4. 重构图像:将经过灰度映射处理后的灰度值替换原始图像中的对应像素点的灰度值,从而得到均衡化后的图像。
通过图像直方图均衡化处理,可以提高图像的对比度,使暗部和亮部细节更加突出,同时抑制了图像中灰度级别分布不均匀的问题。
这种方法在图像增强、图像分析等领域都有广泛应用。
图像增强—灰度变换及直方图均衡化试验目的试验原理及知识点
图像增强—灰度变换及直方图均衡化一、实验目的1、了解图像增强的目的及意义,加深对图像增强的感性认识,巩固所学理论知识。
2、掌握直接灰度变换的图像增强方法。
3、掌握灰度直方图的概念及其计算方法;4、掌握直方图均衡化的计算过程;二、实验原理及知识点1、图像增强是指按特定的需要突出一幅图像中的某些信息,同时,消弱或去除某些不需要的信息的处理方法。
其主要目的是处理后的图像对某些特定的应用比原来的图像更加有效。
图像增强可以在空间域中执行,也可以在变换域中执行。
2、空间域指的是图像平面本身,在空间域内处理图像是直接对图像的像素进行处理。
空间域处理方法分为两种:灰度级变换、空间滤波。
空间域技术直接对像素进行操作,其表达式为g(x,y)=T[f(x,y)]其中f(x,y)为输入图像,g(x,y)为输出图像,T是对图像f进行处理的操作符,定义在点(x,y)的指定邻域内。
定义点(x,y)的空间邻近区域的主要方法是,使用中心位于(x,y)的正方形或长方形区域。
此区域的中心从原点(如左上角)开始逐像素点移动,在移动的同时,该区域会包含不同的邻域。
T应用于每个位置(x,y),以便在该位置得到输出图像g。
在计算(x,y)处的g值时,只使用该领域的像素。
2、灰度变换T的最简单形式是使用领域大小为1×1,此时,(x,y)处的g值仅由f在该点处的亮度决定,T也变为一个灰度变换函数。
由于灰度变换函数仅取决于亮度的值,而与(x,y)无关,所以亮度函数通常可写做如下所示的简单形式:s=T(r)其中,r表示图像f中相应点(x,y)的亮度,s表示图像g中相应点(x,y)的亮度。
灰度拉伸又叫对比度拉伸是最基本的一种灰度变换,使用简单的分段线性变换函数,可以提高灰度的动态范围,适用于低对比度图像的处理,增强对比度。
3、直方图是多种空间城处理技术的基础。
直方图操作能有效地用于图像增强。
除了提供有用的图像统计资料外,直方图固有的信息在其他图像处理应用中也是非常有用的,如图像压缩与分割。
直方图均衡化原理与实现
直⽅图均衡化原理与实现直⽅图均衡化(Histogram Equalization) ⼜称直⽅图平坦化,实质上是对图像进⾏⾮线性拉伸,重新分配图像象元值,使⼀定灰度范围内象元值的数量⼤致相等。
这样,原来直⽅图中间的峰顶部分对⽐度得到增强,⽽两侧的⾕底部分对⽐度降低,输出图像的直⽅图是⼀个较平的分段直⽅图:如果输出数据分段值较⼩的话,会产⽣粗略分类的视觉效果。
直⽅图是表⽰数字图像中每⼀灰度出现频率的统计关系。
直⽅图能给出图像灰度范围、每个灰度的频度和灰度的分布、整幅图像的平均明暗和对⽐度等概貌性描述。
灰度直⽅图是灰度级的函数, 反映的是图像中具有该灰度级像素的个数, 其横坐标是灰度级r, 纵坐标是该灰度级出现的频率( 即像素的个数) pr( r) , 整个坐标系描述的是图像灰度级的分布情况, 由此可以看出图像的灰度分布特性, 即若⼤部分像素集中在低灰度区域, 图像呈现暗的特性; 若像素集中在⾼灰度区域, 图像呈现亮的特性。
图1所⽰就是直⽅图均衡化, 即将随机分布的图像直⽅图修改成均匀分布的直⽅图。
基本思想是对原始图像的像素灰度做某种映射变换, 使变换后图像灰度的概率密度呈均匀分布。
这就意味着图像灰度的动态范围得到了增加, 提⾼了图像的对⽐度。
图1 直⽅图均衡化通过这种技术可以清晰地在直⽅图上看到图像亮度的分布情况, 并可按照需要对图像亮度调整。
另外,这种⽅法是可逆的, 如果已知均衡化函数, 就可以恢复原始直⽅图。
设变量r 代表图像中像素灰度级。
对灰度级进⾏归⼀化处理, 则0≤r≤1, 其中r= 0表⽰⿊, r= 1表⽰⽩。
对于⼀幅给定的图像来说, 每个像素值在[ 0,1] 的灰度级是随机的。
⽤概率密度函数来表⽰图像灰度级的分布。
为了有利于数字图像处理, 引⼊离散形式。
在离散形式下, ⽤代表离散灰度级, ⽤代表 , 并且下式成⽴:其中, 0≤≤1, k=0, 1, 2, …, n-1。
式中为图像中出现这种灰度的像素数, n是图像中的像素总数, ⽽就是概率论中的频数。
灰度直方图
边界阈值选择
轮廓线提供了一个确立图像中简单物体的边界的 有效的方法。使用轮廓线作为边界的技术被称为 阈值化。 假定一幅图背景是深色的,其中有一个浅色的物 体。物体中的浅色像素产生了直方图上的右峰, 而背景中大量的灰度级产生了直方图上的左峰。 物体边界附近具有两个峰值之间灰度级的像素数 目相对较少,从而产生了两峰之间的谷。选择谷 作为灰度阈值将得到合理的边界。
直方图均衡化
直方图均衡化方法的基本思想是,对在图 像中像素个数多的灰度级进行展宽,而对 像素个数少的灰度级进行缩减。从而达到 清晰图像的目的(增强图像的整体对比 度)。 直方图均衡化处理的中心思想是把原始图 像的灰度直方图从比较集中的某个灰度区 间变成在全部灰度范围内的均匀分布。
直方图匹配(规定化)
对于两峰之间的最低点的灰度级作为阈值来确定边界是最 适合的。直方图是面积函数的导数。在谷底的附近,直方 图的值相对较小,意味着面积函数随阈值灰度级的变化很 缓慢。如果我们选择谷底处的灰度作为阈值,将可以使其 对物体的边界的影响达到最小。如果我们试图测量物体的 面积,选择谷底处阈值将使测量对于阈值灰度变化的敏感 降低到最小。
直方图均衡化校正不具备交互作用特性, 而直方图规定化校正在运用均衡化原理的 基础上,向人们提供了根据给定直方图作 图像增强的手段。 指定希望处理的图像所具有的直方图形状, 这种用于产生处理后又特殊直方图的图像 方法,叫做直方图匹配或直方图规格化处 理。
特点:
直方图均衡化的优点是能自动的增强整体 图像的对比度,但是它的具体增强效果却 不易控制,处理的结果总是得到全局均衡 化的直方图。 直方图规定化可以有选择的增强某个灰度 值范围内的对比度或使图像灰度值的分布 满足特的事图 像中该灰度级的像素个数。即:横坐标表 示灰度级,纵坐标表示图像中该灰度级出 现的频率(对数字图像即指像素的个数)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。