使用模糊技术进行 (灰度变换Grayscale Transform) 和 (空间滤波Spatial Filtering)


模糊集合为处理不严密信息提供了一种形式。

首先,需要将输入量折算为隶属度,这个过程叫做“模糊化”。

然后,使用得到的隶属度来进行计算,或者判断,或者其他更复杂的算法。

最后,需要将隶属度再次折算为输出,这个过程称为“去模糊”或者“反模糊”。

使用模糊集合进行"灰度变换"

使用模糊集合来进行灰度变换,从而增强图像。首先可以在常理下考虑一下,一般的对于动态范围较小的图像,我们一般的处理的方法是灰度拉升,或者直方图均衡。

这两种的方法的本质就是,让原图较暗的像素更加暗,让原图较亮的像素更加亮。那么,我们规定如下模糊规则

R1:IF 一个像素是暗的,THEN 让这个像素更暗;

R2:IF 一个像素是灰的,THEN 让他保持是灰的;

R3:IF 一个像素是亮的,THEN 让这个像素更亮;

这个规则就代表了我们的处理方法。

当然,IF条件中的像素是暗的(或者灰的,或者是亮的),这个概念都是模糊的。

同理THEN结论中的更暗(或者保持灰的,或者更亮)亦是模糊的。

为此,我们需要确立一个隶属度函数,从而来判断一个像素对于三个条件的隶属度。

实际上,隶属度函数的确定是很复杂的,然而,这里我们则尽量想得简单一点。

首先,一个像素是暗的(模糊),那么其隶属度函数大致的形状是,

    • 在低于某个值的时候域隶属度为1,
    • 在灰度越过某一个值之后,其隶属度为0,
    • 当然

然后之间进行线性插值,那么,我们就可以得到R1的隶属度函数了。同理,R2与R3也是一样的。

为了简单起见,我们将THEN结论中的更暗设置为较为简单的函数。

    • 为了让这个像素更黑,其输出都为0。同理,
    • 为了使这个像素保持灰的,我们将其输出设为0.5,
    • 为了使得一个像素更亮,我们将其设置为1。

根据以上讨论,我们所决定的隶属度函数如下所示。

使用输入的隶属度函数,可以得到模糊化后的数据。

对于一个像素,需要根据规则R1,R2与R3,计算出所对应的隶属度

这个过程,称之为模糊化

将一个输入量模糊化,所使用的函数(或者说是对应关系),称之为知识库。

模糊集合的应用

有意思的表达方式,赞。

实例:

将隶属度函数重叠起来看,理解的重点:

关键就在这里,自定义了一个标准,这就是精髓。

结合公式来看,理解公式的含义:

得到一个权值衡量后的成熟度估计值,最为输出值。

但这样是不是计算量太大了点,对于每一幅图像,毕竟这么多像素要逐个计算。

但效果看上去还是不错的。


使用模糊集合进行"空间滤波"

模糊规则:

         

实例:

[OpenCV] Image Processing - Fuzzy Set的更多相关文章

  1. 使用OpenMP加快OpenCV图像处理性能 | speed up opencv image processing with openmp

    本文首发于个人博客https://kezunlin.me/post/7a6ba82e/,欢迎阅读! speed up opencv image processing with openmp Serie ...

  2. 使用OpenCL提升OpenCV图像处理性能 | speed up opencv image processing with OpenCL

    本文首发于个人博客https://kezunlin.me/post/59afd8b3/,欢迎阅读最新内容! speed up opencv image processing with OpenCL G ...

  3. [OpenCV] Image Processing - Grayscale Transform

    "每个像素的输出值只取决于其输入值" 重难点:Histogram equalization 参考:笑得很甜 http://blog.csdn.net/xiaowei_cqu/art ...

  4. [OpenCV] Image Processing - Grayscale Transform & Histogram

    颜色直方图 首先,先介绍一些Hist的基本使用. Ref:[OpenCV]数字图像灰度直方图 官方文档:https://docs.opencv.org/trunk/d8/dbc/tutorial_hi ...

  5. [OpenCV] Image Processing - Spatial Filtering

    "利用给定像素周围的像素的值决定此像素的最终的输出值“ 教学效果: 策略: 1. 拉普拉斯,突出小细节: . 梯度,突出边缘: . 平滑过的梯度图像用于掩蔽: . 灰度变换,增加灰度动态范围 ...

  6. [OpenCV] Image Processing - Image Elementary Knowledge

    "没有坚实的理论基础,实践只会浅尝于表面." 这是两本打基础的书,没系统学过的话,怎么好意思说自己会CV. 该领域,兴军亮 这个名字屡次出现,看来是计算机视觉领域国内的年轻才俊,向 ...

  7. [Python] python vs cplusplus

    一些学习过程中的总结的两种语言的小对比,帮助理解OO programming. Continue... 字典 序列 --> 字典 Python: def get_counts(sequence) ...

  8. 本人AI知识体系导航 - AI menu

    Relevant Readable Links Name Interesting topic Comment Edwin Chen 非参贝叶斯   徐亦达老板 Dirichlet Process 学习 ...

  9. Computer Vision: OpenCV, Feature Tracking, and Beyond--From <<Make Things See>> by Greg

    In the 1960s, the legendary Stanford artificial intelligence pioneer, John McCarthy, famously gave a ...

随机推荐

  1. 互信息(Mutual Information)

    本文根据以下参考资料进行整理: 1.维基百科:https://zh.wikipedia.org/wiki/%E4%BA%92%E4%BF%A1%E6%81%AF 2.新浪博客:http://blog. ...

  2. curl模拟登录

    $post_data = array("username"=>"yuejide@163.com","password"=>&qu ...

  3. ASP.NET Web API中的参数绑定总结

    ASP.NET Web API中的action参数类型可以分为简单类型和复杂类型. HttpResponseMessage Put(int id, Product item) id是int类型,是简单 ...

  4. git的几十个基本面

    1.下载git?git-scm.com 2.获取帮助git helpgit help config 3.什么是Git?版本控制系统,Version Control System, VCS.它允许我们提 ...

  5. C# 动态修改dll的签名 以及修改引用该dll文件的签名

    在读取RedisSessionStateProvider配置 提到用mono ceil 来修改程序集以及它的签名,里面GetPublicKey 和GetPubliKeyToken 方法里面那个字符串的 ...

  6. 构造函数模式自己定义js对象

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. iOS开发- UICollectionView详解+实例

    本章通过先总体介绍UICollectionView及其常用方法,再结合一个实例,了解如何使用UICollectionView. UICollectionView 和 UICollectionViewC ...

  8. python 与数据结构

    在上面的文章中,我写了python中的一些特性,主要是简单为主,主要是因为一些其他复杂的东西可以通过简单的知识演变而来,比如装饰器还可以带参数,可以使用装饰类,在类中不同的方法中调用,不想写的太复杂, ...

  9. Delphi 中 动态创建的Panel无法改变颜色的解决办法

    刚开始代码如下: procedure TForm1.Button1Click(Sender: TObject); var Panel: TPanel; begin Panel := TPanel.Cr ...

  10. 可能 delphi7 下稳定的最后一版本 GDIPLUS

    可能 delphi7 下稳定的最后一版本 GDIPLUS 万一的 blog 说"终于, Delphi XE2 携带 GDI+ 库了 使用了较早的 http://www.progdigy.co ...