图像放大
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《图像检测与处理技术》
中期考核
题目:图像放大
学院(系):电子信息与自动化学院
班级:113xxxxxx
学生姓名:学号113xxxxxxx
指导教师:程瑶
时间:从2016年3月25 日到2016年 4 月5 日
图像放大
摘要:图像的放大,从物理含义上来讲是指图像缩小胡逆操作。但是从信息处理的角度来看,则含义完全不一样。图像缩小是从大数据量到小数据量的处理过程,因此只需要从多个数据中,以适当的方式选出所需要的信息就可以完成;而图像放大则是从小数据到大数据量的处理过程,因此需要对许多未知的数据进行估计。因为图像中相邻像素之间的相关性很强,所以可以利用这个相关性来实现图像的放大。与图像缩小相类似,图像的放大也可分为按比例放大和不按比例放大两种方式。按比例放大不会引起图像的畸变,而不按比例放大则会产生图像的畸变。
关键词:基于像素放大,图像放大,Labview
一、原理与总体方案
1.1总体方案(基于像素放大原理的图像放大)
分工:曾雯、唐必婷主要负责程序算法的设计与调试,唐洁参与实验设计过程,负责设计报告,校正实验中的错误。
1.2基于像素放大原理的图像放大方法
如图3-13所示是该方法的原理示意图。如果一幅图像要放大k1 ×k2的倍(即
行放大k
1倍,列放大k
2
倍,k
1
>1,k
2
>1),则将图像中的每个像素复制到k
1
×
k
2
个像素所构成的子块中,这些子块再按照原来像素的排列顺序进行排序,进而
可以构成放大后的图像。从一个图像上看,因为一个像素放大成一个k
1 ×k
2
的
子块,相当于像素放大了k
1 ×k
2
倍,所以称这种方法为基于像素放大原理的图
像放大方法。
→→
(a)单个像素复制2×3 (b)整幅图像复制2×3
图3-13 基于像素放大原理的图像放大
如图3-13所示的是对图像的行和列均放大整数倍时的方法。如果k
1和k
2
不
是整数,设原图为F,放大图为G,则可按照式(3.6.14)进行放大。
G(i,j)=f(c
1·i, c
2
·j)
其中,c
1=1/k
1
,c
2
=1/k
2
。
下面从一个简单的例子来说明基于像素放大原理的图像放大方法。设原图为
若将其放大1.2×2.5倍放大后的图像G=|g
ij |
4×8
,且
二、程序设计
2.1程序设计思路算法介绍
如图1所示设计的放大图片的程序,我们采用的是基于像素放大原理的图像放大方法,首先将原数组的行列进行放大并取整得到新的数组的行和列,
用两个FOR循环设置新数组的行与列,再利用:G(i,j)=F(c
1﹒i,c
2
﹒j)对新的
数组进行赋值,得到放大后的像素图,将该部分的程序设计成子VI连接至主程序中。
图1 放大部分的程序框图
2.2程序前面板介绍
前面板是程序与用户交流的窗口,它可以清晰的展现程序的流程和功能,我
们通过前面板调节放大倍数实现对图片的缩放,由于我们采用的是基于像素放大原理的图像放大方法,所以放大后的图像子块与子块之间的过渡会引不平缓而导致画面效果的不自然,即产生马赛克现象。图2所示为放大两倍的效果,图3所示为缩小两倍的效果。
图2 放大2倍的效果图及像素变化
图3 缩小2倍的图像效果图及像素变化
2.3程序框图介绍
如图4所示为总的程序框图,主要包括通过路径把图片载入图片控件中、while循环、条件结构、子VI导入及文本等应用。
图4 总的程序框图
1、通过路径控件把需要操作的图片载入到程序中,然后对图片进行识别格式,因为程序中设定了图片格式,所以只能对BMP格式的图片进行操作,所需控件如下:
还需要通过一个控件把图片的数据变成程序能读取的数据,而这个控件就是绘制平滑像素图控件,如图:
2、程序中还用到了三种重要的结构函数:FOR循环、While循环、条件结构。当数据传过来时,它们控制各自框内的代码按循环次数执行、反复执行、或者有条件执行,从而实现程序的功能。
在子VI中,我们采用了两个FOR循环创建新数组的行和列,外FOR循环的循环次数代表行,内FOR循环的循环次数代表列。
在While循环中,连接了一个布尔量用来结束程序,While循环永远至少循环一次。当我们运行程序期间,未按下停止按钮,那么程序会一直运行,当改变放大倍数,图片会相应发生改变,按下停止按钮,程序结束运行。
三、调试
调试中遇到的问题
刚开始不知道如何将原图片的像素点索引出来并赋值给新图片的像素图,后来直接利用两个FOR循环构成内外循环,在FOR循环内部对原数组进行索引,直接导出赋值给新数组。放大后的图片不能正常显示,解决方法是又创建了一个绘制平滑像素图控件及一个图片显示控件,将“矩形“接线口连接到处理过后的图片“边界”,“平化像素图数据”接线口连接至新图片的“平化像素图数据”,其他照常连接。这样我们就能观察到变化前后的图片,更直观的看到改变。
四、总结
这是一个对图片进行缩放处理的程序,主要运用了通过路径载入图片控件从而进行缩放。在刚拿到题目时,我还觉得挺简单的,毕竟书上有现成的算法,当真正开始做的时候就把我给难住了,能把数组中指定位置的数索引出来,也能对新的数组指定位置进行赋值,但合在一起就不会了,最后经过我们的各种尝试终于成功了,能将图片正常放大,这让我意识到很多在上学期学过的知识我都没能记住,反而还要一直去查资料、百度。
通过这次对Labview的学习和运用,我对虚拟仪器有了更多的了解,认识到了该软件的实用性和重要性。这次作业是我和我同组成员共同努力的结果,虽然我们开始很迷茫但是经过我们共同的努力,我们终于攻破了难关完成了这次作业,所以今后要更重视团队的重要,互相学习才能共同进步,同时也感谢老师给了我们这次能够让我们自己亲自去操作的机会,让我们不仅学到了书本上的知识,还将所学得到了运用。
●参考文献:
●【1】程学庆、房晓溪、韩薪莘、张建主编.LabVIEW图形化编程与实例应用.
北京:中国铁道出版社,2005.3
●【2】岂兴明、周建兴、矫津毅主编. LabVIEW8.2中文版入门与典型实例/
岂兴明、周建兴、矫津毅编著.--2版(修订版).--北京:人民邮电出版社,