像识别中,图像质量的好坏直接影响识别算法的设计与效果精度,那么除了能在算法上的优化外,预处理技术在整个项目中占有很重要的因素,然而人们往往忽略这一点。

图像预处理,将每一个文字图像分检出来交给识别模块识别,这一过程称为图像预处理。

图像预处理的主要目的是消除图像中无关的信息恢复有用的真实信息增强有关信息的可检测性和最大限度地简化数据从而改进特征抽取、图像分割、匹配和识别的可靠性。预处理过程一般有数字化、几何变换、归一化、*滑、复原和增强等步骤。

1.滤波:滤波(Wave filtering)是将信号中特定波段频率滤除的操作,是抑制和防止干扰的一项重要措施。ps:均值、中值、高斯滤波在一定程度上会影响图像的清晰度,清晰图像无需进行滤波,一般都是有明显的噪点时才进行滤波处理。

2.图像的归一化和直方图有相似性,在一定程度上可以将诡异哈理解为0-255的像素值变为0-1之间,缩小了其分配距离。ps:在目标与背景灰度差别较大时,用较好,否则会出现粘连导致无法分割。

3.图像的*滑(滤波)是对图像灰度跳变的一种抑制,图像的锐化则相反,它是对图像的灰度跳变部分的一种增强,突出图像的细节变化信息;PS:*滑和锐化都属于滤波,都用同一个函数,都是先建立个滤波器,但区别在于选择的方式算子不同;例如:建立一个滤波器为:h = fspecial(type,parameter);再通过该滤波器对图像进行滤波决定是*滑还是锐化:filterImage = imfilter(srcImage,h);

4.锐化往往也“增强”了噪声,可以将图像锐化和*滑结合使用,若图像本身就有很明显的噪声,可先*滑再锐化,若图像锐化后有了噪声,可再进一步去进行*滑处理;

数字化

一幅原始照片的灰度值是空间变量(位置的连续值)的连续函数。在M×N点阵上对照片灰度采样并加以量化(归为2b个灰度等级之一),可以得到计算机能够处理的数字图像。为了使数字图像能重建原来的图像,对M、N和b值的大小就有一定的要求。在接收装置的空间和灰度分辨能力范围内,M、N 和b的数值越大,重建图像的质量就越好。当取样周期等于或小于原始图像中最小细节周期的一半时,重建图像的频谱等于原始图像的频谱,因此重建图像与原始图像可以完全相同。由于M、N 和b三者的乘积决定一幅图像在计算机中的存储量,因此在存储量一定的条件下需要根据图像的不同性质选择合适的M、N 和b值,以获取最好的处理效果。
 

几何变换

用于改正图像采集系统的系统误差和仪器位置的随机误差所进行的变换。对于卫星图像的系统误差,如地球自转、扫描镜速度和地图投影等因素所造成的畸变,可以用模型表示,并通过几何变换来消除。随机误差如飞行器姿态和高度变化引起的误差,难以用模型表示出来,所以一般是在系统误差被纠正后,通过把被观测的图和已知正确几何位置的图相比较,用图中一定数量的地面控制点解双变量多项式函数组而达到变换的目的。
 

归一化

使图像的某些特征在给定变换下具有不变性质的一种图像标准形式。图像的某些性质,例如物体的面积和周长,本来对于坐标旋转来说就具有不变的性质。在一般情况下,某些因素或变换对图像一些性质的影响可通过归一化处理得到消除或减弱,从而可以被选作测量图像的依据。例如对于光照不可控的遥感图片,灰度直方图的归一化对于图像分析是十分必要的。灰度归一化、几何归一化和变换归一化是获取图像不变性质的三种归一化方法。

*滑

消除图像中随机噪声的技术。对*滑技术的基本要求是在消去噪声的同时不使图像轮廓或线条变得模糊不清。常用的*滑方法有中值法、局部求*均法和k *邻*均法。局部区域大小可以是固定的,也可以是逐点随灰度值大小变化的。此外,有时应用空间频率域带通滤波方法。
 

复原

校正各种原因所造成的图像退化,使重建或估计得到的图像尽可能逼*于理想无退化的像场。在实际应用中常常发生图像退化现象。例如大气流的扰动,光学系统的像差,相机和物体的相对运动都会使遥感图像发生退化。基本的复原技术是把获取的退化图像g(x,y)看成是退化函数h(x,y)和理想图像f(x,y)的卷积。它们的傅里叶变换存在关系 G(u,v=H(u,v)F(u,v)。根据退化机理确定退化函数后,就可从此关系式求出F(u,v),再用傅里叶反变换求出f(x,y)。通常把
称为反向滤波器。实际应用时,由于H(u,v)随离开uv*面原点的距离增加而迅速下降,为了避免高频范围内噪声的强化,当u2+v2大于某一界限值W娿时,使M(u,v)等于1。W0的选择应使H(u,v)在 u2+v2≤W娿范围内不会出现零点。图像复原的代数方法是以最小二乘法最佳准则为基础。寻求一估值弮,使优度准则函数值最小。这种方法比较简单,可推导出最小二乘法维纳滤波器。当不存在噪声时,维纳滤波器成为理想的反向滤波器。
 

增强

对图像中的信息有选择地加强和抑制,以改善图像的视觉效果,或将图像转变为更适合于机器处理的形式,以便于数据抽取或识别。例如一个图像增强系统可以通过高通滤波器来突出图像的轮廓线,从而使机器能够测量轮廓线的形状和周长。图像增强技术有多种方法,反差展宽、对数变换、密度分层和直方图均衡等都可用于改变图像灰调和突出细节。实际应用时往往要用不同的方法,反复进行试验才能达到满意的效果。

[opencv]图像预处理方案及方式的更多相关文章

  1. python+opencv 图像预处理

    一 python 生成随机字符串序列+ 写入到图片上 from PIL import Image,ImageDraw,ImageFont import numpy as np import rando ...

  2. 基于OpenCV的火焰检测(一)——图像预处理

    博主最近在做一个基于OpenCV的火焰检测的项目,不仅可以检测图片中的火焰,还可以检测视频中的火焰,最后在视频检测的基础上推广到摄像头实时检测.在做这个项目的时候,博主参考了很多相关的文献,用了很多种 ...

  3. Ubuntu系统---编译opencv程序的几种方式g++、Makefile、Cmake

    Ubuntu系统---编译opencv程序的几种方式g++.Makefile.Cmake 先建立一个工程(一个文件夹),写好xxx.cpp文件,可以是多个: //----------opencv.cp ...

  4. Caffe2 图像预处理(Image Pre-Processing)[6]

    学习如何使得图像符合预训练模型的需求,或者用其他数据集的图像来测试自己的模型. - 调整大小 - 缩放 - HWC和CHW,数据通道交换 - RGB和BGR,颜色通道的交换 - Caffe2的图像预处 ...

  5. OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

    这篇已经写得很好,真心给作者点个赞.题目都是直接转过来的,直接去看吧. Reference Link : http://blog.csdn.net/poem_qianmo/article/detail ...

  6. 【OpenCV新手教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...

  7. 『TensorFlow』第九弹_图像预处理_不爱红妆爱武装

    部分代码单独测试: 这里实践了图像大小调整的代码,值得注意的是格式问题: 输入输出图像时一定要使用uint8编码, 但是数据处理过程中TF会自动把编码方式调整为float32,所以输入时没问题,输出时 ...

  8. 学习 opencv---(12)OpenCV 图像金字塔:高斯金字塔,拉普拉斯金字塔与图片尺寸缩放

    在这篇文章里,我们一起学习下 图像金字塔 的一些基本概念,如何使用OpenCV函数pyrUp和pyrDown 对图像进行向上和向下采样,以及了解专门用于缩放图像尺寸的resize函数的用法.此博文一共 ...

  9. opencv:图像的基本变换

    0.概述 图像变换的基本原理都是找到原图和目标图的像素位置的映射关系,这个可以用坐标系来思考,在opencv中, 图像的坐标系是从左上角开始(0,0),向右是x增加方向(cols),向下时y增加方向( ...

随机推荐

  1. openwrt编译ipk包提示缺少feeds.mk文件

    问题具体表现如下 这个问题困扰了我两个多星期,总算解决了.解决方案如下: 首先,先应该把配置菜单调好. 我的硬件是7620a,要编译的ipk包为helloworld,所以应该使用 make menuc ...

  2. navigationItem的leftBarButtonItem和rightBarButtonItem隐藏

    - (void)showEdit { if (不符合显示条件) { self.navigationItem.rightBarButtonItem.customView.hidden = YES; // ...

  3. OC-基础数据类型

    七 字符串与基本数据类型转换 获取字符串的每个字符/字符串和其他数据类型转换 八 NSMutableString 基本概念/常用方法 九 NSArray NSArray基本概念/创建方式/注意事项/常 ...

  4. Linux基础命令---mput上传ftp文件

    mput 使用lftp登录ftp服务器之后,可以使用put指令将文件上传到服务器.mput指令可以使用通配符,而put指令则不可以.   1.语法       mput [-c]  [-d] [-a] ...

  5. 理解css中的 content:" " 是什么意思

    css中的属性是插入生成的内容,它一般与伪元素:befor和 :after 配合使用. content:"." 就表示在需要的地方插入"." 注意:如果已经规定 ...

  6. java的父类声明,子类实例化(强制类型转换导致异常ClassCastException)

    一.使用原因 父类声明,子类实例化,既可以使用子类强大的功能,又可以抽取父类的共性. 二.使用要点 1.父类类型的引用可以调用父类中定义的所有属性和方法: 2.父类中方法只有在是父类中定义而在子类中没 ...

  7. 【C/C++】二维数组的传参的方法/二维字符数组的声明,使用,输入,传参

    [问题] 定义了一个子函数,传参的内容是一个二维数组 编译提示错误 因为多维数组作为形参传入时,必须声明除第一位维外的确定值,否则系统无法编译(算不出偏移地址) [二维数组的传参] 方法一:形参为二维 ...

  8. 关于Mysql java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)的问题

    问题所在: 1.连接数据库一个是密码是否正确, 2.driver是否对, 3.有么有jar包冲突,

  9. Gitlab Flow到容器

    一.简介 长话短说,本文全景呈现我司项目组gitlab flow && devops Git Flow定义了一个项目发布的分支模型,为管理具有预定发布周期的大型项目提供了一个健壮的框架 ...

  10. shell脚本 screen管理

    一.简介 源码地址 日期:2018/4/12 介绍:使用screen来启动程序,这个脚本可以管理screen 效果图: 二.使用 适用:centos6+ 语言:中文 注意:请先写一个脚本来启动java ...