APP下载

基于QT的数字图像的几何变换程序设计

2015-02-22赵之源

决策与信息 2015年21期
关键词:数字图像像素点画布

赵之源

北京邮电大学 北京 100876

基于QT的数字图像的几何变换程序设计

赵之源

北京邮电大学 北京 100876

介绍了使用QT对BMP图像进行几何变换的相关概念和方法。根据BMP格式图像的格式类型和存储原理,介绍对BMP格式图像进行读取和写入方法,并在此基础上介绍了对BMP图片进行几何变换的处理的方法和C++代码。

数字图像;几何变换;QT;C++

数字图像的几何变换,顾名思义,就是对图像进行几何空间上的变换,比如图像的大小、图像的形状、图像的位置等变化。一般图像处理软件中的裁剪、缩放、旋转等功能都是基于数字图像的几何变换原理工作的。市场中常见的PS等图像处理软件可调节参数较少,不能满足用户部分用户需求,QT的界面设计使得开发带界面的软件更为方便,且可用C++语言编写,运行效率高,执行速度快,适合图像处理。

1、数字图像的几何变换原理

数字图像的几何变换一般分为两种,一种是位置变换,比如平移、旋转等;另一种是形状变换,比如缩放,裁剪等。当然还有综合两者的复合变换。图像几何变换的原理比较简单,一般可以理解为图像的像素点在平面内的各种方向上的平移。但是对于缩放变换一般还涉及到图像像素点的插值问题。

数字图像的几何变换过程可以理解为一个线性换,由公式(1)和公示(2)定义:

公式(1)、(2)中的X、Y表示变换后的像素坐标,x、y表示变前的像素坐标,a、b是实数。而插值一般用于图像的放大部分,对于放大后多出的像素需要经过特定的计算赋值,一般取新增像素点的周围点的平均值作为新增像素点的亮度值。

2、程序设计步骤

程序是基于QT设计的,使用C++编程语言,所以设计过程包括界面设计和程序设计思路。

2.1 程序界面设计

程序需要用户输入数据,故设计用户数据接口即可。

2.2 程序流程设计

程序设计的实现过程为:(1)读取BMP文件的文件头、信息头、颜色表、像素点数据等位图数据。(2)实现图像的平移功能。主要代码和注释如下:

for(inti=0;i

for(intj=0;j

{

intx1=i+100;

inty1=j+100;

if(y10&&x10)

data6[i][j]=data0[x1][y1];

else

data6[i][j]=0;

}

(3)实现图像的左右反转功能。用每行最大点数减横坐标即可得到新的横坐标,纵坐标不变即完成反转

关键代码如下:

for (inti=0; i

for (int j=0; j

data1[i][j]=data0[i][byteline-j];

(4)实现图像的上下反转功能。同左右反转原理,更改纵坐标即可。

关键代码如下:

for (inti=0; i

for (int j=0; j

data2[i][j]=data0[Bitmapinfoheader.biHeight-i-1][j];

(5)实现图像的等比例缩小功能。主要代码如下:

///////原图像旋转平移后的坐标跟原坐标的对应关系

for(inti=0;i

for(intj=0;j

{

data5[i][j]=data0[i*4][j*4];

}

(6)实现图像的等比例扩大功能。

等比例扩大采用双线性内插法,前后共进行三次直线方程计算,得出对应点的坐标,关键代码如下:

BYTEtemp1;

BYTEtemp2;

BYTEtemp3;

floatx,y;

for(inti=0;i

for(intj=0;j

{

x=i/4.0;

y=j/4.0;

//双线性插入,共经过以下三条直线方程计算出插入点亮度。

temp1=data0[i/4][j/4]+(data0[i/4+1][j/4]-data0[i/4] [j/4])*(x-i/4);

temp2=data0[i/4][j/4+1]+(data0[i/4+1][j/4+1]-data0[i/4] [j/4+1])*(x-i/4);

temp3=temp1+(temp2-temp1)*(y-j/4);

data6[i][j]=temp3;

}

(7)将图片数据写到新文件中。(8)如果缩放过程需要更改画布大小,要根据新图像所需画布大小重新更改文件头数据,包括文件宽度、高度、数据大小、文件大小。

3、程序测试实验

本实验用的是500乘500的8位BMP格式的灰度图像。

原画布大小旋转丢失旋转后画布外的图像,实验结果如图3所示扩大画布大小旋转保留全部图像,实验结果如图4所示

猜你喜欢

数字图像像素点画布
改进压缩感知的舰船数字图像水印算法
基于Blob算法的多特征联合数字图像转换仿真
图像二值化处理硬件加速引擎的设计
基于局部相似性的特征匹配筛选算法
在画布上做梦的画家 夏加尔
跟踪导练(三)
一种X射线图像白点噪声去除算法
基于canvas的前端数据加密
《数字图像处理》课程的驱动教学实践
大师的画布