OpenCV编程案例详解 - (EPUB全文下载)

文件大小:0.41 mb。
文件格式:epub 格式。
书籍内容:

OpenCV编程案例详解
第1章 图像处理系统
第2章 医学图像处理算法学习系统
第3章 图像边缘检测学习系统
第4章 数字图像加密学习系统
第5章 手写数字识别学习系统
第6章 骰子作画学习系统
第7章 滤镜效果学习系统
第8章 盲数字水印学习系统
第9章 图像检索系统
第10章 非盲数字水印学习系统
附录A 系统配置
附录B 在Qt内使用OpenCV
参考文献
开始阅读
书名页
正文
第1章 图像处理系统
数字图像的典型处理有翻转、形态学处理、滤波、缩放、旋转等,是图像处理的基础。只有掌握这些图像处理方法,才能够进一步进行更为复杂的图像处理。本章主要实现了一个简单的图像处理系统,系统内主要实现数字图像的翻转、形态学处理、滤波处理、缩放、旋转等基本的图像处理功能。
1.1 系统介绍
系统采用 OpenCV 3.0 在 Qt Creator 内开发,为了让读者能够更好地掌握OpenCV 3.0的函数并了解Qt开发的基本原理,本系统在实现的过程中,尽量将每一个处理作为一个独立单元实现。
1.1.1 功能描述
本系统实现了数字图像处理中的翻转、形态学处理、滤波处理、缩放、旋转等功能。系统内各个功能的实现均采用了OpenCV 3.0的函数实现。
图像的翻转实现了图像在水平、垂直、垂直水平同步等不同形式的翻转。形态学实现了腐蚀、膨胀、开运算、闭运算、Morphological Gradient(形态学梯度)、顶帽、黑帽等多种形式的处理。滤波实现了均值、方框、高斯、中值、双边等不同形式的滤波。缩放部分分别采用pyrUp、pyrDown、resize实现了图像的放大和缩小显示。旋转部分实现了图像顺时针无缩放、顺时针缩放、逆时针、零旋转缩放等多种不同形式的变换。
1.1.2 总体结构
系统的总体结构如图1-1所示。
图1-1 系统的总体结构
界面效果如图1-2所示,左侧显示源图像,右侧显示处理后的目标图像。
图1-2 界面效果
1.2 系统原理
图像处理效果的实现主要采用OpenCV 3.0的函数实现,下面对使用到的函数做简单介绍。
1.2.1 翻转
图像的翻转采用 flip 函数实现,该函数能够实现图像在水平方向翻转、垂直方向翻转、两个方向同时翻转,其语法结构为:
void cv::flip (
InputArray src,
OutputArray dst,
int flipCode)
其中,
●src:是要处理的原始图像。
●dst:是和原始图像具有同样大小、类型的目标图像。
●flipCode:是旋转类型。该参数的意义如表1-1所示。
表1-1 flipCode参数意义
该函数中,目标像素点与原始像素点的关系表述为:
其中,dst是目标像素点,src是原始像素点。
1.2.2 形态学处理
形态学,即数学形态学(Mathematical Morphology),是图像处理过程中非常重要的一个研究方向。形态学主要从图像内提取其分量信息,该分量信息通常对于表达和描绘图像的形状具有重要的意义,通常是图像理解时所使用的最为本质的形状特征。例如,在处理手写数字识别时,能够通过形态学运算得到其骨架信息,在具体识别时,仅针对其骨架进行运算即可。形态学处理在视觉检测、文字识别、医学图像处理、图像压缩编码等领域都有着非常重要的应用。
这部分主要包含:腐蚀、膨胀、开运算、闭运算、Morphological Gradient(形态学梯度)、顶帽、黑帽等操作。
1.腐蚀
腐蚀是最基本的形态学操作之一,它能够将图像的边界点消除,使图像沿着边界向内收缩,也可以将小于指定结构体元素的部分去除。二值图像的腐蚀示例效果如图1-3所示。
图1-3 腐蚀效果
在OpenCV 3.0内采用erode函数实现对图像的腐蚀,该函数采用一个特定的结构来完成腐蚀操作。函数的语法结构为:
void cv::erode (
InputArray src,
OutputArray dst,
InputArray kernel,
Point anchor=Point(-1,-1),
int iterations=1,
int borderType=BORDER_CONSTANT,
const Scalar& borderValue=morphologyDefaultBorderValue() )
其中,
●src:需要进行腐蚀的原始输入图像,图像的通道数可以是任意的,但是要求图像的深度必须是CV_8U、CV_16U、CV_16S、CV_32F、CV_64F其中的一种。
●dst:被腐蚀后所输出的目标图像,该图像和原始图像具有同样的类型和大小。
●kernel:腐蚀操作时所采用的结构类型,如果element=Mat(),则使用一个3×3的核。它可以通过函数getStructuringElement()生成。
●anchor:element结构中锚点的位置。该值默认为(-1,-1),在核的中心位置。
●iterations:腐蚀操作迭代的次数,该值默认为1,即只进行一次腐蚀操作。
●borderType:图像边界处理方法,一般采用其默认值BORDER_CONSTANT。该项的具体值如表1-2所示。
表1-2 borderType值
●borderValue:边界值,一般采用其默认值morphologyDefaultBorderValue()。
其中,所调用的函数morphologyDefaultBorderValue()用来返回腐蚀和膨胀的“魔力(magic)”边界值。它通常自动转换为Scalar::all(-DBL_MAX)进行膨胀。
其参数中的kernel可以通过调用getStructuringElement得到,其定义形式为:
Mat cv::getStructuringElement(
int shape,
Size ksize,
Point anchor = Point(-1,-1) )
该函数用来返回一个用于形态学操作的指定大小和形状的结构元素。
该函数能够构造 ............

以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。

版权声明:书云(openelib.org)是世界上最大的在线非盈利图书馆之一,致力于让每个人都能便捷地了解我们的文明。我们尊重著作者的知识产权,如您认为书云侵犯了您的合法权益,请参考版权保护声明,通过邮件openelib@outlook.com联系我们,我们将及时处理您的合理请求。 数研咨询 流芳阁 研报之家 AI应用导航 研报之家
书云 Open E-Library » OpenCV编程案例详解 - (EPUB全文下载)