推荐文档列表

彩色图象的二维变形

时间:2021-10-01 09:52:44 计算机论文 我要投稿

彩色图象的二维变形

摘 要 该文讨论了彩色图像的变形扭曲技术,并针对二维变形给出了一个速度、精度均令人满意的算法。

一、引言

在图像处理的应用中,一般图像所覆盖区域边界是规则的矩形。为获得某种特殊效果,常常需要将图像变换到具有任意不规则边界的二维区域或映像到三维空间曲面,简单地说,这就是所谓的图像变形技术。本文重点讨论了其中的任意二维多边形区域的变形问题,并针对彩色图像给出一个切实可行的算法。而三维情况下,则属于计算机图形学中的纹理贴面范围,一般均会牵涉到立体图形消隐、明暗处理等技术,比较复杂,本文未作深入探讨。

二、变换原理

本文所要讨论的二维变形问题可以形式化说明如下:图像定义在矩形区域ABCD之上,源多边形区域P=p1p2…pnp1(Pi为顶点,i=1,2,…n)完全包含在ABCD内;变形就是通过变换f,将P上的图像变换到目的多边形区域Q=Q1Q2…QnQ1(Qi为顶点,i=1,2,…n),其中,P与Q中的各顶点一一对应,即有:Qi=f(Pi)(i=1,2…n)。图1是变形的一个简单例子:图中的源多边形区域是矩形区域ABCD,目的多边形为任意四边形EFGH,阴影部分在变换前后的变化清楚地说明了变形的效果。

@@T5S13200.GIF;图1@@

那么,变换应该如何进行呢?

一种直接的思路是显式地求出变换f的表达式。而f的实施又分两种方法;其一为正向变换法,即用f将P内的任一像素点变换到Q内,取原像素值加以显示。由于P与Q所包含像素点的数目一般不相同,甚至相差很大,造成Q中的像素点或者未被赋值,形成令人讨厌的空洞,或者被多次赋值,浪费了时间,总的效果不理想;其二利用f的反变换f-1,将Q内的每一像素点反变换至P内的对应点,一般此点具有实数坐标,则可以通过插值,确定其像素值,这样,结果图像中的每一像素点均被赋值唯一的一次,既提高了精度,又可以避免不必要的赋值,使用效果较好。

上述显示求变换(或反变换)的表达式的思路,比较精确,但是这往往牵涉到复杂的多元方程求解问题,并非轻易可以完成。本文所给出的另外一条思路是:既然P与Q中各顶点一一对应,组成变换对,即源多边形P中的任一顶点Pi(i=1,2…n)经过变换f,得到目的多边形Q中的顶点Qi(i=1,2…n),则Qi的反变换点也必为Pi。这样,对Q内(包括边界)的各像素点A,可以利用各顶点的反变换点的坐标值通过双线性插值技术近似求出其反变换点B;再用点B的坐标值在源图像中进行插值,最终求得结果像素值,用于显示A。

第二种方法在保留一定精度的前提下,避免了变换表达式的显式求解,实现简便。本文基于此思想,设计了一个快速变形算法;另外,算法中还借鉴了多边形区域扫描转换的扫描线算法的思路,以实现对Q内各像素点的高效扫描。以下,本文首先介绍了插值技术及增量计算技术,然后将给出二维变形算法的详细步骤。

三、插值技术

已知目的多边形Q各顶点Qi(i=1,2…n)的变换坐标值,如何求出Q内任一像素的反变换坐标呢?双线性插值法是一种简单快速的近似方法。具体做法是:先用多边形顶点Qi(i=1,2…n)的反变换坐标线性插值出当前扫描线与多边形各边的交点的反变换坐标,然后再用交点的反变换坐标线性插值出扫描线位于多边形内的区段上每一像素处的反变换坐标值用于以后的计算。逐条扫描线处理完毕后,Q内每一像素点的反变换坐标值也就均求出来了。如图2中所示,扫描线Y(纵坐标=Y)与多边形相交于点A和B两点,D则是位于扫描线上位于多边形内的区段AB上的任一点。已知多边形的3个顶点Qi(i=1,2,3)的反变换坐标为(RXi,RYi);

又令A、B及D各点的反变换坐标分别是(RXa,RYa),(RXb,RYb)和(RXd,RYd)。则RXp可按以下公式求出:

RXa=uRX1 (1-u)RX2 式1

RXb=vRX1 (1-v)RX3式2

RXd=tRXa (1-t)RXb 式3

其中,u=|AQ2|/|Q1Q2|,v=|BQ3|/|Q1Q3|,t=|DB|/|AB|,

称为插值参数。

RYd的值亦可完全类似地求出,甚至不必改变插值参

[1] [2] [3]