‘壹’ MATLAB中三种差值法怎样编程
http://wenku..com/view/4b8beb2dcfc789eb172dc896.html?st=1
http://wenku..com/view/49a35f050740be1e650e9aac.html?st=1
http://wenku..com/view/97931e353968011ca30091ac.html
http://wenku..com/view/702346f8910ef12d2af9e7ad.html
‘贰’ 如何用 java 以双线性内插法去放大一张图片
图像的缩放很好理解,就是像的放大和缩小。传统的绘画工具中,有一种叫做“放大尺”的绘画工具,画家常用它来放大图画。当然,在计算机上,我们不再需要用放大尺去放大或缩小图像了,把这个工作交给程序来完成就可以了。下面就来讲讲计算机怎么来放大缩小图象;在本文中,我们所说的图像都是指点阵图,也就是用一个像素矩阵来描述图像的方法,对于另一种图像:用函数来描述图像的矢量图,不在本文讨论之列。
越是简单的模型越适合用来举例子,我们就举个简单的图像:3X3 的256级灰度图,也就是高为3个象素,宽也是3个象素的图像,每个象素的取值可以是 0-255,代表该像素的亮度,255代表最亮,也就是白色,0代表最暗,即黑色。假如图像的象素矩阵如下图所示(这个原始图把它叫做源图,Source):
234 38 22
67 44 12
89 65 63
这个矩阵中,元素坐标(x,y)是这样确定的,x从左到右,从0开始,y从上到下,也是从零开始,这是图象处理中最常用的坐标系,就是这样一个坐标:
--------------------->X
|
|
|
|
|
∨Y
如果想把这副图放大为 4X4大小的图像,那么该怎么做呢?那么第一步肯定想到的是先把4X4的矩阵先画出来再说,好了矩阵画出来了,如下所示,当然,矩阵的每个像素都是未知数,等待着我们去填充(这个将要被填充的图的叫做目标图,Destination):
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
然后要往这个空的矩阵里面填值了,要填的值从哪里来来呢?是从源图中来,好,先填写目标图最左上角的象素,坐标为(0,0),那么该坐标对应源图中的坐标可以由如下公式得出:
srcX=dstX* (srcWidth/dstWidth) , srcY = dstY * (srcHeight/dstHeight)
好了,套用公式,就可以找到对应的原图的坐标了(0*(3/4),0*(3/4))=>(0*0.75,0*0.75)=>(0,0)
,找到了源图的对应坐标,就可以把源图中坐标为(0,0)处的234象素值填进去目标图的(0,0)这个位置了。
接下来,如法炮制,寻找目标图中坐标为(1,0)的象素对应源图中的坐标,套用公式:
(1*0.75,0*0.75)=>(0.75,0)
结果发现,得到的坐标里面竟然有小数,这可怎么办?计算机里的图像可是数字图像,象素就是最小单位了,象素的坐标都是整数,从来没有小数坐标。这时候采用的一种策略就是采用四舍五入的方法(也可以采用直接舍掉小数位的方法),把非整数坐标转换成整数,好,那么按照四舍五入的方法就得到坐标(1,0),完整的运算过程就是这样的:
(1*0.75,0*0.75)=>(0.75,0)=>(1,0)
那么就可以再填一个象素到目标矩阵中了,同样是把源图中坐标为(1,0)处的像素值38填入目标图中的坐标。
依次填完每个象素,一幅放大后的图像就诞生了,像素矩阵如下所示:
234 38 22 22
67 44 12 12
89 65 63 63
这种放大图像的方法叫做最临近插值算法,这是一种最基本、最简单的图像缩放算法,效果也是最不好的,放大后的图像有很严重的马赛克,缩小后的图像有很严重的失真;效果不好的根源就是其简单的最临近插值方法引入了严重的图像失真,比如,当由目标图的坐标反推得到的源图的的坐标是一个浮点数的时候,采用了四舍五入的方法,直接采用了和这个浮点数最接近的象素的值,这种方法是很不科学的,当推得坐标值为 0.75的时候,不应该就简单的取为1,既然是0.75,比1要小0.25 ,比0要大0.75 ,那么目标象素值其实应该根据这个源图中虚拟的点四周的四个真实的点来按照一定的规律计算出来的,这样才能达到更好的缩放效果。双线型内插值算法就是一种比较好的图像缩放算法,它充分的利用了源图中虚拟点四周的四个真实存在的像素值来共同决定目标图中的一个像素值,因此缩放效果比简单的最邻近插值要好很多。
双线性内插值算法描述如下:
对于一个目的像素,设置坐标通过反向变换得到的浮点坐标为(i+u,j+v) (其中i、j均为浮点坐标的整数部分,u、v为浮点坐标的小数部分,是取值[0,1)区间的浮点数),则这个像素得值 f(i+u,j+v) 可由原图像中坐标为 (i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定,即:
f(i+u,j+v) = (1-u)(1-v)f(i,j) + (1-u)vf(i,j+1) + u(1-v)f(i+1,j) + uvf(i+1,j+1) 公式1
其中f(i,j)表示源图像(i,j)处的的像素值,以此类推。
比如,象刚才的例子,现在假如目标图的象素坐标为(1,1),那么反推得到的对应于源图的坐标是(0.75 , 0.75), 这其实只是一个概念上的虚拟象素,实际在源图中并不存在这样一个象素,那么目标图的象素(1,1)的取值不能够由这个虚拟象素来决定,而只能由源图的这四个象素共同决定:(0,0)(0,1)(1,0)(1,1),而由于(0.75,0.75)离(1,1)要更近一些,那么(1,1)所起的决定作用更大一些,这从公式1中的系数uv=0.75×0.75就可以体现出来,而(0.75,0.75)离(0,0)最远,所以(0,0)所起的决定作用就要小一些,公式中系数为(1-u)(1-v)=0.25×0.25也体现出了这一特点;
经典,采纳吧
‘叁’ 什么情况下会使用灰度插值处理,举例说明有哪些常用的灰度插值处理方法
需要进行图像缩放功能情况下会使用灰度插值处理,如数码相机、图像处理软件(如Photoshop);常用的灰度插值处理方法:
1、最临近插值:即将每一个原像素原封不动地复制映射到扩展后对应多个像素中。这种方法在放大图像的同时保留了所有的原图像的所有信息。在传统图像插值算法中,最临近像素插值较简单,容易实现,早期的时候应用比较普遍。但是,该方法会在新图像中产生明显的锯齿边缘和马赛克现象。
2、双线性插值:双线性插值法具有平滑功能,能有效地克服最临近像素插值的不足,但会退化图像的高频部分,使图像细节变模糊。
3、高阶插值:在放大倍数比较高时,高阶插值,如双三次插值和三次样条插值等比低阶插值效果好。
(3)最临近插值算法扩展阅读:
灰度插值作为对原图像的像素重新分布,从而来改变像素数量的一种方法。在图像放大过程中,像素也相应地增加,增加的过程就是“插值”发生作用的过程;
“插值”程序自动选择信息较好的像素作为增加、弥补空白像素的空间,而并非只使用临近的像素,所以在放大图像时,图像看上去会比较平滑、干净。不过需要说明的是插值并不能增加图像信息,尽管图像尺寸变大,但效果也相对要模糊些,过程可以理解为白酒掺水。
在大多数GIS文献资料中,区域插值特指数据从一组面(源面)到另一组面(目标面)的重新聚合。例如,人口统计学家经常需要缩减或扩大其数据的行政单位。
如果按县的级别进行人口统计,人口统计学家可能需要缩减数据以预测人口普查区块中的人口数量。如果要在大比例下重新划分区块,可能需要对一组全新的面进行人口预测。
‘肆’ MATLAB中的meshgrid具体实例
meshgrid是MATLAB中用于生成网格采样点的函数。在使用MATLAB进行3-D图形绘制方面以及画矢量图方面有着广泛的应用。下面就来介绍一下该命令。
‘伍’ 插值是什么意思
插值(Interpolation),有时也称为“重置样本”,是在不生成像素的情况下增加图像像素大小的一种方法,在周围像素色彩的基础上用数学公式计算丢失像素的色彩。有些相机使用插值,人为地增加图像的分辨率
在扫描过程中,根据所需的已知数值制作出估计的像素值,这一过程叫做插值。当我们要求扫描分辨率和放大率与扫描仪的光学分辨率和1:1的放大率不同时,扫描仪必须做出某种形式的插值和缩放。
在扫描时,插值可以用来减少或增大信息量。如果碰巧选择了一个准确的数值,它与扫描仪光学分辨率正好成分数或倍数关系,那么相对来说,增值插值和减值插值就变得简单多了。
如将把600dpiX600dpi的信息转换成300dpiX300dpi,或者通过估算一些像素值,输出1200dpiX1200dpi的图像。将600dpiX600dpi扫描转换成300dpiX300dpi要抛弃一些像素才能完成,模仿1200dpiX1200dpi的分辨率则涉及到要复制更多的像素。如果要得到其它的分辨率,扫描仪不只是抛弃或复制像素,而且要检查可能得到的像素,并根据在原取样点找到的数据制作新像素。
在扫描中插值与在Photoshop中重新取样(在Photoshop中放大或缩小图像,或改变图像的分辨率)是相同的。因此可以选择是在图像输入Photoshop之前,在扫描仪内插值或直接按比例缩放图像,还是等到图像输入Photoshop后,对图像进行重新取样处理。前者可能比较快,尤其是在处理大型图像时更是如此。而后者能让我们更好的控制对图像的这种处理
‘陆’ 什么是插值
“插值”最初是电脑的术语,现在引用到数码图像的处理上。即图像放大时,像素也相应地增加,增加的过程就是“插值”程序自动选择信息较好的像素作为增加的像素,而并非只使用临近的像素,所以在放大图像时,图像看上去会比较平滑、干净。不过需要说明的是插值并不能增加图像信息。通俗地讲插值的效果实际就是给一杯香浓的咖啡兑了一些白开水。 ★ 常见的插值方法及其原理 1. 最临近像素插值:图像出现了马赛克和锯齿等明显走样的原因。不过最临近插值法的优点就是速度快。 2. 线性插值(Linear):线性插值速度稍微要慢一点,但效果要好不少。所以线性插值是个不错的折中办法。 3. 其他插值方法:立方插值,样条插值等等,它们的目的是试图让插值的曲线显得更平滑,为了达到这个目的,它们不得不利用到周围若干范围内的点,不过计算量显然要比前两种大许多。 在以上的基础上,有的软件还发展了更复杂的改进的插值方式譬如S-SPline、Turbo Photo等。它们的目的就是使边缘的表现更完美。 ★ 评断插值结果的好坏 第一个标准:走样现象的轻重。放大图像的时候,要看边缘是否产生了锯齿,缩小图像的时候,看看是否有干扰条纹,边缘是否平顺。第二个标准:边缘是否清晰?同样贴两个例子,左边是差的算法,右边是好的算法(如图1)。第三个标准:过渡带的层次感细节感怎么样?贴两个例子,左边是差的算法,右边是好的算法(如图2)。 插值的今生 ★ 是否有必要 购买插值数码相机 看了上面的原理介绍,相信大家应该已经了解了插值实际上就是一种技术,它能给我们的照片信息提供一些美化和提高,但是这样的技术提升是有限制的,使用320×240分辨率的相机是不可能代替百万像素的数码相机的,虽然我们可以使用Photoshop将分辨率为320×240的照片放大成1280×960,但它的照片真实信息仍然只有320×240。其余增加的可都是“白开水”。]