图像处理编程总结
关于图形图像处理实训报告总结

关于图形图像处理实训报告总结随着科技的不断发展,图形图像处理技术在现代化社会中的应用日益广泛。
图案处理技术能够极大地提高图片或视频的清晰度、美观度和可视性,对于在互联网以及媒体行业中应用非常广泛。
为了更好地掌握图形图像处理技术,本人参加了一次图形图像处理实训,下面对该实训报告进行总结。
一、实训内容本次图形图像处理实训主要分为两个部分。
第一部分是利用Photoshop软件进行图片处理,包括对亮度、对比度、色彩等进行调整。
第二部分是利用Vegas Pro软件进行视频剪辑和渲染的实践。
二、实训收获1.学习了基础的图像处理知识通过本次实训,我了解到图像处理的主要方法、原理和流程。
在实践中,我了解了亮度、对比度和色彩等基本调整方法,还学会了使用各种滤镜、效果和画笔,使图片更加美观和生动。
2.学习了视频剪辑的基本技巧本次实训的另一部分是视频剪辑实践,这对于我来说是一个新的领域。
实践中,我学习了视频时间线编辑和选区剪辑的基本技巧,学会了使用各种特效和转场,还学会了使用音频处理功能,使视频更加具有观赏性和可听性。
3.提高了沟通和协调能力在实践中,我们不仅需要自己完成图形图像处理,还需要协同工作,与其他同学共同完成要求。
这锻炼了我的团队协作能力、沟通能力和解决问题的能力,为以后更好的工作环境打下了良好的基础。
4.拓展了职业技能本次实训让我更深入了解图形图像处理技术,对于日后开展相关工作大有裨益。
我获得了更多的职业技能,并对相关工作有了更全面、准确的了解,这为我以后的职业发展提供了更多的选择和机会。
三、结论在此次图形图像处理实训中,我学到了许多有用的知识,并且对数字多媒体方面的工作有了更深入的了解。
通过这次实训,我提高了职业素养,更加有信心地面对日后的工作,并且更加积极地去学习新的知识和技术。
希望今后能更深入地掌握图形图像处理技术,并在工作中能够更好地运用和发挥。
图片处理实训报告总结

图片处理实训报告总结
本次图片处理实训主要围绕图像采集、预处理、特征提取和图像分割等方面展开。
通过本次实训,我对图像处理的基本原理和常用技术有了更深入的了解,并且掌握了相关的工具和方法。
在图像采集方面,我们学习了如何使用相机或者手机进行图像的拍摄,以及如何处理不同光照和角度下的图像。
我们使用了不同的拍摄方式和参数设置,以获得更好的图像质量。
同时,我们还学习了如何使用图像处理软件对已有的图像进行采集和处理,包括调整亮度、对比度和色彩平衡等。
在图像预处理方面,我们学习了如何去除噪声和不必要的细节,以提高图像的质量。
我们使用了滤波器对图像进行平滑和锐化处理,同时还学习了如何使用图像算法对图像进行增强处理。
通过预处理,我们能够更好地凸显出图像的目标信息和特征。
在特征提取方面,我们学习了常用的特征提取方法,包括边缘检测、角点检测和纹理特征提取等。
我们使用了不同的算法和工具对图像进行特征提取,并利用提取到的特征进行目标检测和识别。
通过特征提取,我们能够更好地分析和理解图像中的信息内容。
最后,在图像分割方面,我们学习了如何将图像分割成不同的区域或者对象。
我们使用了不同的图像分割算法,包括阈值分割、边缘检测和聚类等方法。
通过图像分割,我们能够更好地提取出图像中的目标区域,为后续的图像处理和分析提供基础。
综上所述,本次图片处理实训使我对图像处理的原理和技术有了更深入的了解,并且通过实际操作和实验,掌握了相关的工具和方法。
这对我的专业发展和实际工作都具有重要的意义,我将更加努力地学习和实践,不断提升自己在图像处理领域的能力。
图形编程总结

图形编程总结引言图形编程是计算机科学中非常重要的一部分。
通过图形编程,我们可以在屏幕上绘制各种图形、实现动画效果、开发图形界面应用程序等。
本文将总结图形编程的基本概念和常用技术,并结合实例进行说明。
基本概念像素像素(Pixel)是图形编程的基本单元。
图像以像素为单位进行绘制和处理。
每个像素包含一个颜色值,用于确定该像素的颜色。
常用的颜色表示方式有RGB (红、绿、蓝)和HSB(色相、饱和度、亮度)。
在图形编程中,我们可以通过修改像素的颜色值来实现图像的绘制和变换。
坐标系统坐标系统用于确定图像中各个点的位置。
通常使用二维坐标系统,其中原点位于左上角,水平方向为X轴,垂直方向为Y轴。
坐标用(x, y)表示,其中x为水平方向的偏移量,y为垂直方向的偏移量。
颜色混合颜色混合是指将多个颜色按照一定比例混合得到新的颜色。
常用的颜色混合方式有加法混合和乘法混合。
加法混合是将各个颜色的对应分量相加得到新的颜色。
乘法混合是将各个颜色的对应分量相乘得到新的颜色。
通过调整颜色的权重,可以实现各种颜色混合效果。
常用技术线段绘制线段绘制是图形编程中常用的技术之一。
通过指定线段的起点和终点,可以在屏幕上绘制直线。
常用的线段绘制算法有DDA算法和Bresenham算法。
DDA算法通过计算线段上各个像素点的坐标,并使用颜色填充来绘制直线。
Bresenham算法通过整数计算和误差修正的方式,实现了更高效的直线绘制。
圆形绘制圆形绘制是图形编程中常用的技术之一。
通过指定圆心坐标和半径,可以在屏幕上绘制圆形。
常用的圆形绘制算法有中点画圆算法和Bresenham画圆算法。
中点画圆算法通过计算圆上各个点的坐标,并使用颜色填充来绘制圆形。
Bresenham画圆算法则通过整数计算和误差修正的方式,实现了更高效的圆形绘制。
图像变换图像变换是指通过对图像进行平移、旋转、缩放等操作,改变图像在屏幕上的位置和大小。
常用的图像变换算法有平移算法、旋转算法和缩放算法。
图形图像处理教学工作总结

图形图像处理教学工作总结在本学期的图形图像处理教学工作中,我们注重了理论与实践的结合,以及学生创新能力的培养。
以下是对本学期教学工作的总结:课程设置与教学内容本学期的图形图像处理课程涵盖了基础的图像理论、图像编辑软件的使用、图像的采集与处理技术,以及一些高级的图像处理技术,如图像识别、图像增强和图像合成等。
课程内容紧跟行业发展趋势,确保学生能够掌握最新的图像处理技术。
教学方法与手段为了提高学生的学习兴趣和实践能力,我们采用了多种教学方法,包括课堂讲授、案例分析、小组讨论、实际操作练习和项目驱动学习。
通过这些方法,学生能够在理解理论知识的同时,增强实际操作能力。
学生能力培养在教学过程中,我们特别强调学生创新思维和解决问题的能力。
通过设置不同的项目任务,鼓励学生自主探索和实践,从而提高他们解决实际问题的能力。
同时,我们也鼓励学生参加各类图形图像处理竞赛,以提升他们的专业技能和竞争力。
教学效果与反馈通过对学生作业、项目和考试的评估,我们发现学生在图像处理的理论知识和实践技能方面都有了显著的提高。
学生普遍反映课程内容实用,教学方法多样,能够激发他们的学习兴趣。
同时,我们也收到了一些建议,比如希望增加更多的实践机会和行业案例分析。
存在的问题与改进措施尽管教学工作取得了一定的成效,但仍存在一些问题,如部分学生对理论知识掌握不够扎实,实践操作中存在一些困难。
针对这些问题,我们计划在下一学期增加更多的辅导时间,强化基础知识的教学,并提供更多的实践机会,以帮助学生更好地掌握图形图像处理技术。
总结本学期的图形图像处理教学工作整体上是成功的,我们将继续努力,不断改进教学方法,丰富教学内容,提高教学质量,以培养更多具备专业技能和创新能力的图形图像处理专业人才。
关于图形图像处理实训报告总结【九篇】

关于图形图像处理实训报告总结【九篇】实训报告总结:图形图像处理实训图形图像处理实训是计算机科学与技术专业的基础课程之一。
通过本次实训课程,我深入了解了图形图像处理的基本概念、方法和技术,并通过实际操作来提升了自己的实践能力。
下面是对本次实训的九篇报告总结:1. 实验一:图像读取与显示本次实验主要是学习如何读取和显示图像,以及使用Matplotlib库进行图像展示。
通过实验,我掌握了图像读取和显示的基本方法,并学会了基本的图像处理操作。
2. 实验二:图像的灰度变换实验二主要是学习图像的灰度变换,包括线性变换和非线性变换。
我学会了如何使用不同的灰度变换函数来调整图像的亮度和对比度,进一步提升图像的质量。
3. 实验三:图像的空间域滤波本次实验主要是学习图像的空间域滤波技术,包括均值滤波、中值滤波和高斯滤波等。
通过实验,我掌握了不同滤波方法的原理和实现方式,并学会了如何选择合适的滤波方法来降噪和模糊图像。
4. 实验四:图像的频域滤波实验四主要是学习图像的频域滤波技术,包括傅里叶变换和频域滤波等。
通过实验,我了解了傅里叶变换的原理和应用,并学会了如何使用频域滤波来实现图像的锐化和平滑。
5. 实验五:图像的形态学处理本次实验主要是学习图像的形态学处理技术,包括腐蚀、膨胀、开运算和闭运算等。
通过实验,我学会了如何使用形态学操作来改变图像的形状和结构,进一步改善图像的质量。
6. 实验六:图像的边缘检测实验六主要是学习图像的边缘检测技术,包括Sobel算子、Laplacian算子和Canny算子等。
通过实验,我了解了不同边缘检测方法的原理和应用,并学会了如何使用边缘检测来提取图像的轮廓和特征。
7. 实验七:图像的分割与聚类本次实验主要是学习图像的分割与聚类技术,包括阈值分割、区域生长和K均值聚类等。
通过实验,我掌握了不同分割与聚类方法的原理和应用,并学会了如何使用分割与聚类来识别和分析图像中的目标和区域。
8. 实验八:图像的特征提取与描述子实验八主要是学习图像的特征提取和描述子技术,包括尺度不变特征变换(SIFT)和方向梯度直方图(HOG)等。
数据图像处理心得体会总结

数据图像处理心得体会总结数据图像处理是一门非常重要的技术,在现代社会中得到了广泛的应用。
通过对数据图像进行处理,可以提取出有用的信息,并用于各种不同的应用领域。
在学习和实践过程中,我深刻体会到了数据图像处理的重要性和技术特点,并获得了一些宝贵的经验和体会。
首先,数据图像处理是一门充满挑战和创新的技术。
图像处理涉及到许多复杂的算法和模型,需要对数学、计算机科学和工程等多个领域的知识有一定的了解和掌握。
同时,由于数据图像的复杂性和多样性,处理图像的算法和方法也需要不断的创新和改进,以适应不同的应用场景和需求。
通过学习和实践,我深刻体会到了不断学习和创新的重要性,只有不断地更新自己的知识和技能,才能在数据图像处理领域中取得良好的成果。
其次,数据图像处理需要综合运用多种技术手段。
图像处理不仅仅是对图像进行简单的处理和编辑,还需要对图像进行分析和理解,提取出其中的有用信息。
在进行图像处理时,我发现需要综合运用多种技术手段,如图像滤波、图像增强、图像分割、图像识别等,才能达到更好的效果。
同时,还需要根据具体的应用场景和需求选择合适的技术方法,灵活运用这些方法解决实际问题。
因此,数据图像处理需要综合运用多种技术手段,对不同的问题选择合适的处理方法,并进行优化和改进,以获得更好的结果。
第三,数据图像处理需要具备较强的工程实践能力。
在进行数据图像处理时,往往需要进行大量的实验和调试,不断地优化和改进算法和方法。
同时,还需要根据具体的应用需求进行系统的设计和开发,将图像处理技术与实际应用相结合。
通过实践,我发现工程实践能力对于数据图像处理至关重要,只有具备了良好的实践能力,才能将理论上的算法和方法应用到实际中,实现图像的高效处理和分析。
最后,数据图像处理需要具备良好的团队合作精神。
图像处理往往是一个复杂的任务,需要多个人协同工作才能取得良好的效果。
在团队合作中,不仅需要良好的沟通和协调能力,还需要相互学习和借鉴,共同解决问题。
图形图像处理实训报告总结三篇

图形图像处理实训报告总结一篇通过这次实训,我收获了很多,一方面学习到了许多以前没学过的专业知识与知识的应用,另一方面还进步了自己动手做工程的才能。
本次实训,是对我才能的进一步锻炼,也是一种考验。
从中获得的诸多收获,也是很可贵的,是非常有意义的。
在实训中我学到了许多新的知识。
是一个让我把书本上的理论知识运用于理论中的好时机,原来,学的时候感慨学的内容太难懂,如今想来,有些其实并不难,关键在于理解。
在这次实训中还锻炼了我其他方面的才能,进步了我的综合素质。
首先,它锻炼了我做工程的才能,进步了独立考虑问题、自己动手操作的才能,在工作的过程中,复习了以前学习过的知识,并掌握了一些应用知识的技巧等。
其次,实训中的工程作业也使我更加有团队精神。
从那里,我学会了下面几点找工作的心态:一、继续学习,不断提升理论修养。
在信息时代,学习是不断地汲取新信息,获得事业进步的动力。
作为一名青年学子更应该把学习作为保持工作积极性的重要途径。
走上工作岗位后,我会积极响应单位号召,结合工作实际,不断学习理论、业务知识和社会知识,用先进的理论武装头脑,用精良的业务知识提升才能,以广博的社会知识拓展视野。
二、努力理论,自觉进展角色转化。
只有将理论付诸于理论才能实现理论自身的价值,也只有将理论付诸于理论才能使理论得以检验。
同样,一个人的价值也是通过理论活动来实现的,也只有通过理论才能锻炼人的品质,彰显人的意志。
必须在实际的工作和生活中潜心体会,并自觉的进展这种角色的转换三、进步工作积极性和主动性。
实习,是开端也是完毕。
展如今自己面前的是一片任自己驰骋的沃土,也清楚感受到了沉甸甸的责任。
在今后的工作和生活中,我将继续学习,深化理论,不断提升自我,努力创造业绩,继续创造更多的价值。
可以说这次实训不仅使我学到了知识,丰富了经历。
也帮助我缩小了理论和理论的差距。
这次实训将会有利于我更好的适应以后的工作。
我会把握和珍惜实训的时机,在将来的工作中我会把学到的理论知识和理论经历不断的应用到实际工作中,为实现理想而努力。
图像处理的工作总结报告

图像处理的工作总结报告
在过去的一段时间里,我有幸参与了图像处理的工作,并且在这个领域取得了
一些成果。
在这篇报告中,我将总结我所做的工作,以及我对图像处理领域的一些见解和思考。
首先,我所参与的图像处理工作主要包括图像的预处理、特征提取、图像分割、目标识别和图像增强等方面。
在图像的预处理中,我使用了一些常见的技术,如灰度化、去噪、平滑和锐化等,以提高图像的质量和清晰度。
在特征提取方面,我尝试了不同的特征描述子和特征匹配算法,以提取出图像中的关键信息。
在图像分割和目标识别方面,我尝试了一些经典的算法和深度学习模型,以实现对图像中目标的准确识别和定位。
在图像增强方面,我尝试了一些常见的增强技术,如对比度增强、色彩增强和细节增强等,以改善图像的视觉效果。
通过这些工作,我深刻地认识到图像处理领域的重要性和挑战性。
图像处理不
仅可以应用于医学影像、遥感影像和工业检测等领域,还可以应用于人脸识别、智能交通和虚拟现实等领域。
同时,图像处理的技术和算法也在不断地发展和演进,如深度学习、卷积神经网络和生成对抗网络等,为图像处理的应用和研究提供了新的思路和方法。
在未来的工作中,我将继续深入学习图像处理的理论和技术,不断提升自己的
专业能力和技术水平。
同时,我也将积极参与图像处理领域的研究和开发工作,为图像处理技术的应用和推广做出更大的贡献。
总的来说,图像处理是一个充满挑战和机遇的领域,我将继续努力,不断学习
和探索,为图像处理的发展和应用贡献自己的力量。
希望通过我的努力,可以为图像处理领域的发展和进步做出一些贡献。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EmguCV编程总结学习C#图像处理编程有一段时间了,然后写写自己的已经积累的经验,网上有关于C#数字图像处理的资料很少,教程方面,专门为C#数字图像处理的到目前为止我就看到了三本,这三本的内容都是利用GDI+来做图像处理的。
GDI+为我们提供了图像处理所需要的一些类,还有一些函数。
在结合C#做界面的优势,因此做图像处理我个人感觉要比c++和opencv方便,opencv中有强大的算法,但是就是这个界面不友好。
在GDI+中只是提供了图像处理的类,还有少量的函数,如果真正要做处理,大量的函数还是的需要自己编写,我看到的这三本书上讲的基本上都是编写这些函数的内容,在GDI+编程中对图像处理通常有三种方式,第一种是利用纯C#的方式,理解简单,但是效率差。
第二种是内存法,理解稍微困难点,但是效率比纯C#的要高几百倍。
第三种就是在C#下利用指针了,当然利用指针就是效率最高的了,比内存法都要效率高,但是指针的理解比较困难,如果退指针理解还可以,就推荐用这种方法。
在前面的文章中我对比过在C#中用这三种方式灰度化图像的运行效率对比,还给出了具体时间。
我看到的这三本C#图像处理的书上,其中一本的算法是按照内存法来写的,其他两本上的算法都是按照纯C#方法写的,效率令人堪忧。
当然还有一些关于GDI+的书籍,这上面就介绍的内容就不单单是图像方面的处理了,还包括其他方面的内容,这是对学软件计算机的人看的,我们了解下就可以,再说,上面处理的方式都是纯C#的方式处理的,对我们图像处理来说效率实在不好,所以看看就好。
因此,C#图像处理的话,我推荐的是指针的方法,效率最好,速度快。
这是我们直接用C#来图像处理,当然大多数算法还得自己编写程序,反正我看到的教材上都是这样教的,但是实际中,我们写大量成熟的算法是很花时间的,估计写完这些都花个好几年时间了,因此,我们还得需要一些计算机视觉处理的库,调用其中的函数完成主要的处理功能。
有本名字叫《EmguCV Essentials》的书上就对现在常见的库做了对比,这本书上对比了有三种计算机视觉库,有opencv,EmguCV,这三种库。
首先从许可证的获取方面做了对比,其中opencv是开放的,emguCv有开放的也有商业版的,就没有前两种那开放了。
下图就是对比结果:然后从可以获得的学习资料方面,这本书上也给出了对比,结果如下:可以看出来opencv的学习资料最多,文献数量多,例子多,关注的人多。
而次之,EmguCV的资料最少了。
这本书上给出的解释是,由于EmguCV就是封装的opencv,操作差不多,所以相应的专门介绍的资料就少。
当然,由于是在C#下的opencv,肯定还有有点差别的。
然后从易用程度上,这本书也给出的对比,结果如下:其中opencv易用性最差,最好,EmguCV居中。
接下来从执行效率做了对比,下面是对比表:从中可以看出opencv最好,EmguCV和P/invoke差不多,P/invoke指的就是在C#中调用封装的opencv函数,其实还是EmguCV,至于传统的C#处理方法,这里没有具体给出到底是纯C#写的还是用指针法写的,不过看运行时间应该不是纯粹的C#法写的。
最后书中给出的最终的对比,如下图:然后综合比较结果如下图:最后书中综合比较得出EmguCV综合性能比较好:其实综合性能,易用性,界面的友好性,我个人也推荐EmguCV。
为了提升程序的运行性能,通常我们编程的时候采用混合编程的方法,如果抱着单一的方法,肯定会限制性能的发挥。
根据我自己的经验,然后我说说我自己对C#编程的理解,最后给出一个图形细化的例子。
在用C#编程时,我们是和EMGUCV结合起来做的,如果EMGUCV中有处理图像的函数,那么我们就调用这些函数完成该处理的算法,比如图像灰度化,边缘检测,SIFT匹配等等,这些在实际中已经够用了。
当然,在一些情况下,有些我们需要的算法,或者自己想到的,文献中提最新提到的算法,如果我们想用这些的话,EMGUCV中是没有的,那就需要我们自己编程了。
这时候我们可以在C#中利用GDI+做,也可以在利用EMGUCV提供的类来编程,那到底哪个好了?前面我对这些做过一个对比,就是对一幅图像进行灰度处理,结果如下:可见调用EmGUCV的函数时候效率最高,然后要自己写的话利用GDI+中的指针法效率最高,不过这里还没有包括完全情况,就是利用MIplImage 来处理,最后我发现了一个很奇怪的现象,我单独定义一个MIplImage时候速度很快,和指针法效率差不多,接下来我慢慢解释:在EmguCV中承载图像的类是:Image<Bgr,Byte> ,例如我们实例化一幅图像:Image<Bgr, Byte> Img = new Image<Bgr, Byte>(curBitmap);在EMGUCV官网中推荐的对图像数据访问的形式是如下:比较慢的形式:比如假如我们要自己写灰度化图像的算法,用这种慢的形式写出来就应该这样,如下图:当然,官网还推荐一种快点的方式:例如我们同样自己假如要写灰度化算法,利用这种方式的话应该这样,如下图:当然,为了方便,我们可以单独在定义一个数组,静Img.Data给他,然后按照数组的方式处理,如下图代码:当然这两种的效率我前面都对比过了,快的方式基本在灰度一幅图像中的速度是慢的方法的两到三倍,我在贴下结果吧,如下图:当然相比于用GDI+中的指针法,慢了十几倍到几十倍不止。
好,接下来我要提到利用MIplImage类型来处理图像了,这是在OPENCV 中常用的承载图像的,如果采用指针直接访问的形式的话,速度应该很快的,和在GDI+中利用指针访问速度应该差不多的,我在这里也是利用指针直接访问的,但是从对比结果中看出,结果仅仅比EMGUCV官网推荐的慢的访问速度快点,比快的访问速度都慢,不应该出现这种情况呀。
今天,我在做程序时,突然发现的是写程序的原因,不过就简单的改动,效率就上去的,至于原因我也不知道为啥。
在上面几种方法对比的时候,我利用MIplImage类的时候是这样写的代码,如下:结果效果不是很好,今天的时候,我这样写,结果效率马上提高了,和GDI+中利用指针法基本一样的,代码如下图:对比上面两端代码,有啥区别没,对了,就这一句:MIplImage Img1 = Img.MIplImage;这里我只是新定义了一个MIplImage类,下面处理的时候就利用Img1来做处理,而不像上面代码中还要从Img.MIplImage中在取,就像在EmguCV官网推荐的快速方式访问像素时,我们在定义一个三维的矩阵,将数据取出来,然后在去访问的一样,就这么一个小小的变动,速度就上去了,下图是我处理一幅图像的时间,当然和GDI+的21ms还差了10ms,不过差别不多,比上面的方式写的快了十几倍,这里真不知道是为啥,难道是我代码写的有问题?不过这样写确实效率上去了。
当然,MIplImage中的访问也可以用cvGet2D( )的方式访问,这和opencv中的方式一样的,但是效率就慢了很多,大概要比上面指针访问的速度慢十几倍吧,下面是用这种方式写的代码:好,此外,图像就是一个矩阵,比如对于一幅图像A,有时候我们希望能像matlab那样的访问元素,比如取第10行,第10列的时候可以这样写,A[10,10],当然,C#中GDI+中提供的GetPixel()和SetPixel()函数可以帮助让我们按照这样方式实现,不过效率太低下了,然后在EMGUCV中,官网上推荐的哪两种方式都可以帮助我们按照这种方式实现,虽然效率比起用GDI+中的GetPixel()和SetPixel()要快速上不少,但是还是不够快,这时候怎么办,我们可以自己写一个函数,实现从Bitmap承载类型到矩阵的转换和在转回来。
下面就是我写的两个转换的函数,注意,这两个都是转换灰度图像的。
如果要实现彩色图像转换成矩阵,这时候我们可以转换成一个三维的矩阵,代码如下:由于有些懒,就没有贴全,截图有点不全,如果看懂的话自己可以补上后面的部分的。
这时候我们就可以利用转换的矩阵来实现如同像matlab那样的操作了,当然,从上面的代码中可以看到,矩阵的转换都是在GDI+中按照指针的方式写的,速度很快的。
下面是写的二值话图像细化的算法,这才EMGUCV中也没有,我是在GDI+中写的,就是利用转换成矩阵的方式操作的,我只给出一部分代码,显示是按矩阵的方式做的,比较方便而已。
在学opencv的教材上,也有一种叫做利用c++外壳的方式访问数据,我看了貌似就是转换成这种数组的形式来访问的,如下图所示为教材上的叫法:当然,转换成如数组那样的矩阵形式,非常方便,好理解,速度也很快,比用C#中的提取像素的方式和EMGUCV官网上推荐的提取像素的方法要快好多,至少十几倍吧。
不过,这还不是最快的,最快的是什么,当然是用指针写的,不过指针写起来不太好理解,不要紧,接下来我们换种方式写就好理解了。
感觉和用A[i,j]这样提取像素的方式类似,编程的时候也好理解。
在opencv中我们访问IplImage类型的图像数据时候,教材上有一种叫做直接访问的方式,这就是我们前面写的程序中用的方式,下图是教材上提到的:这样访问,速度最快的,不过确实不好看,不好理解。
其实,我们换种写法就好理解了,还是指针,还和上面的访问一样的,不过就是换种写法而已,在opencv的教材上叫做用指针直接访问,其实这和直接访问都是一样的,都是用的地址,不过就是写法不一样而已。
在C#的教材上访问图像的方式如下图指针所示:其实我们改成用data[i*step+j]这种形式访问就好了,这不就像用矩阵形式访问的吗,不过矩阵形式是data[i,j],这里多了一个步宽,逗号改成的加号而已,如果是彩色图的话,在还有一个通道数,data[i*step+j*3]访问data(i,j)处的B分量像素,data[i*step+j*3+1]访问data(i,j)处G分量的像素,data[i*step+j*3+2]访问data(i,j)处R分量的像素。
这里的step在GDI+中其实就是Bitmapdata类的扫描宽度stride,所以把如上图的C#中的GDI+中利用指针写的代码,改成如下写而已,代码如下,截图也如下:public unsafe Bitmap ToGray(Bitmap srcImg){BitmapData imgData = srcImg.LockBits(newRectangle(0,0,srcImg.Width,srcImg.Height),ImageLockMode.ReadWrite,srcImg.PixelFormat);byte temp = 0;byte* data = (byte*)(imgData.Scan0);//int step=imgData.Stride;for (int i = 0; i < imgData.Height; i++){for (int j = 0; j < imgData.Width; j++){temp = (byte)(data[i * imgData.Stride + j * 3] * 0.114 + data[i * imgData.Stride + j * 3 + 1] * 0.578 + data[i * imgData.Stride + j * 3 + 2] * 0.299);data[i * imgData.Stride + j * 3] = data[i * imgData.Stride + j * 3 + 1] = data[i * imgData.Stride + j * 3 + 2] = temp;}}srcImg.UnlockBits(imgData);return (srcImg);}因此,我们改成这样写,和按照矩阵数组的操作理解就一样的,不用在将指针形式转换为我们容易理解的矩阵数组形式了,下面我把喜欢算法不用矩阵数组的形式写了,直接就按照上面理解的方式写,部分代码如下:好,我们对比一下转换成矩阵数组形式细化的算法运行时间和直接按照指针理解成矩阵数组的形式的细化算法的运行时间,比如我们细化一些网格子:首先采用转换成矩阵数组的形式处理:采用理解成矩阵数组形式处理:可见,采用直接指针处理的速度要比转换一下快100多毫秒,其实转换成矩阵的操作是用指针写的,话不了多少时间,转换成矩阵然后转换回来,对这幅图片加起来最多就30几毫秒,但是综合下来就慢了100多。