学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> VB >> VB图像处理之铅笔画算法和木雕算法


VB图像处理之铅笔画算法和木雕算法


  上一次,我们讲了锐化、柔化、扩散、雕刻这几个滤镜的算法和实现。请参考《VB图像处理之几个常用滤镜的实现

  在这一篇中我将和大家讲述铅笔画算法和木雕算法和它们的实现。为什么我要把这两个算法放在一起说呢,因为这两个算法是非常相似的。首先要说一下人的眼睛对于图像的观察,人的眼睛对于灰度(亮度)的敏感要远远大于对色彩的敏感,而人的眼睛对于暖色调和冷色调的敏感有要远大于对一般色彩的敏感度。

  经过大量的测试,人们得到了一个经验公式,来说明人的眼睛是如何识别亮度的:

Gray = Red * 0.3 + Green * 0.6 + Blue * 0.1

  而右因为人的眼睛对于绿色的敏感度最大,就有了一个更加近似的公式:

Gray = Green

  请大家再回想一下以前在用铅笔画眼睛看到的景色的时候,是如何做的呢?轮廓,对了,轮廓是什么呢?其实说白了就是灰度的一个跳变。因此我们只要设定一个阀值,把电脑上的图片中的像素的色彩转化为灰度,再把相邻的两个像素的灰度去比较,当灰度变化超过一定的量的时候,我们就判断它是轮廓。用铅笔把它描绘出来。

  有了这个思路,我们就很容易把这个算法写出来了。

Public Sub Pencil(Optional ByVal Sensitivity As Long = 25)
 Dim I As Long
 Dim L As Long
 Dim M As Long
 Dim N As Long
 Dim Col As Long
 Dim ColNext As Long
 'On Error GoTo ErrLine
 If Not CanPut Then Exit Sub
 Done = False
 TimeFilter = timeGetTime
 For I = 0 To OutPutWid - 1
  M = I + 1
  For L = 0 To OutPutHei - 1
   N = L + 1
   Col = ColOut(0, I, L) * 3 + ColOut(1, I, L) * 6 + ColOut(2, I, L)
   Col = Col \ 10 '当前点的灰度哦。
   ColNext = ColOut(0, M, N) * 3 + ColOut(1, M, N) * 6 + ColOut(2, M, N)
   ColNext = -ColNext / 10 '下一点的灰度哦。
   If Col + ColNext > Sensitivity Then '判断灰度变化是否超过设定的阀值
    ColOut(0, I, L) = 0 'RGB(0,0,0)表示黑色
    ColOut(1, I, L) = 0
    ColOut(2, I, L) = 0
   Else
    ColOut(0, I, L) = 255 'RGB(255,255,255)表示白色
    ColOut(1, I, L) = 255
    ColOut(2, I, L) = 255
   End If
  Next
 Next
 Done = True
 TimeFilter = timeGetTime - TimeFilter
 Exit Sub
ErrLine:
 MsgBox Err.Description
End Sub

  这里用到的所有全局变量都已经在前几章中用到,就不再重复说明了。

  原图:


  铅笔画效果:


  说到这里,那么木雕的原理就更简单啦,无非就是判断该点像素的灰度,如果灰度大于给定的阀值,就设它为白色,如果该点像素的灰度小于给定的阀值,就设定它为黑色。

  那么,这个算法,我就不写出来了,让给电脑前的读者,自己写一个试试看吧,不会难道你的。

  原图:


  木雕效果:


  这两篇讲的都是一些很简单的图像处理,下一篇讲给大家讲“灰度直方图”的概念,大家或许用过PhotoShop中的AutoLevel的功能吧,它可以把一张色彩很“别扭”的图像转换为很“舒服”的效果,那么就需要用到“灰度直方图”这个工具了,希望大家不要错过。


技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

有点意识...
游客 发表于2008-5-5 8:46:57
对"VB图像处理之铅笔画算法和木雕算法"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 VB图像处理之铅笔画算法和木雕算法 相关内容
Google搜索中 VB图像处理之铅笔画算法和木雕算法 相关内容
雅虎中 VB图像处理之铅笔画算法和木雕算法 相关内容
Sogou搜索中 VB图像处理之铅笔画算法和木雕算法 相关内容

相关软件 最新回复帖子:

·VB图像处理之铅笔画算法和木雕算法
·企业内部局域网维护经验谈
·DW Ultradev打造留言本(二)
·DW Ultradev打造留言本(一)
·利用AutoCAD拉伸面命令绘制哑铃
·Illustrator中网格渐变运用实例
·GB2312->UTF-8 转换函数
·ASP.NET 2.0中使用webpart系列控件
·AutoCAD绘制立体六棱铅笔全过程
·用AutoCAD五分钟内完成建模三维足球


  相关软件 VB图像处理之铅笔画算法和木雕算法相关文章
VB图像处理之几个常用滤镜的实现 VB图像处理之二次线性插值的应用
VB图像处理之像素的获取和输出 VB实现图像在数据库的存储与显示
在Visual Basic 6.0 中创建Word文档 Visual Basic 深度下潜之海蛇缠绕
利用VB6.0开发基于IIS的应用程序 VB6中用Oracle数据控件访问Oracle
用Visual Basic6.0实现电影特效 用VB实现“木马”式隐形运行程序
利用Visual Basic操作XML数据 VB COM基础讲座之发布组件
VB COM基础讲座之创建测试程序 改善SQL Server内存管理
Visual Basic小游戏:猜英雄 用VB6.0取得系统信息技巧
VB COM基础讲座之编译的实例选项 VB+VC混合编程疑难问题解
VB COM基础讲座之测试ActiveX EXEs 利用VB6.0设计屏幕保护程序