pb07210360l_王涛_图像处理上机报告.docVIP

  • 1
  • 0
  • 约1.38万字
  • 约 20页
  • 2016-12-25 发布于湖南
  • 举报
数字图像处理实验报告 P 王涛 实验目的: 本实验的目的是通过实验进一步理解和掌握数字图像处理原理和方法。通过分析、实现现有的图像处理算法,学习和掌握常用的图像处理技术。 实验内容:数字图像处理的实验内容主要有三个方面: (1) 对图像灰度作某种变换, 增强其中的有用信息, 抑制无用信息, 使图像的视在质量提高, 以便于人眼观察、理解或用计算机对其作进一步的处理。 (2) 用某种特殊手段提取、描述和分析图像中所包含的某些特征和特殊的信息, 主要的目的是便于计算机对图像作进一步的分析和理解, 经常作为模式识别和计算机视觉的预处理。这些特征包括很多方面, 例如, 图象的频域特性、灰度特征、边界特征等。 (3) 图像的变换, 以便于图像的频域处理。 (注:对于代码中的说明请看代码相应处的详细注解) 实验一 图像的几何变换 实验内容: 1. 图像的平移 对输入的位移量对原始图像进行平移。 核心处理代码: //对图像进行平移 for (y=0;yh;y++) for (x=0;xw;x++) dst-imageData[y*w+x]=src-imageData[0]; for (y=0;yh;y++) for (x=0;xw;x++){ xx=x+a; yy=y+b; if (xx0 xxw yy0 yyh) dst-imageData[yy*w+xx]=src-imageData[y*w+x]; } 输出: 2. 图像的旋转 输入一幅图像,根据输入的旋转参数(中心点和旋转角度),显示旋转后的图像。 核心处理代码: //对图像进行旋转 for (y=0;yh;y++) for (x=0;xw;x++) dst-imageData[y*w+x]=src-imageData[0]; for (y=0;yh;y++) for (x=0;xw;x++){ xx=(int)(cos(s)*x-sin(s)*y+a-a*cos(s)+b*sin(s)); yy=(int)(sin(s)*x+cos(s)*y+b-a*sin(s)-b*cos(s)); if (xx0 xxw yy0 yyh) dst-imageData[yy*w+xx]=src-imageData[y*w+x]; } 输入:64 64 45 输出: 3. 图像的缩放 输入一幅图像,根据输入的水平和垂直缩放量,显示缩放后的图像。 核心处理代码: dst_cvsize.width = src-width * c; //目标图像的宽为源图象宽的c倍 dst_cvsize.height = src-height * d; //目标图像的高为源图象高的d倍 dst = cvCreateImage( dst_cvsize, src-depth, src-nChannels); //构造目标图象 cvResize(src, dst, CV_INTER_LINEAR); //缩放源图像到目标图像 输出: 实验二 图像的点处理 实验内容: 1. 灰度的线性变换 输入一幅图像,根据输入的斜率和截距进行线性变换,并显示。 核心处理代码: //根据灰度变换方程来计算 for (y=0;yh;y++) for (x=0;xw;x++){ dst-imageData[y*w+x]=src-imageData[y*w+x]*a+b; } 输出: 2. 灰度拉伸 输入一幅图像,根据选择的转折点,进行灰度拉伸,显示变换后的图像。 核心处理代码: //分段线性变换 for (y=0;yh;y++) for (x=0;xw;x++){ t=(int)(unsigned char)src-imageData[y*w+x]; if (tx1) dst-imageData[y*w+x]=(char)t*y1/x1; else if (t=x2) dst-imageData[y*w+x]=(char)((y2-y1)/(x2-x1)*(t-x1)+y1); else dst-imageData[y*w+x]=(char)((255-y2)/(255-x2)*(t-x2)+y2); } 输入:80 30 170 220 输出: 3. 灰度直方图 输入一幅图像,显示它的灰度直方图,可以根据输入的参数(上限、下限)显示特定范围的灰度直方图。 核心处理代码: //构造灰度直方图 for (x=0;x256;x+

文档评论(0)

1亿VIP精品文档

相关文档