图像缩放的双线性插值原理及DSP下的优化

图像缩放的双线性插值原理及DSP下的优化
图像缩放的双线性插值原理及DSP下的优化

图像缩放的双线性插值原理及DSP下的优化

目录

图目录 (3)

1案例描述 (2)

1.1图像缩放模块处理函数的实现方式 (2)

1.2双线性缩放原理 (4)

1.3DSP上的双线性缩放的实现 (8)

1.3.1通用双线性的实现 (8)

1.3.2快速双线性的实现 (10)

2案例分析 (12)

3解决过程 (12)

4解决结果 (12)

5总结 (12)

图目录

图表 1 基本的任意位置缩放效果图 (2)

图表 2 帧格式目的图像的缩放效果图 (2)

图表 3 场格式的目的图像缩放效果图 (3)

图表 4 原始图片 (6)

图表 5 最临近插值放大的效果图 (7)

图表6双线型内插值放大图片 (7)

关键词:

双线性插值dm6446 内联指令YUV格式

摘要:

本文描述了双线性插值的基本原理,同时介绍了其在YUV格式图像缩放中的应用及优化。模板编号: 模板版本:V1.0Beta1.0第1页共15页

1 案例描述

1.1 图像缩放模块处理函数的实现方式

422缩放、420的缩放以及两者之间相互缩放,在Resizer模块中都是采用双线性原理实现的,唯一不同的就是根据图像的格式不同,取数据和拼数据的方式稍有不同,另外在实现缩放的同时也加入了根据用户输入的信息在目的图像周围加上任意颜色的边框的功能。

图像缩放原理示意图如下:

图表1 基本的任意位置缩放效果图

缩放位置的宽和高缩放后图像的宽高,包括边框

源图像的步进值

目的图像的步进值

源图像首指针

目的图

像指针缩放

到指

定位

下面是目的图像为帧格式时加边框之后的效果:

图表2 帧格式目的图像的缩放效果图

模板编号: 模板版本:V1.0Beta1.0第2页共15页

模板编号:

模板版本:V1.0Beta1.0

第3页 共15页

缩放后图像的宽高,包括边框

目的图像的步进值

目的图像指针

帧图形加边框后的效果

下面是目的图像为场格式时加边框之后的效果:

图表 3 场格式的目的图像缩放效果图

上半场的图像

目的图像的步进值

目的图像指针

场图形加边框后的效果

下半场的图像

图形宽度

图像高度

为了提高效率,将相同尺寸的图像直接进行拷贝,所以每种类型的转换都存在拷贝和缩放两类函数。对于源是420的图像,由于Y 、U 、V 分量数据是分段连续的,为了提高效率,对于两倍以内

的缩小及各种尺寸的放大还提供了优化快速算法,快速算法效率为通用算法效率的3/5。

另外,由于本模块的所有算法中,都参考了Stride参数,这样每个模块只需要重点实现帧到帧的拷贝和缩放函数即可,其他类型的转换分别可以通过调用这两个函数即可实现。例如:场到场的转换可以通过调用两次帧到帧即可实现;场到帧,可以也是通过调用两次帧到帧实现,这时只需要在每次调用的时候,将目的图像的Stride改为原来的两倍即可,这时第一场就会放在目的图像的奇数行,第二场图像就会放在目的图像的偶数行;帧到场的转换也类似,将源图像的Stride改为原来的两倍,这样就可以通过,先将源图像的奇数行图像缩放到目的图像的第一场,然后将源图像的偶数行数据放在目的图像的第二场,调用两次帧到帧的缩放即可实现。

1.2 双线性缩放原理

图像的缩放很好理解,就是图像的放大和缩小。传统的绘画工具中,有一种叫做“放大尺”的绘画工具,画家常用它来放大图画。当然,在计算机上,我们不再需要用放大尺去放大或缩小图像了,把这个工作交给程序来完成就可以了。下面就来讲讲计算机怎么来放大缩小图象;在本文中,我们所说的图像都是指点阵图,也就是用一个像素矩阵来描述图像的方法,对于另一种图像:用函数来描述图像的矢量图,不在本文讨论之列。

越是简单的模型越适合用来举例子,我们就举个简单的图像:3X3 的256级灰度图,也就是高为3个象素,宽也是3个象素的图像,每个象素的取值可以是0-255,代表该像素的亮度,255代表最亮,也就是白色,0代表最暗,即黑色。假如图像的象素矩阵如下图所示(这个原始图把它叫做源图,Source):

234 38 22

67 44 12

89 65 63

这个矩阵中,元素坐标(x,y)是这样确定的,x从左到右,从0开始,y从上到下,也是从零开始,这是图象处理中最常用的坐标系,就是这样一个坐标:

---------------------->X

|

|

|

模板编号: 模板版本:V1.0Beta1.0第4页共15页

|

|

∨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

模板编号: 模板版本:V1.0Beta1.0第5页共15页

89 65 63 63

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也体现出了这一特点;

最邻近插值和双向性内插值缩放图片的效果对比:

图表4 原始图片

模板编号: 模板版本:V1.0Beta1.0第6页共15页

模板编号:

模板版本:V1.0Beta1.0

第7页 共15

图表 5 最临近插值放大的效果图

图表 6双线型内插值放大图片

模板编号:

模板版本:V1.0Beta1.0

第8页 共

15页

由上面两幅放大之后的图像效果可见双线性插值相对于临近点复制,图像质量还是有比较明显的改进。

1.3 DSP 上的双线性缩放的实现

1.3.1 通用双线性的实现

上面的原理介绍中,实现上是采用浮点数的方式实现的,这种方式并不适合在DSP 上实现,为了便于在DSP 上实现,在实现中,采用了将浮点数进行定点化的方式实现,目的图像的整数点位置由32位数的高16位表示,小数位置由32位数的低16位实现,这里为了便于优化并保证不溢出,根据人眼区分的尺度大概在1/2个像素左右,这里只取了小数位的高三位,也即精确到0.125位置。

具体实现方法如下:

每次对于XY 的步进值如此计算得到:

u32XStride = ((l32SrcWidth - 1) << 16) / (l32DstWidth - 1); u32YStride = ((l32SrcHeight - 1) << 16) / (l32DstHeight - 1); 每次循环都会加上上面的步进值: u32YPosition += u32YStride; u32Ysrc = u32YPosition >>16;

u32WY2 = _extu(u32YPositionTmp, 16, 29);

u32WY1 = 8 - u32WY2Tmp;

上面的u32Ysrc就是源图像中的整数位置,u32WY1就是第一行数据的权重,u32WY2就是第二行数据的权重,

对于X方向的整数位置和权重也是类似的方法得到:

u32XPosition += u32XStride;

u32Xsrc = u32XPosition >> 16;

u32WX2 = _extu(u32XPosition, 16, 29);

u32WX1 = 8 - u32WX2;

对于上面的权重采用如下的打包方式:

//0 1 2 3

u32WY1 = _pack2(u32WY1, u32WY1); //Y1 0 Y1 0

u32WY2 = _pack2(u32WY2, u32WY2); //Y2 0 Y2 0

u32WY1 = _packl4(u32WY2, u32WY1); //Y1 Y1 Y2 Y2

X方向类似:

// 0 1 2 3

u32WX1 = _pack2(u32WX2, u32WX1); // X1 0 X2 0

u32WX1 = _packl4(u32WX1, u32WX1); // X1 X2 X1 X2

将XY综合打包如下:

d64Weight = _mpyu4(u32WX1, u32WY1); // X1*Y1 0 X2*Y1 0

// X1*Y2 0 X2*Y2 0

u32Weight3210 = _packl4(_hi(d64Weight), _lo(d64Weight));

// X1*Y1 X2*Y1 X1*Y2 X2*Y2

这样就得到原理中的四个系数,与取得的四个点数据相乘即可得到最终的双线性插值结果://得到源图目标映射点周围4点

u32V10 = _mem4(pu8SrcLine1 + u32Xsrc);

u32V32 = _mem4(pu8SrcLine2 + u32Xsrc);

模板编号: 模板版本:V1.0Beta1.0第9页共15页

u32v3210 = _pack2(u32V32, u32V10);

//权加求目标值

u32Res = _dotpu4(u32v3210, u32Weight3210);

*pu8Dst++ = (u32Res >> 6);

至此得到目的图像的一点数据,其余类似。

对于420格式的图像和422格式的图像,区别主要时在数据排列上不同,因此,主要是打包和组包的方式不同,另外,对于422图像,由于是YUV数据时交叉在一起的,所以,一组循环尽量把YUV数据一起处理,才能保证够高效。

1.3.2快速双线性的实现

对于420图像的快速算法,是利用尽量减少数据读取而优化下来的,由于核心循环的瓶颈其实是在数据读写上面,计算单元其实还有很大空余,上面一次读取四点数据,当缩放比例在两倍或者两倍以内的时候,上面一次读取的数据至少可以供两次计算使用,利用这个规律,我们采用数据不动,移动对应系数的方式来减少数据读取,同时利用行权重在一行中不变的特性,一次出两行的两点数据。具体实现方式如下:

Y的两行权重的计算方法:

u32YPosition += u32YStride;

u32WY1 = _extu(u32YPosition, 16, 29);

u32WY2 = 8 - u32WY1;

u32WeightY1 = _pack2(u32WY1, u32WY2);

u32YPosition += u32YStride;

u32WY1 = _extu(u32YPositionTmp, 16, 29);

u32WY2 = 8 - u32WY1;

u32WeightY2 = _pack2(u32WY1, u32WY2);

X方向的权重值计算方法如下:

u32XPosition += u32XStride;

u32WX2 = _extu(u32XPosition, 16, 29);

u32WX1 = 8 - u32WX2;

模板编号: 模板版本:V1.0Beta1.0第10页共15页

u32WeightX1 = (u32WX2 << 8) | u32WX1;

取一次源数据:

//得到源图目标映射点周围4点

u32SrcLine1Tmp = _mem4(pu8SrcLine1 + u32XSrc);

u32SrcLine2Tmp = _mem4(pu8SrcLine2 + u32XSrc);

u32SrcLine3Tmp = _mem4(pu8SrcLine3 + u32XSrc);

u32SrcLine4Tmp = _mem4(pu8SrcLine4 + u32XSrc);

u32VTemp1 = _pack2(_dotpu4(u32SrcLine2Tmp, u32WeightX1),

_dotpu4(u32SrcLine1Tmp, u32WeightX1));

u32CTemp1 = _pack2(_dotpu4(u32SrcLine4Tmp, u32WeightX1),

_dotpu4(u32SrcLine3Tmp, u32WeightX1));

步进到X方向的第二点,并计算第二点的权重:

u32XSrc2 = u32XPosition >> 16;

u32WX2 = _extu(u32XPosition, 16, 29);

u32WX1 = 8 - u32WX2;

u32WeightX2 = (u32WX2 << 8) | u32WX1;

//对应到源图(或者权值)的步进(对于1~2倍的缩放,该值为1或2),这里就不用再次取源数据u32XDelta = (u32XSrc2 - u32XSrc)<<3;

u32WeightX2 <<= u32XDelta;

u32VTemp2 = _pack2(_dotpu4(u32SrcLine2Tmp, u32WeightX2),

_dotpu4(u32SrcLine1Tmp, u32WeightX2));

u32CTemp2 = _pack2(_dotpu4(u32SrcLine4Tmp, u32WeightX2),

_dotpu4(u32SrcLine3Tmp, u32WeightX2));

与Y方向上的权重进行点乘,即可得到最终的结果数据:

模板编号: 模板版本:V1.0Beta1.0第11页共15页

*pu8DstLine1++ = _dotprsu2(u32VTemp1, u32WeightY1);

*pu8DstLine1++ = _dotprsu2(u32VTemp2, u32WeightY1);

*pu8DstLine2++ = _dotprsu2(u32CTemp1, u32WeightY2);

*pu8DstLine2++ = _dotprsu2(u32CTemp2, u32WeightY2);

至此快速双线性算法完成,由于在核心循环中数据读取减少,结果通过ii值比较发现快速双线性的效率为通用双线性算法的3/5。

2 案例分析

3 解决过程

4 解决结果

5 总结

1.双线性缩放可以做到平滑缩放

2.由于双线性缩放只是参考到周围的四点数据,所以对于缩小比例较大的效果不是很理想,

需要进行更好的滤波算法来减少锯齿和不连续效应

3.双线性插值是一种思想,除可以用来做420,422YUV格式图像以外的其他格式图像的缩放,

如RGB图像的缩放

模板编号: 模板版本:V1.0Beta1.0第12页共15页

三次样条插值代码

2 三次样条插值程序 三次样条插值利用方案二(求解固支样条或压紧样条) 按照要求要起点和终点的一阶导数值已知, 可得关于01,,.....,n M M M 的严格对角占优势的三对角方程组 然后利用三对角法(追赶法)解此线性方程组。 (1)编写M 文件,并保存文件名scfit.m % x,y 分别为n 个节点的横坐标和纵坐标值组成的向量 % dx0和dxn 分别为S 的导数在x0和xn 处的值,即m 0和m n n=length(x)-1; h=diff(x); d=diff(y)./h; a=h(2:n-1); b=2*(h(1:n-1)+h(2:n)); c=h(2:n); u=6*diff(d); b(1)=b(1)-h(1)/2; u(1)=u(1)-3*(d(1)-dx0); b(n-1)=b(n-1)-h(n)/2; u(n-1)=u(n-1)-3*(dxn-d(n)); %追赶法部分 for k=2:n-1 temp=a(k-1)/b(k-1); b(k)=b(k)-temp*c(k-1); u(k)=u(k)-temp*u(k-1); end m(n)=u(n-1)/b(n-1); for k=n-2:-1:1 m(k+1)=(u(k)-c(k)*m(k+2))/b(k); end %求S K1,S K2,S K3,S K4 m(1)=3*(d(1)-dx0)/h(1)-m(2)/2; m(n+1)=3*(dxn-d(n))/h(n)-m(n)/2; for k=0:n-1 00 ()S x m '=()n n S x m '=0011111111212212n n n n n n M d M d M d M d μλμλ----??????????????????????=??????????????????????????

实验5 双线性插值

实验五图像的空间变换 一、实验目的 1、学习图像空间变换,并通过实验体会空间变换的效果,对其作出分析。 2、掌握利用最邻近插值和双线性插值算法(灰度插值)实现图像的缩放。 3、掌握MATLAB编程环境中基本的图像处理函数。 二、实验要求 1.读入图像,对其利用最邻近插值和双线性插值法进行缩放变换,要求先使用IPT函数进行变换,然后自己编写函数实现; 2.对比上述得到的结果。 三、实验原理 图像的空间变换,也称几何变换或几何运算,包括图像的平移、旋转、镜像变换、转置、缩放等。几何运算可改变图像中各物体之间的空间关系,这种运算可以看成是将各物体在图像内移动。 空间变换可如下表示:设(u,v)为源图像上的点,(x,y)为目标图像上的点,则空间变换就是将源图像上(u,v)处的像素值与目标图像上(x,y)处的像素值对应起来,并具有以下关系: x=X(u,v),y=Y(u,v) (即由(u,v)计算对应(x,y))(1.1) 或u=U(x,y),v=V(x,y) (即由(x,y)计算对应(u,v))(1.2) 其中X(u,v)、Y(u,v)、U(x,y)、V(x,y)均为变换。由(1.1)对应的变换称作向前映射法也叫像素移交法,而由(1.2)对应的变换称作向后映射法也叫像素填充法,向后映射法是向前映射法的逆。 最简单的插值算法是最邻近插值,也称为零阶插值。最邻近插值算法简单,在许多情况

下都能得到令人满意的结果,但是当图像中包含像素之间灰度级有变化的细微结构时,最邻近算法会在图像中产生人为加工的痕迹。双线性插值算法计算量比零阶插值大,但缩放后图像质量高,不会出现像素值不连续的的情况,这样就可以获得一个令人满意的结果。最邻近点插值取插值点的4个邻点中距离最近的邻点灰度值作为该点的灰度值。设插值点(i,j)到周边4个邻点fk(i,j)(k =1,2,3,4)的距离为dk(k =1,2,3,4),则:g(i,j)=fk(i,j),dl =min{d1,d2,d3,d4},l=1,2,3,4 。 双线性插值是利用了需要处理的原始图像像素点周围的四个像素点的相关性,通过双线插值算法计算得出的。对于一个目的坐标,通过后映射法得到其在原始图像的对应的浮点坐标(i+u,j+v),其中i,j均为非负整数,u,v为[0,l]区间的浮点数,则这个像素的值f(i+u,j+v)可由原图像中坐标为(i,j)、(i+l,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定,即:f(i+u,j+v)=(1-u)×(1-v)×f(i,j)+(1-u)×v×f(i,j+1)+u×(1-v)×f(i+l,j)+u×v×f(i+l,j+1),其中f(i,j)表示源图像(i,j)处的的像素值,以此类推,这就是双线性内插值法。 如下图所示,已知(0,0)、(0,1)、(1,0)、(1,1)四点的的灰度,可以由相邻像素的灰度值f(0,0)和f(1,0)在X方向上线性插值求出(x,0)的灰度f(x,0),由另外两个相邻像素f(0,1)和f(1,1)在X方向上线性插值可求出(x,1)的灰度f(x,1),最后由f(x,0),f(x,1)在Y 方向上进行线性插值就可以得到(x,y)的灰度f(x,y)。 四、实验代码

数字图像处理教学大纲(2014新版)

数字图像处理 课程编码:3073009223 课程名称:数字图像处理 总学分: 2 总学时:32 (讲课28,实验4) 课程英文名称:Digital Image Processing 先修课程:概率论与数理统计、线性代数、C++程序设计 适用专业:自动化专业等 一、课程性质、地位和任务 数字图像处理课程是自动化专业的专业选修课。本课程着重于培养学生解决智能化检测与控制中应用问题的初步能力,为在计算机视觉、模式识别等领域从事研究与开发打下坚实的理论基础。主要任务是学习数字图像处理的基本概念、基本原理、实现方法和实用技术,并能应用这些基本方法开发数字图像处理系统,为学习图像处理新方法奠定理论基础。 二、教学目标及要求 1.了解图像处理的概念及图像处理系统组成。 2.掌握数字图像处理中的灰度变换和空间滤波的各种方法。 3.了解图像变换,主要是离散和快速傅里叶变换等的原理及性质。 4.理解图像复原与重建技术中空间域和频域滤波的各种方法。 5. 理解解彩色图像的基础概念、模型和处理方法。 6. 了解形态学图像处理技术。 7. 了解图像分割的基本概念和方法。 三、教学内容及安排 第一章:绪论(2学时) 教学目标:了解数字图像处理的基本概念,发展历史,应用领域和研究内容。通过大量的实例讲解数字图像处理的应用领域;了解数字图像处理的基本步骤;了解图像处理系统的组成。 重点难点:数字图像处理基本步骤和图像处理系统的各组成部分构成。 1.1 什么是数字图像处理 1.2 数字图像处理的起源

1.3.1 伽马射线成像 1.3.2 X射线成像 1.3.3 紫外波段成像 1.3.4 可见光及红外波段成像 1.3.5 微波波段成像 1.3.6 无线电波成像 1.3.7 使用其他成像方式的例子 1.4 数字图像处理的基本步骤 1.5 图像处理系统的组成 第二章:数字图像基础(4学时) 教学目标:了解视觉感知要素;了解几种常用的图像获取方法;掌握图像的数字化过程及其图像分辨率之间的关系;掌握像素间的联系的概念;了解数字图像处理中的常用数学工具。 重点难点:要求重点掌握图像数字化过程及图像中像素的联系。 2.1 视觉感知要素(1学时) 2.1.1 人眼的构造 2.1.2 眼镜中图像的形成 2.1.3 亮度适应和辨别 2.2 光和电磁波谱 2.3 图像感知和获取(1学时) 2.3.1 用单个传感器获取图像 2.3.2 用条带传感器获取图像 2.3.3 用传感器阵列获取图像 2.3.4 简单的图像形成模型 2.4 图像取样和量化(1学时) 2.4.1 取样和量化的基本概念 2.4.2 数字图像表示 2.4.3 空间和灰度级分辨率 2.4.4 图像内插 2.5 像素间的一些基本关系(1学时) 2.5.1 相邻像素 2.5.2 临接性、连通性、区域和边界 2.5.3 距离度量 2.6 数字图像处理中所用数学工具的介绍 2.6.1 阵列与矩阵操作

三次样条插值函数

沈阳航空航天大学 数学软件课程设计 (设计程序) 题目三次样条插值函数 班级 / 学号 学生姓名 指导教师

沈阳航空航天大学 课程设计任务书 课程名称数学软件课程设计 院(系)理学院专业信息与计算科学 班级学号姓名 课程设计题目三次样条插值函数 课程设计时间: 2010 年12月20日至2010 年12月31日 课程设计的内容及要求: 1.三次样条插值函数 给出函数在互异点处的值分别为。 (1)掌握求三次样条插值函数的基本原理; (2)编写程序求在第一边界条件下函数的三次样条插值函数; (3)在区间上取n=10,20,分别用等距节点对函数 作三次样条插值函数,利用(1)的结果画出插值函数的图形,并在该图形界面中同时画出的图形。 [要求] 1.学习态度要认真,要积极参与课程设计,锻炼独立思考能力; 2.严格遵守上机时间安排; 3.按照MATLAB编程训练的任务要求来编写程序; 4.根据任务书来完成课程设计论文; 5.报告书写格式要求按照沈阳航空航天大学“课程设计报告撰写规范”; 6.报告上交时间:课程设计结束时上交报告;

7.严谨抄袭行为。 指导教师年月日负责教师年月日学生签字年月日

沈阳航空航天大学 课程设计成绩评定单 课程名称数学软件课程设计 院(系)理学院专业信息与计算科学课程设计题目三次样条插值函数 学号姓名 指导教师评语: 课程设计成绩 指导教师签字 年月日

目录 一正文 (1) 1问题分析 (1) 1.1 题目 (1) 1.2 分析 (1) 2 研究方法原理 (1) 2.1 求三次样条插值多项式,算法组织 (1) 3 算例结果 (3) 二总结 (7) 参考文献 (8) 附录 (9) 源程序: (9) 程序1 (9) 程序2 (10) 程序3 (12) 程序 4 (12)

matlab旋转+双线性插值

自己写的Matlab旋转+双线性插值图像函数效果图: 源码: clear all; I = imread('original.jpg');

[Height,Width,RGB] = size(I); II = I;%当角度为0时直接输出 %本程序是以左上角为坐标原点 %angle_j是旋转角度,正值是按顺时针旋转,负值时按逆时针旋转 angle_j = 181; %angle是弧度 angle = 2*pi*angle_j/360; %将angle转成正值 while(angle < 0) angle = 2 * pi + angle; end %约束在0-2π内 while(angle > 2 * pi) angle = angle - 2 * pi; end %tag是判断下面的while循环有没有执行过 tag = 0; while(angle > 0) %超过90度的旋转,都先旋转90度,直到角度在0°-90°之间 %原理是旋转90度整数倍时,信息是不丢失的 if angle >= pi/2 a = pi/2; angle = angle - pi/2; elseif0 < angle < pi/2 a = angle; angle = 0; end if tag == 0 tag = 1; else I = II; [Height,Width,RGB] = size(I);%在旋转后的图像上继续旋转,从而实现大于90° 的旋转 end %正向变换用 sina = sin(a); cosa = cos(a); %逆向变换用_m == _minus sina_m = sin(-a); cosa_m = cos(-a); %旋转后图像的长度和宽度 II_height = round(sina * Width + cosa * Height); II_width = round(sina * Height + cosa * Width); II = ones(II_height,II_width,3); %先转成unit8。或者下面赋值0-1规划一下。否则imshow全是白色。 II = im2uint8(II); %%%%%%%%%%%%%%%%%%%%正向映射%%%%%%%%%%%%%%%%%%%%%%%%

【数字图像处理】概念和原理题

概念和原理题 一、绪论部分 (一) 概念解释 1、 数字图像。 2、 数字图像处理。 (二) 简答题 1、 简述数字图像处理的三个层次。 2、 简述数字图像处理的基本内容。 3、 简述数字图像处理系统的基本组成。 二、数字图像基础部分 (一) 概念解释 1、图像数字化。 2、取样。 3、量化。 4、灰度分辨率。 5、空间分辨率。 (二)简答题 1、写出简单的图象形成模型的公式,并进行说明。 2、简述图像采样和量化的一般原则。 3、简述空间分辨率、灰度分辨率与图像质量的关系。 4、简述数字图像类型。 5、简述数字图像文件格式。 (三)分析题 1、写出“*”标记的像素的4邻域、对角邻域、8邻域像素的坐标。(坐标按常规方式 确定) 2 4、计算“*”标记的两点间的欧氏距离、城区距离和棋盘距离。 答: 图像处理 ,图像分割,模式识别

三、空间域图像增强部分 (一)概念解释 1、图像增强。 2、均值滤波器。 3、统计排序滤波器。 (二)简答题 1、简述空间域图像增强的三种增强方法。 2、简述图像反转、对数变换、幂次变换、分段线性变换等增强方法的特点及其适用范围。 2、简述直方图均衡化的实现步骤。 3、简述均值滤波器的工作原理和优缺点。 4、简述中值滤波器的工作原理和优缺点。 5、与Laplacian 算子相比,LOG 算子有什么优点? (三)分析题 1、计算下图的归一化直方图。 5 577666654444444544333333333333332222222322111113211000021110000 2、对下图进行直方图均衡化处理,并画出均衡后的图像及其直方图。 5 577666654444444544333333333333332222222 32211111 3211000021110000 3、对下面两幅图像进行异或运算。 4、对下列图像分别进行3*3均值滤波和3*3中值滤波,并比较它们的结果。

双线性内插值(精)

三种插值算法 最近邻插值法的 双线性内插值: 对于图像中一个目的像素,设置坐标通过反向变换得到的浮点坐标为 (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-vf(i,j + (1-uvf(i,j+1 + u(1-vf(i+1,j + uvf(i+1,j+1 其中f(i,j表示源图像(i,j处的的像素值,以此类推 这就是双线性内插值法。双线性内插值法计算量大,但缩放后图像质量高,不会 出现像素值不连续的的情况。由于双线性插值具有低通滤波器的性质,使高频分量受损,所以可能会使图像轮廓在一定程度上变得模糊 插值的计算方法有很多,比较常用的有最近像素插值算法、双线性插值算法、双三次插值算法和分形算法的四种。其中,最近像素插值算法是最简单的一种插值 算法,这种方法是当图片放大时,缺少的像素通过直接使用与之最接近的原有像素的颜色生成,也就是说照搬旁边的像素。如图1所示,当图片扩大时,要增加X点处的像素,由于X点与A、B这两个有效像素中的B点最接近,因此X点会直接照搬B点的像素,从而使到X点生成的效果与B点一样。虽然这种算法简单,因此处理的速度很快,但结果通常会产生明显可见的锯齿,效果往往不佳。 双线性插值算法,是指输出的图像的每个像素都是原图中四个像素运算的结果 , 由于它是从原图四个像素中运算的,因此这种算法很大程度上消除了锯齿现象,而且效果也比较好。双三次插值算法是双线性插值算法的改进算法,它输出图像的每个像素都

插值法在图像处理中的运用要点

插值方法在图像处理中的应用 作者: 专业姓名学号 控制工程陈龙斌 控制工程陈少峰 控制工程殷文龙 摘要 本文介绍了插值方法在图像处理中的应用。介绍了典型的最近邻插值、双线性插值、双三次插值、双信道插值、分形插值的原理。以分形插值为重点,在图像放大领域用MATLAB进行仿真,并与其它方法的结果做了比对。指出了各种方法的利弊,期待更进一步的研究拓展新的算法以及改进现有算法。

一、引言 人类通过感觉器官从客观世界获取信息,而其中一半以上的信息都是通过视觉获得的。图像作为人类视觉信息传递的主要媒介,具有声音、语言、文字等形式无法比拟的优势,给人以具体、直观的物体形象。在数字化信息时代,图像处理已经成为重要的数据处理类型。数字图像比之传统的模拟图像处理有着不可比拟的优势。一般采用计算机处理或者硬件处理,处理的内容丰富,精度高,变通能力强,可进行非线性处理。但是处理速度就会有所不足。图像处理的主要内容有:几何处理、算术处理、图像增强、图像复原、图像重建、图像编码、图像识别、图像理解等。以上这些图像处理大体上可分为图像的像质改善、图像分析和图像重建三大部分。 日常生活中,越来越多的领域需要高分辨率图像,采用图像插值技术来提高数字图像的分辨率和清晰度,从软件方面进行改进就具有十分重要的实用价值。多媒体通信在现代网络传输中扮演重要角色,因此插值放大提高图像分辨率是一个非常重要的问题。此外,图像变换被广泛用于遥感图像的几何校正、医学成像以及电影、电视和媒体广告等影像特技处理中。在进行图像的一些几何变换时,通常都会出现输出像素坐标和输入栅格不重合的现象,也必须要用到图像插值。图像插值是图像处理中图像重采样过程中的重要组成部分,而重采样过程广泛应用于改善图像质量、进行有损压缩等,因而研究图像插值具有十分重要的理论意义和实用价值。 图像插值是一个数据再生过程。由原始图像数据再生出具有更高分辨率的图像数据。分为图像内插值和图像间插值。前者指将一幅较低分辨率的图像再生出一幅较高分辨率的图像。后者指在若干幅图像之间再生出几幅新的图像。插值过程就是确定某个函数在两个采样点之间的数值时采用的运算过程.通常是利用曲线拟合的方法进行插值算法,通过离散的输入采样点建立一个连续函数,用这个重建的函数求出任意位置处的函数值,这个过程可看作是采样的逆过程。 20世纪40年代末,香农提出了信息论,根据采样定理,若对采样值用sinc函数进行插值,则可准确地恢复原函数,于是sinc函数被接受为插值函数,也称为理想插值函数。理想插值函数有两个缺点: (1)它虽然对带限信号可以进行无错插值,但实际中带限信号只是一小部分信号。 (2)sinc函数的支撑是无限的,而没有函数既是带限的,又是紧支撑的。 为了解决这个问题,经典的办法是刚窗函数截断sinc函数,这个窗函数必须在0剑l 之间为正数,在l到2之间为负数。sinc函数对应的是无限冲激响应,不适于有限冲激相应来进行局部插值。对数字图像来说,对图像进行插值也称为图像的重采样。它分为两个步骤:将离散图像插值为连续图像以及对插值结果图像进行采样。 经典的图像插值算法是利用邻近像素点灰度值的加权平均值来计算未知像素点处的灰度值,而这种加权平均一般表现表现为信号的离散采样值与插值基函数之间的二维卷积。这种基于模型的加权平均的图像插值方法统称为线性方法。经典的插值方法有:最近邻域法,双线性插值,双三次B样条插值,双三次样条插值,sinc函数等。线性方法,它们一个共同点就是,所有这些基函数均是低通滤波器,对数据中的高频信息都具有滤除和抑制效应,因

三次样条插值课后题集

例1 设)(x f 为定义在[0,3]上的函数,有下列函数值表: 且2.0)('0=x f ,1)('3-=x f ,试求区间[0,3]上满足上述条件的三次样条插值函数)(x s 本算法求解出的三次样条插值函数将写成三弯矩方程的形式: ) ()6()() 6()(6)(6)(211123 13 1j j j j j j j j j j j j j j j j x x h h M y x x h h M y x x h M x x h M x s -- + -- + -+ -= +++++其中,方程中的系数 j j h M 6, j j h M 61+, j j j j h h M y )6(2- , j j j j h h M y ) 6(211++- 将由Matlab 代码中的变量Coefs_1、Coefs_2、Coefs_3以及Coefs_4的值求出。 以下为Matlab 代码: %============================= % 本段代码解决作业题的例1 %============================= clear all clc % 自变量x 与因变量y ,两个边界条件的取值 IndVar = [0, 1, 2, 3]; DepVar = [0, 0.5, 2, 1.5];

LeftBoun = 0.2; RightBoun = -1; % 区间长度向量,其各元素为自变量各段的长度h = zeros(1, length(IndVar) - 1); for i = 1 : length(IndVar) - 1 h(i) = IndVar(i + 1) - IndVar(i); end % 为向量μ赋值 mu = zeros(1, length(h)); for i = 1 : length(mu) - 1 mu(i) = h(i) / (h(i) + h(i + 1)); end mu(i + 1) = 1; % 为向量λ赋值 lambda = zeros(1, length(h)); lambda(1) = 1; for i = 2 : length(lambda) lambda(i) = h(i) / (h(i - 1) + h(i));

数值分析作业-三次样条插值

数值计算方法作业 实验4.3 三次样条差值函数 实验目的: 掌握三次样条插值函数的三弯矩方法。 实验函数: dt e x f x t ? ∞ -- = 2 221)(π 实验内容: (1) 编程实现求三次样条插值函数的算法,分别考虑不同的边界条件; (2) 计算各插值节点的弯矩值; (3) 在同一坐标系中绘制函数f(x),插值多项式,三次样条插值多项式的曲线 比较插值结果。 实验4.5 三次样条差值函数的收敛性 实验目的: 多项式插值不一定是收敛的,即插值的节点多,效果不一定好。对三次样条插值函数如何呢?理论上证明三次样条插值函数的收敛性是比较困难的,通过本实验可以证明这一理论结果。 实验内容: 按照一定的规则分别选择等距或非等距的插值节点,并不断增加插值节点的个数。 实验要求: (1) 随着节点个数的增加,比较被逼近函数和三样条插值函数的误差变化情 况,分析所得结果并与拉格朗日插值多项式比较; (2) 三次样条插值函数的思想最早产生于工业部门。作为工业应用的例子,考

虑如下例子:某汽车制造商根据三次样条插值函数设计车门曲线,其中一 算法描述: 拉格朗日插值: 错误!未找到引用源。 其中错误!未找到引用源。是拉格朗日基函数,其表达式为:() ∏ ≠=--=n i j j j i j i x x x x x l 0) ()( 牛顿插值: ) )...()(](,...,,[.... ))(0](,,[)0](,[)()(1102101210100----++--+-+=n n n x x x x x x x x x x f x x x x x x x f x x x x f x f x N 其中????? ?? ?? ?????? --=--= --= -)/(]),...,[],...,[(]...,[..],[],[],,[)()(],[01102110x x x x x f x x x f x x x f x x x x f x x f x x x f x x x f x f x x f n n n n i k j i k j k j i j i j i j i 三样条插值: 所谓三次样条插值多项式Sn(x)是一种分段函数,它在节点Xi(a

双线性插值

双线性插值,又称为双线性内插。在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。例如已知的红色数据点与待插值得到的绿色点如图1所示: 图1 假如我们想得到未知函数在点的值,假设我们已知函数 在, , , 及四个点的值。首先在 x 方向进行线性插值,得到 然后在 y 方向进行线性插值,得到 这样就得到所要的结果, 如果选择一个坐标系统使得的四个已知点坐标分别为(0, 0)、(0, 1)、(1, 0) 和(1, 1),那么插值公式就可以化简为

或者用矩阵运算表示为 这就是双线性内插值法。双线性内插值法计算量大,但缩放后图像质量高,不会出现像素值 不连续的的情况。由于双线性插值具有低通滤波器的性质,使高频分量受损,所以可能会使 图像轮廓在一定程度上变得模糊。 双线性插值法的MATLAB源代码为: I=imread('lena.jpg'); %读入原图像 [nrows,ncols,z]=size(I); %读取图像矩阵大小,方便后面操作 K = str2double(inputdlg('please input scale factor (must between 0.2 - 5.0)', 'INPUT scale factor', 1, {'0.5'})); width = K * nrows; height = K * ncols; J = uint8(zeros(width,height,z)); widthScale = nrows/width; heightScale = ncols/height; for x = 5:width - 5 % 5是为了防止矩阵超出边界溢出 for y = 5:height - 5 for z=1:3 xx = x * widthScale; % xx, yy为原坐标,x,y为新坐标 yy = y * heightScale; if((xx/double(uint16(xx))==1.0)&&(yy/double(uint16(yy))==1.0)) J(x,y,z) = I(int16(xx),int16(yy),z); %若xx,yy为整数,直接赋值 else a = double(uint16(xx)); b = double(uint16(yy)); x11 = double(I(a,b,z)); % x11 <- I(a,b) x12 = double(I(a,b+1,z)); % x12 <- I(a,b+1) x21 = double(I(a+1,b,z)); % x21 <- I(a+1,b) x22 = double(I(a+1,b+1,z));% x22 <- I(a+1,b+1) J(x,y,z) = uint8((b+1-yy)*((xx-a)*x21+(a+1-xx)*x11)+(yy-b)* ((xx-a)*x22+(a+1-xx)*x12)); %用双线性插值计算公式计算 end end end end

数字图像处理参考教材

数字图像处理参考教材 (Digital Image Processing ,Computer Image Processing)I.通用教材 I.1 容观澳,清华讲义,计算机图像处理, 2000年版, Pages 351 这是清华一本较早的教材,针对基本概念和方法,系统知识。 特点:1)着重本领域的基本概念、基本方法和系统知识。 2)理论结合实验,避开过多数学推导, 3) 重点介绍算法,免编程。这也是我们本科采取的策略。 内容:1)基本内容(有关图像数学、视觉、光学以及二维变换的基本理论2)图像改善:重点介绍图像增强,图像复原,还有图像重建 3)图像的上网、传输、压缩 4)图像的理解、分割、描述 5)图像的硬件系统设计 I.2 李介谷等,上海交大版,88年版,数字图像处理Pages 278 较早。全面介绍了图像处理的一些模型和算法,主要内容;数字图像的特征、品质及视觉;图像的增强处理;图像修复;图像重建;图像分析和理解;图像信息的编码和压缩。 对基本理论和基本技术介绍全面。 I.3 阮秋琦,电子工业版,01年版,数字图像处理学 Pages 562 主要内容:图像处理中的正交变换、图像增强、图像编码、图像复原、图像重建、图像分析、模式识别等。偏重于基本理论和方法。这本书强调了编码的内容。 全书强调基本理论和基本技术,有较多习题,附一套实验演示软件。 北方交大教材。 I.4 黄贤武等,电子科技大学版,2000年,数字图像处理与压缩编码技术, Pages538 主要加重了图像数据压缩技术的份量-这是多媒体处理技术的关键技术之一。对图形模式识别技术、无损压缩编码技术、预测编码、图像的变换编码、神

最邻近插值和双线性插值算法的比较

最邻近插值和双线性插值算法的比较 摘要:图像缩放是数字图像处理的一个基本内容,为了更好地对数字图像细节进行描述,本文简单介绍了图像处理中的空间变换、最邻近插值算法,重点分析了双线性插值算法,并通过MATLAB仿真进行图像的缩放,比较实验结果,从而验证双线性插值算法效果较好。 关键词:图像缩放;空间变换;最邻近插值;双线性插值; 0引言 数字图像处理的对象因其涉及到社会的各个领域,倍受到越来越多的关注,而图像缩放作为数字图像处理中的基本操作尤为重要,在社会的很多领域都需要对图像进行放大和缩小。本文主要比较了空间变换、最邻近插值算法和双线性插值算法。 1图像处理中的空间变换 图像的空间变换[1],也称几何变换或几何运算,包括图像的平移、旋转、镜像变换、转置、缩放等。几何运算可改变图像中各物体之间的空间关系,这种运算可以跛看成是将各物体在图像内移动。 空间变换可如下表示:设(u,v)为源图像上的点,(x,y)为目标图像上的点,则空间变换就是将源图像上(u,v)处的颜色值与目标图像上(X,y)处的颜色对应起来 (u,v) (x,y) 并具有以下关系: x=X(u,v),y=Y(u,v) (即由(u,v)计算对应(x,y))(1) 或 u=U(x,y),v=V(x,y) (即由(x,y)计算对应(u,v))(2) 其中X(u,v)、Y(u,v)、U(x,y)、V(x,y)均为变换。由(1.1)对应的变换称作向前映射法也叫像素移交法,而由(1.2)对应的变换称作向后映射法也叫像素填充法,向后映射法是向前映射法的逆[1,4]。 对于向前映射法来说,由于许多输入像素可能映射到输出图像的边界之外,故向前映射法有些浪费,而且每个输出像素的灰度值可能要由许多输入像素的灰

三次样条插值方法的应用

CENTRAL SOUTH UNIVERSITY 数值分析实验报告

三次样条插值方法的应用 一、问题背景 分段低次插值函数往往具有很好的收敛性,计算过程简单,稳定性好,并且易于在在电子计算机上实现,但其光滑性较差,对于像高速飞机的机翼形线船体放样等型值线往往要求具有二阶光滑度,即有二阶连续导数,早期工程师制图时,把富有弹性的细长木条(即所谓的样条)用压铁固定在样点上,在其他地方让他自由弯曲,然后沿木条画下曲线,称为样条曲线。样条曲线实际上是由分段三次曲线并接而成,在连接点即样点上要求二阶导数连续,从数学上加以概括就得到数学样条这一概念。下面我们讨论最常用的三次样条函数及其应用。 二、数学模型 样条函数可以给出光滑的插值曲线(面),因此在数值逼近、常微分方程和偏微分方程的数值解及科学和工程的计算中起着重要的作用。 设区间[]b ,a 上给定有关划分b x x n =<<<= 10x a ,S 为[]b ,a 上满足下面条件的函数。 ● )(b a C S ,2∈; ● S 在每个子区间[]1,+i i x x 上是三次多项式。 则称S 为关于划分的三次样条函数。常用的三次样条函数的边界条件有三种类型: ● Ⅰ型 ()()n n n f x S f x S ''0'',==。 ● Ⅱ型 ()()n n n f x S f x S ''''0'''',==,其特殊情况为()()0''''==n n x S x S 。 ● Ⅲ型 ()() 3,2,1,0,0==j x S x S n j j ,此条件称为周期样条函数。 鉴于Ⅱ型三次样条插值函数在实际应用中的重要地位,在此主要对它进行详细介绍。 三、算法及流程 按照传统的编程方法,可将公式直接转换为MATLAB 可是别的语言即可;另一种是运用矩阵运算,发挥MATLAB 在矩阵运算上的优势。两种方法都可以方便地得到结果。方法二更直观,但计算系数时要特别注意。这里计算的是方法一的程序,采用的是Ⅱ型边界条件,取名为spline2.m 。 Matlab 代码如下: function s=spline2(x0,y0,y21,y2n,x) %s=spline2(x0,y0,y21,y2n,x) %x0,y0 are existed points,x are insert points,y21,y2n are the second

(精选)三次样条插值的MATLAB实现

MATLAB 程序设计期中考查 在许多问题中,通常根据实验、观测或经验得到的函数表或离散点上的信息,去研究分析函数的有关特性。其中插值法是一种最基本的方法,以下给出最基本的插值问题——三次样条插值的基本提法: 对插值区间[]b a ,进行划分:b x x x a n ≤

双线性插值-matlab实现

双线性插值算法 张俊飞一、算法简介 假设c[a]到c[a+1]之间是线性变化的,那么对于浮点数 x( a <= x < a+1) c(x) = c[a+1]*( x - a) + c[a]*( 1 + a - x); c(x) = c[a] + [ (c[a+1]-c[a])/(b-a)]*( x - a); b = a+1; c(x) = c[a] + [ c[a+1] - c[a]]*( x - a); 把这种插值方式扩展到二维情况:对于一个二维数组c, 我们假设对于任意一个浮点数i,c(a,i)到c(a+1,i)之间是线性变化的,c(i,b)到c(i,b+1)之间也是线性变化的(a,b都是整数) , 那么对于浮点数的坐标(x,y)满足(a <= x < a+1, b <= y < b+1),可以先分别求出c(x,b)和c(x,b+1): c(x,b) = c[a+1][b]*( x - a) + c[a][b]*( 1 + a - x); c(x,b+1) = c[a+1][b+1]*( x - a) + c[a][b+1]*( 1 + a - x); 现在已经知道c(x,b)和c(x,b+1)了,而根据假设c(x,b)到c(x,b+1)也是线性变化的,所以: c(x,y) = c(x,b+1)*( y - b) + c(x,b)*( 1 + b - y) 二、matlab实现 在command窗口输入chahzi('cameraman.tif',2),这里cameraman.tif为灰度图片,得到结果如下: origin image

result image 在command窗口输入chahzi('a.jpg',0.5),这里a.jpg为彩色图片,得到结果为: origin image

Camera 图像处理原理分析- 亮度及曝光控制

Camera 图像处理原理分析- 亮度及曝光控制 1.1亮度感应及曝光 1.1.1感光宽容度 从最明亮到最黑暗,假设人眼能够看到一定的范围,那么胶片(或CCD等电子感光器件)所能表现的远比人眼看到的范围小的多,而这个有限的范围就是感光宽容度。 人眼的感光宽容度比胶片要高很多,而胶片的感光宽容度要比数码相机的ccd高出很多!了解这个概念之后,我们就不难了解,为什么在逆光的条件下,人眼能看清背光的建筑物以及耀眼的天空云彩。而一旦拍摄出来,要么就是云彩颜色绚烂而建筑物变成了黑糊糊的剪影,要么就是建筑物色彩细节清楚而原本美丽的云彩却成了白色的一片 再看人眼的结构,有瞳孔可以控制通光量,有杆状感光细胞和椎状感光细胞以适应不同的光强,可见即使人眼有着很高的感光宽容度,依然有亮度调节系统,以适应光强变化。 那么对于camera sensor来说,正确的曝光就更为重要了! 1.1.2自动曝光和18%灰 对于sensor来说,又是如何来判断曝光是否正确呢?很标准的做法就是在YUV空间计算当前图像的Y值的均值。调节各种曝光参数设定(自动或手动),使得该均值落在一个目标值附近的时候,就认为得到了正确的曝光。 那么如何确定这个Y的均值,以及如何调整参数使得sensor能够将当前图像的亮度调整到这个范围呢? 这就涉及到一个概念18%灰,一般认为室内室外的景物,在通常的情况下,其平均的反光系数大约为18%,而色彩均值,如前所述,可以认为是一种中灰的色调。这样,可以通过对反光率为18%的灰板拍摄,调整曝光参数,使其颜色接近为中等亮度的灰色(Y值为128)。然后,对于通常的景物,就能自动的得到正确的曝光了。 当然这种自动判断曝光参数的AE功能不是万能的,对于反光率偏离通常均值的场景,比如雪景,夜景等,用这种方法就无法得到正确的曝光量了。所以在sensor的软件处理模块中,通常还会提供曝光级别的设定功能,强制改变自动曝光的判断标准。比如改变预期的亮度均值等。 1.1.3曝光级别设定 在多数数码相机和拍照手机上都可以看到曝光级别设定的功能,如前所述,这种设定实际上是在自动曝光的基础上给用户提供一定的曝光控制能力,强制改变camera sensor的曝光判断标准,获得用户想要的效果。

数字图像处理简答题及答案..

数字图像处理简答题及答案 简答题 1、数字图像处理的主要研究内容包含很多方面,请列出并简述其中的4种。 2、什么是图像识别与理解? 3、简述数字图像处理的至少3种主要研究内容。 4、简述数字图像处理的至少4种应用。 5、简述图像几何变换与图像变换的区别。 6、图像的数字化包含哪些步骤?简述这些步骤。 7、图像量化时,如果量化级比较小会出现什么现象?为什么? 8、简述二值图像与彩色图像的区别。 9、简述二值图像与灰度图像的区别。 10、简述灰度图像与彩色图像的区别。 11、简述直角坐标系中图像旋转的过程。 12、如何解决直角坐标系中图像旋转过程中产生的图像空穴问题? 13、举例说明使用邻近行插值法进行空穴填充的过程。 14、举例说明使用均值插值法进行空穴填充的过程。 15、均值滤波器对高斯噪声的滤波效果如何?试分析其中的原因。 16、简述均值滤波器对椒盐噪声的滤波原理,并进行效果分析。 17、中值滤波器对椒盐噪声的滤波效果如何?试分析其中的原因。 18、使用中值滤波器对高斯噪声和椒盐噪声的滤波结果相同吗?为什么会出现这种现象?

19、使用均值滤波器对高斯噪声和椒盐噪声的滤波结果相同吗?为什么会出现这种现象? 20、写出腐蚀运算的处理过程。 21、写出膨胀运算的处理过程。 22、为什么YUV表色系适用于彩色电视的颜色表示? 23、简述白平衡方法的主要原理。 24、YUV表色系的优点是什么? 25、请简述快速傅里叶变换的原理。 26、傅里叶变换在图像处理中有着广泛的应用,请简述其在图像的高通滤波中的应用原理。 27、傅里叶变换在图像处理中有着广泛的应用,请简述其在图像的低通滤波中的应用原理。 28、小波变换在图像处理中有着广泛的应用,请简述其在图像的压缩中的应用原理。 29、什么是图像的无损压缩?给出2种无损压缩算法。 2、对于扫描结果:aaaabbbccdeeeeefffffff,若对其进行霍夫曼编码之后的结果是:f=01 e=11 a=10 b=001 c=0001 d=0000。若使用行程编码和霍夫曼编码的混合编码,压缩率是否能够比单纯使用霍夫曼编码有所提高? 31、DCT变换编码的主要思想是什么? 32、简述DCT变换编码的主要过程。 33、什么是一维行程编码?简述其与二维行程编码的主要区别。 34、什么是二维行程编码?简述其与一维行程编码的主要区别。 35、简述一维行程编码和二维行程编码的异同。 36、压缩编码算法很多,为什么还要采用混合压缩编码?请举例说明。 37、对于扫描结果:aaaabbbccdeeeeefffffff,若对其进行霍夫曼编码之后的结果是:f=01 e=11 a=10 b=001 c=0001 d=0000。若使用行程编码和霍夫曼编码的混合编码,压缩率是否能够比单纯使用行程编码有所提高? 38、连续图像和数字图像如何相互转换?

双线性插值Matlab程序

I=imread('flower.jpg'); %读入原图像 [nrows,ncols]=size(I);%读取图像矩阵大小,方便后面操作 K = str2double(inputdlg('please input scale factor (must between 0.2 - 5.0)', 'INPUT scale factor', 1, {'0.5'})); width = K * nrows; height = K * ncols; J = uint8(zeros(width,height)); widthScale = nrows/width; heightScale = ncols/height; for x = 5:width - 5 % 5是为了防止矩阵超出边界溢出 for y = 5:height - 5 xx = x * widthScale; % xx, yy为原坐标,x,y为新坐标 yy = y * heightScale; if (xx/double(uint16(xx)) == 1.0) & (yy/double(uint16(yy)) == 1.0) J(x,y) = I(int16(xx),int16(yy));%若xx,yy为整数,直接赋值 else a = double(uint16(xx)); b = double(uint16(yy)); x11 = double(I(a,b)); % x11 <- I(a,b) x12 = double(I(a,b+1)); % x12 <- I(a,b+1) x21 = double(I(a+1,b)); % x21 <- I(a+1,b) x22 = double(I(a+1,b+1)); % x22 <- I(a+1,b+1) J(x,y) = uint8( (b+1-yy) * ((xx-a)*x21 + (a+1-xx)*x11) + (yy-b) * ((xx-a)*x22 +(a+1-xx)

相关文档
最新文档