常用图像处理算法()[通俗易懂]

常用图像处理算法()[通俗易懂]                         &a

大家好,又见面了,我是你们的朋友全栈君。

                          

               

图像处理基本算法操作从处理对象的多少可以有如下划分:
一)点运算:处理点单元信息的运算
二)群运算:处理群单元 (若干个相邻点的集合)的运算
                                              表1 图像处理操作按处理对象数量分类表格
操作类型
具体常用操作
点运算
二值化操作、直方图处理、亮度映射、加法运算、
翻转运 算 、尺度运算 、对数运算 、指数运算等
群运算
模板卷积运算、滤波运算(均值滤波、最大值滤波 、最小值滤波)、
各项异性扩散、形态学操作(膨胀和腐蚀)、力场变换等
      下图是一副普通的吉普车图像和我们生活中见到的并没有什么两样,但是在计算机看来则是另外一副“模样”了。图像中黄色部分则是几部车图像倒车镜的局部图像在计算机中的形态。                                                
常用图像处理算法()[通俗易懂]
图1 计算机图像的真实表现形态
      以上图为例说明几种重要的点运算和群运算。
      1.二值化操作
       图像二值化是图像处理中十分常见且重要的操作,它是将灰度图像转换为二值图像或灰度图像的过程。二值化操作有很多种,例如一般二值化、翻转二值化、截断二值化、置零二值化、置零翻转二值化。
常用图像处理算法()[通俗易懂]
其中src(x,y)表示的是原始图像中第x行第y列像素值。 
       如果去图像中左上角3X3的邻域,thresh取200,maxval取255,阈值方法选择一般二值化(THRESH_BINARY),那么操作过后的结果如下:
                                                                                            
常用图像处理算法()[通俗易懂]                                                         
                                                                                                                                     图2 一般二值化图示
       在图2中,一般二值化下底表示为0,上顶表示为maxval,其中蓝色横线则表示阈值(thresh)。超过该阈值则为maxval,否则为0。
                                                                                             
常用图像处理算法()[通俗易懂]                         
常用图像处理算法()[通俗易懂]
                                                                                                            (a) 操作前                                                      (b) 操作后
     2.直方图处理 
       直方图是图像处理中另一重要处理过程,它反映图像中不同像素值的统计信息。从这句话我们可以了解到直方图信息仅反映灰度统计信息,与像素具体位置没有关系。这一重要特性在许多识别类算法中直方图处理起到关键作用。假设现有3X3的大小的图像。像素值分别为6,3,3,8,6,8,3,3,3,那么它的统计直方图则为
常用图像处理算法()[通俗易懂]
       假设图1中反光镜的直方图为下图所示。
               
常用图像处理算法()[通俗易懂]
                    图3 图像直方图
     假设我们对直方图中中某一灰度信息进行置零操作,那么反映在直方图图上则是该灰度的柱状高度为0。
     值得一说的是二值化处理和某些直方图处理属于不可逆运算,而亮度映射、加法运算、翻转运算 、尺度运算 、对数运算 、指数运算等皆属于可逆运算。
    
     3.模板卷积运算
       模板运算是图像处理中使用频率相当高的一种运算,很多操作可以归结为模板运算,例如平滑处理,滤波处理以及边缘特征提取处理等。这里需要说明的是模板运算所使用的模板通常说来就是NXN的矩阵(N一般为奇数如3,5,7,…),如果这个矩阵是对称矩阵那么这个模板也称为卷积模板,如果不对称则是一般的运算模板。我们通常使用的模板一般都是卷积模板。如边缘提取中的Sobel算子模板。
常用图像处理算法()[通俗易懂]            
常用图像处理算法()[通俗易懂]
图 4-a Mx算子模板                         图4-bMy算子模板
       模板运算一般操作过程分为以下三个步骤:
       1)定”锚点 “:就是处理之后的结果值的保存位置,该位置称为”锚点 “,有时候也不在中心。            
       2)对位相乘:模板和原图像的待处理区域,进行对位相乘运算           
       3)求和:将步骤2中模板区域内运算结果进行求和,将求和的结果置于”锚点 ”

     4.形态学处理
     形态学处理是二值图像处理中的经典处理手段,主要有膨胀处理和腐蚀处理。也包含一些其他操作如  二值开闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换等。
    膨胀和腐蚀操作主要的功能有:1)消除杂波,噪声信息  2)填充图像内部的”孔洞”  3)平滑边缘毛刺
    膨胀和腐蚀具有类似的数学模型,这里就一起介绍了,简单来说膨胀就是取最大值,腐蚀操作是取最小值。
    膨胀操作的数学表达式为:
                                                                      
常用图像处理算法()[通俗易懂]

    腐蚀操作的数学表达式为:
常用图像处理算法()[通俗易懂]

    膨胀操作和腐蚀操作一般的处理过程如下:
    1)按照选定的处理核(NxN,一般N为奇数)与源图像的区域进行逐个“锚点”配对
    2)将配对的处理邻域信息进行相应操作,膨胀操作就取最大值,腐蚀操作就取最小值
    3)求的结果作为源图像中配对区域的数值。
常用图像处理算法()[通俗易懂]           
常用图像处理算法()[通俗易懂]             
常用图像处理算法()[通俗易懂]
                                                           图a 原图                                                                图b 膨胀处理图                                                           图c 腐蚀处理
 

           

               

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/145637.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 解决windows10下无法安装.net framework 3.5,错误代码0x8024401C

    解决windows10下无法安装.net framework 3.5,错误代码0x8024401Cwindowsupdateerror0x8024401c不想改bug2018-09-2015:28:164478已收藏3展开Error0x8024401c以系統管理員身分執行命令提示字元,然後執行下列三行指令:netstopwuauservregdeleteHKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdatenetstartwuauserv操作如下:C:\Windows\s

  • python mmap_python mmap对象[通俗易懂]

    python mmap_python mmap对象[通俗易懂]—-使用内存映射的原因为了随机访问文件的内容,使用mmap将文件映射到内存中是一个高效和优雅的方法。例如,无需打开一个文件并执行大量的seek(),read(),write()调用,只需要简单的映射文件并使用切片操作访问数据即可。内存映射一个文件并不会导致这个文件被读取到内存中。也就是说,文件并没有被复制到内存缓存或数组中。相反,操作系统仅仅为文件内容保留了一段虚拟内存。当访问文件的不同区域时…

  • Try out the latest C++ compiler toolset without waiting for the next update of Visual Studio

    Updated22/Apr/2016:TheNuGet packageis nowbeinguploadeddaily.Thepayloaddoesn’tch

    2021年12月23日
  • 国产FPGA现状_fpga未来发展前景

    国产FPGA现状_fpga未来发展前景原文:https://www.sohu.com/a/229245757_132567来源:内容来自财通证券TMT组,谢谢。2018年上半年对于中国半导体行业而言是多事之秋,发生了几件让国人深入思考的大事。我作为IC产业的逃兵,最近也在思考很多的问题,包括资本市场、集成电路行业和研究所的一些不成熟的想法。2008年进入华中科技大学电子系,中科院半导体所毕业后进入联发科从事手机芯片开发(没错,就是卖的不怎么好的X30)。离开MTK之前有一段小插曲,招我进联发科的老大后来自己出来创业做安防芯片,当时喊

  • 浏览器javascript 下载m3u8视频合成mp4

    浏览器javascript 下载m3u8视频合成mp4m3u8download.jsdownloadm3u8URLtomp4下载m3u8视频合成一个完整的mp4源码:https://github.com/ccjy88/m3u8download.js功能m3u8downloader是在chrome浏览器中运行的html和js,用于下载m3u8视频。当视频链接比如是https://test-streams.mux.dev/x36xh…

  • xsync集群分发脚本的改良[通俗易懂]

    xsync集群分发脚本的改良[通俗易懂]集群分发脚本xsync带多参数1.0增强了一下带参个数xsync1.0#!/bin/bash#校验参数pcount=$#if(($pcount==0))then exitfi#获取用户名user=`whoami`#获取文件名,路径for((i=1;i<=$#;i++))#对多个传参进行分析dob=${!i} #这里用到了“间接变量”语法fname=`basename$b`dname=`dirname$b`dir=`cd$dname;pwd`

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号