实验5-图形处理
图形与图像处理实验
图形与图像处理实验学院:专业:班级:指导老师:学生姓名:实验一一、实验目的1、复习MATLAB语言的基本用法;2、掌握MATLAB语言中图象数据与信息的读取方法;3、掌握在MATLAB中绘制灰度直方图的方法,了解灰度直方图的均衡化的方法。
二、实验原理MATLAB是集数值计算,符号运算及图形处理等强大功能于一体的科学计算语言。
作为强大的科学计算平台,它几乎能够满足所有的计算需求。
MATLAB软件具有很强的开放性和适用性。
在保持内核不变的情况下,MATLAB可以针对不同的应用学科推出相应的工具箱(toolbox)。
目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、概率统计、信号处理、图像处理和物理仿真等,都在工具箱(Toolbox)家族中有自己的一席之地。
在实验中我们主要用到MATLAB提供图象处理工具箱(Image Processing Toolbox)三、实验要求copy两个图形文件girl1.bmp和girl2.bmp到MATLAB目录下work文件夹中。
1、将MATLAB目录下work文件夹中的girl.bmp图象文件读出.用到imread,imfinfo等文件,观察一下图象数据,了解一下数字图象在MATLAB中的处理就是处理一个矩阵。
将这个图象显示出来(用imshow),尝试修改map颜色矩阵的值,再将图象显示出来,观察图象颜色的变化。
2、将MATLAB目录下work文件夹中的girl2.bmp图象文件读出,显示它的图象及灰度直方图,可以发现其灰度值集中在一段区域,用imadjust函数将它的灰度值调整到[0,1]之间,并观察调整后的图象与原图象的差别,调整后的灰度直方图与原灰度直方图的区别。
四、实验程序和结果>>x=imread('C:\Program Files\MATLAB\R2007a\toolbox\images\imdemos\moon.tif')>> size(x)ans =206 345>> y=x(:,:,1);>> y=x(:,:,1);>>imadjust(x,[0,1],[])>> map=rand(256,3);>>imshow(y,>> figure,imhist(y)05010015020025020040060080010001200y=imadjust(x,[0,1],[0.1,0.5])imshow(x),figure,imshow(y)figure,imhist(y(:,:,1),256)0501001502002502004006008001000120014001600实验二本实验是综合性实验,涵盖Matlab 程序设计、图像点运算、代数运算、几何运算等多章基本知识及其应用。
图形图像处理实验
W=(1/16>*G*f*G
实验结果:
W =
3.1875 0.0625 -0.8125 0.0625
0.0625 -0.0625 0.0625 -0.0625
0.1875 0.0625 -0.8125 0.0625
0.0625 -0.0625 0.0625 -0.0625
C1=dct2(I>。
C2=fftshift(C1>。
subplot(122>。imshow(log(abs(C2>>+1,[0 10]>。
实验结果:
原始图像 DCT系数
3.3 已知二维数字图像矩阵f,求此图像的二维DWT,并反求f。
f=[2 5 5 2。3 3 3 3。3 3 3 3。2 5 5 1]。
len=28。
theta=14。
PSF=fspecial('motion' , len , theta>。
wnr1 = deconvwnr(blurred,PSF>。 %维娜滤波复原图像
figure, imshow(wnr1>。
------------- %读入有噪声模糊图像并命名为blurrednoisy
reg2=deconvreg(Edged,PSF,NP*1.2>。
subplot(2,2,2>, imshow(reg2>。 %大NP
subplot(1,2,1>,imshow(J>。
N=numel(J>。
pr = imhist(J>/N。
kБайду номын сангаас0:255。
《图形图像处理》实验教案新部编本
[20 – 20学年度第__学期]
任教学科:_____________
任教年级:_____________
任教老师:_____________
xx市实验学校
潍坊学院教案
课题
选区的使用
课时
2
教学目的与要求
1.熟悉Photoshop的桌面环境与文件操作。
2.灵活的制作各种选区。
3.通过对选区的填充,变换以及应用样式,制作出各种不同的图象。
授课效果分析总结
潍坊学院教案
课题
综合实例
课时
2
教学目的与要求
1.熟悉Photoshop综合操作。
2.使用Photoshop设计制作一作品。
教学重点与难点
重点:Photoshop综合操作
难点:作品创意及表达
教 学 过 程
主 要 内 容 及 步 骤
备注
1. 选定主题。
2. 使用Photoshop根据主题设计一个平面作品。
教 学 过 程
主 要 内 容 及 步 骤
备注
1、启动Photoshop,调出路径、形状工具,绘制图形,深入领会其意义
2、创建一条路径,并对节点与线段进行调整。
3、使用路径工具将一幅图象制作成邮票。
授课效果分析总结
潍坊学院教案
课题
文字工具和文字特效
课时
2
教学目的与要求
1.使学生掌握几个常用的文字特效的制作;
3. 通道建立与编辑
制作选区,新建通道;在通道面板中选中通道;用绘图工具绘制;通道转为选区;
4. 图层蒙板练习
制作选区,在图层面板中建立蒙板;
打开通道面板,观察与蒙板相联系的通道,理解蒙板与通道的关系;
图形图像处理实验报告
2、创建实时上色组。
3、使用实时上色工具,为功夫小子填上自己喜欢的颜色。
绘制精美的信笺。
1、新建文档,选择矩形工具,绘制一个矩形。
2、单击渐变按钮,弹出渐变面板,设置矩形的颜色和透明度。
3、确认矩形处于选中状态,用画笔进行描边。
4、使用钢笔工具绘制一个心形,设置颜色和渐变。
9.学习符号,学会自己创建自定义的符号或者删除不再使用的符号。
二、实验器材及实验准备:
1.预习书本相关内容。
2.下载相关实验素材。
3.下载并安装AI软件。
三、实验内容
1.为“咖啡杯未填色.ai”进行填色;设计“鸢尾花家居用品”的logo并填色。
2.绘制小老鼠。
3.绘制“蜜蜂宝宝”及为其填色。
4.为文档“制作弯曲文字.ai”设置弯曲的标题文字效果。
让我印象最深的是ai中的“实时描摹”工具,它竟然能将图像转化为矢量图形,这对于很多手工用钢笔工具难以绘制的图形得以实现。
在绘制小老鼠时,我发现我比身边的同学画地都要快一些,在我观察了他们绘制时,我发现我在绘制中使用了一些小技巧,不仅能够提高绘制的速度,还能提升绘制的精度。比如在绘制老鼠的屁股时,它就像一个半圆,我们可以先用椭圆工具绘制一个圆形,然后截去不需要的部分,留下老鼠的尾巴。在绘制老鼠的两只耳朵时,也可以运用相应的技巧,耳朵看起来就像是一个圆截去不需要的部分,然后再将身体与两只耳朵然后头部相连就形成了一个老鼠的轮廓。然后再对老鼠的细节部分进行绘制和修饰,这样绘制的速度明显提高,而且绘制出的老鼠很可爱。
3.掌握通过编辑路径的锚点或是曲线的方向线和方向点来改变图形的形状。
4.掌握ai中提供的文字编辑工具。
5.学习ai中的实时描摹工具,掌握将位图、照片转换成矢量路径,并对其编辑,描摹色彩等。
样例——图像的处理-实验报告
沈阳师范大学现代教育技术实验报告实验题目图像的处理学号06304133 姓名高阳专业年级应用数学06级04班指导教师薛峰提交时间 2008年10月13日一、实验目的1. 掌握修改图像尺寸的方法2. 掌握改变图像色彩的方法3.掌握修补图像的方法4.掌握绘制各种选区的方法5.掌握合成图像的方法6.学会将处理好的图像保存为各种类型文件的方法二、实验内容及要求1、打开“剪裁”文件夹中的“照相机.jpg”图像,将图像的大小改为为640*480(长*宽),并裁切掉图像中的文字,将剪裁好的图像以存储为jpeg格式,大小控制在100kb以内,文件名均为“剪裁”。
(要求写出处理的步骤并且提供相应的操作截图)2、打开“色彩模式”中的“淑女.jpeg”图像,然后将图片处理成双色调效果,(最终效果参看给定的效果图片),然后保存图像,格式为“JPEG”,文件命名为“双色调效果”。
(要求写出处理的步骤并且提供相应的操作截图)3、将“修补”文件夹中的“女孩”图片修复,最后调整颜色。
修补后的图片另存为“女孩修复.jpg”,大小控制在100kb以内。
(参考效果图片)(要求写出处理的步骤并且提供相应的操作截图)4、对“托起地球”文件夹中的“手掌”和“地球”图片进行合成,合成效果参看“效果”图片,最后将处理好的图片另存为“托起地球.jpg”,文件控制在100kb之内(要求写出处理的步骤并且提供相应的操作截图)三、实验过程和具体步骤第一题1.调整图像大小打开”裁剪”—“照相机.jpg”图片,单击”图像”—“图像大小”,在弹出的窗口中,在像素大小下面方框中填写宽度:480 高度:640 单击”好”如下图在调整图像大小时,如果在下面的”约束比例”前打对号,系统会按比例扩大或缩小图像大小,就无法将图像大小改为480*640,消去对号就可以了.2.裁切掉图像中的文字单击左端工具箱中的”裁剪工具”,单击图像空白处,拖动鼠标圈住相机(不能包括文字),按回车.如图3.图像的存储单击”文件”—“另存为”,在弹出的对话框中,文件名写”裁剪”,格式选”JPEG”,单击”保存”,在弹出的对话框中,调整滑块的位置,知道下面的大小框中的数字在100kb以内.单击”好”第二题1.打开”色彩模式”—“淑女.jpeg”,单击”图像”—“模式”—“灰度”扔掉颜色信息,执行”图像”—“模式”—双色调”,将第二种墨颜色改为偏绿,就出现参考效果那样了.单击“文件”—“另存为”,文件命名“双色调效果”格式选JPEG,单击保存在弹出的对话框中调整滑块,使图像的大小在100kb以内,单击“好”。
实验五 基本图形处理技术
实验七 曲线与曲面一、实验目的根据曲线和曲面的基础知识和常用曲线的数学基础,对其算法进行程序设计,验证算法的正确性,并通过程序结果加深对常用曲线数学模型的理解。
二、实验任务1.抛物线程序设计;2.Hermite 曲线程序设计; 3.Bezier 曲线的算法实现; 4.B 样条曲线的程序设计三、实验内容和实验步骤。
任务一:Hermite 曲线程序设计Hermite 曲线方程为:P(t)=FB=TMB=[ t 3 t 2 t程序设计时只考虑二维图形的显示,其代数形式为:x(t)=TMB x , B x =[ P 0x P 1x R 0x R 1x ]Ty(t)= TMB y , B y =[ P 0y P 1y R 0y R 1y ]T所以,只要给出Hermite 曲线的起点坐标(P 0x ,P 0y ),终点坐标(P 1x ,P 1y ),以及起点处的切矢量(R 0x ,R 0y )和终点处的切矢量(R 1x ,R 1y ),参数变量t 在[0,1]的范围内分别取0.01,0.02,…,1,步长为0.01,取100个点,分别求出P(t)=[ x(t),y(t)],在计算机屏幕上显示出每个坐标点,即可绘出Hermite 曲线。
P 0 P 1 R 0 R 1任务二:Bezier 曲线的算法实现(1)算法描述根据 Q(t)=∑P i •B• C i n t i (1-t)n-i并且 C inBezier 曲线的C 语言算法描述如下: #include <math.h> #include <graphics.h>void computeCoefficients(int n, int *c){int k, i;for (k=0;k<=n;k++) /*求C kn =n!/(k!(n-k)!= )*/{int c[k]=1;for (i=n; i>=k+1; i--) /*求c[k]=n*(n-1)…(k+1) */ c[k]*=i;for (i=n-k; i>=2; i--) /*求c[k]/(n-k)!*/ c[k]/=i; }}void computepoint(float t,wcPt3 *pt,int ncontrols,wcPt3 *controls,int *c) {int i, n=ncontrols-1; float blend;pt->x=0.0; pt->y=0.0; pt->z=0.0; for (i=0; i<ncontrols; i++){blend = c[k]*powf(t,i)*powf(1-t,n-i); /*求 C k n t i (1-t)n-i */ pt->x+=controls[i].x*blend; /*求x(t)*/ pt->y+=controls[i].y*blend; /*求y(t)*/ pt->z+=controls[i].z*blend; /*求z(t)*/ } }void Bezier(wcPt3 *controls, int ncontrols, int m, wcPt3 *curve) {int *c=(int *) malloc(ncontrols *sizeof(int)); int i;computecoefficients(ncontrols-1,c);ni=0 n(n-k)!for (i=0; i<=m; i++)computepoint(i/(float)m,&curve[i],ncontrols,controls,c);free(c);}在主程序中提供特征多边形的各个顶点坐标放入controls[]数组中,ncontrols为顶点的个数,m为曲线上取的样点数,比如m=100表示取100个样点。
关于图形图像处理实训报告总结【九篇】
关于图形图像处理实训报告总结【九篇】实训报告总结:图形图像处理实训图形图像处理实训是计算机科学与技术专业的基础课程之一。
通过本次实训课程,我深入了解了图形图像处理的基本概念、方法和技术,并通过实际操作来提升了自己的实践能力。
下面是对本次实训的九篇报告总结:1. 实验一:图像读取与显示本次实验主要是学习如何读取和显示图像,以及使用Matplotlib库进行图像展示。
通过实验,我掌握了图像读取和显示的基本方法,并学会了基本的图像处理操作。
2. 实验二:图像的灰度变换实验二主要是学习图像的灰度变换,包括线性变换和非线性变换。
我学会了如何使用不同的灰度变换函数来调整图像的亮度和对比度,进一步提升图像的质量。
3. 实验三:图像的空间域滤波本次实验主要是学习图像的空间域滤波技术,包括均值滤波、中值滤波和高斯滤波等。
通过实验,我掌握了不同滤波方法的原理和实现方式,并学会了如何选择合适的滤波方法来降噪和模糊图像。
4. 实验四:图像的频域滤波实验四主要是学习图像的频域滤波技术,包括傅里叶变换和频域滤波等。
通过实验,我了解了傅里叶变换的原理和应用,并学会了如何使用频域滤波来实现图像的锐化和平滑。
5. 实验五:图像的形态学处理本次实验主要是学习图像的形态学处理技术,包括腐蚀、膨胀、开运算和闭运算等。
通过实验,我学会了如何使用形态学操作来改变图像的形状和结构,进一步改善图像的质量。
6. 实验六:图像的边缘检测实验六主要是学习图像的边缘检测技术,包括Sobel算子、Laplacian算子和Canny算子等。
通过实验,我了解了不同边缘检测方法的原理和应用,并学会了如何使用边缘检测来提取图像的轮廓和特征。
7. 实验七:图像的分割与聚类本次实验主要是学习图像的分割与聚类技术,包括阈值分割、区域生长和K均值聚类等。
通过实验,我掌握了不同分割与聚类方法的原理和应用,并学会了如何使用分割与聚类来识别和分析图像中的目标和区域。
8. 实验八:图像的特征提取与描述子实验八主要是学习图像的特征提取和描述子技术,包括尺度不变特征变换(SIFT)和方向梯度直方图(HOG)等。
实验五 彩色图像处理
实验五彩色图像处理一、实验目的使用MatLab 软件对图像进行彩色处理。
使学生通过实验熟悉使用MatLab软件进行图像彩色处理的有关方法,并体会到图像彩色处理技术以及对图像处理的效果。
二、实验要求要求学生能够完成彩色图像的分析,能正确讨论彩色图像的亮度、色调等性质;会对彩色图像进行直方图均衡,并能正确解释均衡处理后的结果;能够对单色图像进行伪彩色处理、利用多波长图像进行假彩色合成、进行单色图像的彩色变换。
三、实验内容与步骤(1) 彩色图像的分析调入并显示彩色图像flower1.tif ;拆分这幅图像,并分别显示其R,G,B分量;根据各个分量图像的情况讨论该彩色图像的亮度、色调等性质。
(2) 彩色图像的直方图均衡接内容(1);显示这幅图像的R,G,B分量的直方图,分别进行直方图均衡处理,并显示均衡后的直方图和直方图均衡处理后的各分量;将处理完毕的各个分量合成彩色图像并显示其结果;观察处理前后图像的彩色、亮度、色调等性质的变化。
(3) 假彩色处理调入并显示红色可见光的灰度图像vl_red.jpg、绿色可见光的灰度图像vl_green.jpg 和蓝色可见光的灰度图像vl_blue.jpg;以及近红外灰度图像infer_near.jpg和中红外灰度图像infer_mid.jpg;以图像vl_red.jpg为R;图像vl_green.jpg为G;图像vl_blue.jpg为B,将这三幅图像组合成可见光RGB彩色图像;分别以近红外图像infer_near.jpg和中红外图像infer_mid替换R分量,形成假彩色图像;观察处理的结果,注意不同波长红外线图像组成图像的不同结果(4) 伪彩色处理1:灰度切片处理调入并显示灰度图像head.jpg;利用MATLAB提供的函数对图像在8~256级的范围内进行切片处理,并使用hot模式和cool 模式进行彩色化;观察处理的结果。
(5) 彩色变换(选做)调入并显示灰度图像Lenna.jpg;使用不同相位的正弦函数作为变换函数,将灰度图像变换为RGB图像。
图形图像处理实训报告总结集合9篇
图形图像处理实训报告总结集合9篇作为一个AI助手,我可以为您生成一份图形图像处理实训报告总结集合,但请注意,这些报告仅供参考。
1. 实训报告一本次实训旨在学习数字图像处理的基本知识和常用算法,主要包括图片读取、图像增强、图像分割等内容。
通过实践操作,我们掌握了常见的图像处理方法,如灰度化、二值化、中值滤波、Canny边缘检测等,并通过实验验证了这些算法的效果。
2. 实训报告二本次实训主要内容是光线追踪(Ray Tracing)方法在图形图像处理中的应用。
从基本的光线追踪原理入手,我们逐步学习了光线追踪算法、阴影算法、反射算法、折射算法等,理论和实践相结合,我们通过编写代码实现了一个小型的光线追踪引擎,并将其应用到了图像渲染中。
3. 实训报告三本次实训内容是图像识别,我们学习了图像识别的基本知识和算法,并通过实验实现了一些基本的图像识别功能,如人脸识别、手写数字识别等。
我们更深入地研究了卷积神经网络(CNN)的原理和应用,搭建了一个深度学习模型,并对其进行了训练和验证,得到了很好的识别效果。
4. 实训报告四本次实训主要内容是图像处理中的变换算法,我们学习了常见的几何变换和像素变换,如旋转、缩放、平移、镜像、色彩空间转换等。
通过实践操作,我们掌握了这些算法的原理和具体实现方法,并对其效果进行了验证。
在实践中,我们发现不同的变换算法的效果和适用范围有很大的差异,需要根据具体需求进行选择。
5. 实训报告五本次实训内容是图像处理中的形态学操作,如膨胀、腐蚀、开运算、闭运算等。
我们学习了这些算法的原理和实现方法,并通过实验验证了它们的效果。
我们还研究了基于形态学操作的图像分割方法,并编写代码实现了一个基本的图像分割引擎。
通过实践,我们更加深入地认识了形态学操作在图像处理中的应用。
6. 实训报告六本次实训的主题是图像特征提取与匹配。
我们学习了常见的图像特征提取算法,如SIFT、SURF、ORB等,并通过实验了解了它们的实现方法和效果。
图像处理 实验报告
图像处理实验报告图像处理实验报告一、引言图像处理是计算机科学与工程领域的重要研究方向之一,它涉及到对图像进行获取、处理、分析和识别等一系列操作。
本实验旨在通过对图像处理算法的实现和应用,探索图像处理的基本原理和方法。
二、实验目的1. 学习图像处理的基本概念和算法;2. 掌握常用的图像处理工具和软件;3. 实现并应用图像处理算法,提高图像质量和识别效果。
三、实验方法1. 实验环境:使用Python编程语言和OpenCV图像处理库;2. 实验工具:Jupyter Notebook;3. 实验步骤:a) 图像读取:使用OpenCV读取图像文件,并将其转换为灰度图像;b) 图像增强:对灰度图像进行直方图均衡化,增强图像的对比度;c) 图像滤波:使用高斯滤波器对图像进行平滑处理,去除噪声;d) 边缘检测:应用Canny算法进行边缘检测,并提取图像中的边缘信息;e) 图像分割:使用基于阈值的方法对图像进行分割,得到目标区域;f) 特征提取:计算图像中目标区域的形状、纹理等特征;g) 图像识别:使用机器学习算法对提取的特征进行分类和识别。
四、实验结果与分析1. 图像增强:经过直方图均衡化处理后,图像的对比度得到了明显的提升,细节更加清晰;2. 图像滤波:高斯滤波器的应用能够有效平滑图像,去除噪声,使图像更加平滑自然;3. 边缘检测:Canny算法能够准确地检测出图像中的边缘,提取出目标物体的轮廓;4. 图像分割:基于阈值的分割方法能够将图像中的目标区域与背景区域分离开来,方便后续的特征提取和识别;5. 特征提取:通过计算目标区域的形状、纹理等特征,可以对图像进行更加细致的描述和识别;6. 图像识别:应用机器学习算法对提取的特征进行分类和识别,可以实现对图像中目标物体的自动识别和分类。
五、实验总结通过本次实验,我们深入学习了图像处理的基本原理和方法,并通过实际操作实现了图像的增强、滤波、边缘检测、分割、特征提取和识别等一系列操作。
实验5 图像形态学处理
实验5 图像形态学处理一.实验目的1. 加深对二值图像的理解;2. 掌握简单的二值图像形态学处理的原理与方法;3. 通过本实验掌握利用VC++编程实现形态学的方法,提高学生图像处理能力和实际动手能力。
二.实验原理形态学运算是结构元素与图像进行逻辑运算,产生新的图像的图像处理方法。
二值图像B 和结构元素S 是定义在笛卡儿网格上的集合,网格中值为1的点是集合的元素。
当结构元素的原点移到点(x,y)时,记为Sxy ,为简单起见,结构元素为3x3,且全都为1,在这种限制下,决定输出结果的是逻辑运算1. 腐蚀定义:}|,{B s y x S B E xy ⊆=⊗=算法:a) 用3x3的结构元素,扫描图像的每一个像素。
b) 用结构元素与其覆盖的二值图像做“与”操作。
c) 如果都为1,结果图像的该像素为1,否则为0。
2. 膨胀定义:}|,{Φ≠⋂=⊕=B s y x S B E xy算法:a) 用3x3的结构元素,扫描图像的每一个像素。
b) 用结构元素与其覆盖的二值图像做“与”操作。
c) 如果都为0,结果图像的该像素为0,否则为1。
3. 开运算定义:S S B S B E ⊕⊗==)( ,即先腐蚀,再膨胀。
算法:a) 用3x3的结构元素,对图像做腐蚀操作。
b) 再用3x3的结构元素,对图像做膨胀操作。
4. 闭运算定义:S S B S B E ⊗⊕=∙=)(,即先膨胀,再腐蚀。
算法:a) 用3x3的结构元素,对图像做膨胀操作。
b) 再用3x3的结构元素,对图像做腐蚀操作。
四.实验步骤形态学处理程序框架如下:五.实验仪器1.计算机;2.VC++程序;3.移动式存储器(软盘、U盘等)。
4.记录用的笔、纸。
六.实验报告内容1..叙述实验过程;2.提交实验的原始图像和结果图像。
七.思考题1.比较开运算与闭运算的效果,说明两种方法各适合何种应用。
2.分析中轴骨架算法基本操作的条件,说明各条件是对什么类型的点进行处理。
实验五 图像形态学处理
实验五图像形态学处理一、实验目的:1、进一步了解MATLAB关于图像处理的相关指令。
2、了解图像腐蚀、膨胀、开启、闭合及细化的目的及意义,加深对其的感性认识,巩固所学理论知识。
3、能够编程实现图像的各种形态学处理。
4、观察并比较图像处理结果。
二、实验内容:图像腐蚀、图像膨胀、开启、闭合、细化三、实验仪器PC一台,MATLAB软件。
四、实验报告要求:1、写出程序2、附上处理前后的图像3、写出对处理前后图像的分析(即:说明图像的变化)有关结构元素说明:se1 = strel('square',11) % 结构元素为边长11的正方形se2 = strel('line',10,45) % 倾角为45度长为10的线性结构se3 = strel('disk',15) % 半径为15的圆盘se4 = strel('ball',15,5) %半径为15高为5的球形结构一、图像的膨胀运算(在右图中任选一幅图像处理)函数说明:se=strel('ball',8,8); %设定直径为8的球形结构元素I2=imdilate(I,se); %膨胀函数,I:原图像,se:结构元素,I2:输出图像二、任选题(一)中一幅图像根据膨胀程序编写腐蚀程序,实现腐蚀处理,保存处理前后图像(图像要标明'title'),并分析处理结果。
yuan.bmp函数: se=strel('ball',8,8); %设定球形结构元素I2=imerode(I,se); %腐蚀函数三、编写程序对gujia.bmp 图像实现开启闭合处理,保存处理前后图像(图像要标明'title'),并分析处理结果。
%开启闭合函数说明:se=strel('disk',5,4); %先生成圆形结构元素I1=imopen(I,se); %开启操作I :原图像,se :结构元素,I1:输出图像I2=imclose(I,se); %闭合操作四、对“Hello Word ” 图像进行一次或多次细化,观察效果,并细化到一个元素函数说明:I1=bwmorph(I,'thin',n); % I 为输入的二值图像,'thin':进行的操作,此处为细化,n :执行操作的次数,I1:输出图像% 细化I=imread(' Hello World .bmp');I=I(:,:,1);subplot(221);imshow(I); title('原图像');I1=bwmorph(I,'thin',1); %细化1次,'thin'为细化处理,将thin 改为skel 可以提取骨架 subplot(222);imshow(I1); title('细化1次的结果');I2=bwmorph(I,'thin',inf); %细化到目标只有一个元素subplot(223);imshow(I2); title('细化到只有一个元素');kong.bmp gujia.bmp Hello World.bmp原图像细化1次的结果细化到只有一个元素。
《PhotoShop图形处理》实验大纲
《Photoshop CS平面设计》实验大纲一、实验的地位、目的和任务《Photoshop CS平面设计》主要是通过使用Photoshop实现数字图像的艺术创造和再加工,在平面设计、电视节目制作和创意过程中以及摄影作品中使用完美的图像。
本课程全面地介绍Photoshop的基本操作和色彩理论,说明各种工具和滤镜的使用方法,既介绍了入门级的图像处理技术,又讨论了中高级的滤镜、通道、路径和蒙版的处理技巧,并着重解释各种处理技术在现实生活中的应用。
总的教学目标是使学生了图像的基本概念,掌握Photoshop的用户界面和基本操作方法,掌握各种工具和使用,掌握图层的应用技巧,掌握路径的操作、通道和蒙板的应用,掌握应用各种滤镜处理图像及色彩与色调的调整,熟悉动画的制作。
具备应用Photoshop工具软件创作设计艺术作品和商各种广告的能力。
这门课我按教学计划共有54课时,其中理论27占课时,上机实验占27课时。
本课程分个实验,每个实验由浅入深,由易到难,让学生逐步掌握photoshop 制作的精髓。
二、培养职业技术能力目标1.掌握Photoshop界面以及提供各种不同工具和调板等内容。
2.掌握各种区域选择工具,移动工具和裁剪工具的应用技巧。
3.了解工具的使用方法,并学习绘制修改图片。
4.了解各种色彩模式及其工作原理,掌握Photoshop调整图像色彩的方法。
5.掌握图层的概念,学习图层的使用方法。
6.掌握路径的建立方法和对路径的应用。
7.应用通道和蒙版处理图像。
8.掌握Photoshop的内部滤镜的特性及使用方法。
9.使用ImageReady CS2制作GIF动画的方法。
10.掌握Photoshop中各种命令及功能的综合使用技巧。
三、实验内容与要求实验一 Photoshop的基本操作1.实验目的(1)对Photoshop CS2的工作方式有一个总体认识。
(2)重点掌握Photoshop界面的各个组成部分以及提供给我们的各种不同的工具和调板,文件操作等内容。
图像处理实验报告实验报告
一、实验目的1、熟悉位图文件的文件格式,掌握位图数据读取并在屏幕上显示的方法。
2、掌握在计算机上进行直方图均衡化以及线性增强的方法。
3、通过实验体会一些主要的分割算子对图像处理的效果,以及各种因素对分割效果的影响。
4、熟练掌握应用MATLAB软件编程进行图像处理。
二、实验环境一台pc机,MATLAB软件编程环境。
三、实验内容1、图像的现实和读取:运用MATLAB软件编程,读取指定的256色灰度图像的数据,显示该文件的文件头和信息头数据的值,并在屏幕上显示该图象。
2、直方图的显示和均衡化:运用MATLAB软件编程,实现内容1中图像直方图的显示和均衡化。
3、图像分割:使用Prewitt 算子、Sobel 算子对图像进行边缘检测处理,完成图像分割实验。
4、图像增强:编写线性增强的程序及相应的显示程序,对指定图象进行线性增强,将原始图象及增强后的图象都显示于屏幕上,比较增强的效果。
四、实验步骤1、打开计算机,启动MATLAB程序。
2、图像读取与显示。
MATLAB中从图像文件中读取数据用函数imread(),这个函数的作用就是将图像文件的数据读入矩阵中,用imshow()函数显示出来。
imread('C:\Users\weixiaoxu\Desktop\图像处理\图像处理.jpg','jpg');imshow('C:\Users\weixiaoxu\Desktop\图像处理\图像处理.jpg');title('原图像')3、直方图的显示A=imread('C:\Users\weixiaoxu\Desktop\图像处理\图像处理.jpg','jpg'); figure;imhist(A),title('对应直方图')4、直方图均衡化MATLAB提供了histeq函数(自动直方图均衡化)I=imread('C:\Users\weixiaoxu\Desktop\图像处理\图像处理.jpg','jpg'); K=histeq(I);figure;imshow(K),title('经直方图均衡化后的图')figure;imhist(K),title('直方图均衡化后的直方图')5、图像的边缘检测用Sobel算子做边缘检测[A,map]=imread('C:\Users\weixiaoxu\Desktop\图像处理\图像处理.jpg','jpg'); image=double(A);u=zeros(1,9);k=zeros(1,9);for i=2:255,for j=2:255,u(1)=0*image(i,j);u(2)=2*image(i,j+1);u(3)=1*image(i-1,j+1);u(4)=0*image(i-1,j);u(5)=-1*image(i-1,j-1);u(6)=-2*image(i,j-1);u(7)=-1*image(i+1,j-1);u(8)=0*image(i+1,j);u(9)=1*image(i+1,j+1);rimage1(i,j)=abs(sum(u));k(1)=0*image(i,j);k(2)=0*image(i,j+1);k(3)=1*image(i-1,j+1);k(4)=2*image(i-1,j);k(5)=1*image(i-1,j-1);k(6)=0*image(i,j-1);k(7)=-1*image(i+1,j-1);k(8)=-2*image(i+1,j);k(9)=-1*image(i+1,j+1);rimage2(i,j)=abs(sum(k));xiaoqiu(i,j)=rimage1(i,j)+rimage2(i,j);end,end,figure,imshow(xiaoqiu,map),title('Sobel锐化');用prewitt算子做边缘检测[A,map]=imread('C:\Users\weixiaoxu\Desktop\图像处理\图像处理.jpg','jpg'); image=double(A);u=zeros(1,9);k=zeros(1,9);for i=2:255,for j=2:255,u(1)=0*image(i,j);u(2)=1*image(i,j+1);u(3)=1*image(i-1,j+1);u(4)=0*image(i-1,j);u(5)=-1*image(i-1,j-1);u(6)=-1*image(i,j-1);u(7)=-1*image(i+1,j-1);u(8)=0*image(i+1,j);u(9)=1*image(i+1,j+1);rimage1(i,j)=abs(sum(u));k(1)=0*image(i,j);k(2)=0*image(i,j+1);k(3)=-1*image(i-1,j+1);k(4)=1*image(i-1,j);k(5)=1*image(i-1,j-1);k(6)=0*image(i,j-1);k(7)=-1*image(i+1,j-1);k(8)=-1*image(i+1,j);k(9)=-1*image(i+1,j+1); rimage2(i,j)=abs(sum(k));xiaoqiu(i,j)=rimage1(i,j)+rimage2(i,j);end,end,figure,imshow(xiaoqiu,map),title('prewitt边缘检测');7、图像的处理均值滤波I=imread('C:\Users\weixiaoxu\Desktop\图像处理\图像处理.jpg','jpg');h=fspecial('average',3);I2=uint8(round(filter2(h,I)));imshow(I2),title('均值滤波')中值滤波I=imread('C:\Users\weixiaoxu\Desktop\图像处理\图像处理.jpg','jpg');I3=medfilt2(I,[3,3]);imshow(I3),title('中值滤波')五、实验总结通过本次试验基本掌握了应用MATLAB软件编程进行图像处理的方法,熟悉了位图文件的文件格式,掌握了位图数据读取显示,直方图均衡化以及线性增强的方法,并学会了运用分割算子对图像进行边缘检测和图像分割处理的方法。
计算机图形学-实验五 直线和多边形的裁剪
大学实验报告学院:计算机科学与信息学院专业:软件工程班级:102班学号实验组实验时间指导教师成绩实验项目名称实验五直线和多边形的裁剪实验目的掌握直线段的裁剪算法以及多边形的裁剪算法实验要求熟练掌握直线段的裁剪算法以及多边形的裁剪算法的基本原理,并编写测试代码进行实验。
实验原理Cohen-Sutherland直线剪裁算法以区域编码为基础,将窗口及其周围的,8个方向以4 bit的二进制数进行编码。
右图所示的编码方法将窗口及其邻域分为5个区域:⑴域:区域(0000)。
⑵上域:区域(1001, 1000, 1010)。
⑶下域:区域(0101, 0100, 0110)。
⑷左域:区域(1001, 0001, 0101)。
⑸右域:区域(1010, 0010, 0110)。
当线段的两个端点的编码的逻辑“与”非零时,线段为显然不可见的,对某线段的两个端点的区号进行位与运算,可知这两个端点是否同在视区的上、下、左、右;Cohen-Sutherland直线剪裁算法的算法思想是:对于每条线段P1P2分为三种情况处理。
(1)若P1P2完全在窗口,则显示该线段P1P2简称“取”之。
(2)若P1P2明显在窗口外,则丢弃该线段,简称“弃”之。
(3)若线段既不满足“取”的条件,也不满足“弃”的条件,则在交点处把线段分为两段。
其中while (code1 != 0 || code2 != 0) {if ((code1 & code2) != 0) {// 两端点的编码相与不为0,表示直线在窗口外return;}if (code1 != 0) {code = code1;} else {code = code2;}if ((LEFT & code) != 0) {// 直线的端点与矩形窗口的左边编码相与!=0 x = XL;y = y1 + (y2 - y1) * (XL - x1) / (x2 - x1);// 求直线与矩形窗口的左边界的交点} else if ((RIGHT & code) != 0) {// 直线的端点与矩形窗口的右边编码相与!=0x = XR;y = y1 + (y2 - y1) * (XR - x1) / (x2 - x1);// 求直线与矩形窗口的右边界的交点} else if ((BOTTOM & code) != 0) {// 直线的端点与矩形窗口的下边编码相与!=0y = YB;x = x1 + (x2 - x1) * (YB - y1) / (y2 - y1);// 求直线与矩形窗口的下边界的交点} else if ((TOP & code) != 0) {// 直线的端点与矩形窗口的上边编码相与!=0y = YT;x = x1 + (x2 - x1) * (YT - y1) / (y2 - y1);// 直线的端点与矩形窗口的上// 边编码相与!=0}if (code == code1) {x1 = x;y1 = y;code1 = encode(x, y);} else {x2 = x;y2 = y;code2 = encode(x, y);}}g.drawLine((int) (x1 + 0.5), (int) (y1 + 0.5), (int) (x2 + 0.5),(int) (y2 + 0.5));}二、多边形裁剪的核心代码为:通过点集画直线或者多边形:private void draw() {//通过点集画直线或者多边形for (int i = 1; i < points.size(); i++) {Point p1 = new Point();p1 = points.get(i);int x1 = (int) p1.getX();int y1 = (int) p1.getY();Point p2 = new Point();p2 = points.get(i - 1);int x2 = (int) p2.getX();int y2 = (int) p2.getY();g.drawLine(x1, y1, x2, y2);}}多边形的裁剪函数:private Point[] cutPicture(Point[] point, Point[] edge) {// 剪裁函数,参数为(点集,边)Point[] intersectPoint = new Point[20];//存放交点的集合for (int j = 0; j < 20; j++) {intersectPoint[j] = new Point();}Point s = new Point();Point p = new Point();Point t = new Point();int i = 0;int length = point.length;s = point[length - 1];for (int j = 0; j < length; j++) {p = point[j];if (inside(p, edge)) {// sp在窗口,情况1if (inside(s, edge)) {intersectPoint[i] = p;i += 1;} else {// s在窗口外,情况4t = intersect(s, p, edge);intersectPoint[i] = t;i += 1;intersectPoint[i] = p;i += 1;}} else if (inside(s, edge)) {// s在窗口,p在窗口外,情况3t = intersect(s, p, edge);intersectPoint[i] = t;i += 1;}// 情况2没有输出s = p;}List<Point> tempList = new ArrayList<Point>();for (int k = 0; k < i; k++) {if (intersectPoint[k] != null) {Point pt = intersectPoint[k];tempList.add(pt);}}Point[] temp = new Point[tempList.size()];for (int j = 0; j < tempList.size(); j++) {temp[j] = new Point();temp[j] = tempList.get(j);}intersectPoint = temp;return intersectPoint;}判断点是否在裁剪边的可见侧:private boolean inside(Point point, Point[] edge) {//判断点是否在裁剪边的可见侧// 裁剪边为窗口下边if ((edge[0].y == edge[1].y) && (edge[0].x < edge[1].x)) {if (point.y >= edge[0].y) {return true;}}// 裁剪边为窗口上边if ((edge[0].y == edge[1].y) && (edge[0].x > edge[1].x)) {if (point.y <= edge[0].y) {return true;}}// 裁剪边为窗口右边if ((edge[0].x == edge[1].x) && (edge[0].y < edge[1].y)) {if (point.x <= edge[0].x) {return true;}}// 裁剪边为窗口左边if ((edge[0].x == edge[1].x) && (edge[0].y > edge[1].y)) {if (point.x >= edge[0].x) {return true;}}return false;}直线段与窗口边界求交:private Point intersect(Point s, Point p, Point[] edge) {//直线段与窗口边界求交,并返回交点Point t = new Point();if (edge[0].y == edge[1].y) {// 水平裁剪边t.y = edge[0].y;t.x = s.x + (edge[0].y - s.y) * (p.x - s.x) / (p.y - s.y);} else if (edge[0].x == edge[1].x) {// 垂直裁剪边t.x = edge[0].x;t.y = s.y + (edge[0].x - s.x) * (p.y - s.y) / (p.x - s.x);}return t;}鼠标的监听类(部类):class MouseMonitor extends MouseAdapter {//通过鼠标的单击获取点,并画出直线或者多边形public void mouseClicked(MouseEvent e) {points.add(e.getPoint());if (points.size() > 1) {draw();}}}键盘的监听类(部类):class KeyMonitor extends KeyAdapter {// 键盘控制public void keyPressed(KeyEvent e) {switch (e.getKeyCode()) {case KeyEvent.VK_R:// 清空画布和点集panel.repaint();points.removeAll(points);break;case KeyEvent.VK_W://对裁剪窗口的处理g.setColor(Color.RED);g.drawRect(XL, YB, XR - XL, YT - YB);//存放裁剪窗口的边top = new Point[2];// 存放裁剪窗口的上边top[0] = new Point(XL, YB);top[1] = new Point(XR, YB);right = new Point[2];//存放裁剪窗口的右边right[0] = new Point(XR, YB);right[1] = new Point(XR, YT);bottom = new Point[2];//存放裁剪窗口的下边bottom[0] = new Point(XR, YT);bottom[1] = new Point(XL, YT);left = new Point[2];//存放裁剪窗口的左边left[0] = new Point(XL, YT);left[1] = new Point(XL, YB);break;case KeyEvent.VK_A://对直线段进行裁剪g.setColor(Color.GREEN);Point p1 = points.get(0);Point p2 = points.get(1);lineCut(p1.getX(), p1.getY(), p2.getX(), p2.getY());break;case KeyEvent.VK_B://对多边形进行裁剪source = new Point[points.size()];//得到多边形的点for (int i = 0; i < points.size(); i++) {source[i] = points.get(i);}g.setColor(Color.GREEN);wT = cutPicture(source, top);//得到多边形与裁剪窗口上边的交点wR = cutPicture(wT, right);//得到多边形与裁剪窗口右边的交点wB = cutPicture(wR, bottom);//得到多边形与裁剪窗口下边的交点wL = cutPicture(wB, left);//得到多边形与裁剪窗口左边的交点第二种情况:线段在裁剪窗口的部,线段完全可见。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验5. 图形处理
一、 实验目的
1. 理解matlab 绘图方法;
2. 掌握绘制二维数据曲线图的方法;
3. 通过练习掌握如plot 、subplot 等绘制二维曲线图常用的函数。
二、 实验环境
1. 计算机
2. matlab7.x
三、 实验说明
1. 熟悉matlab7.x 运行环境,正确操作,认真观察;
2. 实验学时:2学时;
3. 自主编写修改程序,必要时参考相关资料;
4. 保存整理实验结果,提交实验报告。
四、 实验内容
练习掌握如下函数:
exp,Plot ,Stem ,stair,ploar,bar ,,pie,subplot, hold
title , xlable ,ylable text grid legend axis
1. 在一张图形上画出下面三个函数的曲线,要求横坐标轴范围控制在
[-2 ,3]之间,纵坐标控制在[-4, 4]之间,图形要有标题,有图例说明及横纵坐标说明。
A.红色虚线画出)sin(t y π= ,0<t<2。
B. 绿色实线画出 , ,
C.蓝色点线画出y2=2cos(2t)+3sin(5t),-1<t<2,离散点处用菱形标出。
程序:>> t1=(0:pi/100:2);
t2=(0:pi/100:3);
T3=(-1:pi/100:2);
t4=(-1:pi/10:2);
y1=sin(pi*t1);
f=exp(-t2).*sin(2*pi*t2);
y2=2*cos(2*t3)+3*sin(5*t3);
y3=2*cos(2*t4)+3*sin(5*t4);
plot(t1,y1,'r:',t2,f,'g',t3,y2,'b-.',t4,y3,'d');
axis([-2 3 -4 4]);
title('三函数曲线');
xlabel('x');ylabel('y');
text(-1 ,3, 'y2=2cos(2t)+3sin(5t)');
text(2.5 ,0 ,'f(t)=exp(-t)sin(2pi*t)');
text(1.5, -1 ,'sin(pi*t)')
2.某企业全年各季度的产值(单位:万元)分别为:2347,1827,2043,3025,
试用饼图作统计分析。
程序: pie([2347,1827,2043,3025]);
title('某企业全年各季度的产值饼图');
legend('第一季度','第二季度','第三季度','第四季度')
3.已知y1=x2 ,y2=cos(2x),y3=y1X y2,完成下列操作:
(1)在同一坐标系下用不同的颜色和线型绘制三条曲线。
x=0:pi/100:5;y1=x.*x; y2=cos(2*x); y3=(x.*x).*cos(2*x); plot(x,y1,'r-',x,y2,'g:',x,y3,'--');axis([0 5 -5 5])
(2)以子图形式绘制三条曲线。
x=0:pi/100:5;
y1=x.*x;
y2=cos(2*x);
y3=(x.*x).*cos(2*x);
subplot(1,3,1);
plot(x,y1);axis([0 2.5 0 2.5]);
subplot(1,3,2);
plot(x,y2);
axis([0 5 -2 2])
subplot(1,3,3);
plot(x,y3);axis([0 4.5 -4 5])
(3)分别用条形图、阶梯图、杆图和填充绘图绘制三条曲线。
程序1:
x=0:0.35:5;
y1=x.*x;
subplot(2,2,1);bar(x,y1,'g');
subplot(2,2,2);stairs(x,y1,'b');
subplot(2,2,3);stem(x,y1,'r');
subplot(2,2,4);fill(x,y1,'y')
程序2;
x=0:0.35:5;y2=cos(2*x);
subplot(2,2,1);bar(x,y2,'g');
subplot(2,2,2);stairs(x,y2,'b');
subplot(2,2,3);stem(x,y2,'r');
subplot(2,2,4);fill(x,y2,'y')
程序3:
x=0:0.35:5;y3=(x.*x).*cos(2*x);
subplot(2,2,1);bar(x,y3,'g');
subplot(2,2,2);stairs(x,y3,'b');
subplot(2,2,3);stem(x,y3,'r');
subplot(2,2,4);fill(x,y1,'y')
程序1图:
程序2图;
程序3图:。