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

常用图像处理算法()[通俗易懂]                         &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 腐蚀处理
 

           

               

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • origin绘图软件安装包及入门使用

    origin绘图软件安装包及入门使用1、安装包(2018版)origin是大多被数科研人员选择的数据绘图软件,功能齐全,简单易用,百度云:链接:https://pan.baidu.com/s/1fQRtfwczwye8MfPDi6BmrQ提取码:y72a安装过程及破解方法比较简单自行搜索2、软件界面介绍打开软件如下图所示,1、book用来存放实验数据,如果有多个Y值可以点击工具栏中“列”来添加更多的列值。表格中的数据可以直接从excle中复制进来,简单易用。2、绘图:在book中加入数据后,选中数据选择左下…

    2022年6月9日
    37
  • postMessage详解

    postMessage详解目录一、概述二、详解一、概述作用该方法是HTML5引入的API,可以通过异步方式实现跨源通信,多用于窗口间数据通信。它提供了一种受控机制来规避不同源脚本无法通信的限制,只要正确使用,这种方法很安全。什么是跨源同源即指相同的协议、域名或IP、端口号。浏览器具有同源限制,同源脚本可以相互通信,一般非同源(跨源)的脚本文件禁止相互通信。二、详解语法示例-发送程序&…

    2022年7月15日
    13
  • Linux 路由表详解及 route 命令详解

    Linux 路由表详解及 route 命令详解Linux内核的路由表通过route命令查看Linux内核的路由表:[root@VM_139_74_centos~]#routeKernelIProutingtableDestinationGatewayGenmaskFlagsMetricRefUseIfacedefaultgatewa…

    2022年7月18日
    53
  • lcd开机流程图_LCD1602程序代码及显示流程图.doc[通俗易懂]

    lcd开机流程图_LCD1602程序代码及显示流程图.doc[通俗易懂]LCD1602程序代码及显示流程图LCD1602程序代码及显示流程图lcd1602显示程序代码前些天弄了最小系统板后就想着学习1602的显示程序,可惜坛子里的或网上的,都没有简单的1602显示程序,无柰在网上下载了一段经过反复修改测试,终于有了下面一段代码://———————————-…

    2022年7月16日
    19
  • 静态内部类和内部类的区别_内部类不能定义为抽象类

    静态内部类和内部类的区别_内部类不能定义为抽象类今天稍微复习一下静态内部类和内部类的相关知识,平常很少用静态内部类静态内部类,不能访问外部类的非静态成员静态内部类不需要创建外部类的对象就可访问(外部类名.内部类比如newMyMain.Person().display();就创建了静态内部类对象)静态内部类可以有public、protected、默认的、private等多种类型(这个功能我倒是从来没听说,通过实验的确ok…

    2022年10月11日
    0
  • 更改nginx默认端口_更改端口号

    更改nginx默认端口_更改端口号一、查看当前Nginx配置信息打开nginx根目录下conf文件夹,点击编辑nginx.conf文件。Tips:Windows系统用记事本打开会使utf-8文件头部加上BOM头,这会导致配置文件不能正常读取,Nginx启动失败。因此推荐使用SublimeText3之类的编辑器打开。 server{listen80;#默认端口号…

    2022年9月7日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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