当前位置: 首页 > news >正文

电商网站分析石家庄进入应急状态

电商网站分析,石家庄进入应急状态,网站页面设计网页说明,印度网站后缀概要 随着计算机技术的飞速发展#xff0c;图像技术在各领域的研究和应用日渐深入和广泛。opencv是近年来推出的开源、免费的计算机视觉库,利用其所包含的函数可以很方便地实现数字图像处理。本文旨在对opencv进行一个快速全面简介,通过介绍图像处理的相关函数#xff0c;使读…概要 随着计算机技术的飞速发展图像技术在各领域的研究和应用日渐深入和广泛。opencv是近年来推出的开源、免费的计算机视觉库,利用其所包含的函数可以很方便地实现数字图像处理。本文旨在对opencv进行一个快速全面简介,通过介绍图像处理的相关函数使读者能快速形成对opencv印象。 本系统用opencv作为图像处理的核心使用Qt作为程序的界面开发工具使得界面开发和图像处理分离开方便程序进行开发。同时利用面向对象的VS2013编程工具,用C语言进行程序编写,大大提高了计算机的运行速度。   本文首先阐述了opencv的特点以及结构,然后以图像变换、图像增强、形态学处理和滤镜为例介绍了opencv在数字图像处理中的典型应用。   opencv算法库为C编程处理数字图像提供了很大的方便,其必将成为图像视频处理领域的强有力的工具。 一、研究背景与意义 11 研究图像处理的背景和意义 数字图像处理指的是应用数字计算机对图像进行分析、加工和处理。人们采集、表现与传送数据比较完整方便的途径主要来自于图像伴着计算机技术开发程度的日益加深数字图像处理技术的适用范围越来越广。人们要想简捷、实时的采集源自全球各处的图像且确保图像的质量和清晰程度就应当不断对数字图像处理技术进行研究。其中可以应用一此特殊的数学计算以此对图像数据实现加工与分析满足人们的视觉感受与现实需求。此外还可以使用光学中的一此理论方法对图像进行加工处理然而其加工过程相对数字处理更加复杂且存在很多限制性不如数字图像处理灵活方便[[[] 吴国荣. 数字图像处理的发展现状与趋势研究[J]. 中国新通信,2017,03:153.]]。   数字图像处理的产生和迅速发展主要受三个因素的影响一是计算机的发展二是数学的发展特别是离散数学理论的创立和完善三是广泛的农牧业、林业、环境、军事、工业和医学等方面的应用需求的增长。   数字图像处理的基本特点   1目前数字图像处理的信息大多是二维信息处理信息量很大。如一幅256×256低分辨率黑白图像要求约64kbit的数据量对高分辨率彩色512×512图像则要求768kbit数据量如果要处理30帧/秒的电视图像序列则每秒要求500kbit22.5Mbit数据量。因此对计算机的计算速度、存储容量等要求较高。   2数字图像处理占用的频带较宽。与语言信息相比占用的频带要大几个数量级。如电视图像的带宽约5.6MHz而语音带宽仅为4kHz左右。所以在成像、传输、存储、处理、显示等各个环节的实现上技术难度较大成本亦高这就对频带压缩技术提出了更高的要求。   3数字图像中各个像素是不独立的其相关性大。在图像画面上经常有很多像素有相同或接近的灰度。就电视画面而言同一行中相邻两个像素或相邻两行间的像素其相关系数可达0.9以上而相邻两帧之间的相关性比帧内相关性一般说还要大些。因此图像处理中信息压缩的潜力很大。   4由于图像是三维景物的二维投影一幅图像本身不具备复现三维景物的全部几何信息的能力很显然三维景物背后部分信息在二维图像画面上是反映不出来的。因此要分析和理解三维景物必须作合适的假定或附加新的测量例如双目图像或多视点图像。在理解三维景物时需要知识导引这也是人工智能中正在致力解决的知识工程问题。   5数字图像处理后的图像一般是给人观察和评价的因此受人的因素影响较大。由于人的视觉系统很复杂受环境条件、视觉性能、人的情绪爱好以及知识状况影响很大作为图像质量的评价还有待进一步深入的研究。另一方面计算机视觉是模仿人的视觉人的感知机理必然影响着计算机视觉的研究。例如什么是感知的初始基元基元是如何组成的局部与全局感知的关系优先敏感的结构、属性和时间特征等这些都是心理学和神经心理学正在着力研究的课题。 随着计算机更新换代技术的高速发展以及操作系统和平台的开源性数字图像处理系统的性能得到了很大的提高而另一方面产品日益大规模集成化成品价格日益下降使得图像处理技术更加广泛地应用于各行各业[[[] 李志玉,邓月明. 面向行业应用的数字图像处理研究综述[J]. 电脑与信息技术,2015, 04:32-34.]]。   1、航天和航空技术方面的应用数字图像处理技术在航天和航空技术方面的应用除了上面介绍的JPL对月球、火星照片的处理之外另一方面的应用是在飞机遥感和卫星遥感技术中。许多国家每天派出很多侦察飞机对地球上有兴趣的地区进行大量的空中摄影。对由此得来的照片进行处理分析以前需要雇用几千人而现在改用配备有高级计算机的图像处理系统来判读分析既节省人力又加快了速度还可以从照片中提取人工所不能发现的大量有用情报。这些图像无论是在成像、存储、传输过程中还是在判读分析中都必须采用很多数字图像处理方法。现在世界各国都在利用陆地卫星所获取的图像进行资源调查如森林调查、海洋泥沙和渔业调查、水资源调查等灾害检测如病虫害检测、水火检测、环境污染检测等资源勘察如石油勘查、矿产量探测、大型工程地理位置勘探分析等农业规划如土壤营养、水份和农作物生长、产量的估算等城市规划如地质结构、水源及环境分析等。我国也陆续开展了以上诸方面的一些实际应用并获得了良好的效果。在气象预报和对太空其它星球研究方面数字图像处理技术也发挥了相当大的作用。   2、生物医学工程方面的应用数字图像处理在生物医学工程方面的应用十分广泛而且很有成效。除了上面介绍的CT技术之外还有一类是对医用显微图像的处理分析如红细胞、白细胞分类染色体分析癌细胞识别等。此外在X光肺部图像增晰、超声波图像处理、心电图分析、立体定向放射治疗等医学诊断方面都广泛地应用图像处理技术。   3、通信工程方面的应用当前通信的主要发展方向是声音、文字、图像和数据结合的多媒体通信。具体地讲是将电话、电视和计算机以三网合一的方式在数字通信网上传输。其中以图像通信最为复杂和困难因图像的数据量十分巨大如传送彩色电视信号的速率达100Mbit/s以上。要将这样高速率的数据实时传送出去必须采用编码技术来压缩信息的比特量。在一定意义上讲编码压缩是这些技术成败的关键。除了已应用较广泛的熵编码、DPCM编码、变换编码外目前国内外正在大力开发研究新的编码方法如分行编码、自适应网络编码、小波变换图像压缩编码等。   4、工业和工程方面的应用在工业和工程领域中图像处理技术有着广泛的应用如自动装配线中检测零件的质量、并对零件进行分类印刷电路板疵病检查弹性力学照片的应力分析流体力学图片的阻力和升力分析邮政信件的自动分拣在一些有毒、放射性环境内识别工件及物体的形状和排列状态先进的设计和制造技术中采用工业视觉等等。其中值得一提的是研制具备视觉、听觉和触觉功能的智能机器人将会给工农业生产带来新的激励目前已在工业生产中的喷漆、焊接、装配中得到有效的利用。   5、军事公安方面的应用在军事方面图像处理和识别主要用于导弹的精确末制导各种侦察照片的判读具有图像传输、存储和显示的军事自动化指挥系统飞机、坦克和军舰模拟训练系统等公安业务图片的判读分析指纹识别人脸鉴别不完整图片的复原以及交通监控、事故分析等。目前已投入运行的高速公路不停车自动收费系统中的车辆和车牌的自动识别都是图像处理技术成功应用的例子。   6、文化艺术方面的应用目前这类应用有电视画面的数字编辑动画的制作电子图像游戏纺织工艺品设计服装设计与制作发型设计文物资料照片的复制和修复运动员动作分析和评分等等现在已逐渐形成一门新的艺术:计算机美术。   7、机器人视觉机器视觉作为智能机器人的重要感觉器官,主要进行三维景物理解和识别,是目前处于研究之中的开放课题。机器视觉主要用于军事侦察、危险环境的自主机器人,邮政、医院和家庭服务的智能机器人,装配线工件识别、定位,太空机器人的自动操作等。   8、视频和多媒体系统目前,电视制作系统广泛使用的图像处理、变换、合成,多媒体系统中静止图像和动态图像的采集、压缩、处理、存贮和传输等。 12 图像处理的研究现状 目前低成本硬件加上相关技术发展再加之发展中的新应用领域可以预料数字图像处理将会继续迅速发展并在应用上发挥更重要的作用。就国内的研究情况而言在理论方面己取得不少成果。如医学诊断的应用、图像压缩编码、目标识别和跟踪等但在实际应用还很欠缺所以将理论应用于实践势在必行。未来将从超高速、高分辨率、立体化、多媒体、智能化和标准化方向发展具体体现在以下几个方面[[[] 贺东霞,李竹林,王静. 浅谈数字图像处理的应用与发展趋势[J]. 延安大学学报(自然科学版),2013,04:18-21.]]:   1、计算机视觉随着计算机技术和人工智能、思维科学研究的迅速发展数字图像处理将向更高更深层次发展。机器人视觉作为智能机器人的重要感觉器官主要进行三维景物理解和识别是目前研究之中的开放话题。主要用于军事侦察、危险环境的自主机器人、邮政、医院和家庭服务的智能机器人、装配线工件识别定位、太空机器人的自动操作等。因人类本身对自己的视觉还了解甚少因此计算机视觉是一个有待人们进一步探索的新领域。   2、虚拟现实虚拟现实是指由于计算机实时生成一个虚拟的三维空间。目前虚拟现实随着计算机软硬件技术的提高虚拟现实系统将会受到很大重视并将迅速的发展。通过采用数据手套及在机器人身上的摄像机人们可以真实感受机器人所处的环境并且能够操纵机器人。另外网上虚拟现实也是一个研究重点。   3、三维重建人类对社会事物的认识和工具的使用一直喜欢将其掌握在自己手中通过亲身实际操作来完成社会生产。因此将原来二维的东西通过三维来展现早己成为时代的发展趋势。如地图方面对三维电子地图的应用;军事方面利用电子沙盘可实现任意角度旋转、放大缩小水平、垂直等方向上的距离的计算。另外两点之间的障碍物、剖面轮廓等也能被直观显示。除此之外还能模拟飞行路线等。所有这些为指挥作战带来了极大的方便。如何在计算机中对场景进行快速、有效的重建不仅仅是基于上面所提到的优势促使人类去研究实践而事实上它一直以来都是计算机视觉研究领域的热点和难点也是数字图像处理的发展趋势之一。   4、图像压缩、分割、识别算法的研究图像理解虽然在理论方法研究上己取得不少的进展但它本身是一个比较难的研究领域存在不少困难正因为如此图像处理理论和技术受到各界的广泛重视当前图像处理面临的主要任务是研究新的处理方法、构造新的处理系统开拓更广泛的应用领域。比如针对各种类型图像开发专业压缩算法、图像分割算法、图像识别算法。尤其是对小波变换、模糊数学等的研究。 二、开发环境与工具介绍 在整个平台的设计和开发过程中我们用到了Qt作为我们的界面工具在图像处理方面我们还调用了OpenCV中的一些函数后台用到了数据库用来存储医学图像的数据。 21 Qt的概述 211 Qt的介绍 Qt是一个跨平台的C图形用户界面库由挪威Troll Tech公司出品。目前产品包括Qt、基于Framebuffer的Qt Embedded、快速开发工具Qt Designer、国际化工具Qt Linguist等部分。Qt不但支持所有Unix系统而且支持Linux,也支持Windows平台。    Qt是基于面向对象的C语言它提供了信号signal和槽slot的对象通信机制具有可查询和可设计的属性以及强大的事件和事件过滤器。同时它还具有字符国际化即支持根据上下文进行国际化字符串翻译。许多Qt特性基于QObject的继承通过标准C技术实现。 图形用户界面是用户与计算机进行交互的操作方式即用户与计算机之间互相传递信息的方式它因美观、大方、简单易用而深受广大用户的喜爱。由挪威TrollTech公司开发的Qt是一个用于跨平台的图形界面程序开发的C工具包提供给应用程序开发者建立图形用户界面所需的所有功能。Qt是使用源代码级“一次编写随处编译”的方式用于构建多平台图形用户界面程序它完全面向对象且很容易扩展提供给应用程序开发者建立艺术级图形用户界面所需的功能提供了信号与槽的机制替代回调函数使组件间信号传递更安全、简单因此它己经成为全世界范围内数千种成功的应用程序的基础为世界上数千个最大的公司包括IBM ,摩托罗拉和夏普等提供开发软件[[[] 黄艳芳. 基于Qt4的图形用户界面程序设计与游戏开发[J].电子设计工程,2011,17:49- 53. ]]。 212 Qt的特点 Qt作为新型的GUI开发工具具有与一般的工具包所不同的特征使它的应用非常广泛其特点如下所述   1. 面向对象   Qt具有模块设计和组件或元素的可重用性的特点。一个组件不需要知道它的内容和用途通过signal和slot与外界通信、交流。而且所有Qt的组件都可通过继承。    2. 组件间的相互通信    Qt提供signal和slot概念这是一种安全可靠的方法它允许回调并支持对象之间在彼此不知道对方信息的情况下进行合作这使Qt非常合适于真正的组件编程。    3. 友好的联机帮助    Qt包括大量的联机参考文档有超文本HTML方式、UNIX帮助页、man手册和补充的指南。对于初学者指南将一步步地解释Qt编程。   4. 用户自定义 其他的工具包在应用时都存在一个普遍的问题就是经常没有真正适合需求的组件生成的自定义组件对用户来说也是一个黑匣子。比如在Motif手册中就讨论了用户自定义的组件的问题。而在Qt中能够创建组件具有绝对的优越性生成自定义组件非常简单并且容易修改组件。   5. 方便性   由于Qt是一种跨平台的GUI工具包所以它对编程者隐藏了在处理不同窗口系统时的潜在问题。为了将基于Qt程序更加方便Qt包含了一系列类该类能够使程序员避免了在文件处理、时间处理等方面存在依赖操作系统方面的细节问题。   6. 国际化   Qt为本地化应用提供完全的支持所有用户界面的文本或字符串都可以利用翻译工具将其译成各国语言。另外Qt完全支持双字节16bit国际字符标准。   7. 丰富的API函数   为了适合用户的需求Qt的API提供了250个C类该类大多数用于专门的GUI。Qt还提供了基于模板的初始化、文件和通用的I/O设备、目录管理、日期/时间类、常用表达式解析等。目的是利用这些类建立或生成不同的功能用它们来实现Qt的通用化。除此之外也可以利用STL标准模块库或其他工具包。   8. 完整的一套组件   Qt编程的基本模块构件称为组件一个组件是一个用户界面的组成部分比如按钮、滚动条。Qt包含用来创建专业外观的用户界面所需要的所有组件。 213 Qt编程相关技术 1、信号与槽   信号和槽机制是Qt编程的基础这个机制可以让编程人员把这些互不了解的对象绑定在一起。信号是一个特定的标识一个槽就是一个函数槽和普通的C成员函数几乎是一样的 可以是虚函数可以被重载可以是公有的保护的或者私有的并且也可以被其他C成员函数直接调用还有它们的参数可以是任意类型唯一不同的是槽还可以和信号连接在一起当某个事件出现时通过发送信号可以将与之相关的槽函数激活即执行槽函数代码 在程序中使用QObject connect 函数来将某个信号和某个槽进行关联 而信号和槽之间的真正关联是由Qt的信号和槽机制来实现的 connect函数语法如下connect sender SIGNAL signal receiver SLOT slot sender和receiver 是QObject对象指针signal和slot是不带参数的函数原型。 信号和槽的关联关系可以有几种模式 1一个信号和一个槽关联。 2 一个信号和多个槽关联当发射这个信号的时候会以不确定的顺序一个接一个地调用这些槽。 3多个信号和一个槽关联无论发射的是哪一个信号都会调用这个槽另外一个信号还可以与另外一个信号相连接当发射第一个信号时也会发射第二个信号信号与信号之间的连接和信号与槽之间的连接有时是难以区分的。 信号与槽除了可以在程序中用connect函数手动关联外Qt的元对象还提供了信号与槽的自动关联对于Qt窗口部件已经提供的信号 如果能按下面的规则命名槽函数那么Qt就能够自动进行关联。采用的都是自动关联信号与槽的方 式更加简单快捷。   2、事件   事件功能简单来说就是当一个事件产生后相关控件作出回应 Qt事件的处理过程是首先QApplication的事件循环体从事件队列中拾取本地窗口系统事件或者其他事件译成QEvent然后把QEvent送 给QObjectevent最后再送给QWidgetevent 对事件进行处理Qt已经将上述那些繁琐的调用步骤封装极大减轻了编程人员的负担。   3、定时器   Qt中的QTimer类提供了定时器信号和单触发定时器它在内部使用定时器事件来提供更通用的定时器QTimer的使用比较简单创建一个QTimer使用start 来开始并且把它的timeout 连接到适当的槽 当这段时间过去了它将会发射timeout 信号QTimer的精确度依赖于底下的操作系统和硬件绝大多数平台支持20 ms的精确度一些平台可以提供更高的。如果Qt不能传送定时器触发所要求的数量 它将会默默地抛弃一些 一些操作系统限制可能用到的定时器的数量Qt会尽力在限制范围内工作当QTimer的父对象被销毁时它也会被自动销毁。   4、按钮   QPushButton窗口部件提供了命令按钮 主要用来提供点击动作控件pushButton 用自动关联信号与槽的方式void_on_pushButton_clicked 关联信号与槽 当按钮被鼠标空格键或者键盘快捷键激活它发射clicked 信号连接这个信号来执行按钮的操作。   5、绘图   Qt的2D图形系统的基础是类QPainter。QPainter能够绘制各种几何图形点线矩形椭圆圆弧弦扇形多线段贝赛尔曲线还能绘制位图图像和文字。在控件上绘图时先创建一个QPainter把绘图设备指针传给QPainter对象然后在绘图函 数paintEvent QPaintEvent *event中通过函数painter.setPen 设置画笔的颜色大小和所绘曲线类型通过函数painter.draw函数绘制需要的图形通过函数QBrush brush QColor 设置画刷颜色用画刷给图形填充颜色paintEvent 函数是一个事件处理函数在控件需要重新绘制的时候调用Qt中很多情况下都会产生绘制事件调用paintEvent 函数 1 当控件第一次显示时Qt自动产生绘制事件使控件绘制自身。 2 当控件尺寸发生变化时系统产生绘制事件。 3 如果控件被其他的窗口遮住窗口移走时产生绘制被遮住部分的事件。 4 如果 调 用 了QWidgetupdate和QWidgetrepaint 函数产生绘制事件update 函数和repaint 函数有所不同 repaint 立刻产生绘制事件重新绘制控件而调用update 后只是交给Qt一个产生绘制事件的计划 如果控件在屏幕上不可见那么这两个函数什么都不做 如果update 被调用了多次之后Qt就把这几个连续的绘制事件合为一个事件避免闪烁。 22 OpenCV概述 221 OpenCV的定义 OpenCVopen source computer vision library诞生于Intel研究中心是一个开放源码的计算机视觉库。0penCV采用C/C语言编写可以运行在Linux/Windows/Mac等操作系统上。0penCV还提供了Python、Ruby、 MATLAB以及其他语言的接口。它包含的函数有500多个覆盖了计算机视觉的许多应用领域[[[] 秦小文,温志芳,乔维维. 基于OpenCV的图像处理[J]. 电子测试,2011,07:39-41.]]。 222 OpenCV的特点 1OpenCV采用C/C语言编写可以运行在Linux/Windows/Mac等操作系统上。 2OpenCV提供了Python、Ruby、MATLAB以及其他语言的接口。 3它采用优化的C代码编写能够充分利用多核处理器的优势 4具有良好的可移植性 223 OpenCV的设计目标 执行速度尽量快主要关注实时应用。如果是希望在Intel平台上得到更快的处理速度可以购买Intel的高性能多媒体函数库IPPIntegrated Performance Primitives。IPP库包含许多从底层优化的函数这些函数涵盖多个应用领域。如果系统已经安装了IPP库OpenCV会在运行时自动使用相应的IPP库。 三、系统分析与设计 31 平台的功能架构 本平台根据“自顶向下逐步求精”的程序设计原则总体功能包括文件、变换、图像增强、形态学处理、滤镜在每个功能下实现各自不同的子功能如下对各自的功能进行一个简单的介绍。   1、 文件 文件要完成主要功能就是实现图像的读取和保存系统的正常退出如图3.1所示。 图 3.1 文件结构示意   2、变换 变换分为图像的镜像、旋转、缩放和截图,如图3.2所示。 图 3.2 变换结构示意   镜像操作可以使得图像实现沿着水平轴方向来进行翻转和沿着垂直方向轴来进行翻转。 旋转操作可以自定义图像的旋转角度正值代表顺时针旋转负值代表逆时针旋转。并且可以选择是否保留图像的全部信息。   缩放操作可以使得图片以任意的水平或者垂直系数对图像进行设置本平台还提供了几种常见的插值方式来对图像进行缩放。   截图可以自定义选取的图片的区域鼠标按下操作的位置代表图像的左上角顶点鼠标抬起操作的位置代表图像的右下角顶点之后进行截取ROI感兴趣区域,选取完成区域以后会弹窗提示选择的区域大小。   3、图像增强 图像增强分为参数调整、非线性滤波、线性滤波和图像修复如图3.3所示 图 3.3 图像增强结构示意   参数调整可以对图像进行亮度和对比度的调整即图像的明暗程度和图像的边缘对比强度。 线性滤波是用各自的线性滤波器对图像进行处理。 非线性滤波是用各自的处理算法对图像及西宁处理。 图像修复可以将受损的图片、有水印的图片进行一个回复原图的工作。   4、形态学处理 数字图像处理中的形态学处理是指把数字形态学作为工具从图像中提取对于表达和描绘区域形状有用处的图像分量主要包括膨胀、腐蚀、开运算、闭运算、形态学梯度、顶帽和黑帽功能如图3.4所示。 图 3.4 形态学处理结构示意   膨胀与腐蚀能实现多种多样的功能主要如下 ·消除噪声 ·分割出独立的图像元素在图像中连接相邻的元素 ·寻找图像中的明显的极大值区域或极小值区域 ·找出图像的梯度。 开运算可以用来消除小物体在纤细点处分离物体并且在平滑较大物体的边界额同时不明显改变其面积。 闭运算能够排除小型黑洞黑色区域。 形态学梯度可以对二值图像的团块的边缘突出出来常用来保留物体的边缘轮廓。 顶帽运算往往用来分离比邻近点亮一些的斑块。在一幅图像具有大幅的背景而微小物体比较有规律的情况下常用顶帽运算进行背景提取。 黑帽运算之后突出比原图轮廓周围区域更暗的区域所以黑帽运算用来分离比邻近点暗一些的斑块。   5、滤镜   给图像添加滤镜效果主要包括调色、羽化、素描、颜色变换和扩散如图3.5所示。 图 3.5 滤镜结构示意 调色分为怀旧和连环画效果。怀旧可以使得读取的图像实现怀旧照片的效果。连环画使得读取的图片实现连环漫画或者说是上世纪小人书的漫画效果。 羽化可以使得图像模糊边缘使得图像有一种朦胧的艺术效果。 素描可以将彩色图片变成一张素描作品。 扩散可以使得图像有着毛玻璃的特效。 四、 详细设计 41 图像变换 411 图像镜像变换 图像镜像Mirror变换分为两种一种是水平镜像另一种是垂直镜像。图像的镜像变换不会改变图像的形状。   1、图像的水平镜像是指将指定区域的图像以原图像的垂直中轴线为中心将图像分为左右两部分进行对称变换显示在屏幕。水平镜像时每行图像信息的处理方式是相同的而且行顺序不发生变化只是每一行的像索信息按从左到右的顺序进行了左右颠倒所以镜像后图像的高和宽不变[[[] 赛恒吉雅. 数字图像镜像变换方法的实现[J]. 科技传播,2010,09:143142.]]。其矩阵表达式由式4.1可见。 水平镜像的处理效果如图4.1所示 图4.1 水平镜像效果图   2、垂直镜像与水平镜像图类似只是图像的垂直镜像操作是以原图像的水平中轴线为中心将图像分为上下两部分进行对称变换显示在屏幕。垂直镜像时每列图像信息的处理方式是相同的而且列顺序不发生变化镜像后图像的高和宽不变。其矩阵表达式由式4.2可见。 垂直镜像的处理效果如图4.2所示 图4.2 垂直镜像的效果图   3、代码分析。 函数原型flip(InputArray src, OutputArray dst, int flipCode)。 第一个参数src输入矩阵。 第二个参数dst翻转后矩阵类型与src一致。 第三个参数 flipCode翻转模式 flipCode0垂直翻转沿X轴翻转 flipCode0水平翻转沿Y轴翻转 flipCode0水平垂直翻转先沿X轴翻转再沿Y轴翻转。 412 图像的几何变换 旋转rotation有一个绕着什么转的问题通常的做法是以图像的中心为圆心旋转将图像上的所有像素都旋转一个相同的角度。图像的旋转变换是图像的位置变换但旋转后图像的大小一般会改变。和图像平移一样 在图像旋转变换中既可以把转出显示区域的图像截去旋转后也可以扩大图像范围以显示所有的图像。 在实际照片旋转中我们经常采用另一种剪切形式的调整方式图像旋转后缩小图片使图片各个边角均不出现黑边。 如图4.3所示。 图4.3 旋转图片   这种调整方式下新图像大小的计算如下 旋转后的外边框宽度由式4.3所示高度由式4.4所示 out_width widthcos(a) heightsin(a) 4.3 out_height heightcos(a) widthsin(a) 4.4 画辅助线如图4.4所示。 图4.4 旋转图像参数效果图   其最长的边长由式4.5所示角a 即旋转角度。 len width*cos(a) 4.5 由于外边框大小已知则Y的值由式4.6计算X的值由式4.7计算 Y len / ( 1 / tan( a ) 1 / tan( b ) ) 4.6 X Y * 1 / tan( b ) 4.7 最后求得红框的长由式4.8得出宽由式4.9得出。 new_width out_width - 2 * X 4.8 new_height out_height - 2 * Y 4.9 这样我们就可以自定义旋转角度并可以选择是否有黑边最终其旋转效果如图4.5所示。 图4.5 旋转30°的图像 413 图像的缩放 本平台的调整图像大小用的是resize这个函数。可以实现将读取的图像以任意的水平或者垂直系数对图像进行方法或者缩小并且可以选择图像的插值方式。   1、函数原型void resize(InputArray src,OutputArray dst, Size dsize, double fx0, double fy0, int interpolationINTER_LINEAR ) 。resize()为OpenCV中专职调整图像大小的函数。此函数将源图像精确地转换为指定尺寸的目标图像。 第一个参数InputArray类型的src输入图像即源图像填Mat类的对象即可。 第二个参数OutputArray类型的dst输出图像当其非零时有着dsize第三个参数的尺寸或者由src.size()计算出来。很多时候我们并不用考虑第二个参数dst的初始图像尺寸和类型即直接定义一个Mat类型不用对其初始化因为其尺寸和类型可以由src,dsize,fx和fy这其他的几个参数来确定。 第三个参数Size类型的dsize输出图像的大小;如果它等于零由式(4.10)计算 dsize Size(round(fxsrc.cols),round(fysrc.cols)) 4.10 其中dsizefxfy都不能为0。 第四个参数double类型的fx沿水平轴的缩放系数有默认值0且当其等于0时由式4.11计算 fx (double)dsize.width/src.cols 4.11 第五个参数double类型的fy沿垂直轴的缩放系数有默认值0且当其等于0时由式4.12计算 fy (double)dsize.height/src.rows 4.12 第六个参数int类型的interpolation用于指定插值方式默认为INTER_LINEAR线性插值。 可选的插值方式如下[[[] 李秀英,袁红. 几种图像缩放算法的研究[J]. 现代电子技术,2012,05:48-51.]] ·INTER_NEAREST - 最近邻插值 最近邻插值是用图像中的特定点的像素值填充缩放后的图像即将原始的信号进行逐点处理把其中的每一点都用其灰度值进行m次复制(m为缩放倍数)即输出像素的灰度值等于离它所映射到的位置最近的输入像素的灰度值。最邻近插值计算十分简单在许多隋况下其结果也可令人接受。然而当图像中包含像素之间灰度级有变化的细微结构时最邻近插值法会在图像中产生人工的痕迹出现明显的块状现象整幅图像十分粗糙。 ·INTER_LINEAR - 线性插值默认值 线性插值算法由于其较低的计算量和高于最近邻域插值的代数逆合(二阶)而被广泛应用。因为采用线性插值算法在对图像的放大是对行列信号作两次处理后得到的所以称这种方法为双线性插值。但是它通常会平滑掉图像中许多重要的高频信息。 双线性插值比最邻近域法产生的图像平滑但当放大倍数增大时放大后的图像会出现明显的块状现象。线性插值基本思想就是把目标点附近的原始点的灰度值按一定的权值相加。 ·INTER_AREA - 区域插值利用像素区域关系的重采样插值 当图像缩小时候该方法可以避免波纹出现。当图像放大时类似于INTER_NN方法。 ·INTER_CUBIC –三次样条插值超过4×4像素邻域内的双三次插值 三次插值也称三次卷积插值高精度三次样条插值或者双三次插值它是的一个近似。其表达式由式4.13所示 ·INTER_LANCZOS4 -Lanczos插值超过8×8像素邻域的Lanczos插值 Lanczos算法实际上是Arnoldi算法对于对称矩阵的特殊形式可应用于对称矩阵线性方程组求解的Krylov子空间方法以及对称矩阵的特征值问题。很显然这种算法参考了更多的源图像像素值计算量增大了很多也是效果最好的一种。 若要缩小图像一般情况下最好用INTER_AREA来插值 而若要放大图像一般情况下最好用INTER_CUBIC效率不高或INTER_LINEAR效率较高。   2、平台以resize函数为核心利用Qt界面来实现用户输入函数所需要的参数对读取的图像进行调整。函数的第三个参数fx是水平缩放系数第四个参数fy是垂直缩放系数第五个参数interpolation是图像插值方式如图4.6所示。 图 4.6 图像大小调整界面 414 图像的截图 本平台的截图功能是对于读取的图片的感兴趣区域ROI的选取。 截图的选取分为三步首先是需要重写鼠标操作其二是获取label控件的相对位置最后截取感兴趣区域。   1、鼠标操作函数原型 void mousePressEvent(QMouseEvent event)鼠标按下的时候函数所进行的操作 void mouseMoveEvent(QMouseEvent event)鼠标移动的时候所进行的操作 void mouseReleaseEvent(QMouseEvent *event)鼠标抬起的时候所进行的操作。   2、图片相对位置的计算截图功能是获取读取的图像的某一部分所以对于鼠标在相对于图片控件上的相对位置就尤为重要。又因为通过以上的函数原型得到的鼠标位置是绝对位置即是在程序窗口的位置。所以需要通过一系列的函数来计算图片相对于控件的相对位置。计算程序窗口上控件位置的所需要的函数如图4.7所示。 图 4.7 程序窗体大小函数 第一步通过重写的鼠标操作来获取鼠标的绝对位置即声明一个QPoint类的对象m_beginPoint。通过m_beginPoint event-pos()保存在刚才声明的类对象中。 第二步计算偏移量 对于水平方向的偏移量xoffset由式4.14所示geometry().width()是程序窗口的宽度img.width()是图片的宽度。 xoffset (geometry().width() - img.width()) / 2 4.14 对于垂直方向的偏移量yoffset由式4.15所示frameGeometry().height()是程序窗口的高度img.height()是图片的高度。 yoffset (frameGeometry().height() - img.height()) / 2 4.15 第三步计算图片相对位置x的位置由式4.16所示y的位置由式4.17所示。 int x m_beginPoint.x() - xoffset 4.16 int y m_beginPoint.y() - yoffset 4.17   3、平台以以上的理论为基础当鼠标点击的时候记录起始点的位置鼠标抬起的时候记录结束点的位置。鼠标抬起的时候会弹出一个界面显示出截图的信息如图4.8所示。 图 4.8 程序截图功能 结论 本平台利用了opencv对图像进行了初步的处理分为如下几个模块图像变换、图像增强、形态学处理和图像滤镜。   图像变换模块实现了图片的水平和垂直镜像翻转、自定义旋转角度、缩放和截图功能。对于自定义旋转角度本平台新建了一个弹出窗口左边是预览窗口右边则是参数的设置这样用户每作出调整左边就会给出处理之后的结果方便用户的使用。关于图像的缩放本文对于其缩放的插值算法进行了较为详细的原理分析。关于程序的截图代码使用了Qt来实现。因为opencv如果使用截图功能他有自己的GUI还必须要使用其的回调函数再将结果转回到Qt界面将会相当麻烦。   图像增强模块亮度对比度的调整就是对读取图像的像素进行操作是公式的简单应用。对于图像的两种滤波操作非线性滤波和线性滤波。程序对于这两种滤波各自的分类以及原理进行了简单扼要的分析并对其应用的噪声进行了简介。关于图像修复也是利用了两种算法。并且对其中的快速修复算法进行了较为细致的理论介绍。   形态学处理模块对于其理论本文进行了简单明了的介绍。对于其应用opencv将每一个形态学操作都封装成了函数直接调用即可。这也是opencv的魅力所在opencv将许多的较为复杂并且常用的图像处理都封装成了函数方便学习者花较少的时间的进行快速开发。 滤镜模块实现了几种常用的滤镜处理如调色、素描、羽化和扩散。 本平台的局限之处是对于函数的参数调整必须等用户点击确定按钮之后程序才会进行处理没有实现将图片进行实时处理。 目录 目 录 摘 要 1 Abstract 2 1 绪论 1 11 研究图像处理的背景和意义 1 12 图像处理的研究现状 3 13 本文所做的工作 3 14 本文的章节安排 3 15 本章小结 4 2 开发环境与工具介绍 5 21 Qt的概述 5 211 Qt的介绍 5 212 Qt的特点 5 213 Qt编程相关技术 6 22 OpenCV概述 7 221 OpenCV的定义 7 222 OpenCV的特点 7 223 OpenCV的设计目标 8 224 OpenCV的结构和内容 8 225 OpenCV安装 8 23 本章小结 11 3 系统分析与设计 12 31 平台的功能架构 12 32 本章小结 14 4 详细设计 15 41 图像变换 15 411 图像镜像变换 15 412 图像的几何变换 16 413 图像的缩放 17 414 图像的截图 19 42 图像增强 20 421 亮度/对比度调整 20 422 线性滤波 21 423 非线性滤波 25 424 图像修复 29 43 形态学处理 31 431 膨胀和腐蚀 31 432 开运算 33 433 闭运算 33 434 形态学梯度 34 435 顶帽和黑帽 34 44 滤镜 35 441 调色 35 442 羽化 36 443 素描 38 444 扩散 39 45 本章小结 39 5 平台的运行和维护 40 结论 44 参考文献 45 致谢 46 附录A 外文原文 47 附录B 中文翻译 61
http://www.pierceye.com/news/137414/

相关文章:

  • 做网站的那些事wordpress改写
  • 仿造整个网站呼市网站建设公司
  • 网站被黑客入侵怎么办企业文化墙设计网站推荐
  • 建设网站的群婚礼婚庆网站建设需求分析
  • 全椒县城乡建设局网站网站怎么做营销策划
  • 响应式网站制作流程河北企业建网站
  • 常州新北区有做淘宝网站策划的吗什么建设网站
  • 成品网站源码68w68游戏wordpress php推送示例
  • 博优云软件官方网站wordpress 个人
  • 登封 网站建设烟台网站关键词推广
  • 深圳实惠的专业建站公司淘宝券商城网站制作
  • 珠海手机网站建设成都设计网站
  • 网站mp3播放器代码国家企业信息系统官方
  • 江西建设银行招聘网站pc网站还有必要做吗
  • 网站建设几个要素做网站需要学会什么软件
  • 做视频网站什么平台好站酷设计网站首页
  • 班级网站设计论文网站多国语言
  • 网站制作评价标准网站服务器怎么收费
  • 怎么建立自己的网站平台多少钱wordpress自建菜单
  • 深圳购物网站如何制作外贸网站 wordpress
  • 商品展示网站模板中国建设电工立网站
  • 网站推广的基本方法对于大部分网站来说都是适用的河北网站开发费用
  • 高安网站建设公司外链代发免费
  • 企业网站建设的价格wordpress免费用户
  • 怎么做门淘宝网站广播电台网站建设板块
  • ai效果图网站建设一个视频网站需要什么条件
  • 上海安全建设协会网站推广普通话的方法
  • 自己怎么做外贸英文网站网站建设外包
  • 南京专业网站开发团队wordpress如何构建页面
  • 济南网站优化排名推广python基础教程雪峰