AR学习笔记(七):阈值二值化优化与颜色分割的优化

  • 阈值二值化的优化
    • 当前方案
      • 图像预处理
      • 阈值二值化
    • 优化方案
      • otsu法
      • 顶帽变换
      • 分块阈值法
  • 颜色分割的优化
    • 当前方案
    • 优化方案
      • HSV模型分割
      • 查找表方法

接下来改进一下阈值二值化的方法,使分割更加完整,然后改进颜色分割的方法,让阈值适应不同牙齿颜色以及光照条件


阈值二值化的优化

当前方案

图像预处理

图像预处理包括尺寸修改、限制对比度自适应直方图均衡、中值滤波,其中CLAHE能够增强牙齿和牙龈间的对比度,中值滤波可以削弱牙齿反光从而减少噪声

下面是不同参数下的CLAHE的效果

ClipLimit = 2.0

ClipLimit = 4.0

ClipLimit = 8.0

结论:当ClipLImit上升后,对比度增强,但牙齿底部颜色失真严重,灰度值变低,这里取3.0比较合适,对于其它样本图片同样适用

下面是CLAHE对不同均匀光照(暗/正常/亮)下图片的效果




结论:CLAHE能够使得在不同光照下的图片亮度趋向于一致,但是对于不均匀光照,没有统一局部光照的效果
ps.矫正光照的其他方法:在HSV颜色模型下,使多幅图像的V参数达到一致

阈值二值化

下面是对于均匀光照(暗/正常/亮)条件的图片,采用不同阈值的二值化处理效果对比

thresh = 100



thresh = 120

下面是对于不均匀光照(暗/正常/亮)条件的图片,采用不同阈值的二值化处理效果对比

thresh = 100


thresh = 120


结论:
由于阈值thresh固定,所以只在正常光照下,二值化的效果比较好,对于光照过强或过弱情况,轮廓的提取存在较大误差


优化方案

otsu法

otsu法(最大类间方差法,大津算法)使用的是聚类的思想,把图像的灰度数按灰度级分成2个部分,使得两个部分之间的灰度值差异最大,每个部分之间的灰度差异最小,通过方差的计算来寻找一个合适的灰度级别来划分。 所以可以在二值化的时候采用otsu算法来自动选取阈值进行二值化。
otsu算法被认为是图像分割中阈值选取的最佳算法,计算简单,不受图像亮度和对比度的影响。

代码参考:OTSU算法介绍及openCV的C++实现
下面是测试结果:

ostuthresh = 107

ostuthresh = 111

ostuthresh = 117

结论:使用ostu得到的阈值还需要进一步地优化,但优化难度比较大,目前通过对多幅图像测试,采取×1.3的方法来拟合合理阈值,相比固定阈值的优化有一定的改善

顶帽变换

可以用来矫正不均匀光照,下面是不同结构元素尺寸(2121,3131,4141,5151)的测试结果,效果不好

分块阈值法

参考:光照不均匀图像分割技巧


颜色分割的优化

当前方案

图像预处理同样包括尺寸修改、限制对比度自适应直方图均衡、中值滤波,然后在HSV空间下进行颜色分割
分割效果见:AR学习笔记(五):边缘分割优化和提取特征点

优化方案

HSV模型分割

查找表方法

AR学习笔记(七):阈值二值化优化与颜色分割的优化相关推荐

  1. [转载+原创]Emgu CV on C# (五) —— Emgu CV on 局部自适应阈值二值化

    局部自适应阈值二值化 相对全局阈值二值化,自然就有局部自适应阈值二值化,本文利用Emgu CV实现局部自适应阈值二值化算法,并通过调节block大小,实现图像的边缘检测. 一.理论概述(转载自< ...

  2. OpenCV.反阈值二值化

    反阈值二值化 反阈值二值化与阈值二值化互为逆操作.在OpenCV中该类的实现依赖于threshold() 函数.下面是该函数的声明: threshold(src, dst, thresh, maxva ...

  3. java 图像二值化阀值,阈值 二值化图像程序

    在Matlab中将一幅图像阈值分割二值化非常简单,若需要通过阈值th2二值化保留一些大面积的.且有灰度值含有大于th1的点的前景区域,而不需要小面积的区域(th1大于th2),这时会遇到这样的问题:当 ...

  4. python-opencv 图像阈值二值化

    本文讲解基于OpenCV-python的图像二值化API及浅显原理讲解 文章目录 一. 阈值 1. 简单阈值 2. 自适应阈值 二. 图像二值化 1. 全局图像二值化 2. 局部图像二值化 3. Ot ...

  5. Opencv3.0--第二篇【双阈值二值化图像】

    数字图像处理最主要的就是对像素进行操作,然而Opencv提供了14中像素的操作方法,但是处理速度有所不一样,常用的可以用指针进行访问,本文采用的也是用指针进行访问,其次可以采用vector容器指针的方 ...

  6. opencv学习5——大律二值化(ostu)

    opencv中有多种方法进行图像的二值化,前面的3中直接设置二值化的阈值,比较粗暴无脑,而且用人眼看的话根本看不出来最佳阈值,因此人为的设置阈值是一种很不科学不严谨的方法,在opencv中ostu二值 ...

  7. matlab中使用阈值二值化,腐蚀,膨胀,反色等操作进行图像处理,去噪声,网纹、摩尔纹等

    有兴趣可以对下方的一些方法和参数进行更换,以达到更好的效果. 主要涉及到二值化,阈值,腐蚀,膨胀,反色等 clc; close all; clear; workspace; fontSize = 14 ...

  8. Wellner 自适应阈值二值化算法

    本篇博文来自博主Imageshop,打赏或想要查阅更多内容可以移步至Imageshop. 转载自:https://www.cnblogs.com/Imageshop/archive/2013/04/2 ...

  9. Android--Bitmap灰度、二值化、反转颜色

    一.灰度图 /*** 将彩色图转换为灰度图** @param img 位图* @return 返回转换好的位图*/public static Bitmap convertGreyImg(Bitmap ...

最新文章

  1. 67)vector的begin() end() 和 front() back()的区别 rbegin() rend()
  2. 企业安全挑战 内网安全技术十大策略
  3. django captcha 验证码插件
  4. 开源的,跨平台的.NET机器学习框架ML.NET
  5. uva 1203—— Argus
  6. Leetcode--50. Pow(x,y)
  7. [Swift]LeetCode897. 递增顺序查找树 | Increasing Order Search Tree
  8. go语言中文网中的资源
  9. 程序员面试金典——3.3集合栈
  10. MySql免安装版绿化版安装配置,附MySQL服务无法启动解决方案
  11. Bandicam v5.2.1.1860 班迪录屏绿色便携版
  12. 360顽固木马专杀工具 千万别用
  13. 大话Chrome浏览器原理
  14. Android自定义View--Flyme6的Viewpager指示器
  15. 高维非空间数据可视化
  16. Matlab论文插图绘制模板第39期—阶梯图(Stairs)
  17. 国华小状元1号年金险怎么样?好不好?
  18. 磁盘分区MBR和GPT格式详解(Linux)
  19. 计算机如何分页打印,[计算机]Excel表格如何分页打印、自动分页、取消分页等技巧.doc...
  20. 三星SCH-I739官方原版ROM下载及刷机教程

热门文章

  1. 设置数据库可外网访问
  2. 电子信息工程水声考研去向_水声工程专业考研专业介绍及就业解析
  3. HTML5 autofocus属性用法简单介绍
  4. 国际快递查询代码,网站的online track
  5. 用javascript实现五子棋(二)
  6. java开发环境(sts,eclipse等等)解决项目上的红叉和红色感叹号的方法。
  7. android悬浮窗只只点击按钮,只有安卓才能体验的悬浮窗!果粉看了默默收起手机...
  8. poi导出excel 损坏_急!!!java用poi导出excel文件,打开导出的文件时报错“文件错误,数据可能丢失”...
  9. 【零声教育】C/C++Linux服务器开发/高级架构师 课程
  10. CC1310手册的射频核心介绍