[OpenCV] Image Processing - Fuzzy Set
使用模糊技术进行 (灰度变换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的更多相关文章
- 使用OpenMP加快OpenCV图像处理性能 | speed up opencv image processing with openmp
本文首发于个人博客https://kezunlin.me/post/7a6ba82e/,欢迎阅读! speed up opencv image processing with openmp Serie ...
- 使用OpenCL提升OpenCV图像处理性能 | speed up opencv image processing with OpenCL
本文首发于个人博客https://kezunlin.me/post/59afd8b3/,欢迎阅读最新内容! speed up opencv image processing with OpenCL G ...
- [OpenCV] Image Processing - Grayscale Transform
"每个像素的输出值只取决于其输入值" 重难点:Histogram equalization 参考:笑得很甜 http://blog.csdn.net/xiaowei_cqu/art ...
- [OpenCV] Image Processing - Grayscale Transform & Histogram
颜色直方图 首先,先介绍一些Hist的基本使用. Ref:[OpenCV]数字图像灰度直方图 官方文档:https://docs.opencv.org/trunk/d8/dbc/tutorial_hi ...
- [OpenCV] Image Processing - Spatial Filtering
"利用给定像素周围的像素的值决定此像素的最终的输出值“ 教学效果: 策略: 1. 拉普拉斯,突出小细节: . 梯度,突出边缘: . 平滑过的梯度图像用于掩蔽: . 灰度变换,增加灰度动态范围 ...
- [OpenCV] Image Processing - Image Elementary Knowledge
"没有坚实的理论基础,实践只会浅尝于表面." 这是两本打基础的书,没系统学过的话,怎么好意思说自己会CV. 该领域,兴军亮 这个名字屡次出现,看来是计算机视觉领域国内的年轻才俊,向 ...
- [Python] python vs cplusplus
一些学习过程中的总结的两种语言的小对比,帮助理解OO programming. Continue... 字典 序列 --> 字典 Python: def get_counts(sequence) ...
- 本人AI知识体系导航 - AI menu
Relevant Readable Links Name Interesting topic Comment Edwin Chen 非参贝叶斯 徐亦达老板 Dirichlet Process 学习 ...
- 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 ...
随机推荐
- “LAMP“或“LNMP”组合
Linux作为操作系统,Apache和 Nginx作为 Web 服务器,MySQL 作为数据库,PHP/Perl/Python作为服务器端脚本解释器. 由于这四个软件都是免费或开放源码软件(FLOSS ...
- activiti 介绍
工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程自动进行,从而实现某个预期的业务目标 ...
- [算法导论]二叉查找树的实现 @ Python
<算法导论>第三版的BST(二叉查找树)的实现: class Tree: def __init__(self): self.root = None # Definition for a b ...
- Git忽略配置文件gitignore
在git客户端用户工程根目录下,.git同级目录创建文件.gitignore,文件名为.gitignore.目的是为了忽略一些不需要提交的文件到git服务器 配置如下: bin target .set ...
- C# 百度语音合成
语音合成及TTS,我们尝试使用百度的语音合成技术 不过我发现 有一种缺点在于没有离线包让我有些很不舒服,可能是在线版的 原因微软语音识别技术在Windows 2000是默认集成在系统组件中 或许我们不 ...
- [Javascript] Limit Built Branches on Travis
By default, Travis will build all branches, tags, and Pull Requests. Because we're building our mast ...
- spring中配置了事务,数据业务层捕获异常,事务配置不成功?
原理:spring aop 异常捕获原理:被拦截的方法需显式抛出异常,并不能经任何处理,这样aop代理才能捕获到方法的异常,才能进行回滚,默认情况下aop只捕获runtimeexception的异常 ...
- struts2:遍历自定义字符串数组,遍历Action实例所引用对象中的数组
在struts2:OGNL表达式,遍历List.Map集合:投影的使用一文中已经讲述了OGNL遍历List.Map集合等功能. 本文简单写一个遍历数组的示范程序. 1. 遍历自定义字符串数组 < ...
- ssh框架搭建错误集合
1,把jsp放入到WEB-INF/view目录下,struts2.xml配置<result name="success">/WEB-INF/view/home.jsp& ...
- [AX2012]发送广播邮件
AX 2012可以使用MAPI或者SMTP发送邮件,MAPI是客户端方法,需要outlook的协作,而SMTP则是服务器端方法,要求SMTP允许AOS服务器通过它中继.这里要讲的就是如何通过SMTP发 ...


