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

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

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

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. 大数据学习day13------第三阶段----scala01-----函数式编程。scala以及IDEA的安装,变量的定义,条件表达式,for循环(守卫模式,推导式,可变参数以及三种遍历方式),方法定义,数组以及集合(可变和非可变),数组中常用的方法

    具体见第三阶段scala-day01中的文档(scala编程基础---基础语法)  1. 函数式编程(https://www.cnblogs.com/wchukai/p/5651185.html): ...

  2. TCP中的TIME_WAIT状态

    TIME_WAIT的存在有两大理由 1.可靠地实现TCP全双工连接的终止 2.允许老的可重复分节在网络中消失. 对于理由1,我们知道TCP结束需要四次挥手,若最后一次的客户端的挥手ACK丢失(假设是客 ...

  3. 文件管理与XMl、JSON解析

    1.使用内部存储器 你可以直接保存文件在设备的内部存储.默认情况下,文件保存在你的应用程序的内部存储,其他应用程序或用户不能访问.当用户卸载你的应用城西是,这些文件被删除. (一)在内部存储创建并写入 ...

  4. Linux基础命令---exportfs管理挂载的nfs文件系统

    exportfs exportfs主要用于管理当前NFS服务器的文件系统. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora. 1.语法        /usr/sb ...

  5. vue2.x入门学习

    vue安装 # 最新稳定版本 $ npm install vue # 最新稳定 CSP 兼容版本 $ npm install vue@csp 引包 cd /d/vue/demo cnpm instal ...

  6. rust方法集

    随机数.数字对比.控制台输入 use std::io; use std::cmp::Ordering; use rand::Rng; fn main() { println!("please ...

  7. Quartz使用AutoFac依赖注入问题小结

    theme: channing-cyan highlight: a11y-dark 背景 最近在做一个需求,就是在Job中捕捉异常,然后通过邮件或者消息的方式推送给指定人员,在需求实现的过程中遇到的一 ...

  8. Python把两个列表索引相同的值相加

    方案一 list1=[1,2,3,4,5] list2=[6,7,8,9,10] list3=[] list3=[i + j for i, j in zip(list1, list2)] print( ...

  9. hitcontraining_magicheap

    拿到题目例行检查 程序是64位的程序 保护几乎全开,试运行一下程序 十分明显的堆溢出的界面,将程序放入ida中,shift+f12发现了后门程序 进入main主函数进行查看 可以看到当,v3==486 ...

  10. Windows线程控制

    多线程无疑带来了很多方便,提高了很多开发效率,但是同时也带来了很多问题. 举个栗子: DWORD WINAPI ThreadProc(LPVOID lPParameter); int m = 0; i ...