基于双边滤波美颜算法的案例化C# 程序设计教学研究

2020-08-01 09:33:18
喀什大学学报 2020年3期
关键词:窗体美颜双边

(喀什大学 计算机科学与技术学院,新疆 喀什 844000)

0 引言

C# 是微软公司推出的一种面向对象的编程语言[1-2],开发人员可以在Visual Studio 开发平台上使用C# 编程语言开发各种应用程序.C# 程序语言以其功能强大的优势被广泛应用.Visual Studio 开发平台凭借其强大的可视化用户界面设计,让C#编程易学易用.市面上通用的C#教材包含C# 基础、C# 开发环境、C# 基本语法、控制语句、数组、类、集合、Windows 窗体控件等模块.

在21 世纪,随着社会的飞速发展,对大学毕业生的素质要求越来越高.C# 程序设计语言课程是一门实践色彩十分突出的课程,需要学生将所学知识应用到实际中,需要进行大量的编程练习.然而在实际的C# 程序设计语言课程教学中,存在以下两方面的不足:(1)在实际的课堂教学中,教师往往占据主导地位,学生往往处于被动地位,导致学生学习积极性的丧失;(2)学生上机作业基本都是教材上给出的课后习题,很少有考察学生实际运用能力的综合性的练习.[3-5]

本文使用双边滤波美颜算法,经过C#Win form 程序处理后,能达到美颜效果.通过基于双边滤波美颜算法让学生了解和掌握C# 程序设计语言在具体实际中的应用.在该案例中首先让学生掌握双边滤波算法的执行流程,然后使用C# 程序语言设计的知识点,如变量的定义,使用系统类库定义变量Bitmap bS=(Bitmap)pictureSrc.Image;定义基本数据类型变量int width=bS.Width;定义数组byte [,]bR=new byte[width,height];定义方法private double[,]GetSpatial(int length,int sigmaS);循环的使用;并且通过图形界面的方式,使得学生通过实际案例激发学习兴趣,掌握C# 程序开发知识点,从而更好的达到教学要求,为进一步深造学习打下了基础.

1 双边滤波

双边滤波(Bilateral filter)是一种非线性的滤波方法[6-10],是C# 程序语言设计中的常用美颜算法,其同时考虑空域信息和灰度相似性,并结合对图像的空间邻近度和像素值相似度的综合处理,以达到去噪和保护边缘的目的.双边滤波法主要是在图像的空域(domain)和值域(range)上做工作,空域滤波(Domain Filtering)对空间上邻近的点进行加权平均,加权系数随着距离的增加而减少;值域滤波(Range filtering)则是对像素值相近的点进行加权平均,加权系数随着值差的增大而减少.

Domain Filtering 表示为:

公式中kd(x)=∫∫c(r,x)dr;

Range filtering 表示为:

公式中kr(x)=∫∫s(f(r),f(x))dr.

双边滤波结合上述两种滤波算法思想,可以表示为:

其 中,k(x)=∫∫c(r,x),s(f(r),f(x))dr,h(x)为像素点x 处滤波后像素亮度值,f(r)为在像素点r 处亮度值.在本文中Domian filtering 以高斯滤波为例,则c(r,x)和相似性函数s(f(r),f(x))分别定义为:

其中,d(r,x)=‖r-x‖(‖*‖表示像素点r 和x 的欧式距离),σd为平滑参数;

其中,d(f(r),f(x))=‖f(r)-f(x)‖(‖*‖表示像素点r 和x 处像素值的欧式距离),σr为平滑参数.

2 C# 实现

2.1 定义控件

使用 C#Winform 窗体程序进行开发,Windows 窗体可用于设计窗体和可视控件,以创建丰富的基于Windows 的应用程序.在Form1主窗体中定义四个ToolStripMenuItem 控件,分别为文件ToolStripMenuItem、打开图像ToolStrip MenuItem、保存图像ToolStripMenuItem 和美颜ToolStripMenuItem.定义三个Button 控件,分别为ButtonStart、ButtonOpen 和ButtonSave;定义9 个Lable 控件,以做显示信息之用;定义三个trackBar,分别为双边滤波美颜算法的滤波窗口大小、值域(range)和空域(domain)的参数大小;定义三个ContextMenuStrip 菜单,作用分别是打开图像、保存图像和开始执行美颜.两个PictureBox,分别对应原图和美颜处理后图.主窗体设计如图1 所示.

图1 主窗体设计

2.2 定义事件

对三个Button 按钮、四个StripMenuItem 控件、三个ContextMenuStrip 菜单添加事件和事件处理程序,事件分别是 buttonStart_Click、buttonOpen_Click、buttonSave_Click、打开图像ToolStripMenuItem_Click、保存图像ToolStripMenu Item_Click、美颜ToolStripMenuItem_Click、打开图像ToolStripMenuItem1_Click、保存图像ToolStrip MenuI tem1_Click、开始执行ToolStripMenuIte m_Click、trackBarS_Scroll、trackBarHalfLen_Scroll 和tra ckBarR_Scroll.对每一个事件添加相应事件处理程序,如对buttonStart_Click 事件添加void buttonStart_Click(object sender,EventArgs e)事件处理程序,其他事件也做相应处理.

2.3 具体实现步骤

(1)获取源图像数据信息

Bitmap bS=(Bitmap)pictureSrc.Image;

(2)定义双边滤波美颜算法中涉及到的各种变量信息

(3)定义二维数组保存图像RGB 各个通道信息,byte[,]bR、byte[,]bG 和byte[,]bB;

(4)对图像边缘进行处理,本文使用扩展数组方式,对RGB 通道做同样处理,如bR=ExtendArray(bR,halfLen);

(5)双边滤波美颜算法处理,对RGB 通道做同样的双边滤波美颜算法处理,如bR=BilateralFilter(bR,length,sigmaS,sigmaR);

//具体过程G

int width=bS.GetLength (0);int height=bS.GetLength(1);int halfLength=(int)length/2;

byte[,]bC=new byte[width-2*halfLength,height-2*halfLength];

double[,]spatial=GetSpatial(length,sigmaS);

int i,j,x,y;

double tmp,sum;

double[,]range=new double[length,length];

使用循环执行公式(1)(2)(3);

(6)将双边滤波美颜后的数据设置到目的图像.

2.4 实验结果

本文采用从百度图片获得到的图片进行试验.图2、图3 分别是要进行美颜处理的图片.

针对图2 试验图像一初始设置如图4 所示.通过trackBar 控件分别设置双边滤波美颜算法中参数SigmaR、SigmaS 和halfLength 的值.在图4 中,原图和处理后显示的图像都是未经处理的原始屠屏,也就是图2 所显示图片.图4 通过双边滤波美颜算法处理后如图5 所示.在图5 中,原图表示的是未经处理的图片,也就是试验图像一;处理后图像是经过美颜算法处理的图片.从图5 中可以明显看出,经过美颜算法处理后的图像视觉效果更好.可以使用保存图像功能,将处理后的图像保存.再通过打开图像功能打开另一个试验图像二,也就是图3,效果如图6 所示.和对图2 图像处理一样,可以设置双边滤波美颜算法中参数SigmaR、SigmaS 和halfLength 的值.经过美颜算法处理后,可以看出美颜后的图像的视觉效果明显优于原图,如图7 所示.

图2 试验图像一

图3 试验图像二

图4 试验图像一美颜前

图5 试验图像一美颜处理后

图6 试验图像二美颜前

图7 试验图像二美颜处理后

3 结语

结合双边滤波美颜算法的案例化C# 程序设计教学,涉及到了C# 程序设计语言的变量、程序控制语句、类、Winform 窗体等,将C# 程序语言各个知识点串联,将课堂理论知识点应用到实际工程中,使学生能学以致用,学生对于算法的理解和学习为后续进一步深造打下了良好基础.

猜你喜欢
窗体美颜双边
加油站开启“美颜”模式
试谈Access 2007数据库在林业档案管理中的应用
档案天地(2019年5期)2019-06-12 05:12:02
材料不能“美颜”——应当着笔干实事
当代陕西(2019年6期)2019-04-17 05:04:16
这七种水果熟吃,美颜又养生
海峡姐妹(2018年11期)2018-12-19 05:18:32
电子产品回收供应链的双边匹配策略
拍照
三月三(2016年8期)2016-09-29 09:24:39
新型自适应稳健双边滤波图像分割
双边同步驱动焊接夹具设计
焊接(2015年5期)2015-07-18 11:03:41
基于LayeredWindow的异形窗体局部刷新
中文信息(2014年2期)2014-03-06 23:49:14
中厚板双边剪模拟剪切的研究
天津冶金(2014年4期)2014-02-28 16:52:46