C#图像的平移和镜像处理程序设计(7)
时间:2017-06-01 11:15 来源:毕业论文 作者:毕业论文 点击:次
需要说明的是,在这里。以图像的几何中心为坐标原点,x轴从左向右递增,y轴由上至下递增。在进行几何运算的时候,保持原图像的尺寸大小不变,如果变换后的图像超过该尺寸,超出部分会被截断,而不足部分会以白色像素填充。 图像的平移和镜像处理都是以空间变换算法为基础的,所以我先来介绍空间变换算法。 空间变换算法 假如一幅图像f,像素点坐标为(x,y),经过几何失真产生了一幅图像g,像素点坐标为(x^', y^')。这个变换可以表示为: x^'=r(x,y) (2.1) y^'=s(x,y) (2.2) 这里,r(x,y)和s(x,y)是空间变换,产生了几何失真图像g(x^', y^')。例如,如果r(x,y)=x/2,s(x,y)=y/2,则失真后的图像只是简单地在两个空间方向上将f(x,y)的尺寸收缩为一半。 如果r(x,y)和s(x,y)在解析分析中为已知,理论上可以用相反的变换从失真图像g(x^', y^')复原f(x,y)。然而,在实践中,公式化一个解析函数r(x,y)和s(x,y)的集合是不可能的,这些解析函数描述了整个图像平面上的几何失真过程。最常用的克服这一困难的方法是用“连接点”表达像素的空间重点位,这些点是像素的子集,它们在输入(失真的)和输出(校正的)图像中的位置是精确己知的。 假设四边形区域中的几何变形过程用双线性方程对来建模,即: r(x,y)=c_1x+c_2y+c_3xy+c_4(2.3) s(x,y)=c_5x+c_6y+c_7xy+c_8.(2.4) 从式(2.3)和(2.4),可知: x^'=c_1x+c_2y+c_3xy+c_4 (2.5) y^'= c_5x+c_6y+c_7xy+c_8 (2.6) 因为总共有8个已知的“连接点”,这些方程可以解出8个系数,c_i,i=1,2,3,…,8.这些系数构成了用于变换四边形区域内所有像素的几何失真模型,该四边形是由导出系数的“连接点”定义的。通常,需要足够多的连接点以产生覆盖整个图像的四边形集,每一个四边形都有它自己的系数集。 一旦有了系数,产生校正(即复原)图像就不困难了。如果想找到非失真图像在任意点(x_0,y_0)的值,需要简单地知道f(x_0,y_0)在非失真图像中的什么地方被映射。为此,可以把(x_0,y_0)代入式(2.1.5)和(2.1.6)得到几何失真坐标(x_0^',y_0^')。在无失真图像中被映射到(x_0^',y_0^')点的值是g(x_0^',y_0^').这样,简单地令f(x_0,y_0)=g(x_0^',y_0^'),就得到了复原图像的值。 连接点根据其应用可用多种不同技术建立。例如,一些图像生成系统有物理的人为缺陷,镶嵌在图像传感器上。这产生了一个已知点集(叫做网状标记),在图像被获取时直接镶在图像上。如果图像由于一些其他处理(如图像显示或图像重建处理)失真了,图像可以用刚才讨论的技术校正。 图像平移处理算法 图像平移就是使图像沿水平方向和垂直方向移动。 具体的算法为:如果把坐标原点(0,0)平移到(x_0,y_0)处,则变换公式为: x^'=x+x_0,y^'=y+y_0 (2.7) (x,y)为原图像坐标,(x^', y^')为变换后的图像坐标。而图像中的各像素点移动了√(x^2+y^2 )距离。上式用矩阵形式表示为: [■( 〖 x〗^'@ y^'@1)]=[■(1&0&x_0@0&1&y_0@0&0&1)][■(x@y@1)] (2.8) 其逆变换为: [■(x@y@1)]=[■(1&0&-x_0@0&1&-y_0@0&0&1)][■(〖 x〗^'@ y^'@1)] (2.9) 为提高处理速度,这里采取整行复制的方法。下面通过讨论〖 x〗^'、 y^'的值来确定复制方法: 1) 对于平移后的坐标横坐标不小于图像的宽度的或者不大于零的,纵坐标不小于于图像的高度的或者不大于零的不予处理,用数学表达式表示为〖 x〗^'≥width、〖 x〗^'≤0、y^'≥height或y^'≤0;或者表达为平移的横坐标的绝对值不小于宽度的和平移的纵坐标的绝对值不小于高度的图像都不予处理,用数学表达式表示为x_0≥width、x_0≤-width、y_0≥height或y_0≤height。平移之后的图像显示为白色的底板的都是没有处理的。 (责任编辑:qin) |