AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > VB编程

VB图像处理之图像的色彩纠正

51自学网 http://www.wanshiok.com



   或许有朋友说只要把图片加亮度,不是就可以了吗?不错,通过提高所有色彩的亮度,可以把原来处于第亮区域的色彩转移到中亮度或高亮度区域,但是大家也知道,在算法中,加亮度只是很简单的在R、G、B三个值后面直接加上一个偏移量: NewRed=OldRed+Offset,NewGreen=OldGreen+Offset,NewBlue+Offset,但是这种做法只是“粗暴”地将整个色彩空间搬了一个位置,而没有改变其分布。请看下面,我在这张图片加上了120点亮度:再看看此时的色彩分布你就知道我为什么说它“粗暴”了。

   灰度通道:


   红色通道:


   绿色通道:


   蓝色通道:


   可以看到,原图上的高亮度部分的色彩信息全部丢失,而低亮度部分(0-120)则是一片空白,如果说原来的图片是2^8×2^8×2^8 一共1677万色的话,那么现在的图片则是:(256-120)^3=251万色,也就是说,通过我们给图片加了120点的亮度,我们丢失了一大半的颜色信息。

   (选择加120点亮度是为了使图片的整体亮度和直方图均衡后的亮度相当,易于比较。)

   那么,有什么方法可以在不丢失,或丢失很少的颜色信息的前提下做到是图片显示更好呢?

   有,这就是今天要说的“灰度直方图均衡”的方法。

   先给大家看一下效果:下面是将原来的图片通过灰度直方图的方法处理后的效果和前面的比较。

   原图:


   提高亮度120:


   灰度直方图均衡:


   通过直方图均衡后的颜色分布如下:

   灰度通道:


   红色通道:


   绿色通道:


   蓝色通道:


   通过对比,我们可以发现,灰度直方图均衡,是对原图中的色彩分布按照出现的频率作了一个分布。

   将出现最多的色彩“分”开,将出现很少的色彩“挤”得更紧,这样作的好处就是把我们眼睛所看到的主体表示得更鲜明了。

 
 

上一篇:用VB6.0编写磁盘格式化程序  下一篇:VB图像处理之铅笔画算法和木雕算法