电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 操作系统-> FreeBSD教程
vb图像处理之图像的色彩纠正_visualbasic教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
前几次为大家讲述了如何通过操作像素来实现一些简单的滤镜效果。这次想更大家讲述一下用灰度直方图均衡来调整图像的色彩空间。

  先给大家介绍一下一些颜色的小常识。以电脑的颜色来说,颜色的组成是右红、绿、蓝三种颜色组成。以最容易的24位色来说,红色、绿色、蓝色各用1个字节来表示,1个字节有8位,所以加在一起正好是24位。由于电脑无法用连续的模拟值来表示一个自然量,只能将它们分成一段一段来显示,分得越多就越接近自然。1个字节是2^8=256,所以在24位色中每一个单色都有256种不同的强度,三种颜色按照不同的强度混合,可以得到2^24种色彩。大约可以表达1677万种色彩,对于人的眼睛来说已经和自然色彩没有区别了。

  如果我们用PHOTOSHOP来打开一张图片,选择LEVEL工具,就可以察看这张图片的色彩分布了。

  原图:

->->

  灰度通道:

->->

  红色通道:

->->

  绿色通道:

->->

  蓝色通道:

->->

  由上面的四个通道图,我们可以发现,这张图片的色彩都是以低亮度为主,红绿蓝三色在高亮度区域的分布都很少,而灰度通道也表明整张图片的亮度值很低。

  在前面的文章中,我已经和大家讲过,人眼对于灰度(亮度)的敏感程度最高。因此,如果我们能通过一种方法把这章图片的灰度提高,那么它在我们的视觉中就会有更好的表现。

  或许有朋友说只要把图片加亮度,不是就可以了吗?不错,通过提高所有色彩的亮度,可以把原来处于第亮区域的色彩转移到中亮度或高亮度区域,但是大家也知道,在算法中,加亮度只是很简单的在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:

->->

  灰度直方图均衡:

->->

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

  灰度通道:

->->

  红色通道:

->->

  绿色通道:

->->

  蓝色通道:

->->

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

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

  好了,关于效果,也已经说得很多了,下面我们就来说明一下这个算法是如何实现的。
  首先,我们需要获取要处理的图片中所有像素的色彩分布统计,也就是上面的几个通道所作那样。

  假设有一张图(我们直接用灰度来表示):

->1005020
204050
100250200->

  统计入下:

->20:2
40:1
50:2
100:2
200:1
250:1->

  这张图一共有9个像素,我们用比例来表示每种颜色的出现比例:

->20:2/9
40:1/9
50:2/9
100:2/9
200:1/9
250:1/9->

  由于所有的色彩出现的次数不可能超过图片的总像素,因此,将所有色彩的比例相加也不会超过1(大家已经可以看出正好是1)

  最后我们按照从低到高的顺序,把各个色彩的比例进行加权统计,也就是当前点的“权”等于该点的原有比例加上前一个点的“权”,我们得到一个新的统计表:

->20:2/9
40:3/9
50:5/9
100:7/9
200:8/9
250:9/9->

  最后,根据这个新的统计表,我们来把像素的亮度用一个新的亮度来代替,算法为:

  新亮度=该点“权”×255

->20:2/9>>20(第一点不动,依然用20)
40:3/9×255=85
50:5/9×255=141
100:7/9×255=198
200:8/9×255=226
250:9/9×255=255->

  这时我们得到了新的图:

->100502019814120
204050>>1085141
100250200198255226->

  原图中相对出现频率多的部分的宽度变大了。而出现较少的部分则变窄了。

  所以,灰度直方图均衡的作用就是把一张图片上出现多的色彩拓展,而把出现少的色彩压缩。

  从而得到了更“均衡”的色彩分布。

  下面附上我的例程:

->PrivateTypeColorChart
 ColorCount(255)AsLong统计原来图片中的亮度出现次数
 PixcelCountAsLong记录图片的像素个数
 ColRatio(255)AsSingle记录每一个亮度的出现比例
 NewVal(255)AsByte存放新的亮度索引
EndType

DimColChartAsColorChart

PublicSubStatisticsChart()
 DimRAsByte
 DimGAsByte
 DimBAsByte
 DimGrayAsInteger
 DimXAsLong
 DimYAsLong
 DimIAsLong
 DimLAsLong
 DimMAsLong
 DimCAsDouble
 OnErrorGoToErrLine

 Done=False
 TimeFilter=timeGetTime
 WithColChart
  ForX=0To255先把数组清零
   .ColorCount(X)=0
  Next
  ForX=0ToOutPutWid这两个循环用来扫描图片数据,记录每个点的灰度和出现次数
   ForY=0ToOutPutHei
    R=ColVal(2,X,Y)
    G=ColVal(1,X,Y)
    B=ColVal(0,X,Y)
    Gray=R*3 G*6 B
    Gray=Gray\10
    .ColorCount(Gray)=.ColorCount(Gray) 1
   Next
  Next

  .PixcelCount=X*Y获得图片的像素总量
  C=1/.PixcelCount

  .ColRatio(0)=.ColorCount(M,0)*C计算每个亮度的出现比例
  .NewVal(0)=0色值最小的色彩总是为0,不参与计算
  L=0
  ForI=1To255
   .ColRatio(I)=.ColorCount(I)*C .ColRatio(L)进行加权
   .NewVal(I)=.ColRatio(I)*255计算新的颜色索引
   L=L 1
  Next

  ForX=0ToOutPutWid
   ForY=0ToOutPutHei
    R=Colval(2,X,Y)读取原来点的颜色
    G=Colval(1,X,Y)
    B=Colval(0,X,Y)
    R=.NewVal(R)查表得到新的颜色
    G=.NewVal(G)
    B=.NewVal(B)
    ColOut(2,X,Y)=R把新的颜色放到输出数组中
    ColOut(1,X,Y)=G
    ColOut(0,X,Y)=B
   Next
  Next
 EndWith

 Done=True
 TimeFilter=timeGetTime-TimeFilter
 ExitSub
ErrLine:
 Done=True
 MsgBoxErr.Description
EndSub->
->


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·photoshop鼠绘一个鲜脆欲滴的苹果_photoshop教程
·简单计算函数的编写过程_visualbasic教程
·利用api函数播放wav声音文件_visualbasic教程
·excel、access、vb的结合应用_visualbasic教程
·一个封装了wininetapi函数的类(cwininetconnection)_visualbasic教程
·vb6.0初学者的10个编程小技巧_visualbasic教程
·vb图像处理之图像的色彩纠正_visualbasic教程
·vb图像处理之铅笔画算法和木雕算法_visualbasic教程
·vb利用高级音频函数编写多媒体播放器_visualbasic教程
·visualbasic可以产生四角形以外其他形状的form_visualbasic教程

最新文章
·phpmyadmin安装注意事项_php技巧
·用photoshop帮漂亮mm肖像照片美白牙齿_photoshop教程
·photoshop为传统彩色照片底片翻拍图校色_photoshop教程
·zend公司推动中国开源php发展_php文摘
·教你制作可以随身携带的freebsd系统_freebsd教程
·将心仪的图片定义为photoshop填充图案_photoshop教程
·忘记windows xp登入密码的9种解决办法_windows xp
·photoshop快速消除肖像照片黑眼圈_photoshop教程
·windows xp中的秘密武器_windows xp
·匿与无形:windows xp系统隐藏技巧大放送_windows xp


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号