您的位置:首页 > 其它

图像灰度级减少及基本缩放(Reducing the Number of Gray Levels, Zooming and Shrinking Images)

2015-01-26 11:18 423 查看
摘 要:本实验分为三部分:编写一个以2的幂次方将一幅图像的灰度级数从256减少到2;编写一个基于像素复制法的图像缩放程序,要求缩放因子为整数;编写一个基于双线性插值法的图像缩放程序,要求输入参数为输出图像的水平和垂直方向的像素数。并使用这三个函数对给定图像进行缩小再放大操作,对比输出图像和原图的差异。该实验是在MATLAB
2014a平台上实现。

一、实验原理

1.图像灰度级数变化

图像的灰度就是所谓的色阶或灰阶,是指亮度的明暗程度。也称中间色调主要用于传送图片,分别有16级、32级、64级三种方式,它采用矩阵处理方式将文件的像素处理成16、32、64级层次,使传送的图片更清晰。LED显示屏的灰度等级越高,颜色越丰富,色彩越艳丽;反之,显示颜色单一,变化简单。
本实验的图像素材是一种具有从黑到白256级灰度色阶的单色图像。该图像中的每个像素用8位无符号数据表示,因此像素点值介于黑白间的256种灰度中的一种。该图像只有灰度等级,而没有颜色的变化。
为了实现图像灰度级数的变化,本实验以2的幂次方将256级的灰度色阶进行量化。当图像的采样点数一定时,采用不同量化灰度级数的图像质量不一样。灰度级数越多,图像质量越好;反之图像质量越差。灰度级数小的极端情况就是二值图像。图1给出在MATLAB上运行的量化代码。



图1灰度级减少程序

其中imt = (ima / dfact) * dfact中的(ima / dfact)的计算结果为整数,略去了小数点后,再乘以dfact则达到了量化的作用,即不是dfact整数倍的灰度值都被归为dfact的整数倍。其中dfact为2的factor次幂,为了防止数据溢出,将factor设定在0到8之间。

2.关于图像内插

内插是在诸如放大、收缩、旋转等图像处理任务中广泛使用的基本工具。使用内插用于调整图像尺寸大小也称为图像重取样方法。从根本上看,内插是用已知数据来估计未知位置的数值的处理,本实验将验证两种插值方法,分别是像素复制法和双线性插值法。

3.基于像素复制方式的图像缩放

在本实验中,像素复制法只是简单的把原图像最近邻的灰度赋给每个新的位置,或者在缩小中简单地去除某一位置的像素信息,这种方法的优势是计算量很低,不用涉及类似于双线性插值和双三次内插的大量的浮点运算。其方法的缺点也是明显的,该方法在放大图片时会产生较为严重的失真,在缩小后再放大图片则失真更为明显。

4.基于双线性插值技术的图像缩放

使用双线性插值法,我们需要用4或4个以上最近邻点去估计给定位置的灰度。在数学上,双线性插值算法可以看成是两个变量间的线性插值的延伸。执行该过程的关键思路是先在一个方向上执行线性插值,然后再在另外一个方向上插值。用一个简单的数学表达式可以表示如下:

由上式可以看出,这个过程有大量的浮点运算,而图像的像素取值在0到255之间,最多只有256种结果,而计算出的f(x,y)很明显是个浮点数,我们还需要对该浮点数进行取整。



图2双线性插值法的大致思路

二、实验结果

本实验素材分别取自冈萨雷斯主编的数字图象处理第三版中Fig2.19(a).jpg和Fig2.21(a).jpg。



图3不同灰度级的输出图像



图4基于像素复制法缩小为256*256后的图像



图5基于像素复制法放大为1024*1024后的图像



图6基于双线性插值法缩小为256*256后的图像



图7基于双线性插值法放大为1024*1024后的图像

三、实验结论

本实验编写了一个以2的幂次方将一幅医学图像的灰度级数从256减少到2的程序,同时论证了像素复制法、双线性插值法这两种图像缩放技术。实验结果表明像素复制法具有运算速度快这一优点,对于一些只具有少量细节的图片不失为一种有效的图像缩放技术,但无法胜任具有大量细节的图像缩放工作,因为缩放后的图像失真严重。
双线性插值法是一种非线性内插法,通过使用4个或以上的临近点来估计新位置的灰度值,其处理结果更接近原图像的细节。但是,由于运算过程中包含大量浮点运算,使得计算量明显增加,在MATLAB上运行代码时便可明显感觉到。但是使用双线性插值法所得到的结果比像素复制法有重大的改进。
在图像缩放处理中,双线性内插和双三次内插是两种常用的典型方法。当然有可能使用更多的邻点和更复杂的方程来逼近原图像,但实际操作过程中需要考虑计算负担与效率问题。

以下给出简单的MATLAB代码:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐