热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ActionScript3游戏中的图像编程(连载九十三,第4章完)

总目录:http:blog.csdn.netiloveas2014articledetails383044774.5.7 卷积矩阵的高级技巧及其原理     很多图形学教程

总目录:http://blog.csdn.net/iloveas2014/article/details/38304477

4.5.7 卷积矩阵的高级技巧及其原理

      很多图形学教程或者书籍都习惯于在给出矩阵公式以后就直接列出几个常用的,并且看起来比较有趣的滤镜效果,这是“授之以鱼”的做法,而笔者更倾向于“授之以渔”,所以,我不打算沿用他们的套路,而是打算通过介绍算法技巧使笔者在阅读完本节之后可以学以致用,举一反三。

      网上那些老掉牙的例子都比较倾向于用方阵,所以此处笔者打算先制作一个行数和列数不等的阵来制作效果,比如下面的代码就创建了一个15*1的模糊矩阵:

var con:COnvolutionFilter= new ConvolutionFilter(15, 1, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 15, 0, false);


 

      这个卷积滤镜的运行结果如图 4.73所示,它只在x方向上模糊。可以看到比较明显的振铃现象。

,

图 4.73 15*1的矩阵

      虽然它对于模糊来说并不友好,但这并不代表它一无是处,而且有时我们还更加希望振铃的感觉更加明显。

      我们已经知道,振铃是模糊区域过大,轮廓出现交叉所致,那么,我们可以利用这一点加强这种振荡的效果:

var con:COnvolutionFilter= new ConvolutionFilter(15, 1, [1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1], 8, 0, false);

      交叉读取周边像素,会使像素的交互产生跳跃式的融合,振铃现象得到进一步的增强,就像弹簧片或者橡皮条在振动一样(图 4.74)。

 ,

图 4.74 交叉融合的矩阵


      这样的图虽然没啥美观度可言,但您可以把它放到一些趣味百科的专题网站,论坛或者微薄上给网民们普及振铃方面的知识,因为这张静态图可以使肉眼产生振动的错觉,有一定的奇妙之处。

      言归正传,振动只引起x方向的模糊显得有点不自然,我们希望y方向也有一定程度的模糊,比如上下1像素,这时候我们就可以在现有基础上将其扩展为15*3的矩阵:

var con:COnvolutionFilter= new ConvolutionFilter(45, 1, 
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1], 
24, 0, false);


 

      但可惜我们并没有如愿实现y方向模糊的效果,取而代之的是色彩的变淡(图 4.75)。

 ,

图 4.75 y方向扩展到3

      原因很好找,就是因为中间像素点与左上方,右下方等位置的像素也进行了融合,所以结果显示出来会比原来模糊,但不设置上下方的像素,又无法在y方向上进行模糊,怎么办?

      遇到这种两者相互冲突的情况,笔者最喜欢做的事情就是尽可能地把两个行为进行分离,避免让它们之间直接接触,此处我继续沿用此法,具体的实现自然就是多定义一个纵向的卷积滤镜了。

var con:COnvolutionFilter= new ConvolutionFilter(15, 1, [1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1], 9, 0, false); 
var con2:COnvolutionFilter= new ConvolutionFilter(1, 3, [1, 1, 1], 3, 0, false);
main_txt.filters = [bev, con, con2];


 

      得到的结果非常干净,如图 4.76所示。

,

图 4.76 将纵横两方向分离

      如果觉得纵向模糊幅度太小,就可以将第二个卷积滤镜的高度调大一些,比如9:

var con2:COnvolutionFilter= new ConvolutionFilter(1, 5, [1, 1, 1, 1, 1], 5, 0, false);

      得到的效果如图 4.77所示。

,

图 4.77 y方向继续拉长

      矩阵的乘法将单像素通道间的数据有机结合在一起,而卷积更是充分调度了像素间的数据交互,增强了程序对色彩的可控性,给设计者提供了更广阔的发展空间,矩阵数学的艺术性再次得到了充分的体现。

ActionScript3游戏中的图像编程(连载九十三,第4章完)


推荐阅读
  • 本文介绍了一个来自AIZU ONLINE JUDGE平台的问题,即清洁机器人2.0。该问题来源于某次编程竞赛,涉及复杂的算法逻辑与实现技巧。 ... [详细]
  • 本文由chszs撰写,详细介绍了Apache Mina框架的核心开发流程及自定义协议处理方法。文章涵盖从创建IoService实例到协议编解码的具体步骤,适合希望深入了解Mina框架应用的开发者。 ... [详细]
  • 本报告记录了嵌入式软件设计课程中的第二次实验,主要探讨了使用KEIL V5开发环境和ST固件库进行GPIO控制及按键响应编程的方法。通过实际操作,加深了对嵌入式系统硬件接口编程的理解。 ... [详细]
  • 深入解析Unity3D游戏开发中的音频播放技术
    在游戏开发中,音频播放是提升玩家沉浸感的关键因素之一。本文将探讨如何在Unity3D中高效地管理和播放不同类型的游戏音频,包括背景音乐和效果音效,并介绍实现这些功能的具体步骤。 ... [详细]
  • 探讨如何在映射文件中处理重复的属性字段,以避免数据操作时出现错误。 ... [详细]
  • 网络流24题——试题库问题
    题目描述:假设一个试题库中有n道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取m道题组成试卷。并要求试卷包含指定类型的试题。试设计一个满足要求的组卷算 ... [详细]
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • 本文介绍了用户界面(User Interface, UI)的基本概念,以及在iOS应用程序中UIView及其子类的重要性和使用方式。文章详细探讨了UIView如何作为用户交互的核心组件,以及它与其他UI控件和业务逻辑的关系。 ... [详细]
  • 本文探讨了线性表中元素的删除方法,包括顺序表和链表的不同实现策略,以及这些策略在实际应用中的性能分析。 ... [详细]
  • 实现Win10与Linux服务器的SSH无密码登录
    本文介绍了如何在Windows 10环境下使用Git工具,通过配置SSH密钥对,实现与Linux服务器的无密码登录。主要步骤包括生成本地公钥、上传至服务器以及配置服务器端的信任关系。 ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
  • 探索Java 11中的ZGC垃圾收集器
    Java 11引入了一种新的垃圾收集器——ZGC,由Oracle公司研发,旨在支持TB级别的内存容量,并保证极低的暂停时间。本文将探讨ZGC的开发背景、技术特点及其潜在的应用前景。 ... [详细]
  • 本文探讨了使用普通生成函数和指数生成函数解决组合与排列问题的方法,特别是在处理特定路径计数问题时的应用。文章通过详细分析和代码实现,展示了如何高效地计算在给定条件下不相邻相同元素的排列数量。 ... [详细]
  • 在Notepad++中配置Markdown语法高亮及实时预览功能
    本文详细介绍了如何在Notepad++中配置Markdown语法高亮和实时预览功能,包括必要的插件安装和设置步骤。 ... [详细]
  • 利用无代码平台实现高效业务应用开发
    随着市场环境的变化加速,全球企业都在探索更为敏捷的应用开发模式,以便快速响应新兴的商业机遇。然而,传统的软件开发方式不仅成本高昂,而且耗时较长,这往往导致IT与业务部门之间的合作障碍,进而影响项目的成功。本文将探讨如何通过无代码开发平台解决这些问题。 ... [详细]
author-avatar
syingjin
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有