精华内容
下载资源
问答
  • 这是一份完整的设计报告,用MATLAB做二维灰度图象统计分析及DWT变换处理 ① 采集一幅像素大于64*64灰度图像; ② 常规的数学统计数据处理:计算图象各象素点灰度值得均值、标准差、方差,并绘出灰度直方图; ③ ...
  • 对大型的图象数据库进行准确检索的时候,需要对纹理与非纹理图象进行分类,为了准确地提取图象中的纹理特征,本文在文献[4]的基础上,提出了一种新的基于小波和区域统计特性的算法来对纹理和非纹理图象进行分割,并以此...
  • 文中对图象上的某一位置是否存在某级线段做出假设,由二维离散空间上线段的几何表示给出了假设的描述,用统计测试方法验证提出的假设,从而,得到了道路边界的多级线段描述.算法利用了边缘的全局信息,适应性较强,...
  • MATLAB基础强化训练 二维灰度图象统计分析及FFT变换处理 附带程序与仿真结果,还有报告
  • 2数据统计处理 10 2.1各像素点灰度值的均值 10 2.1.1原理介绍 10 2.1.2程序执行及其结果 10 2.2 各像素点灰度值的标准差 11 2.2.1原理介绍 11 2.2.2程序执行及其结果 11 图9 所有像素的标准差 11 2.3 各像素点灰度值...
  • 内容包含img格式和dat格式遥感图像的读取(包含头文件的读取)以及简单的遥感数字图像处理的统计 内容包含img格式和dat格式遥感图像的读取(包含头文件的读取)以及简单的遥感数字图像处理的统计
  • 客户流统计就是统计在商城的入口处安装一个检测装置来统计进入或离开商城的客户的数量。从1991年以来,国外就开始进行关于“商城客户流的统计”的研究与开发工作,主要集中在美国、法国、英国、芬兰等国家。采用的...

    客户流统计就是统计在商城的入口处安装一个检测装置来统计进入或离开商城的客户的数量。从1991年以来,国外就开始进行关于“商城客户流的统计”的研究与开发工作,主要集中在美国、法国、英国、芬兰等国家。采用的方法无非是:主动红外线传感器、被动红外线传感器、视频图像分析、微波、超声波、可视光谱、脚步测量等。然而,使用这些方法的现有产品,对于客户排着队伍比较有序地或人数较少时通过检测处时,可以得到较为精确的测量结果,对于客户无序地或人数较多时通过检测处时,则客户流检测结果误差十分大,在此情况下失去了测量意义,目前国内还没有同类产品。本文中拟采用“基于图象序列分析的商城客户流统计”来进行客户流的统计。

    1、系统目标

    实现大型商城(场)的客户流统计系统,为商城管理人员提供决策分析,提供附加的商城和客户的安全保证,系统必须满足客户流统计精度高、全自动、实时性强、鲁棒性好、价格便宜以及系统运行的稳定性好等要求。

    2、适用环境

    商城、车站、公共交通工具等需要进行客户流统计分析的场所。

    3、 需求规定

    在商场门口进行实时人流统计,即统计每一个时刻进入的商场的顾客数和离开商场的顾客数。工作人员可以通过管理界面得到任意一天、一周、一月、一年或任意一个给定起始时间和终止时间的统计时间段内的客户流分布信息,该信息可以可选地表示为表格或多种图形风格(饼图、直方图、曲线等)

    4、系统处理流程图

    clip_image002

     

    clip_image006系统处理流程见上面两图,系统数据处理流程包括视频/图象采集、运动图象分析、数据汇总、公告牌显示、数据保存、客户流分析及显示等部分。

     

    5、模块结构图

    clip_image008

    展开全文
  • 本设计是基于MTALAB的二维灰度图象统计分析及FFT变换处理。包涵源程序序及运行结果
  • 本次练习介绍的就是Matlab环境下的一些最基本的图像处理操作,如读图像、写图像、查看图像信息和格式、尺寸和灰度的伸缩等等;通过实验掌握图像直方图的描绘方法,加深直方图形状与图像特征间关系间的理解;加深对...
  • 图象分割

    2010-07-16 13:54:00
    摘 要:图象分割是图象处理、模式识别和人工智能等多个领域中一个十分重要且又十分困难的问题。本文回顾和总结了一些存在的图象分割方法。从原理、应用和应用效果上对经典的图象分割方法如域值分割技术、区域...

      要:图象分割是图象处理、模式识别和人工智能等多个领域中一个十分重要且又十分困难的问题。本文回顾和总结了一些存在的图象分割方法。从原理、应用和应用效果上对经典的图象分割方法如域值分割技术、区域增长和边缘检测等进行了分析,同时对目前图象分割领域中新的技术如分形、数学形态和神经网络技术进行了讨论。分析了图象分割技术研究的方向,需要解决的问题,提出了作者的观点。 

        图象分割是图象处理、模式识别和人工智能等多个领域中一个十分重要且又十分困难的问题,是计算机视觉技术中首要的、重要的关键步骤[1]。图象分割应用在许多方面[1],例如在汽车车型自动识别系统中,从CCD摄像头获取的图象中除了汽车之外还有许多其他的物体和背景,为了进一步提取汽车特征,辨识车型,图象分割是必须的。因此其应用从小到检查癌细胞、精密零件表面缺陷检测,大到处理卫星拍摄的地形地貌照片等。在所有这些应用领域中,最终结果很大程度上依赖于图象分割的结果。因此为了对物体进行特征的提取和识别,首先需要把待处理的物体(目标)从背景中划分出来,即图象分割[2]。但是,在一些复杂的问题中,例如金属材料内部结构特征的分割和识别,虽然图象分割方法已有上百种,但是现有的分割技术都不能得到令人满意的结果[2],原因在于计算机图象处理技术是对人类视觉的模拟,而人类的视觉系统是一种神奇的、高度自动化的生物图象处理系统[1]。目前,人类对于视觉系统生物物理过程的认识还很肤浅,计算机图象处理系统要完全实现人类视觉系统,形成计算机视觉,还有一个很长的过程。因此从原理、应用和应用效果的评估上深入研究图象分割技术,对于提高计算机的视觉能力和理解人类的视觉系统都具有十分重要的意义。

    1 经典的图象分割方法

     

    1.1阈值分割方法

    域值分割技术是经典的、流行的图象分割方法之一,也是最简单的一种图象分割方法,这种方法的关键在于寻找适当的灰度域值。通常是根据图象的灰度直方图来选取。阈值分割可以通过全局的信息如整个图象的灰度直方图,或者局部信息如灰度共生矩阵实现。如果在整个图象中只使用一个阈值,则这种方法叫做全局阈值法。反之,如果这个图象被分割成几个区域,针对每一个区域均有一个阈值,则这种方法叫做局部阈值法。一些学者认为也可以把阈值分割技术分为单阈值法和多阈值法。在单阈值法中,整个图象分成两个区域,即目标对象(黑色)和背景(白色);当整个图象由几个带有不同表面特征的对象组成时(对于强度图象,表示具有不同灰度值的目标)需要几个不同的阈值,这就是多阈值法。在这种情况下,我们的目的是获得一个阈值集合(t1,t2, ,tk ),使得所有灰度值满足f(x,y)[ti,ti+1] 象素点构成第i个区域,其中(i=0,1, ,k)。阈值分割法,也可以看成是一个分类问题,比如阈值分割中,相当于把所有象素点分成两类:目标和背景。

    1.2区域增长技术

    域值分割技术是一种简单的图象分割技术,它仅适用于高反差的简单图象的分割,不能满足灰度渐变或以某种纹理而不是灰度来表征不同区域的那些复杂图象的分割。区域增长是一种已受到人工智能领域中的计算机视觉十分关注的图象分割方法。特别适合于分割纹理图象,即可以用灰度与局部特征值信息进行简单的聚类分类,也可以用统计均匀性检测进行复杂的分裂与合并处理。这种方法是把一幅图象分成许多小区域开始的。这些初始的小区域可能是小的邻域甚至是单个象素。在每个区域中,通过计算能反映一个物体内象素一致性的特征,作为区域合并的判断标准。这些用于区分不同物体内象素一致性的特征包括平均灰度值,纹理,或者颜色信息等。区域合并的第一步是赋给每个区域一组参数,即特征。这些参数能够反映区域属于哪个物体。接下来对相邻区域的所有边界进行考查。相邻区域的特征值之间的差异是计算边界强度的一个尺度。如果给定边界两侧的特征值差异明显,那么这个边界很强,反之则弱。强边界允许继续存在,而弱边界被消除,相邻区域被合并。因此区域合并是一个迭代过程,每一步重新计算被扩大区域的物体内各象素一致性的特征并消除弱边界。没有可以消除的弱边界时,区域合并过程结束。这时,图像分割也就完成。这个过程使人感觉这是一个物体内部的区域不断增长直到其边界对应于物体的真正边界为止的“生长”过程。

    1.3边缘检测方法

    图象分割能够通过检测不同区域的边缘来获得。对于强度图象,边缘的定义是指那些强度发生突变的点。由边缘的定义可知边缘是图象的局部特征,因此决定某个象素点是否是边缘只需要局部信息。Davis[4]把边缘检测技术分成两类:串行技术和并行技术。所谓串行技术是指,判断当前点是否是边缘,依赖于边缘检测算子对前一点判断的结果;所谓并行技术是指,决定当前点是否是边缘,只依赖于当前点及其邻域

    点。因此,在采用并行运算时,边缘检测算子可以同时作用于该图象的每一个象素。而串行运算的结果依赖于开始点的选择和前一点决定下一点采用的方法。常见的边缘检测方法有差分法和模板匹配法。所谓差分法是指数学上用离散函数的数值计算方法对连续函数微分运算的一种近似。由于边缘灰度变化规律一般体现为阶梯状或者脉冲状。边缘与差分值的关系可以归纳为两种情况,其一是边缘发生在差分最大值或者最小值处;其二是边缘发生在过零处。对于阶梯状边缘可以用梯度下降算子、RobertsPrewittSobel等一阶差分算子得到差分值,这些不同的算子可以检测出图象灰度值或者平均灰度值的变化。对于脉冲状边缘,可用二阶差分算子如Laplacian等得到差分值。Laplacian算子特点是:对于灰度值变化呈阶梯状时,有一个过零点。因此,对于角点,线,孤立点的检测效果很好。但是,如果图象存在较严重的噪声,则效果不是十分理想。

        通常,一个性能良好的边缘检测算子应该是具有以下两个特征的滤波器:首先,必须是一个微分算子,即一阶或者二阶微分。其次,算子大小能够随意缩放,以便于用较大的算子检测边缘,而用较小的算子检测细节特征。由MarrHildreth[5]提出的拉普拉斯高斯算子(Laplacian of Gaussian,简称LG)就是能满足上述两个特征要求的典型的边缘检测算子,通常表示为:2G,其中G由下式表示:

    这是一个标准的高斯分布(Gausian)σ表示标准方差。LG算子的高斯(Gausian)部分,相当于低通滤波器,可以消除比标准方差σ小的多的细节特征,从而使图象变得模糊。而LG算子的拉普拉斯部分,相当于高通滤波器,可以使图象轮廓增强。因此,LG算子是先消除噪声,然后使图象轮廓锐化,从而达到边缘检测的目的。

    Canny[6]认为,一个性能良好的边缘检测算子应该具有如下三个特征:①把非边缘点标记为边缘点的概率低,同时不能标记真正边缘点的概率较低; ②被标记为边缘点的象素点应该尽量靠近真正边缘的中央;③边缘检测算子作用的结果有且只有一个象素点被标记为边缘点。一个性能良好的边缘检测器可以通过如下方式获得:①使图象信噪比SNR最大化;②为了准确定位边缘点,Canny使标记的边缘点与真实边缘中央的距离的均方根(Root Mean Square, RMS)的估计值的倒数最大化。为了同时使检测性能指标和定位标准均达到最大,Canny认为SNR与边缘点位移的估计值的标准方差的倒数的乘积达到最大。

    2 图象分割技术的发展 

    2.1 基于分形的图象分割技术

    基于特征的图象分割方法包括两个重要的部分:特征抽取与模式聚类。特征提取是图象分割最重要的问题之一,能否抽取出有效的特征值对分割结果有很大的影响,如果没有好的特征值,分类方法再好也无法获得理想的结果。特征抽取大致可以分为三类[7],即基于特征、基于模型以及基于结构。基于特征的方法就是寻找具有相同特性的区域或区域边界,基于模型的方法就是假设一个基本的随机过程并用过程参数作为特征。由于模型参数也可用作纹理特征,基于模型的方法可看成是基于特征方法的一个子集。结构特征基于假设图象中有可检测的基本结构元素并按一定的规则排列。

    基于模型的方法最典型的模型主要有两种:分形几何模型与随机模型。分形函数近年来受到越来越多的重视。分形是B.B.Mandelbrot在总结了自然界中的非规整几何图形后,于1975年第一次提出了分形的概念。Mandelbrot给分形的定义为:设的豪斯道夫维数是D,如果这个维数恒大于集合A的拓扑维数Dt,则称集合A是分形集,简称分形。上述定义没有其他任何条件要求。1986年,Mandelbrot又给出了分形的第二个定义:组成部分与整体以某种相似的形叫做分形。这个定义突出了相似性的作用,反映了自然界中很广泛一类物体的基本属性;局部与局部,局部与整体在形态、功能、信息、时间与空间等方面具有统计意义上的相似性。简单地说分形就是一个维数大于拓扑维数的集合。分形维数的一大特点是尺度变换不变性。分形几何学已经广泛应用于图象压缩和图象编码,并且取得了较好的效果。同时也有一些研究者将分形特征用于自然纹理图象和自然景物的分割与识别中。分形维数特征对图象尺度变换不敏感,与人对物体表面粗糙度的判断有很大的相关性,由于许多自然纹理都具有线形对数功率谱,而分形维数就对应于这种线形对数功率谱斜率的估计值,因而用分形维数描述自然纹理有一定的合理性。

    2.2 基于神经网络的图象分割技术

    使用神经网络模型可以实现图象分割算法。Blanz and Gish[13]使用一个多层前向神经网络用于图象分割,输入层神经元的数目取决于输入特征数,而输出层神经元的数目等同于分类的数目。由于BP网络能完成n维空间(输入节点数为n)到m维空间(输出节点数m)的复杂非线形映射,因此它具有Laplacian算子的能力,用神经网络可以获得良好的结果,而且用神经网络处理,一旦训练完毕,各节点间的互联权就完全确定,在识别时具有很快的速度。Babaguchi[14]等使用多层BP神经网络,用于阈值分割图象,输入是统计直方图,输出是想要的阈值。使用这种方法,在神经网络学习阶段需要大量的已知阈值的样本图象,以用于调节网络参数产生合适的输出。但在实际应用中,要获得大量的样本图象是十分困难的。M.Liang借助于松弛标记技术与人工神经网络的有关理论,提出了一种用Kohonen网络作从网络粗分的主从神经网络分割方法[15],从网络的分割结果用于确定主网络中各神经元的初始状态,然后主网络从这一初始状态出发进行状态的动态演变,直至收敛到主网络的某一吸引子,这时主网络的状态对应于分割后的图象。这种方法能够分割低信噪比条件下图象,实验证明它比最佳鉴别门限准则门限分割法与矩阵保持门限分割法具有更好的效果,并且可以实现实时处理。类似的用于从高度噪声破坏的景物中提取对象的方法还可以使用Hopfield类型神经网络。

    3 图象分割中需要解决的问题和发展前景

     

    选择一种合适的图象分割方法,很大程度上取决于要处理的图象类型和应用的领域。至今还没有哪一种图象分割算法是通用的,也难以获得一种最佳的特征表示方法。此外,窗口大小的选取和算法的自适应性也是分割算法不可能满足所有图象的分割要求的重要原因。目前图象分割领域还存在许多迫切需要解决的问题:(1)虽然计算机的处理速度有了迅猛提高,但是由于图象处理十分复杂,运算量普遍较大,特别是对于一些实时系统,工作环境比较恶劣,图象采集时照明采光不好,使得图象噪声比较严重,处理速度对于整个系统至关重要。因此研究具有良好抗噪性能、工作稳定、采用并行算法的图象分割方法具有重要的现实意义。(2)如何对分割结果进行客观定量的评估。这对于自动视觉系统特别是工业计算机视觉检测系统是十分重要的,因为决策是自动进行的,不依赖于人工的交互完成。(3)开发一种通用的图象分割方法,可以应用到各种类型的图象。另外性能良好的边缘辨识也是一个十分重要的课题。总之,随着对人类视觉系统的深入理解和计算机视觉技术的成熟和发展,不断吸收一些新的思想和技术,上述问题都能得到满意的解决。

     

    参考文献

    [1]. 边肇祺等.模式识别.清华大学出版社,19886月第1

    [2]. S.D.Yanowitz,A.M.Bruckstein.A new method for image segmentation.Computer Vision,Graphics,

       and Image Processing,1989,46:8295

    [3]. Skolnik. Mathematical Morphology. CVGIP,1986,35:281282

    [4]. Dougherty ER. Introduction to Mathematical Morphology. SPIE Optical Engineering Press,1992

    [5].Boire JY.et al.Proc Ann Int Conf IEEE Eng Med Biol Soc.1990:421422

    [6] .Higgins WE.et al.IEEE Transactions on Medical Imaging,1990.19(8):384395

    [7].Acharya RS.et  al.Proc of SPIE,1991,1652:5061

    [8].N.Babaguchi.K,Yamada.K,Kise and T.Tezuka. Connectionist model binarization,Proc.10th.ICPR,1990:5156

    [9].M.Liang,Z.K.Sun. A neural network model for image segmentation. ICAI & NN92,Switzerland.

    展开全文
  • 本书可作为信息和信号处理、通信与电子系统、模式识别、机器人视觉、生物医学工程等学科专业深教材,也可供上述学科及信息工程、电子工程、计算机科学与技术、机器人自动化、遥感和军事侦察等领域的科技工作者和...
  • 在图象复原领域内,引入了三种新的图象复原准则——最大图象信息法(MII)、最小视觉差法(MPMSE)和最小检测概率均方差法(MDP-MSE)。前者基于模糊集原理,后两者基于人眼视觉特性。着重讨论了基于检测概率的复原...
  • 分析了由于匀速直线运动使图象模糊的机理,并通过对模糊图象频谱的实部和虚部进行不变号和变号的统计,泓出模糊长度L,最后给出了使模糊图象予以复原的实现结果.
  • 图象的压缩编码

    千次阅读 2012-04-25 15:10:37
    因为图象信息的数据量实在是太惊人了。举一个例子就明白:一张A4(210mm×297mm)幅面的照片,若用中等分辨率(300dpi)的扫描仪按真彩色扫描,其数据量为多少?让我们来计算一下:共有(300×210/25.4) ×(300×297/...

    在介绍图象的压缩编码之前,先考虑一个问题:为什么要压缩?其实这个问题不用我回答,你也能想得到。因为图象信息的数据量实在是太惊人了。举一个例子就明白:一张A4(210mm×297mm)幅面的照片,若用中等分辨率(300dpi)的扫描仪按真彩色扫描,其数据量为多少?让我们来计算一下:共有(300×210/25.4) ×(300×297/25.4)个象素,每个象素占3个字节,其数据量为26M字节,其数据量之大可见一斑了。

    如今在Internet上,传统基于字符界面的应用逐渐被能够浏览图象信息的WWW(World Wide Web)方式所取代。WWW尽管漂亮,但是也带来了一个问题:图象信息的数据量太大了,本来就已经非常紧张的网络带宽变得更加不堪重负,使得World Wide Web变成了World Wide Wait

    总之,大数据量的图象信息会给存储器的存储容量,通信干线信道的带宽,以及计算机的处理速度增加极大的压力。单纯靠增加存储器容量,提高信道带宽以及计算机的处理速度等方法来解决这个问题是不现实的,这时就要考虑压缩。

    压缩的理论基础是信息论。从信息论的角度来看,压缩就是去掉信息中的冗余,即保留不确定的信息,去掉确定的信息(可推知的),也就是用一种更接近信息本质的描述来代替原有冗余的描述。这个本质的东西就是信息量(即不确定因素)

    压缩可分为两大类:第一类压缩过程是可逆的,也就是说,从压缩后的图象能够完全恢复出原来的图象,信息没有任何丢失,称为无损压缩;第二类压缩过程是不可逆的,无法完全恢复出原图象,信息有一定的丢失,称为有损压缩。选择哪一类压缩,要折衷考虑,尽管我们希望能够无损压缩,但是通常有损压缩的压缩比(即原图象占的字节数与压缩后图象占的字节数之比,压缩比越大,说明压缩效率越高)比无损压缩的高。

    图象压缩一般通过改变图象的表示方式来达到,因此压缩和编码是分不开的。图象压缩的主要应用是图象信息的传输和存储,可广泛地应用于广播电视、电视会议、计算机通讯、传真、多媒体系统、医学图象、卫星图象等领域。

    压缩编码的方法有很多,主要分成以下四大类:(1)象素编码;(2)预测编码;(3)变换编码;(4)其它方法。

    所谓象素编码是指,编码时对每个象素单独处理,不考虑象素之间的相关性。在象素编码中常用的几种方法有:(1)脉冲编码调制(Pulse Code Modulation,简称PCM)(2)熵编码(Entropy Coding)(3)行程编码(Run Length Coding)(4)位平面编码(Bit Plane Coding)。其中我们要介绍的是熵编码中的哈夫曼(Huffman)编码和行程编码(以读取.PCX文件为例)

    所谓预测编码是指,去除相邻象素之间的相关性和冗余性,只对新的信息进行编码。举个简单的例子,因为象素的灰度是连续的,所以在一片区域中,相邻象素之间灰度值的差别可能很小。如果我们只记录第一个象素的灰度,其它象素的灰度都用它与前一个象素灰度之差来表示,就能起到压缩的目的。如24821013,实际上这6个象素的灰度是248250251251252255。表示250需要8个比特,而表示2只需要两个比特,这样就实现了压缩。

    常用的预测编码有Δ调制(Delta Modulation,简称DM);微分预测编码(Differential Pulse Code ModulationDPCM),具体的细节在此就不详述了。

    所谓变换编码是指,将给定的图象变换到另一个数据域(如频域)上,使得大量的信息能用较少的数据来表示,从而达到压缩的目的。变换编码有很多,如(1)离散傅立叶变换(Discrete Fourier Transform,简称DFT)(2)离散余弦变换(Discrete Cosine Transform,简称DCT)(3)离散哈达玛变换(Discrete Hadamard Transform,简称DHT)

    其它的编码方法也有很多,如混合编码(Hybird Coding)、矢量量化(Vector QuantizeVQ)LZW算法。在这里,我们只介绍LZW算法的大体思想。

    值得注意的是,近些年来出现了很多新的压缩编码方法,如使用人工神经元网络(Artificial Neural Network,简称ANN)的压缩编码算法、分形(Fractl)、小波(Wavelet)、基于对象(Object Based)的压缩编码算法、基于模型(Model –Based)的压缩编码算法(应用在MPEG4及未来的视频压缩编码标准中)。这些都超出了本书的范围。

    本章的最后,我们将以JPEG压缩编码标准为例,看看上面的几种编码方法在实际的压缩编码中是怎样应用的。

    1哈夫曼编码

    哈夫曼(Huffman)编码是一种常用的压缩编码方法,是Huffman1952年为压缩文本文件建立的。它的基本原理是频繁使用的数据用较短的代码代替,较少使用的数据用较长的代码代替,每个数据的代码各不相同。这些代码都是二进制码,且码的长度是可变的。举个例子:假设一个文件中出现了8种符号S0,S1,S2,S3,S4,S5,S6,S7,那么每种符号要编码,至少需要3比特。假设编码成000,001,010,011,100,101,110,111(称做码字)。那么符号序列S0S1S7S0S1S6S2S2S3S4S5S0S0S1编码后变成000001111000001110010010011100101000000001,共用了42比特。我们发现S0S1S2这三个符号出现的频率比较大,其它符号出现的频率比较小,如果我们采用一种编码方案使得S0S1S2的码字短,其它符号的码字长,这样就能够减少占用的比特数。例如,我们采用这样的编码方案:S0S7的码字分别01,11,101,0000,0001,0010,0011,100,那么上述符号序列变成011110001110011101101000000010010010111,共用了39比特,尽管有些码字如S3S4S5S6变长了(3位变成4),但使用频繁的几个码字如S0S1变短了,所以实现了压缩。

    上述的编码是如何得到的呢?随意乱写是不行的。编码必须保证不能出现一个码字和另一个的前几位相同的情况,比如说,如果S0的码字为01S2的码字为011,那么当序列中出现011时,你不知道是S0的码字后面跟了个1,还是完整的一个S2的码字。我们给出的编码能够保证这一点。

    下面给出具体的Huffman编码算法。

    (1)              首先统计出每个符号出现的频率,上例S0S7的出现频率分别为4/143/142/141/141/141/141/141/14

    (2)              从左到右把上述频率按从小到大的顺序排列。

    (3)              每一次选出最小的两个值,作为二叉树的两个叶子节点,将和作为它们的根节点,这两个叶子节点不再参与比较,新的根节点参与比较。

    (4)              重复(3),直到最后得到和为1的根节点。

    (5)              将形成的二叉树的左节点标0,右节点标1。把从最上面的根节点到最下面的叶子节点途中遇到的0,1序列串起来,就得到了各个符号的编码。

    上面的例子用Huffman编码的过程如图9.1所示,其中圆圈中的数字是新节点产生的顺序。可见,我们上面给出的编码就是这么得到的。

     

    9.1     Huffman编码的示意图

    产生Huffman编码需要对原始数据扫描两遍。第一遍扫描要精确地统计出原始数据中,每个值出现的频率,第二遍是建立Huffman树并进行编码。由于需要建立二叉树并遍历二叉树生成编码,因此数据压缩和还原速度都较慢,但简单有效,因而得到广泛的应用。

    源程序就不给出了,有兴趣的读者可以自己实现。

    2 行程编码

    行程编码(Run Length Coding)的原理也很简单:将一行中颜色值相同的相邻象素用一个计数值和该颜色值来代替。例如aaabccccccddeee可以表示为3a1b6c2d3e。如果一幅图象是由很多块颜色相同的大面积区域组成,那么采用行程编码的压缩效率是惊人的。然而,该算法也导致了一个致命弱点,如果图象中每两个相邻点的颜色都不同,用这种算法不但不能压缩,反而数据量增加一倍。所以现在单纯采用行程编码的压缩算法用得并不多,PCX文件算是其中的一种。

    3 算法的大体思想

    LZW是一种比较复杂的压缩算法,其压缩效率也比较高。我们在这里只介绍一下它的基本原理:LZW把每一个第一次出现的字符串用一个数值来编码,在还原程序中再将这个数值还成原来的字符串。例如:用数值0x100代替字符串“abccddeee”,每当出现该字符串时,都用0x100代替,这样就起到了压缩的作用。至于0x100与字符串的对应关系则是在压缩过程中动态生成的,而且这种对应关系隐含在压缩数据中,随着解压缩的进行这张编码表会从压缩数据中逐步得到恢复,后面的压缩数据再根据前面数据产生的对应关系产生更多的对应关系,直到压缩文件结束为止。LZW是无损的。GIF文件采用了这种压缩算法。

    要注意的是,LZW算法由Unisys公司在美国申请了专利,要使用它首先要获得该公司的认可。

    4 JPEG压缩编码标准

    JPEG是联合图象专家组(Joint Picture Expert Group)的英文缩写,是国际标准化组织(ISO)CCITT联合制定的静态图象的压缩编码标准。和相同图象质量的其它常用文件格式(GIFTIFFPCX)相比,JPEG是目前静态图象中压缩比最高的。我们给出具体的数据来对比一下。例图采用Windows95目录下的Clouds.bmp,原图大小为640*480256色。用工具SEA(version1.3)将其分别转成24位色BMP24位色JPEGGIF(只能转成256)压缩格式、24位色TIFF压缩格式、24位色TGA压缩格式。得到的文件大小(以字节为单位)分别为:921,65417,707177,152923,044768,136。可见JPEG比其它几种压缩比要高得多,而图象质量都差不多(JPEG处理的颜色只有真彩和灰度图)

    正是由于JPEG的高压缩比,使得它广泛地应用于多媒体和网络程序中,例如HTML语法中选用的图象格式之一就是JPEG(另一种是GIF)。这是显然的,因为网络的带宽非常宝贵,选用一种高压缩比的文件格式是十分必要的。

    JPEG有几种模式,其中最常用的是基于DCT变换的顺序型模式,又称为基线系统(Baseline),以下将针对这种格式进行讨论。

    4.1.         JPEG的压缩原理

    JPEG的压缩原理其实上面介绍的那些原理的综合,博采众家之长,这也正是JPEG有高压缩比的原因。其编码器的流程为:

    图9.3     JPEG编码器流程

    解码器基本上为上述过程的逆过程:

    图9.4     解码器流程

    8×8的图象经过DCT变换后,其低频分量都集中在左上角,高频分量分布在右下角(DCT变换实际上是空间域的低通滤波器)。由于该低频分量包含了图象的主要信息(如亮度),而高频与之相比,就不那么重要了,所以我们可以忽略高频分量,从而达到压缩的目的。如何将高频分量去掉,这就要用到量化,它是产生信息损失的根源。这里的量化操作,就是将某一个值除以量化表中对应的值。由于量化表左上角的值较小,右上角的值较大,这样就起到了保持低频分量,抑制高频分量的目的。JPEG使用的颜色是YUV格式。我们提到过,Y分量代表了亮度信息,UV分量代表了色差信息。相比而言,Y分量更重要一些。我们可以对Y采用细量化,对UV采用粗量化,可进一步提高压缩比。所以上面所说的量化表通常有两张,一张是针对Y的;一张是针对UV的。

    上面讲了,经过DCT变换后,低频分量集中在左上角,其中F(0,0)(即第一行第一列元素)代表了直流(DC)系数,即8×8子块的平均值,要对它单独编码。由于两个相邻的8×8子块的DC系数相差很小,所以对它们采用差分编码DPCM,可以提高压缩比,也就是说对相邻的子块DC系数的差值进行编码。8×8的其它63个元素是交流(AC)系数,采用行程编码。这里出现一个问题:这63个系数应该按照怎么样的顺序排列?为了保证低频分量先出现,高频分量后出现,以增加行程中连续“0”的个数,这63个元素采用了“之”字型(Zig-Zag)的排列方法,如图9.5所示。

    图9.5     Zig-Zag

    这63个AC系数行程编码的码字用两个字节表示,如图9.6所示。

    图9.6     行程编码

    上面,我们得到了DC码字和 AC行程码字。为了进一步提高压缩比,需要对其再进行熵编码,这里选用Huffman编码,分成两步:

    (1)熵编码的中间格式表示

    对于AC系数,有两个符号。符号1为行程和尺寸,即上面的(RunLength,Size)。(0,0)和(15,0)是两个比较特殊的情况。(0,0)表示块结束标志(EOB),(15,0)表示ZRL,当行程长度超过15时,用增加ZRL的个数来解决,所以最多有三个ZRL(3×16+15=63)。符号2为幅度值(Amplitude)。

    对于DC系数,也有两个符号。符号1为尺寸(Size);符号2为幅度值(Amplitude)。

    (2)熵编码

    对于AC系数,符号1和符号2分别进行编码。零行程长度超过15个时,有一个符号(15,0),块结束时只有一个符号(0,0)。

    对符号1进行Hufffman编码(亮度,色差的Huffman码表不同)。对符号2进行变长整数VLI编码。举例来说:Size=6时,Amplitude的范围是-63~-32,以及32~63,对绝对值相同,符号相反的码字之间为反码关系。所以AC系数为32的码字为100000,33的码字为100001,-32的码字为011111,-33的码字为011110。符号2的码字紧接于符号1的码字之后。

    对于DC系数,Y和UV的Huffman码表也不同。

    掉了这么半天的书包,你可能已经晕了,呵呵。举个例子来说明上述过程就容易明白了。

    下面为8×8的亮度(Y)图象子块经过量化后的系数。

                                            

    可见量化后只有左上角的几个点(低频分量)不为零,这样采用行程编码就很有效。

    第一步,熵编码的中间格式表示:先看DC系数。假设前一个8×8子块DC系数的量化值为12,则本块DC系数与它的差为3,根据下表

    Size                                     Amplitude

    0                                        0

    1                                        –1,1

    2                                        –3,-2,2,3

    3                                        –7~-4,4~7

    4                                        –15~-8,8~15

    5                                        –31~-16,16~31

    6                                        –63~-32,32~63

    7                                        –127~-64,64~127

    8                                        –255~-128,128~255

    9                                        –511~-256,256~511

    10                                       –1023~512,512~1023

    11                                       –2047~-1024,1024~2047

    查表得Size=2,Amplitude=3,所以DC中间格式为(2)(3)。

    下面对AC系数编码。经过Zig-Zag扫描后,遇到的第一个非零系数为-2,其中遇到零的个数为1(即RunLength),根据下面这张AC系数表:

    Size                             Amplitude

    1                                        –1,1

    2                                        –3,-2,2,3

    3                                        –7~-4,4~7

    4                                        –15~-8,8~15

    5                                        –31~-16,16~31

    6                                        –63~-32,32~63

    7                                        –127~-64,64~127

    8                                        –255~-128,128~255

    9                                        –511~-256,256~511

    10                                       –1023~512,512~1023

    查表得Size=2。所以RunLength=1,Size=2,Amplitude=3,所以AC中间格式为(1,2)(-2)。

    其余的点类似,可以求得这个8×8子块熵编码的中间格式为

    (DC)(2)(3),(1,2)(-2),(0,1)(-1),(0,1)(-1),(0,1)(-1),(2,1)(-1),(EOB)(0,0)

    第二步,熵编码:

    对于(2)(3):2查DC亮度Huffman表得到11,3经过VLI编码为011;

    对于(1,2)(-2):(1,2)查AC亮度Huffman表得到11011,-2是2的反码,为01;

    对于(0,1)(-1):(0,1)查AC亮度Huffman表得到00,-1是1的反码,为0;

    ……

    最后,这一8×8子块亮度信息压缩后的数据流为11011, 1101101, 000, 000, 000, 111000,1010。总共31比特,其压缩比是64×8/31=16.5,大约每个象素用半个比特。

    可以想见,压缩比和图象质量是呈反比的,以下是压缩效率与图象质量之间的大致关系,可以根据你的需要,选择合适的压缩比。

    4.1    压缩比与图象质量的关系

    压缩效率(单位:bits/pixel)

    图象质量

    0.25~0.50

    ~好,可满足某些应用

    0.50~0.75

    ~很好,满足多数应用

    0.75~1.5

    极好,满足大多数应用

    1.5~2.0

    与原始图象几乎一样

    以上我们介绍了JPEG压缩的原理,其中DC系数使用了预测编码DPCMAC系数使用了变换编码DCT,二者都使用了熵编码Huffman,可见几乎所有传统的压缩方法在这里都用到了。这几种方法的结合正是产生JPEG高压缩比的原因。顺便说一下,该标准是JPEG小组从很多种不同中方案中比较测试得到的,并非空穴来风。

    上面介绍了JPEG压缩的基本原理,下面介绍一下JPEG的文件格式。

    2.        JPEG的文件格式

    JPEG文件大体上可以分成以下两个部分:标记码(Tag)加压缩数据。先介绍标记码部分。

    标记码部分给出了JPEG图象的所有信息(有点类似于BMP中的头信息,但要复杂的多),如图象的宽、高、Huffman表、量化表等等。标记码有很多,但绝大多数的JPEG文件只包含几种。标记码的结构为:

    SOI

    DQT

                 DRI

                        SOF0

                               DHT

                                      SOS

                                      …

                                      EOI

    标记码由两个字节组成,高字节为0XFF,每个标记码之前可以填上个数不限的填充字节0XFF

    下面介绍一些常用的标记码的结构及其含义。

    (1)SOI(Start of Image)

    标记结构     字节数

    0XFF             1

    0XD8             1

    可作为JPEG格式的判据(JFIF还需要APP0的配合)

    (2)APP0(Application)

    标记结构      字节数   意义

    0XFF             1

    0XE0             1

    Lp                 2            APP0标记码长度,不包括前两个字节0XFF0XE0

    Identifier 5            JFIF识别码 0X4A0X460X490X460X00

    Version           2            JFIF版本号可为0X0101或者0X0102

    Units              1           单位,等于零时表示未指定,为1表示英寸,为2表示

    厘米

    Xdensity  2           水平分辨率

    Ydensity  2           垂直分辨率

    Xthumbnail     1           水平点数

    Ythumbnail     1           垂直点数

    RGB0             3            RGB的值

    RGB1             3            RGB的值

    RGBn             3            RGB的值,n=Xthumbnail*Ythumbnail

    APP0JPEG保留给Application所使用的标记码,而JFIF将文件的相关信息定义在此标记中。

    (3)DQT(Define Quantization Table)

    标记结构      字节数   意义

    0XFF             1

    0XDB            1

    Lq                 2            DQT标记码长度,不包括前两个字节0XFF0XDB

    (Pq,Tq)          1           高四位Pq为量化表的数据精确度,Pq=0时,Q0~Qn

    值为8位,Pq=1时,Qt的值为16位,Tq表示量化表的

    编号,为0~3。在基本系统中,Pq=0Tq=0~1,也就是

    说最多有两个量化表。

    Q0                 12     量化表的值,Pq=0时;为一个字节,Pq=1时,为两个

    字节

    Q1                 12     量化表的值,Pq=0时;为一个字节,Pq=1时,为两个

    字节

    Qn                 12     量化表的值,Pq=0时,为一个字节;Pq=1时,为两个

    字节。n的值为0~63,表示量化表中64个值(之字形排

    )

    (4)DRI(Define Restart Interval)

    此标记需要用到最小编码单元(MCUMinimum Coding Unit)的概念。前面提到,Y分量数据重要,UV分量的数据相对不重要,所以可以只取UV的一部分,以增加压缩比。目前支持JPEG格式的软件通常提供两种取样方式YUV411YUV422,其含义是YUV三个分量的数据取样比例。举例来说,如果Y取四个数据单元,即水平取样因子Hy乘以垂直取样因子Vy的值为4,而UV各取一个数据单元,即Hu×Vu=1,Hv×Vv=1。那么这种部分取样就称为YUV411。如图9.7所示:

     

    易知YUV41150%的压缩比(原来有12个数据单元,现在有6个数据单元)YUV42233%的压缩比(原来有12个数据单元,现在有8个数据单元)

    那么你可能会想,YUV911YUV1611压缩比不是更高嘛?但是要考虑到图象质量的因素。所以JPEG标准规定了最小编码单元MCU,要求Hy×Vy+Hu×Vu+Hv×Vv10

    MCU中块的排列方式与HV的值有密切关系,如图9.8、图9.9、图9.10所示。

    标记结构      字节数   意义

    0XFF             1

    0XDD            1

    Lr                  2            DRI标记码长度,不包括前两个字节0XFF0XDD

    Ri                 2           重入间隔的MCU个数,Ri必须是一MCU行中MCU

    个数的整数,最后一个零头不一定刚好是RiMCU

    每个重入间隔各自独立编码。

    (5)SOF(Start of Frame)在基本系统中,只处理SOF0

    标记结构      字节数   意义

    0XFF             1

    0XC0             1

    Lf                  2            SOF标记码长度,不包括前两个字节0XFF0XC0

    P                   1           基本系统中,为0X08

    Y                   2           图象高度

    X                   2           图象宽度

    Nf                 1            Frame中的成分个数,一般为131代表灰度图,3

    代表真彩图

    C1                 1           成分编号1

    (H1,V1)   1           第一个水平和垂直采样因子

    Tq1        1           该量化表编号

    C2                 1           成分编号2

    (H2,V2)   1           第二个水平和垂直采样因子

    Tq2        1           该量化表编号

    Cn                 1           成分编号n

    (Hn,Vn)   1           n个水平和垂直采样因子

    Tqn        1           该量化表编号

    (6)DHT(Define Huffman Table)

    标记结构      字节数   意义

    0XFF             1

    0XC4             1

    Lh                 2            DHT标记码长度,不包括前两个字节0XFF0XC4

    (Tc,Th)          1           

    L1                 1

    L2                 1

    …                 

    L16         1

    V1                 1

    V2                 1

    Vt                  1

    Tc为高4位,Th为低4位。在基本系统中,Tc01,为0时,指DC所用的Huffman表,为1时,指AC所用的Huffman表。Th表示Huffman表的编号,在基本系统中,其值为01。所以,在基本系统中,最多有4Huffman表,如下所示:

    Tc   Th   Huffman表编号(2×Tc+Th)

    0     0

    1     1

    0     2

    1     1     3

    Ln表示每个n比特的Huffman码字的个数,n=1~16

    Vt表示每个Huffman码字所对应的值,也就是我们前面所讲的符号1,对DC来说该值为(Size),对AC来说该值为(RunLengthSize)

    t=L1+L2+…L16

    (7)SOS(Start of Scan)

    标记结构      字节数   意义

    0XFF             1

    0XDA            1

    Ls                  2            DHT标记码长度,不包括前两个字节0XFF0XDA

    Ns                 1

    Cs1         1

    (Td1,Ta1)       1

    Cs2         1

    (Td2,Ta2)       1

    CsNs             1

    (TdNs,TaNs)  1

    Ss                  1

    Se                  1

    (AhAl) 1

    NsScan中成分的个数,在基本系统中,Ns=Nf(Frame中成分个数)CSNs为在Scan中成分的编号。TdNs为高4位,TaNs为低4位,分别表示DCAC编码表的编号。在基本系统中Ss=0Se=63Ah=0Al=0

    (8)EOI(End of Image)  结束标志

    标记结构      字节数   意义

    0XFF             1

    0XD9             1

    3.        JPEG基本系统解码器的实现

    笔者曾经实现了一个WindowsJPEG基本系统的解码器,限于篇幅,这里就不给源程序了,只给出大体上的程序流程图(见图9.11)

    由于没有用到什么优化算法,该解码器的速度并不高,在用VC的性能评测工具Profile评测该程序时我发现最耗时的地方是反离散余弦变换(IDCT)那里,其实这是显然的,浮点数的指令条数要比整数的多得多,因此采用一种快速的IDCT算法能很大的提高性能,我这里采用是目前被认为比较好的一种快速IDCT算法,其主要思想是把二维IDCT分解成行和列两个一维IDCT。图9.12是程序运行时的画面。

    展开全文
  • 图象处理基本算法

    千次阅读 2016-09-08 13:28:33
    图象处理基本算法 图像处理知识库 · 2016-01-06 11:25 图象处理基本算法 1)将256*256分辨率的图像变为128*128分辨率可以将源图像划分成2*2的子图像块,然后将2*2的子图像块的所有像素颜色均按照F(i,j)的...

    图象处理基本算法

    图像处理知识库 · 2016-01-06 11:25

    图象处理基本算法

    图象处理基本算法

    1)将256*256分辨率的图像变为128*128分辨率可以将源图像划分成2*2的子图像块,然后将2*2的子图像块的所有像素颜色均按照F(i,j)的颜色值进行设定,达到降低分辨率的目的。如:
    F(i,j) F(i,j+1) F(i,j) F(i,j)
    F(i+1,j) F(i+1,j+1) 变成 F(i,j) F(i,j)
    (同理,256*256分辨率的图像变成64*64分辨率,只需要划分成4*4即可,以此类推。)

    2) R单色, G单色,B单色化图像,只需要将图像的每一个像素中的相应的R, G, B值取出,然后利用类似
    (R,R,R),(G,G,G),(B,B,B)的像素重新绘制即可。

    3) 彩色图像的RGB和亮度Y,色差I,信号值Q的关系
    | Y | |0.31 0.59 0.11 | | R |
    | I | = |0.60 -0.28 -0.32 | * | G |
    |Q | |0.21 -0.52 -0.31 | | B |

    即 Y = 0.31R + 0.59G+0.11B
    I = 0.60R - 0.28G - 0.32B
    Q = 0.21R - 0.52B - 0.31B

    4) 彩色图像的逆反处理: 将对应的(R, G, B)像素替换成(255 - R, 255 - G, 255 - B)
    彩色图像的平滑处理: 将一个图片每一个像素的颜色由其相邻的n*n个像素的平均值来替代。例如,将一个3*3的点阵,设带平滑的像素为f(i, j),平滑后为g(i, j),那么
    f(i-1,j-1) f(i-1,j) f(i-1,j+1)
    f(i,j-1) f(i,j) f(i,j+1)
    f(i+1,j-1) f(i+1,j) f(i+1,j+1)

    g(i,j)=( f(i-1,j-1) + f(i-1,j) + f(i-1,j+1) + f(i,j-1) + f(i,j) + f(i,j+1) + f(i+1,j-1) + f(i+1,j) + f(i+1,j+1) ) / 9

    这里要注意的是对于边缘的像素的情况,防止越界。
    彩色图像的霓虹处理: 同样以上面的3*3的点阵为例,目标像素g(i,j)应当以f(i,j)与f(i,j+1),f(i,j)与f(i+1,j)的梯度作为R,G,B分量,我们不妨设f(i,j)的RGB分量为(r1, g1, b1), f(i,j+1)为(r2, g2, b2), f(i+1,j)为(r3, g3, b3), g(i, j)为(r, g, b),那么结果应该为
    r = 2 * sqrt( (r1 - r2)^2 + (r1 - r3)^2 )
    g = 2 * sqrt( (g1 - g2)^2 + (g1 - g3)^2 )
    b = 2 * sqrt( (b1 - b2)^2 + (b1 - b3)^2 )
    彩色图像的锐化处理: 设f(i,j)像素为(r1, g1, b1) , f(i-1,j-1)像素为(r2,g2,b2), g(i,j)像素为(r,g,b),则
    r = r1 + 0.25 * |r1 - r2|
    g = g1 + 0.25 * |g1 - g2|
    b = b1 + 0.25 * |b1 - b2|
    彩色图像的浮雕处理: g(i, j) = f(i, j) - f(i - 1, j) + 常数 , 这里的常数通常选作128
    彩色图像的镶嵌处理:彩色图像的平滑处理类似,但是不同的地方在于3*3的目标像素点都取作g(i,j),而不是另外的再去取所在矩阵像素的平均值。
    彩色图像的灰度处理: r = r1 / 64 * 64 g = g1 / 64 * 64 b = b1 / 64 * 64 注意这里的除法是程序设计当中的整数除法。

    5) 图象的几何变换:平移,缩放,旋转等均于解析几何当中的保持一致。

    6) 图象的滤波处理
    卷积滤波 原理是 y(n1, n2)=∑∑x(m1,m2)h(n1-m1,n2-m2) (两个求和符号的范围分别是 m1:0~N m2:0~N)
    其中x(m1,m2)为输入图像信号,h(n1-m1,n2-m2)为滤波系统对单位采样序列δ(n1,n2)的响应。
    ⊙低通滤波 一般而言,图像中的噪声频谱位于空间频率较高的区域,空间域低通滤波用于平滑噪声。常用低通滤波的
    h(n1, n2) 的3*3阵列如下:
    1/9 1/9 1/9
    h(n1, n2) = 1/9 1/9 1/9
    1/9 1/9 1/9
    1/10 1/10 1/10
    h(n1, n2) = 1/10 2/10 1/10
    1/10 1/10 1/10
    1/16 1/8 1/16
    h(n1, n2) = 1/8 1/4 1/8
    1/16 1/8 1/16
    采用5*5阵列低通滤波h(n1,n2)如下:
    1/35 1/35 1/35 1/35 1/35
    1/35 2/35 2/35 2/35 1/35
    h(n1, n2) = 1/35 2/35 3/35 2/35 1/35
    1/35 2/35 2/35 2/35 1/35
    1/35 1/35 1/35 1/35 1/35
    ⊙高通滤波 空域高通滤波是对图像的低频分量进行拟制,让图像的高频分量无损耗或者低损耗的通过。空域高通滤波常用的h(n1,n2)的如下:
    0 -1 0
    h(n1, n2) = -1 5 -1
    0 -1 0
    -1 -1 -1
    h(n1, n2) = -1 9 -1
    -1 -1 -1
    1 -2 1
    h(n1, n2) = -2 5 -2
    0 -2 1
    增强处理
    ⊙ 水平增强 增强图像水平方向线条也是一种高通滤波。水平增强的h(n1, n2)的例子如下:
    0 0 0
    h(n1, n2) = 0 0 0
    -1 2 -1
    ⊙ 垂直增强 增强图像垂直方向线条也是一种高通滤波。水平增强的h(n1, n2)的例子如下:
    -1 0 0
    h(n1, n2) = 2 0 0
    -1 0 0
    ⊙ 水平垂直增强 水平垂直增强图像也是一种高通滤波。水平增强的h(n1, n2)的例子如下:
    -1 -1 -1
    h(n1, n2) = -1 8 -1
    -1 -1 -1

    结构滤波
    ⊙ 并联型结构滤波
    结构如图:

    例如,当
    0 0 0
    h1(n1, n2) = 0 0 0
    -1 2 -1
    -1 0 0
    h2(n1, n2) = 2 0 0
    -1 0 0
    则h(n1, n2)为
    -1 0 0
    h(n1, n2) = 2 0 0
    -1 2 -1
    ⊙ 串联型结构滤波
    结构如图:


    例如,当
    0 0 0
    h1(n1, n2) = 0 0 0
    -1 2 -1
    -1 0 0
    h2(n1, n2) = 2 0 0
    -1 0 0
    则h(n1, n2)为
    1 -2 1
    h(n1, n2) = -2 4 -2
    1 -2 1

    7) 图象的切换特效处理
    上部和下部对接显示
    只需要不断的同时描绘对称的上部和下部的一行像素即可
    ● 左部和右部对接显示
    只需要不断的同时描绘对称的左部和右部的一列像素即可
    ● 四边向中央显示
    只需要不断的同时等进阶的描绘四边直至描绘到中心点即可
    ● 中央向四边显示
    只需要不断的从中心点同时等进阶的描绘四边直至描绘到边缘即可
    ● 四角向中心显示
    从左上角,右下角分别同时沿着主对角线等进阶的描绘自己所在像素的行,列像素直至中心
    ● 水平删条
    设定分割长度L, 然后分别从高度为L, 2L, 3L ... 处等进阶的描绘行像素,显然这里进阶所需描绘高度为L
    ● 垂直删条
    设定分割长度L, 然后分别从宽度为L, 2L, 3L ... 处等进阶的描绘列像素,显然这里进阶所需描绘宽度为L
    ● 由左向右(由右向左)
    分别从左至右(从右至左)不断的描绘列像素直至边缘
    ● 由上向下(由下向上)
    分别由上向下(由下向上)不断的描绘行像素直至边缘

    8) 边缘探测
    在图像测量,模式识别时,从图像中抽出线条,检测出图像边缘或者抽出图像轮廓是最常用的操作。迄今为止,已经出现了许多成熟的算法。例如微分算法,掩模算法等。在微分算法中,常使用N*N的像素块,例如3*3或者4*4。3*3的像素块如下,
    f(i-1,j-1) f(i-1,j) f(i-1,j+1)
    f(i,j-1) f(i,j) f(i,j+1)
    f(i+1,j-1) f(i+1,j) f(i+1,j+1)
    我们不妨设f(i,j)为待处理的像素,而g(i, j)为处理后的像素。
    ● Roberts算子
    g(i, j) = sqrt( (f(i, j) - f(i + 1, j))^2 + (f(i + 1, j) - f(i, j + 1))^2 )
    或者
    g(i, j) = |f(i,j) - f(i + 1,j)| + |f(i+1,j) - f(i,j+1)|
    ● Sobel算子
    对数字图像的每一个像素f(i,j),考察它的上、下、左、右邻域灰度的加权值,把各方向上(0度、45度、90度、135度)的灰度值加权之和作为输出,可以达到提取图像边缘的效果。
    即 g(i,j) = fxr + fyr, 其中
    fxr = f(i-1,j-1)+2*f(i-1,j)+f(i-1,j+1)-f(i+1,j-1)-2*f(i+1,j)-f(i+1,j+1)
    fyr = f(i-1,j-1)+2*f(i,j-1)+f(i+1,j-1)-f(i-1,j+1)-2*f(i,j+1)-f(i+1,j+1)

    ● Laplace算子
    Laplace算子是一种二阶微分算子。它有两种形式:4邻域微分算子和8邻域微分算子。
    ⊙ 4邻域微分
    g(i,j)=|4*f(i,j)-f(i,j-1)-f(i-1,j)-f(i+1,j)-f(i,j+1)|
    ⊙ 8邻域微分
    g(i,j)=|8*f(i,j)-f(i,j-1)-f(i-1,j)-f(i+1,j)-f(i,j+1)-f(i-1,j-1)-f(i-1,j+1)-f(i+1,j-1)-f(i+1,j+1)|
    ● 其他常用算子
    ⊙ 右下边缘抽出
    采用3*3算子时,表达式为
    g(i,j)=|-2*f(i,j-1)-2*f(i-1,j)+2*f(i+1,j)+2*f(i,j+1)|
    ⊙ prewitt 边缘探测样板算子
    prewitt算子是一个边缘模板算子,由八个方向的样板组成,能够在0度,45度,90度,135度,180度,225度角
    等八个方向检测边缘。8个3*3边缘模板及方向如下:
    90度角: 45度角:
    1 1 1 -1 -1 -1
    1 -2 1 1 -2 1
    -1 -1 -1 1 1 1
    0度角: 315度角:
    -1 1 1 1 1 -1
    -1 -2 1 1 -2 -1
    -1 1 1 1 1 -1
    270度角: 225度角:
    1 1 1 -1 -1 1
    -1 -2 1 -1 -2 1
    -1 -1 1 1 1 1
    180度角: 135度角:
    1 1 1 1 -1 -1
    1 -2 -1 1 -2 -1
    1 -1 -1 1 1 1
    3*3时表达式如下:
    A1*f(i-1,j-1) A8*f(i,j-1) A7*f(i+1,j-1)
    A2*f(i-1,j) -2*f(i,j) A6*f(i+1, j)
    A3*f(i-1,j+1) A4*f(i,j+1) A5*f(i+1,j+1)
    g(i,j)=|-2*f(i,j)+A8*f(i,j-1)+A1*f(i-1,j-1)+A2*f(i-1,j)+A3*f(i-1,j+1)+A4*f(i,j+1)+A5*f(i+1,j+1)+A6*f(i+1,j)+A7*f(i+1,j-1)|
    在程序设计中,依次用样板去检测图像,与被检测区域最为相似的样板给出最大值,用该最大值作为算子的输出值。
    ⊙ Robinson算子
    Robinson算子是一个模板算子,由八个方向的样板组成,能够在0度,45度,90度,135度,180度,225度角
    等八个方向检测边缘。8个3*3边缘模板及方向如下:
    90度角: 45度角:
    1 2 1 0 1 2
    0 0 0 -1 0 1
    -1 -2 -1 -2 -1 0
    0度角: 315度角:
    -1 0 1 -2 -1 0
    -2 0 2 -1 0 1
    -1 0 1 0 1 2
    270度角: 225度角:
    -1 -2 -1 0 -1 -2
    0 0 0 1 0 -1
    1 2 1 2 1 0
    180度角: 135度角:
    1 0 -1 2 1 0
    2 0 -2 1 0 -1
    1 0 -1 0 -1 -2
    使用方法与prewitt算子一样。
    ⊙ Kirsch算子
    Kirsch算子是一个模板算子,由八个方向的边缘样板组成,能够在0度,45度,90度,135度,180度,225度角
    等八个方向检测边缘。8个3*3边缘模板及方向如下:
    90度角: 45度角:
    5 5 5 -3 5 5
    -3 0 -3 -3 0 5
    -3 -3 -3 -3 -3 -3
    0度角: 315度角:
    -3 -3 5 -3 -3 -3
    -3 0 5 -3 0 5
    -3 -3 5 -3 5 5
    270度角: 225度角:
    5 5 -3 -3 -3 -3
    5 0 -3 5 0 -3
    -3 -3 -3 5 5 -3
    180度角: 135度角:
    5 -3 -3 5 5 -3
    5 0 -3 5 0 -3
    5 -3 -3 -3 -3 3
    使用方法与prewitt算子一样。
    ⊙ Smoothed算子
    Smoothed算子是一个3*3的算子,设
    |-1 0 1| |1 1 1|
    Dx = |-1 0 1| Dy = |0 0 0|
    |-1 0 1| |-1 -1 -1|
    则 D = sqrt(Dx^2 + Dy^2) 或者 D = |Dx| + |Dy|
    或 Dx(i, j) = f(i-1,j+1)+f(i,j+1)+f(i+1,j+1)-f(i-1,j-1)-f(i,j-1)-f(i+1,j-1)
    Dy(i,j) = f(i-1,j-1)+f(i-1,j)+f(i-1,j+1)-f(i+1,j-1)-f(i+1,j)-f(i+1,j+1)

    9) 灰度图像处理
    所谓灰度处理是根据单色图像的灰度对输出图像的灰度进行再定义、以改善图像的对比度。单色图像的灰度有256级、128级、64级等,下面均以256级单色图像举例。

    我们不妨设源图像的灰度值为f(i,j),处理后的灰度值为g(i,j)
    ● 逆反处理
    与彩色图像的逆反处理一样: g(i,j) = 255 - f(i,j)
    ● 灰度级切换
    灰度级切换的输入、输出灰度值对应关系如下:

    ● 增大对比度
    输入的灰度值越高,对应的输出灰度值越低。灰度值减少,图像变暗,从而使对比度增加。

    ● 减小对比度

    ● 改善对比度

    ● 增强对比度

    ● 局部滤波处理
    局部滤波处理是指利用3*3的图像块内的像素的颜色值对当前像素进行设定的一种图像处理技术。
    ⊙ 平均值滤波
    与彩色图像平滑处理类似。
    g(i,j)=( f(i-1,j-1) + f(i-1,j) + f(i-1,j+1) + f(i,j-1) + f(i,j) + f(i,j+1) + f(i+1,j-1) + f(i+1,j) + f(i+1,j+1) ) / 9
    这里要注意的是对于边缘的像素的情况,防止越界。
    ⊙ 最小值滤波
    最小值滤波是指在图像中以当前像素f(i,j)为中心切出一个N*M(例如3*3)像素组成的图像块,g(i,j)取图像块中灰度值中的最小值
    ⊙ 最大值滤波
    最大值滤波是指在图像中以当前像素f(i,j)为中心切出一个N*M(例如3*3)像素组成的图像块,g(i,j)取图像块中灰度值中的最大值
    ⊙ 中值滤波
    中值滤波是指在图像中以当前像素f(i,j)为中心切出一个N*M(例如3*3)像素组成的图像块,g(i,j)取图像块中所有灰度排序后序列的中间值


    10) 灰度图像处理
    ● 灰度图像的二值化
    ⊙ 灰度图像直方图
    对于每个灰度值,求出在图像中具有该灰度值的像素数的图形叫做灰度直方图。。灰度直方图是灰度级的函数,描述图像中具有相同灰度像素的个数。灰度直方图的横坐标是灰度级,纵坐标是该灰度出现的频率(即像素的个数)。直方图的用途主要是给出了一个简单可见的指示,用来判断一幅图像是否合理的利用了全部被允许的灰度级范围。一般一幅数字图像应该利用全部或几乎全部可能的灰度级范围。一般一幅数字图像应该利用全部或几乎全部可能的灰度级,否则增加了量化间隔。一旦被数字化图像的级数小于255,丢失的信息将不能恢复。如果图像具有超出数字量化器所能处理的范围的亮度,则这些灰度级将简单的置为0或255,由此将在直方图的一端或两端产生尖峰。灰度图像直方图具有直方图的一些统计特征参量,包括了灰度最大值,灰度最小值,均值和标准差。
    ⊙ 阙值计算和图像二值化
    图像二值化的阙值处理方式为:
    g(i,j) = 1; f(i,j)>=t
    g(i,j) = 0; f(i,j)<t
    通常,用g(i,j)=1表示图像,用g(i,)=0表示背景。确定t的方法叫做阙值选择。
    ● 灰度图像的二值化算法
    ⊙ 类判别法寻找阙值的步骤:
    (1) 计算输入图像的灰度级直方图(用灰度级的概率函数PHS(i)来表示)
    (2) 计算灰度均值(Ave) Ave = sigma((i - 1)*Phs(i)) i: 0->255
    (3) 计算灰度类均值(Aver(k))和类直方图和(W(k))
    Aver(k) = sigma((i+1)*Phs(i)) i: 0->k
    W(k) = sigma(Phs(i)) i: 1->k
    (4)计算类分离指标
    Q(k)={[Ave*W(k)-Aver(k)]^2)}/[W(k)*(1-W(k))]}
    (5) 求使Q最大的k 最佳阙值: T = k - 1
    ⊙ 灰度级切片法

    将输入图像的某一灰度级范围内的所有像素全部置为0(黑),其余灰度级的所有像素全部置为255(白),则生成黑白
    二值图像。
    ⊙ 等灰度片二值化

    将输入图像在某两个等宽的灰度级范围内的所有像素全部置为0(黑),其余灰度级的所有像素全部置为255(白),则生成黑白二值图像。
    ⊙ 线性二值化

    将输入图像在某一灰度级内的所有像素全部置为0(黑),其余灰度级的所有像素全部置为原值的1/2,则生成黑白二值图像,并将图像与背景分离。

    ● 二值图像处理
    二值图像处理是指将二值化的图像进行某种修正,使之更适合于图像测量。二值图像处理包括以下操作:
    膨胀 使粒子变大。对图像进行膨胀处理之后再进行收缩处理,则可以修正图像的凹槽
    收缩 使粒子变小。对图像进行收缩处理之后再进行膨胀处理,则可以修正图像的凸槽
    清除孤立点 清除由一个像素构成的对象以及修正由一个像素构成的孔。
    清除粒子 清除任意面积以下的对象
    清除超大粒子 清除任意面积以上的对象
    洞穴填充 填充任意范围

    4邻域收缩
    4邻域收缩的原理是,在3*3的图像块中,如果当前处理像素f(i,j)为0,则其相邻的像素f(i,j+1),f(i,j-1),f(i-1,j),f(i+1,j)均置255。
    8邻域收缩
    8邻域收缩的原理是,在3*3的图像块中,如果当前处理像素f(i,j)为0,则其相邻的像素f(i,j+1),f(i,j-1),f(i-1,j),f(i+1,j),f(i-1,j-1),f(i+1,j-1),f(i-1,j+1),f(i+1,j+1)均置255。
    4邻域膨胀
    4邻域膨胀的原理是,在3*3的图像块中,如果当前处理像素f(i,j)为1,则其相邻的像素f(i,j+1),f(i,j-1),f(i-1,j),f(i+1,j)均置1。
    8邻域膨胀
    8邻域膨胀的原理是,在3*3的图像块中,如果当前处理像素f(i,j)为1,则其相邻的像素f(i,j+1),f(i,j-1),f(i-1,j),f(i+1,j),f(i-1,j-1),f(i+1,j-1),f(i-1,j+1),f(i+1,j+1)均置1。
    8邻域清除孤立点
    8邻域清除孤立点的原理是,在3*3的图像块中,如果当前处理像素f(i,j)为1,而其相邻的像素f(i,j+1),f(i,j-1),f(i-1,j),f(i+1,j),f(i-1,j-1),f(i+1,j-1),f(i-1,j+1),f(i+1,j+1)均为0时,当前处理像素f(i,j)为0。
    4邻域清除孤立点
    4邻域清除孤立点的原理是,在3*3的图像块中,如果当前处理像素f(i,j)为1,而其相邻的像素f(i,j+1),f(i,j-1),f(i-1,j),f(i+1,j均为0时,当前处理像素f(i,j)为0。

    展开全文
  • 基于数字字符图象统计特征,以及细化后的统计特征的数字识别系统(含图片)
  • 图象压缩模型简介

    千次阅读 2005-10-16 13:38:00
    本文拟从预测模型、统计模型、字典模型、变换模型、分形模型、模型基等角度出发,大致以时间为序,让大家对图形压缩算法有个大体的了解以及对图象压缩的发展有个总体的把握!一、图象压缩的理论基础数据压缩的理论...
  • 第十四章 图象压缩 目录 1. 引言 2. 无损压缩 2.1 行程编码(RLE) 2.2 LZW编码 2.3 Huffman编码 3. 有损压缩 3.1 量化 3.2 预测编码 3.3DCT编码 3.4 其它变换编码 作业 ...
  • 本书可作为信息和信号处理、通信与电子系统、模式识别、机器人视觉、生物医学工程等学科专业深教材,也可供上述学科及信息工程、电子工程、计算机科学与技术、机器人自动化、遥感和军事侦察等领域的科技工作者和高等...
  • 基于灰度共生矩阵的图象纹理分析,张鹤,,本文重点运用统计分析方法中的灰度共生矩阵方法对图像进行纹理分析,通过对多种地物图像进行试验,分析研究其结果,得到各类地物
  • 第十八章 彩色图象处理 目录 1. 引言 2. 彩色空间 3. 不同彩色空间之间的转换 4. 彩色图象的分割 作业 1. 引言 彩色图象是多光谱图象的一种特殊情况,对应于人类视觉的三基色即...
  • 图象的检测,模板匹配算法代码
  • 使选择的阈值分割图像目标区域、背景区域两部分灰度统计信息量为最大,最终将图像目标区域与图像背景分离
  • 目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、概率统计、信号处理、图像处理和物理仿真等,都在工具箱(Toolbox)家族中有自己的一席之地。在实验中我们主要用到MATLAB提供图象...
  • 不等精度的观测数据可能对图象产生较大的干扰。等概率归一法是建立在概率统计理论基础上的,适合于对任何服从正态分布的...归一化以后的数据服从同一正态分布,可以减少或消除不等精度的干扰,突出图象中的有用信息
  • 黑白图象中黑点数的计算方法

    千次阅读 2007-11-16 13:53:00
    黑白图象中黑点数在二值图象处理应用程序的设计中,常常需要统计图象中每一行的黑象素数。对于一幅宽为Width,高为Height的图象,数组Dots用于存放每行的黑象素数。下面的程序中,CalcRowDots计算图像Image中每行...
  • 第十八章 彩色图象处理 目录 1.  引言 2.  彩色空间 3.  不同彩色空间之间的转换 4.  彩色图象的分割 作业 1. 引言 彩色图象是多光谱图象的一种特殊情况,对应于人类视觉的三基色即红、绿、蓝三个波段,是对...
  • Java应用OpenCV指南其五:图象滤波

    千次阅读 2017-11-14 12:29:34
      图象滤波总体来说就是对目标图象进行降噪处理,是图象处理中不可缺少的一个环节,滤波处理效果的好坏直接影响后续图象处理和分析的效果和效率。   图象滤波分为两种:线性滤波和非线性滤波;

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,296
精华内容 4,518
关键字:

统计图象信息