当前位置:文档之家› 数字图像处理在DSP上的实现

数字图像处理在DSP上的实现

数字图像处理在DSP上的实现
数字图像处理在DSP上的实现

数字图像处理在DSP上的实现(旋转)

1 绪论

1.1设计目的

图像旋转是一种应用广泛的数字图像处理技术,随着应用水平的不断提高,对在嵌入式系统中实现高分辨率大图像旋转的需求也越来越高。如在航空领域的高分辨率数字地图图像的显示处理过程中,由于现有的显示芯片均不能支持图像旋转功能,就需要在资源有限的嵌入式平台上实现大幅面地图图像的实时旋转。采用DSP平台是一种实现方式,具体实现时需仔细考虑两个方面的问题,一是选用计算量小的旋转算法,二是充分发挥DSP平台强大的并行计算能力。

1.2设计任务

1.能从计算机上读取图片。

2.编写图像旋转程序,在TMS320C5509上实现。

2 设计原理及分析

2.1设计原理

目前,已经有很多有效降低计算量的图像旋转算法,基于图像线性存储结构的旋转方法就是其中之一。然而,在DSP平台上,有限的高速存储资源限制了这些算法效率的直接发挥,需要针对算法及DSP平台的性能结构特点进行高效的数据调度。对于图像旋转问题而言,数据调度还需要克服由于存在大量非连续图像像素地址访问而严重影响DSP数据存取及CPU效率发挥的问题。这是图像旋转本身的特殊性,在其他图像处理技术中是不存在的。

由DSP的结构特点可知,只有在数据和程序均位于片内存储器当中的条件下,DSP 的效率才能得到最大化的发挥。在大图像旋转算法中,由于涉及的图像数据量远大于DSP 的片内存储器容量,源图像和最终视口图像等数据必须被存放在片外存储器中。在这种情况下,为了保证DSP CPU高速处理能力的发挥,必须优化数据流,将源图像分块,依次搬移至片内处理,并设法保证CPU当前要处理的图像数据块已经事先在片内存储器中准备好了。因此在算法整体优化结构上采用Ping-Pong双缓冲技术,利用EDMA与CPU 并行工作来隐藏图像数据块在片内和片外之间的传输时间,使CPU能连续不断地处理数据,中间不会出现空闲等待。

传统的图像旋转一般通过矩阵乘法实现:

其中,α为旋转角度。

由于图像是线性存储的,各个像素点之间的相对位置关系确定。如图1(a)所示,图像旋转前,任意像素点P(x,y)和P1(x1,y1)、P2(x2,y2)及A(xA,yA)在几何上是矩形的四顶点关系。由于旋转变换是线性变换,如图1(b)所示,图像旋转后,各个像素点之间的相对位置关系不发生变化,

旋转算法的数据调度目的是使算法能够按照一定的规则,将源图像数据有规律地分块,并按次序分别传输到DSP片内存储器中,完成计算后,形成视口图像块,再将视口

图像块按同样的顺序进行排列,形成旋转后的视口图像。整个过程要求调入和调出的图像数据均是规则分块的,并且调入的源图像块中应该包含计算视口图像块的过程中所需要的全部像素数据,尤其需要解决其中的大量非连续图像像素地址访问问题。

视口逆时针旋转的情况与此类似。区别有以下两点:

①源图像块的左边框中点与相应的视口图像块旋转后的左上角顶点对应;

②源图像块的顶点局部坐标地址值与视口图像块的顶点局部坐标地址值之间的对

应关系式应为:

其中height指源图像块的高度。

3 软件程序

3.1主程序

#include

#include

#include

#include

#include

int load_cut(char *fname);

int load_convolution_matrix(char *fname);

int convolve_image(void);

int swap_pictures(void);

int minx,maxx,miny,maxy;

int LOADPAGE=0;

int ENHANCEPAGE=1;

int *cmat, *pmat, *vmat;

int cmx,cmy,cmnum;

struct palettetype palette,newpal;

int driver,mode;

int cleancut=-1;

int init_graphics(void)

{

driver=DETECT; mode=0;

detectgraph(&driver,&mode);

if(driver==VGA) mode=VGAMED;

initgraph(&driver,&mode,"");

getpalette(&palette);

getpalette(&newpal);

}

int cleanup_image(void)

{

int i,j,num,x,y,k;

if(cleancut<0) return;

setactivepage(LOADPAGE);

setvisualpage(ENHANCEPAGE);

for(x=minx;x

for(y=miny;y

if(getpixel(x,y)!=0) num=-1;

else num=0;

for(j=-1;j<2;j++) {

for(i=-1;i<2;i++) {

if(getpixel(x+i,y+j)!=0) num++;

}

}

if(num>cleancut) {

k=getpixel(x,y);

setactivepage(ENHANCEPAGE);

putpixel(x,y,k);

setactivepage(LOADPAGE);

}

}

}

k=ENHANCEPAGE; ENHANCEPAGE=LOADPAGE; LOADPAGE=k; }

void show_test_image(void)

{

int i;

minx=cmx; miny=cmy;

maxx=100+minx; maxy=100+miny;

setcolor(1);

moveto(minx,miny);

randomize();

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

lineto(random(100)+minx,random(100)+miny);

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

fillellipse(random(50)+25+minx,random(50)+25+miny,random(25),random(25));

}

main()

{

char fname[50];

int flag=0;

load_convolution_matrix("matrix.dat");

printf(".CUT file (1) or test image (0)?");

scanf("%d",&flag);

flag= flag? 1:0;

if(flag) {

fflush(stdin);

printf("filename to process:");

gets(fname);

}

printf("Delete pixels with x or fewer neighbors. x=");

scanf("%d",&cleancut);

if(cleancut>8) cleancut=8;

init_graphics();

setactivepage(1); cleardevice();

setactivepage(0); cleardevice();

setactivepage(LOADPAGE); setvisualpage(LOADPAGE);

if(flag) load_cut(fname);

else show_test_image();

cleanup_image();

setvisualpage(ENHANCEPAGE);

convolve_image();

swap_pictures();

restorecrtmode();

}

int toggle_colors(char c)

{

c=tolower(c);

c=c-'a';

if(c<0 || c>=palette.size) return 0;

newpal.colors[c]= palette.colors[c]-newpal.colors[c]; setpalette(c,newpal.colors[c]);

return 1;

}

int swap_pictures(void)

{

int mode=0;

char a;

setvisualpage(LOADPAGE);

for(;;) {

a=getch();

if(a==27) return;

if(toggle_colors(a)) continue;

if(mode==0) setvisualpage(ENHANCEPAGE);

if(mode==1) setvisualpage(LOADPAGE);

mode=1-mode;

}

}

int convolve_image(void)

{

int i,j,k,nval;

int *vx, *vy, *c;

int colmax,offset,end,midy;

char **lines=NULL;

char *temp=NULL;

offset=-minx+(cmx/2);

end=cmy-1; midy=cmy/2;

lines=(char **)malloc(cmy*sizeof(char *));

for(i=0;i

setactivepage(LOADPAGE);

for(j=-cmy/2;j

for(i=minx-cmx/2;i<(maxx+cmx/2+1);i++) {

lines[j+midy][i+offset]=getpixel(i,j+miny);

}

}

colmax=getmaxcolor();

for(j=miny;j

setactivepage(LOADPAGE);

for(i=j+cmy/2,k=minx-cmx/2,nval=maxx+cmx/2;k

lines[end][k+offset]=getpixel(k,i);

for(i=minx;i

/* Load & multiply neighbors into matrix */

setactivepage(LOADPAGE);

vx=vmat; vy=vmat+1; c=cmat; nval=0;

for(k=0;k

if(*c) nval+= lines[(*vy)+midy][i+(*vx)+offset]*(*c);

/* if(*c) nval+= getpixel(i+(*vx),j+(*vy)) * (*c); */ c++;

vx+=2; vy+=2;

}

/* Cut off values too high or too low */

if(nval<0) nval=0;

if(nval>colmax) nval=colmax;

/* Place new pixel value */

setactivepage(ENHANCEPAGE);

putpixel(i,j,nval);

}

if(kbhit()) { getch(); break; }

/* rotate line pointers */

temp=lines[0];

for(i=1;i

lines[end]=temp;

}

for(i=0;i

if(lines[i]!=NULL) free(lines[i]);

}

if(lines!=NULL) {

free(lines);

}

return;

}

int build_offset_vectors(void)

{

int *t;

int il,im,jl,jm,i,j;

il=-cmx/2; im=cmx+il;

jl=-cmy/2; jm=cmy+jl;

t=vmat;

for(j=jl;j

for(i=il;i

*t++=i; *t++=j;

}

}

}

int load_convolution_matrix(char *fname)

{

/* Layout of matrix file:

#x #y

x0y0 x1y0 ... xny1

.... .... ... ....

x0ym x1ym ... xnym

*/

FILE *mf;

int *t;

int i,j,im,jm;

if( (mf=fopen(fname,"rt"))==NULL ) {

printf("Cannot load matrix file.\n");

abort();

}

fscanf(mf,"%d%d",&im,&jm);

if( (im&1)==0 || (jm&1)==0 ) {

printf("Convolution matrix MUST have a center point.\n"); abort();

}

if( (cmat=(int *)calloc(im*jm,sizeof(int)))==NULL ) {

printf("Unable to calloc convolution matrix.\n");

abort();

}

if( (vmat=(int *)calloc(2*im*jm,sizeof(int)))==NULL ) { printf("Unable to calloc offset vector matrix.\n");

abort();

}

cmx=im; cmy=jm; cmnum=im*jm;

t=cmat;

for(j=0;j

for(i=0;i

if( fscanf(mf,"%d",t++)!=1 ) {

printf("Unable to read matrix.\n");

abort();

}

}

}

fclose(mf);

build_offset_vectors();

}

int load_cut(char *fname)

{

static unsigned char st[3000];

char *sp=st,*spend;

int stp=0;

int width,height;

FILE *fp;

int x,y,xl,yl;

int i,n,len,d,j;

fp=fopen(fname,"rb");

width=getw(fp); height=getw(fp);

xl=cmx; yl=cmy;

minx=xl; miny=yl;

maxx=xl+width; maxy=yl+height;

if(maxy>(getmaxy()-cmy)) {

maxy=getmaxy()-cmy;

height=maxy-yl;

}

getw(fp);

y=yl-1;

for(sp=st,n=0;n

stp=getw(fp);

for(sp=st,spend=st+stp;sp

while(sp

if(*((unsigned char *)sp)>0x80) {

len=(*sp++) & 0x7f;

if(!(*sp)) { x+=len; continue; }

setcolor(*sp++);

moveto(x,y);

linerel(len,0);

x+=len;

continue;

} else {

len=*sp++;

for(j=0;j

continue;

}

}

}

fclose(fp);}

3.2初始化和读取图像程序

#include

#define MODEPHOTO1 1

#define MODEPHOTO2 2

#define GRAYBARLEVEL 16

void ReadImage(unsigned char*pImage,char*cFileName,int nWidth,int nHeight);

void InitImage(unsigned int nMode,unsigned char*pImage,int nWidth,int nHeight)

{

swich(nMode)

{

case MODEPHOTO1:

Readimage(pImage,"..\\DSP.bmp",nWidth,nHeight);

break;

case MODEPHOTO2:

ReadImage(pImage,"..\\1.bmp",nWidth,nHeight);

break;

default:

break;

}

}

void ReadImage(unsigned char*cFileName,int nWidth,int nHeight)

{

int j;

unsigned char*pWork;

FILE*fp;

if(fp=fopen(cFileName,"rb"))

{

fseek(fp,1078L,SEEK_SET);

pWork=pImage+(nHeight-1)*nWidth;

for(j=0;j

fclose(fp);

}

}

4 运行结果分析

从实验结果可以看出,调整图像旋转,由于存在对称性,一幅图像任意角度的旋转可分解为一次90°或180°或270°的旋转,再加上一次±45°以内的旋转。

图4.1 原图

图4.2 顺时针旋转90度

图4.3 逆时针旋转90度

结论

本文得到的结论如下:

实验采用高分辨率图像处理平台,以TMS320C5509芯片为主处理芯片,时钟为300MHz,片外为16MB SDRAM。实验实现相应尺寸(80×80像素)的视口图像旋转,相应的源图像数据分别为80×80像素的BMP格式的数字地图图像,采用0.005弧度旋转角度递增间隔,对分别采用传统像素逐点矩阵相乘方法、基于图像线性存储结构方法以及基于本文数据调度策略的结构优化的线性存储结构方法三种实现方式进行对比,分别统计其平均每帧运行时间并转换成帧率,达到了本次课程设计的要求。

参考文献

[1]DANIELSSON P E.High-Accuracy Rotation of Images[J].Graphical Models and

Image Processing,2002

[2]方华刚.DSP原理与应用.北京.北京机械工业出版社,2006.1

[3]朱虹.数字图像处理.北京.科学出版社,2007.4

[4]孙宗瀛. TMS320C55X DSP原理设计与应用.北京. 清华大学出版社,2002

[5]郑红吴冠. TMS320C55X DSP应用系统设计.北京.北京航空航天大学出版社, 2002

[6]TMS320C55X DSP Programmer’s Guide SPRU376A[Z].Texas Instruments,2001

致谢

通过本次课程设计,加强了我们动手、思考和解决问题的能力,我觉得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解所学的知识。而这次课程设计使我对于其在DSP中的使用有了更多的认识。平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。而且还可以记住很多东西。这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为我所用。

在设计实验过程中,我也遇到过很多困难,通过同学们和老师的帮助最终解决了问题才得以完成课程设计,在这里对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

课程设计(论文)评语及成绩评定

数字图像处理实验1

实验一 实验内容和步骤 练习图像的读取、显示和保存图像数据,步骤如下: (1)使用命令figure(1)开辟一个显示窗口 (2)读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内显示、二值图像和灰度图像,注上文字标题。 (3)保存转换后的灰度图像和二值图像 (4)在同一个窗口显示转换后的灰度图像的直方图 I=imread('BaboonRGB.bmp'); figure,imshow(I); I_gray=rgb2gray(I); figure,imshow(I_gray); I_2bw=Im2bw(I_gray); figure,imshow(I_2bw); subplot(1,3,1),imshow(I),title('RGB图像'); subplot(1,3,2),imshow(I_gray),title('灰度图像'); subplot(1,3,3),imshow(I_2bw),title('二值图像'); imwrite(I_gray,'Baboongray.png'); imwrite(I_2bw,'Baboon2bw.tif'); figure;imhist(I_gray);

RGB 图 像灰度图 像二值图 像 050100150200250 500 1000 1500 2000 2500 3000

(5)将原RGB 图像的R 、G 、B 三个分量图像显示在figure(2)中,观察对比它们的特点,体会不同颜色所对应的R 、G 、B 分量的不同之处。 [A_RGB,MAP]=imread('BaboonRGB.bmp'); subplot(2,2,1),imshow(A_RGB),title('RGB'); subplot(2,2,2),imshow(A_RGB(:,:,1)),title('R'); subplot(2,2,3),imshow(A_RGB(:,:,2)),title('G'); subplot(2,2,4),imshow(A_RGB(:,:,3)),title('B'); (6)将图像放大1.5倍,插值方法使用三种不同方法,在figure(3)中显示放大后的图像,比较不同插值方法的结果有什么不同。将图像放大到其它倍数,重复实验;A=imread('BaboonRGB.bmp'); figure(3),imshow(A),title('原图像'); B=imresize(A,1.5,'nearest'); figure(4),imshow(B),title('最邻近法') C=imresize(A,1.5,'bilinear'); ; figure(5),imshow(C),title('双线性插值'); D=imresize(A,1.5,'bicubic'); figure(6),imshow(D),title('双三次插值 '); RGB R G B

武汉科技大学 数字图像处理实验报告

二○一四~二○一五学年第一学期电子信息工程系 实验报告书 班级:电子信息工程(DB)1102班姓名 学号: 课程名称:数字图像处理 二○一四年十一月一日

实验一图像直方图处理及灰度变换(2学时) 实验目的: 1. 掌握读、写、显示图像的基本方法。 2. 掌握图像直方图的概念、计算方法以及直方图归一化、均衡化方法。 3. 掌握图像灰度变换的基本方法,理解灰度变换对图像外观的改善效果。 实验内容: 1. 读入一幅图像,判断其是否为灰度图像,如果不是灰度图像,将其转化为灰度图像。 2. 完成灰度图像的直方图计算、直方图归一化、直方图均衡化等操作。 3. 完成灰度图像的灰度变换操作,如线性变换、伽马变换、阈值变换(二值化)等,分别使用不同参数观察灰度变换效果(对灰度直方图的影响)。 实验步骤: 1. 将图片转换为灰度图片,进行直方图均衡,并统计图像的直方图: I1=imread('pic.jpg'); %读取图像 I2=rgb2gray(I1); %将彩色图变成灰度图 subplot(3,2,1); imshow(I1); title('原图'); subplot(3,2,3); imshow(I2); title('灰度图'); subplot(3,2,4); imhist(I2); %统计直方图 title('统计直方图'); subplot(3,2,5); J=histeq(I2); %直方图均衡 imshow(J); title('直方图均衡'); subplot(3,2,6); imhist(J); title('统计直方图');

原 图 灰度图 01000 2000 3000统计直方图 100200直方图均衡 0统计直方图 100200 仿真分析: 将灰度图直方图均衡后,从图形上反映出细节更加丰富,图像动态范围增大,深色的地方颜色更深,浅色的地方颜色更前,对比更鲜明。从直方图上反应,暗部到亮部像素分布更加均匀。 2. 将图片进行阈值变换和灰度调整,并统计图像的直方图: I1=imread('rice.png'); I2=im2bw(I1,0.5); %选取阈值为0.5 I3=imadjust(I1,[0.3 0.9],[]); %设置灰度为0.3-0.9 subplot(3,2,1); imshow(I1); title('原图'); subplot(3,2,3); imshow(I2); title('阈值变换'); subplot(3,2,5); imshow(I3); title('灰度调整'); subplot(3,2,2); imhist(I1); title('统计直方图'); subplot(3,2,4);

数字图像处理四个实验报告,带有源程序

数字图像处理 实验指导书 学院:通信与电子工程学院 专业:电子信息工程 班级: 学号: 姓名: XX理工大学

实验一 MATLAB数字图像处理初步 一、实验目的与要求 1.熟悉及掌握在MATLAB中能够处理哪些格式图像。 2.熟练掌握在MATLAB中如何读取图像。 3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。 4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。 5.图像间如何转化。 二、实验原理及知识点 1、数字图像的表示和类别 一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。 图像关于x和y坐标以及振幅连续。要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。将坐标值数字化成为取样;将振幅数字化成为量化。采样和量化的过程如图1所示。因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。 作为MATLAB基本数据类型的数值数组本身十分适于表达图像,矩阵的元素和图像的像素之间有着十分自然的对应关系。 图1 图像的采样和量化 根据图像数据矩阵解释方法的不同,MA TLAB把其处理为4类: 亮度图像(Intensity images) 二值图像(Binary images) 索引图像(Indexed images) RGB图像(RGB images)

数字图像处理教学大纲(2014新版)

数字图像处理 课程编码:3073009223 课程名称:数字图像处理 总学分: 2 总学时:32 (讲课28,实验4) 课程英文名称:Digital Image Processing 先修课程:概率论与数理统计、线性代数、C++程序设计 适用专业:自动化专业等 一、课程性质、地位和任务 数字图像处理课程是自动化专业的专业选修课。本课程着重于培养学生解决智能化检测与控制中应用问题的初步能力,为在计算机视觉、模式识别等领域从事研究与开发打下坚实的理论基础。主要任务是学习数字图像处理的基本概念、基本原理、实现方法和实用技术,并能应用这些基本方法开发数字图像处理系统,为学习图像处理新方法奠定理论基础。 二、教学目标及要求 1.了解图像处理的概念及图像处理系统组成。 2.掌握数字图像处理中的灰度变换和空间滤波的各种方法。 3.了解图像变换,主要是离散和快速傅里叶变换等的原理及性质。 4.理解图像复原与重建技术中空间域和频域滤波的各种方法。 5. 理解解彩色图像的基础概念、模型和处理方法。 6. 了解形态学图像处理技术。 7. 了解图像分割的基本概念和方法。 三、教学内容及安排 第一章:绪论(2学时) 教学目标:了解数字图像处理的基本概念,发展历史,应用领域和研究内容。通过大量的实例讲解数字图像处理的应用领域;了解数字图像处理的基本步骤;了解图像处理系统的组成。 重点难点:数字图像处理基本步骤和图像处理系统的各组成部分构成。 1.1 什么是数字图像处理 1.2 数字图像处理的起源

1.3.1 伽马射线成像 1.3.2 X射线成像 1.3.3 紫外波段成像 1.3.4 可见光及红外波段成像 1.3.5 微波波段成像 1.3.6 无线电波成像 1.3.7 使用其他成像方式的例子 1.4 数字图像处理的基本步骤 1.5 图像处理系统的组成 第二章:数字图像基础(4学时) 教学目标:了解视觉感知要素;了解几种常用的图像获取方法;掌握图像的数字化过程及其图像分辨率之间的关系;掌握像素间的联系的概念;了解数字图像处理中的常用数学工具。 重点难点:要求重点掌握图像数字化过程及图像中像素的联系。 2.1 视觉感知要素(1学时) 2.1.1 人眼的构造 2.1.2 眼镜中图像的形成 2.1.3 亮度适应和辨别 2.2 光和电磁波谱 2.3 图像感知和获取(1学时) 2.3.1 用单个传感器获取图像 2.3.2 用条带传感器获取图像 2.3.3 用传感器阵列获取图像 2.3.4 简单的图像形成模型 2.4 图像取样和量化(1学时) 2.4.1 取样和量化的基本概念 2.4.2 数字图像表示 2.4.3 空间和灰度级分辨率 2.4.4 图像内插 2.5 像素间的一些基本关系(1学时) 2.5.1 相邻像素 2.5.2 临接性、连通性、区域和边界 2.5.3 距离度量 2.6 数字图像处理中所用数学工具的介绍 2.6.1 阵列与矩阵操作

数字图像处理实验报告

数字图像处理实验报告 实验一数字图像基本操作及灰度调整 一、实验目的 1)掌握读、写图像的基本方法。 2)掌握MATLAB语言中图像数据与信息的读取方法。 3)理解图像灰度变换处理在图像增强的作用。 4)掌握绘制灰度直方图的方法,理解灰度直方图的灰度变换及均衡化的方 法。 二、实验内容与要求 1.熟悉MATLAB语言中对图像数据读取,显示等基本函数 特别需要熟悉下列命令:熟悉imread()函数、imwrite()函数、size()函数、Subplot()函数、Figure()函数。 1)将MATLAB目录下work文件夹中的forest.tif图像文件读出.用到imread, imfinfo 等文件,观察一下图像数据,了解一下数字图像在MATLAB中的处理就是处理一个矩阵。将这个图像显示出来(用imshow)。尝试修改map颜色矩阵的值,再将图像显示出来,观察图像颜色的变化。 2)将MATLAB目录下work文件夹中的b747.jpg图像文件读出,用rgb2gray() 将其 转化为灰度图像,记为变量B。 2.图像灰度变换处理在图像增强的作用 读入不同情况的图像,请自己编程和调用Matlab函数用常用灰度变换函数对输入图像进行灰度变换,比较相应的处理效果。 3.绘制图像灰度直方图的方法,对图像进行均衡化处理 请自己编程和调用Matlab函数完成如下实验。 1)显示B的图像及灰度直方图,可以发现其灰度值集中在一段区域,用 imadjust函 数将它的灰度值调整到[0,1]之间,并观察调整后的图像与原图像的差别,调整后的灰

度直方图与原灰度直方图的区别。 2) 对B 进行直方图均衡化处理,试比较与源图的异同。 3) 对B 进行如图所示的分段线形变换处理,试比较与直方图均衡化处理的异同。 图1.1 分段线性变换函数 三、实验原理与算法分析 1. 灰度变换 灰度变换是图像增强的一种重要手段,它常用于改变图象的灰度范围及分布,是图象数字化及图象显示的重要工具。 1) 图像反转 灰度级范围为[0, L-1]的图像反转可由下式获得 r L s --=1 2) 对数运算:有时原图的动态范围太大,超出某些显示设备的允许动态范围, 如直接使用原图,则一部分细节可能丢失。解决的方法是对原图进行灰度压缩,如对数变换: s = c log(1 + r ),c 为常数,r ≥ 0 3) 幂次变换: 0,0,≥≥=γγc cr s 4) 对比拉伸:在实际应用中,为了突出图像中感兴趣的研究对象,常常要求 局部扩展拉伸某一范围的灰度值,或对不同范围的灰度值进行不同的拉伸处理,即分段线性拉伸: 其对应的数学表达式为:

数字图像处理实验(全完整答案)

数字图像处理实验(全 完整答案)

实验一常用 MATLAB图像处理命令 一、实验目的 1 、熟悉并掌握MA TLAB 工具的使用; 2、实现图像的读取、显示、代数运算和简单变换。 二、实验环境 MATLAB 6.5 以上版本、WIN XP或W IN2000计算机 三、常用函数 读写图像文件 1 imread imread 函数用于读入各种图像文件,如:a=imread('e:\w01.tif') 2 imwrite imwrite 函数用于写入图像文件,如:imwrite(a,'e:\w02.tif', ’tif ’) 3 imfinfo imfinfo 函数用于读取图像文件的有关信息,如:imfinfo('e:\w01.tif')图像的显示 1 image image 函数是 MATLAB提供的最原始的图像显示函数,如: a=[1,2,3,4;4,5,6,7;8,9,10,11,12]; image(a); 2 imshow imshow 函数用于图像文件的显示,如: i=imread('e:\w01.tif'); imshow(i); title (‘原图像’) %加上图像标题

3 colorbar colorbar 函数用显示图像的颜色条,如: i=imread('e:\w01.tif'); imshow(i); colorbar; 4 figure figure 函数用于设定图像显示窗口,如:figure(1) ;/figure(2) ; 5 subplot 把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示。 Subplot (m,n,p)分成 m*n个小窗口,在第p 个窗口中创建坐标轴为当 前坐标轴,用于显示图形。 6 plot 绘制二维图形 plot (y) Plot (x,y)xy 可以是向量、矩阵。 图像类型转换 1 rgb2gray 把真彩图像转换为灰度图像 i=rgb2gray (j ) 2 im2bw 通过阈值化方法把图像转换为二值图像 I=im2bw(j ,level ) Level 表示灰度阈值,取值范围0~1(即0.n ),表示阈值取自原图像灰度范围的n%

数字图像处理实验指导书模板

《数字图像处理》实验指导书 编写: 罗建军 海南大学三亚学院 10月

目录 一、概述 ....................................................................... 错误!未定义书签。 二、建立程序框架 ....................................................... 错误!未定义书签。 三、建立图像类 ........................................................... 错误!未定义书签。 四、定义图像文档实现图像读/写.............................. 错误!未定义书签。 五、实现图像显示 ....................................................... 错误!未定义书签。 六、建立图像处理类................................................... 错误!未定义书签。 七、实现颜色处理功能............................................... 错误!未定义书签。 (一) 亮度处理................................................................. 错误!未定义书签。 (二) 对比度处理............................................................. 错误!未定义书签。 (三) 色阶处理................................................................. 错误!未定义书签。 (四) 伽马变换................................................................. 错误!未定义书签。 (五) 饱和度处理............................................................. 错误!未定义书签。 (六) 色调处理................................................................. 错误!未定义书签。 八、实现几何变换功能............................................... 错误!未定义书签。 (一) 图像缩放................................................................. 错误!未定义书签。 (二) 旋转......................................................................... 错误!未定义书签。 (三) 水平镜像................................................................. 错误!未定义书签。 (四) 垂直镜像................................................................. 错误!未定义书签。 (五) 右转90度................................................................. 错误!未定义书签。 (六) 左转90度................................................................. 错误!未定义书签。 (七) 旋转180度............................................................... 错误!未定义书签。 九、实现平滑锐化功能............................................... 错误!未定义书签。 十、图像处理扩展编程............................................... 错误!未定义书签。

数字图像处理的概念教学总结

数字图像处理的概念

二、数字图像处理的概念 1.什么是图像 “图”是物体投射或反射光的分布,“像”是人的视觉系统对图的接受在大脑中形成的印象或反映。 是客观和主观的结合。 2数字图像是指由被称作象素的小块区域组成的二维矩阵。将 物理图象行列划分后,每个小块区域称为像素(pixel)。 –每个像素包括两个属性:位置和灰度。 对于单色即灰度图像而言,每个象素的亮度用一个数值来表示,通常数值范围在0到255之间,即可用一个字节来表示, 0表示黑、255表示白,而其它表示灰度级别。 物理图象及对应 的数字图象 3彩色图象可以用红、绿、蓝三元组的二维矩阵来表示。 –通常,三元组的每个数值也是在0到255之间,0表示相应的基色在该象素中没有,而255则代表相应的基色在该象素中取得最大值,这种情况下每个象素可用三个字节来表示。 4什么是数字图像处理 数字图像处理就是利用计算机系统对数字图像进行各种目的的处理 5对连续图像f(x,y)进行数字化:空间上,图像抽样;幅度上,灰度级量化 x方向,抽样M行 y方向,每行抽样N点

整个图像共抽样M×N个像素点 一般取M=N=2n=64,128,256,512,1024,2048 6数字图像常用矩阵来表示: f(i,j)=0~255,灰度级为256,设灰度量化为8bit 7 数字图像处理的三个层次 8 图像处理: 对图像进行各种加工,以改善图像的视觉效果;强调图像之间进行的变换;图像处理是一个从图像到图像的过程。 9图像分析:对图像中感兴趣的目标进行提取和分割,获得目标的客观信息 以观察者为中心研究客观世界; 图像分析是一个从图像到数据的过程。 10图像理解:研究图像中各目标的性质和它们之间的相互联系;得出对图像内 以客观世界为中心,借助知识、经验来推理、认识客观世界,属于高层操作 (符号运算) N N N N f N f N f N f f f N f f f y x f ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - - - - - - = )1 ,1 ( )1,1 ( )0,1 ( )1 ,1( )1,1( )0,1( )1 ,0( )1,0( )0,0( ) ,( 符号 目标 像素 高层 中层 低层 高 低 抽 象 程 度 数 据 量 操 作 对 象 小 大语 义

数字图像处理实验 实验二

实验二MATLAB图像运算一、实验目的 1.了解图像的算术运算在数字图像处理中的初步应用。 2.体会图像算术运算处理的过程和处理前后图像的变化。 二、实验步骤 1.图像的加法运算-imadd 对于两个图像f x,y和 (x,y)的均值有: g x,y=1 f x,y+ 1 (x,y) 推广这个公式为: g x,y=αf x,y+β (x,y) 其中,α+β=1。这样就可以得到各种图像合成的效果,也可以用于两张图像的衔接。说明:两个示例图像保存在默认路径下,文件名分别为'rice.png'和'cameraman.tif',要求实现下图所示结果。 代码: I1 = imread('rice.png'); I2 = imread('cameraman.tif'); I3 = imadd(I1, I2,'uint8'); I4 = imadd(I1, I2,'uint16'); subplot(2, 2, 1), imshow(I1), title('?-ê?í???1'); subplot(2, 2, 2), imshow(I2), title('?-ê?í???2'); subplot(2, 2, 3), imshow(I3), title('8??í?????ê?'); subplot(2, 2, 4), imshow(I4), title('16??í?????ê?'); 结果截图:

2.图像的减法运算-imsubtract 说明: 背景图像可通过膨胀算法得到background = imopen(I,strel('disk',15));,要求实现下图所示结果。 示例代码如下: I1 = imread('rice.png'); background = imerode(I1, strel('disk', 15)); rice2 = imsubtract(I1, background); subplot(2, 2, 1), imshow(I1), title('?-ê?í???'); subplot(2, 2, 2), imshow(background), title('±3?°í???'); subplot(2, 2, 3), imshow(rice2), title('′|àíoóμ?í???'); 结果截图: 3.图像的乘法运算-immultiply

数字图像处理实验报告

数字图像处理实验 报告 学生姓名:学号: 专业年级: 09级电子信息工程二班

实验一常用MATLAB图像处理命令 一、实验内容 1、读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。 实验结果如右图: 代码如下: Subplot (1,3,1) i=imread('E:\数字图像处理\2.jpg') imshow(i) title('RGB') Subplot (1,3,2) j=rgb2gray(i) imshow(j) title('灰度') Subplot (1,3,3) k=im2bw(j,0.5) imshow(k) title('二值') 2、对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分别显示,注上文字标题。 实验结果如右图: 代码如下: Subplot (3,2,1) i=imread('E:\数字图像处理 \16.jpg') x=imresize(i,[250,320]) imshow(x) title('原图x') Subplot (3,2,2) j=imread(''E:\数字图像处理 \17.jpg') y=imresize(j,[250,320]) imshow(y) title('原图y') Subplot (3,2,3) z=imadd(x,y) imshow(z)

title('相加结果');Subplot (3,2,4);z=imsubtract(x,y);imshow(z);title('相减结果') Subplot (3,2,5);z=immultiply(x,y);imshow(z);title('相乘结果') Subplot (3,2,6);z=imdivide(x,y);imshow(z);title('相除结果') 3、对一幅图像进行灰度变化,实现图像变亮、变暗和负片效果,在同一个窗口内分成四个子窗口来分别显示,注上文字标题。 实验结果如右图: 代码如下: Subplot (2,2,1) i=imread('E:\数字图像处理 \23.jpg') imshow(i) title('原图') Subplot (2,2,2) J = imadjust(i,[],[],3); imshow(J) title('变暗') Subplot (2,2,3) J = imadjust(i,[],[],0.4) imshow(J) title('变亮') Subplot (2,2,4) J=255-i Imshow(J) title('变负') 二、实验总结 分析图像的代数运算结果,分别陈述图像的加、减、乘、除运算可能的应用领域。 解答:图像减运算与图像加运算的原理和用法类似,同样要求两幅图像X、Y的大小类型相同,但是图像减运算imsubtract()有可能导致结果中出现负数,此时系统将负数统一置为零,即为黑色。 乘运算实际上是对两幅原始图像X、Y对应的像素点进行点乘(X.*Y),将结果输出到矩阵Z中,若乘以一个常数,将改变图像的亮度:若常数值大于1,则乘运算后的图像将会变亮;叵常数值小于是,则图像将会会暗。可用来改变图像的灰度级,实现灰度级变换,也可以用来遮住图像的某些部分,其典型应用是用于获得掩膜图像。 除运算操作与乘运算操作互为逆运算,就是对两幅图像的对应像素点进行点(X./Y), imdivide()同样可以通过除以一个常数来改变原始图像的亮度,可用来改变图像的灰度级,其典型运用是比值图像处理。 加法运算的一个重要应用是对同一场景的多幅图像求平均值 减法运算常用于检测变化及运动的物体,图像相减运算又称为图像差分运算,差分运算还可以用于消除图像背景,用于混合图像的分离。

数字图像处理程序

数字图像处理程序

数字图像处理实验 图像处理实验(一)直方图 灰度变换是图像增强的一种重要手段,使图像对比度扩展,图像更加清晰,特 征更加明显。 灰度级的直方图给出了一幅图像概貌的描述,通过修改灰度直方图来得到图像 增强。 1、灰度直方图 (1)计算出一幅灰度图像的直方图 clear close all I=imread('004.bmp'); imhist(I) title('实验一(1)直方图'); (2)对灰度图像进行简单的灰度线形变换, figure subplot(2,2,1) imshow(I); title('试验2-灰度线性变换'); subplot(2,2,2) histeq(I); (3)看其直方图的对应变化和图像对比度的变化。 原图像 f(m,n) 的灰度范围 [a,b] 线形变换为图像 g(m,n),灰度范围[a’,b’]公式:g(m,n)=a’+(b’-a’)* f(m,n) /(b-a) figure subplot(2,2,1) imshow(I) J=imadjust(I,[0.3,0.7],[0,1],1); title(' 实验一(3)用g(m,n)=a’+(b’-a’)* f(m,n) /(b-a)进行变换 '); subplot(2,2,2) imshow(J) subplot(2,2,3) imshow(I) J=imadjust(I,[0.5 0.8],[0,1],1); subplot(2,2,4) imshow(J) (4) 图像二值化(选取一个域值,(5) 将图像变为黑白图像) figure subplot(2,2,1)

数字图象处理1

北京科技大学远程教育学院 数字图像处理 注:所有答案均需写在答题纸上(不要抄题,注明题号) 一、选择题(30分,每题2分) 1.位图的最小单位是B A.1/2个像素B.1个像素C.1/4个像素D.1/8个像素 2.要编辑箭头,应选用什么工具。 D A.钢笔B.填充C.手绘D.轮廓笔 3.在贝塞尔工具绘制曲线过程中得到一个尖突的方法有: C A.绘制时按S键B.绘制时按“Make Node a Cusp”按键 C.绘制时按C键D.没有办法 4.对对象A执行仿制命令得到对象B,再对子对象B执行再制命令得到对象C,现对对象A执行封套命令,结果是:A A.ABC效果一起变B.B变C不变 C.BC都不变D.C变B不变 5.焊接对象泊坞窗中“目标对象”是指C A.所有焊接对象B.首先选择的对象 C.焊接箭头指向的对象D.焊接后产生的对象 6.以下关于交互式阴影工具的说法正确的是 C A.阴影颜色不可变B.开放曲线不能有阴影 C.段落文本可以应用阴影效果D.阴影的不透明度最大值为150 7.对直线应用立体化效果,然后拆分,结果是 A A.得到一条直线和一个四边形B.得到一个四边形 C.得到五条线段D.得到四条线段 8.关于图层的说法以下正确的有: B A.图层位置不可互换 B.图层上的对象可拖放到主图层上 C.在不同层上的对象可在同一群组中 D.不可见的层不被打印 9.如果您打开的文件中正缺少某几种字体,CorelDRAW会 D A.自动替换B.空出字体 C.临时替换 D.出现对话框让您选择 10.移动物件后单击鼠标右键得到一个副本,这一过程是:B A.复制B.再制C.克隆D.重绘 11.请选出下列哪种不属于曲线结点的模式? D A.尖突式节点B.平滑式节点C.对称式节点D.自由式节点 12.如何选取文本框和链接文本框中的全部文本? B A.文本光标三次点击一个段落B.编辑文本时,按下Ctrl +Alt C.编辑文本时,按下Ctrl + Shift D.文本光标双击一个段落 13.用什么工具可以产生连续光滑的曲线B A.手绘B.贝塞尔C.自然笔D.压力笔 14.在使用调色板填色时,用鼠标什么键可以对物体填色 A A.左键B.右键 15.在“复制”与“剪切”命令中,谁能保持物体在剪贴板上又同时保留在屏幕上。B A.两者都可以B.复制命令C.剪切命令

数字图像处理——彩色图像实验报告

6.3实验步骤 (1)对彩色图像的表达和显示 * * * * * * * * * * * *显示彩色立方体* * * * * * * * * * * * * rgbcube(0,0,10); %从正面观察彩色立方体 rgbcube(10,0,10); %从侧面观察彩色立方 rgbcube(10,10,10); %从对角线观察彩色立方体 %* * * * * * * * * *索引图像的显示和转换* * * * * * * * * * f=imread('D:\Picture\Fig0604(a)(iris).tif'); figure,imshow(f);%f是RGB真彩图像 %rgb图像转换成8色索引图像,不采用抖动方式 [X1,map1]=rgb2ind(f,8,'nodither'); figure,imshow(X1,map1); %采用抖动方式转换到8色索引图像 [X2,map2]=rgb2ind(f,8,'dither'); figure,imshow(X2,map2); %显示效果要好一些 g=rgb2gray(f); %f转换为灰度图像 g1=dither(g);%将灰色图像经过抖动处理,转换打二值图像figure,imshow(g);%显示灰度图像 figure,imshow(g1);%显示抖动处理后的二值图像 程序运行结果:

彩色立方体原图 不采用抖动方式转换到8色索引图像采用抖动方式转换到8色索引图像 灰度图像抖动处理后的二值图像

(2)彩色空间转换 f=imread('D:\Picture\Fig0604(a)(iris).tif'); figure,imshow(f);%f是RGB真彩图像 %转换到NTSC彩色空间 ntsc_image=rgb2ntsc(f); figure,imshow(ntsc_image(:,:,1));%显示亮度信息figure,imshow(ntsc_image(:,:,2));%显示色差信息figure,imshow(ntsc_image(:,:,3));%显示色差信息 %转换到HIS彩色空间 hsi_image=rgb2hsi(f); figure,imshow(hsi_image(:,:,1));%显示色度信息figure,imshow(hsi_image(:,:,2)); %显示饱和度信息figure,imshow(hsi_image(:,:,3));%显示亮度信息 程序运行结果: 原图 转换到NTSC彩色空间

数字图像处理实验报告(完整版)

数字图像处理 实验一 MATLAB数字图像处理初步 一、显示图像 1.利用imread( )函数读取一幅图像,假设其名为lily.tif,存入一个数组中; 2.利用whos 命令提取该读入图像flower.tif的基本信息; 3.利用imshow()函数来显示这幅图像; 实验结果如下图: 源代码: >>I=imread('lily.tif') >> whos I >> imshow(I) 二、压缩图像 4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息; 5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为lily.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。 6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flily.bmp。7.用imread()读入图像Sunset.jpg和Winter.jpg; 8.用imfinfo()获取图像Sunset.jpg和Winter.jpg的大小; 9.用figure,imshow()分别将Sunset.jpg和Winter.jpg显示出来,观察两幅图像的质量。其中9的实验结果如下图:

源代码: 4~6(接上面两个) >>I=imread('lily.tif') >> imfinfo 'lily.tif'; >> imwrite(I,'lily.jpg','quality',20); >> imwrite(I,'lily.bmp'); 7~9 >>I=imread('Sunset.jpg'); >>J=imread('Winter.jpg') >>imfinfo 'Sunset.jpg' >> imfinfo 'Winter.jpg' >>figure(1),imshow('Sunset.jpg') >>figure(2),imshow('Winter.jpg') 三、二值化图像 10.用im2bw将一幅灰度图像转化为二值图像,并且用imshow显示出来观察图像的特征。实验结果如下图: 源代码: >> I=imread('lily.tif') >>gg=im2bw(I,0.4); F>>igure, imshow(gg)

数字图像处理实验报告

数字图像处理实验报告

实验一数字图像处理编程基础 一、实验目的 1. 了解MA TLAB图像处理工具箱; 2. 掌握MA TLAB的基本应用方法; 3. 掌握MA TLAB图像存储/图像数据类型/图像类型; 4. 掌握图像文件的读/写/信息查询; 5. 掌握图像显示--显示多幅图像、4种图像类型的显示方法; 6. 编程实现图像类型间的转换。 二、实验内容 1. 实现对图像文件的读/写/信息查询,图像显示--显示多幅图像、4种图像类型的显示方法、图像类型间的转换。 2. 运行图像处理程序,并保存处理结果图像。 三、源代码 I=imread('cameraman.tif') imshow(I); subplot(221), title('图像1'); imwrite('cameraman.tif') M=imread('pout.tif') imview(M) subplot(222), imshow(M); title('图像2'); imread('pout.bmp') N=imread('eight.tif') imview(N) subplot(223), imshow(N); title('图像3'); V=imread('circuit.tif') imview(V) subplot(224), imshow(V); title('图像4');

N=imread('C:\Users\Administrator\Desktop\1.jpg') imshow(N); I=rgb2gary(GRB) [X.map]=gary2ind(N,2) RGB=ind2 rgb(X,map) [X.map]=gary2ind(I,2) I=ind2 gary(X,map) I=imread('C:\Users\dell\Desktop\111.jpg'); subplot(231),imshow(I); title('原图'); M=rgb2gray(I); subplot(232),imshow(M); [X,map]=gray2ind(M,100); subplot(233),imshow(X); RGB=ind2rgb(X,map); subplot(234),imshow(X); [X,map]=rbg2ind(I); subplot(235),imshow(X); 四、实验效果

数字图像处理实验

《数字图像处理》 实验报告 学院:信息工程学院 专业:电子信息工程 学号: 姓名: 2015年6月18日

目录 实验一图像的读取、存储和显示 (2) 实验二图像直方图分析 (6) 实验三图像的滤波及增强 (15) 实验四噪声图像的复原 (19) 实验五图像的分割与边缘提取 (23) 附录1MATLAB简介 (27)

实验一图像的读取、存储和显示 一、实验目的与要求 1.熟悉及掌握在MATLAB中能够处理哪些格式图像。 2.熟练掌握在MATLAB中如何读取图像。 3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。 4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。 5.图像的显示。 二、实验原理 一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。图像关于x和y坐标以及振幅连续。要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。将坐标值数字化成为取样;将振幅数字化成为量化。采样和量化的过程如图1所示。因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。 三、实验设备 (1) PC计算机 (2) MatLab软件/语言包括图像处理工具箱(Image Processing Toolbox) (3) 实验所需要的图片 四、实验内容及步骤 1.利用imread( )函数读取一幅图像,假设其名为flower.tif,存入一个数组中; 2.利用whos 命令提取该读入图像flower.tif的基本信息; 3.利用imshow()函数来显示这幅图像; 4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息; 5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件设为flower.jpg语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。 6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flower.bmp。 7.用imread()读入图像:Lenna.jpg 和camema.jpg; 8.用imfinfo()获取图像Lenna.jpg和camema.jpg 的大小;

数字图像处理实验 2017

实验一 Matlab图像基本操作 一、实验目的 熟悉利用Matlab进行图像处理的基本操作,了解图像数据的存储形式及进行图像处理编程的步骤方法。 二、实验内容 1、图像读写与显示 重点函数:imread, imwrite, imshow 2、彩色图像灰度化 计算公式:Y = R*0.299 + G*0.587 + B*0.114 3、图像马赛克 局部平均,改变窗口大小比较处理结果,如取2×2、4×4或更大尺寸的窗口 4、图像平移 分别完成图像水平方向、竖直方向和两个方向的平移 三、实验要求 1、编写代码,完成各项实验内容 2、总结实验中遇到问题及解决方案,书写实验报告 实验二图像点运算 一、实验目的 理解图像灰度变换和直方图的概念,掌握灰度变换和直方图均衡化的原理及实现方法。 二、实验内容 1、线性灰度变换 2、非线性变换 =,修改指数γ观察图像效果,总结指数项γ合理取值的一般规律 s crγ 3、直方图 绘制直方图,观察图像效果与直方图的关系 4、直方图均衡化 利用直方图均衡化确定灰度变换关系,画出变换曲线及图像处理前后的直方图 三、实验要求 1、编写代码,完成各项实验内容 2、总结实验中遇到问题及解决方案,书写实验报告

实验三邻域运算 一、实验目的 1.巩固对图像增强的认识,明确图像空域处理的类型 2.理解图像平滑与图像锐化的概念 3.掌握图像模板卷积运算的实现方法 4.锻炼编程开发图像处理算法的能力 二、实验准备 1.了解图像处理点运算和邻域运算的区别 2.学习利用模板卷积的方法进行图像邻域运算 3.复习均值滤波和中值滤波的原理 4.列出常用的模板形式,思考中值滤波要用到的简单排序方法 5.分析对比图像平滑和图像锐化模板的差异 三、实验内容与步骤 1.列出常用的卷积模板 2.基于3×3的模板,编写均值滤波的处理程序,处理含有加性高斯噪声和椒盐噪声的图像,观察处理结果 3.编写中值滤波程序,处理相同的图像与均值滤波进行比较;改变模板尺寸观察处理结果 4.编程实现利用一阶微分算子和二阶拉普拉斯算子进行图像锐化的程序 5.对比不同的邻域运算结果,体会图像锐化与图像平滑的区别 四、实验报告与思考题 1.总结实验内容及步骤方法完成实验报告,报告中要求有关键代码的注释说明及程序运行和图像处理结果 2.实验报告中回答以下问题 (1)均值滤波和中值滤波分别适用于处理哪类图像? (2)图像平滑和图像锐化所采用的模板有什么不同? (3)邻域运算的模板尺寸对处理结果有什么影响?

相关主题
文本预览
相关文档 最新文档