数字图像处理论文2010

时间:2026-01-27

数字图像处理

数字图像处理

实验报告

班级:

学号姓名

序号:

数字图像处理

图像的几何变换

一、实验目的

1、 掌握图像几何变换的基本原理

2、 掌握如何利用VC++对图像进行几何变换(图像缩小、放大、旋转、裁剪等)

3、 学会自己编写简单几何变换的程序

二、实验内容

1、 对所选图像进行平移操作

2、 对所选图像进行缩放操作

3、 对所选图像进行旋转操作

三、图像的相关几何变换

<一> 图像平移

1. 理论基础

图像平移(Translation)是将图像中所有的点都按照指定的平移量,进行水平、垂直移动。

设初始坐标为(x0,y0)的点

经过平移(tx,ty)后

坐标变为(x1,y1)。

数字图像处理

显然(x0,y0)和(x1,y1)的关系如下:

X1=x0+tx

Y1=y0+ty

2. 流程设计

(1) 取得原图的数据区指针。

(2) 通过对话框输入偏移量tx,ty。

(3) 开辟一个同样大小的缓冲区。

(4) 对原图依次循环每个像素,每读入一个像素点(x0,y0),根据它的坐标,找到目标图像的位置(x1=x0-tx,y1=y0-ty),将像素(x0,y0)处的颜色值赋给新图中的(x1,y1)。

3. 编程实现

(LPBYTE)p_data + lLineBytes * (height - 1 - j) + i;

int i0,j0;

// 计算该象素在新DIB中的坐标

i0 = i+mfor( i = 0; i < wide; i++)

{ for(int j = 0; j < height; j++)

{ // 计算该象素在源DIB中的坐标

lpSrc =_Xmove;

j0 = j + m_Ymove;

if( (i0 >= 0) && (i0 < wide) && (j0 >= 0) && (j0 < height)) // 判断是否在新图范围内 { lpDst = (LPBYTE)temp + lLineBytes *(height - 1 - j0) + i0;

*lpDst = *lpSrc; // 复制象素

}

else

{

* ((unsigned char*)lpDst) = 255; // 对于源图中没有的象素,直接赋值为255

}

}

}

4.实验结果对比

数字图像处理

<二>图像的镜像变换

1. 理论基础

图像的镜像变换分为两种:一种是水平镜像,另一种是垂直镜像。

图像的水平镜像操作是以原图像的垂直中轴线为中心,将图像分为左右两部分进行对称变换;

图像的垂直镜像操作是以原图像的水平中轴线为中心,将图像分为上下两部分进行对称变换。

镜像变换后图的高和宽都不变

设图像高度为Height,宽度为Width,

原图中的(x0,y0)经过水平镜像后,

坐标将变成(Width-x0,y0)。

即:

x1=Width-x0

y1=y0

2.流程设计

(1) 取得原图的数据区指针。

(2) 开辟一个同样大小的缓冲区。

(3) 每个像素依次循环。

在水平镜像中,将原图中的像素点的水平坐标变成镜像后的坐标(用图像的宽度减去坐标值)在显示到图像上。

数字图像处理

垂直镜像中,则对垂直坐标做相应的处理。

3.编程实现----水平镜像

for(j = 0; j < height; j++)

for(i = 0; i < wide;i++)

{

lpSrc = (LPBYTE)p_data +wide *j + i;

lpDst = (LPBYTE)temp + wide* j+ wide - i; *lpDst = *lpSrc; }

for(i = 0; i < wide;i++)

for(j = 0; j < height; j++)

{

lpSrc = (LPBYTE)p_data + wide * j+i;

lpDst = (LPBYTE)temp + wide * (height - j - 1)+i;

*lpDst = *lpSrc; }

4.实验结果对比

(a)原图 (b)水平镜像处理效果图 (c)垂直镜像处理效果图 <三>图像的缩放

1. 理论基础

假设图像X轴方向缩放比率是kx,Y轴方向缩放比率是ky,那么原图中点(x0,y0)对应与新图中的点(x1,y1)为:

x1=x0*kx

数字图像处理

y1=y0*ky

当kx>1且ky>1时,原图像被放大。

放大图像时,产生了新的像素,可通过插值算法来近似处理。

例如:当kx=ky=2时,图像放大2倍,

原图中的某一个像素,对应新图的4个像素。

●●

● ●●

(a)原图中的某一个像素 (b)对应新图的4个像素

当kx<1且ky<1时,原图像被缩小。

例如,当kx=ky=0.5时,图像被缩到一半大小,原图中4个像素对应新图中的一个像素。此时缩小后的图像中的(0,0)像素对应于原图中的(0,0)、(0,1)、(1,0)、(1,1)像素一个;

以此类推。在原图基础上,每行隔一个像素取一点,每割一行进行操作。如下图3-4所示。

●● ●

●●

(a)原图中的某4个像素 (b)对应新图的1个像素

2.流程设计

(1) 取得原图的数据区指针。

(2) 通过对话框获得放大整数比例:kx,ky。

更改图象的宽度和高度。

(3) 每个像素依次循环。计算该象素在原图象中的坐标,将原图的象素值赋给目标象素相应位置kx*ky个值。

3.编程实现----放大图像

// 针对图像每行进行操作

}

for(j = 0; j < newheight-1; j++)

{// 针对图像每列进行操作

for(i = 0; i < newwide-1; i++) for(j = 0; j < height-1; j++) { // 针对图像每列进行操作 for(i = 0; i < wide-1; i++) { // 指向源DIB第i0行,第j0个象素的指针 } lpSrc = (LPBYTE)p_data + wide * j + i; // 复制象素 for(int n=0;n<k1;n++) for(int m=0;m<k2;m++) { *lpDs …… 此处隐藏:2550字,全部文档内容请下载后查看。喜欢就下载吧 ……

数字图像处理论文2010.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:4.9 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:19元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219