1.单映射规则(SML)

当采用SML映射时,从原始累计直方图向目标累计直方图进行,分别在每一列中找到最小值第一次出现的数的行号。在目标累计直方图中找到与原始累计直方图第一次出现的差值最小的数的行号。然后将原始直方图中灰度级为该列的像素点映射到该行号上。

2.组映射规则(GML)

当采用GML映射时,从目标累计直方图向原始累计直方图进行,找到最小值第一次出现的列号,目标累计直方图从下一个灰度级开始,在原始累计直方图中找到与第一个该灰度级最接近的值。在原始累计直方图中上一个映射后到刚找到的映射中间的全部映射为现在的累计直方图中的行号。

3.SML和GML

4.灰度直方图

5.直方图分析

图2是目标直方图,图3为SML单映射规则,图4为GML组映射规则,目标直方图灰度数0-2-4-6趋势为升降升,2-4降的明显。很明显GML组映射规则更符合目标直方图。

6.结论

运用组映射规则(GML)产生的误差要比单映射规则(SML)小,GML产生的图像更接近于规定图。从理论上来说,量化的比较可借助映射产生的误差来进行,这个误差可用对应映射间数值的差值(取绝对值)的和来表示,和的数值越小,映射效果越好,理想效果下,这个和为0。但在离散情况下精确程度不一样,因为取整误差的影响,当按照映射规则对应时,SML规则产生的误差较大。

SML映射规则是一种有偏的映射规则,某些范围的灰度级会被有偏地映射到接近开始计算的灰度级;而GML映射规则是统计无偏的,从根本上就避免了上述问题的出现。所以结论是,GML映射规则总会得到比SML映射规则更接近规定直方图的结果。

直方图规定化:SML和GML相关推荐

  1. 直方图规定化——GML和SML映射规则

    GML和SML原理 GML规定化(组映射) 先列出图像灰度值i,j,计算原始直方图Pr(i),列出规定直方图Pz(j),计算原始累计直方图Pi和规定累计直方图Pj,然后按照Pj到Pi寻找最接近的值存储 ...

  2. 直方图规定化之SML和GML映射

    参考: 章毓晋. 图像工程(上册):图像处理[M]. 北京: 清华大学出版社,2006. 灰度直方图规定化实现方法的分析 pdf http://blog.csdn.net/juyingmin/arti ...

  3. matlab 自定义直方图匹配_matlab中直方图规定化(直方图匹配)的单映射 – MATLAB中文论坛...

    matlab写的一个直方图规定化中的单映射程序,大家可以借鉴下 clc; clear; I=imread('e:\2.bmp'); figure,subplot(321),imshow(I); tit ...

  4. 在OpenCV下写的直方图匹配(直方图规定化)C++源码!

    直方图匹配的原理就不多作解释了,我曾经还将MATLAB源码改写成过C源码,详情可见我的博文 根据MATLAB的histeq函数改写的运行在OpenCV下的直方图规定化C源码! 本文已转移到 https ...

  5. 根据MATLAB的histeq函数改写的运行在OpenCV下的直方图规定化C源码

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 2016-6-8日用C++也实现了直方图规定化, ...

  6. opencv:灰色和彩色图像的像素直方图及直方图均值化的实现与展示

    直方图及直方图均值化的理论,实现及展示 直方图: 首先,我们来看看什么是直方图: 理论概念: 在图像处理中,经常用到直方图,如颜色直方图.灰度直方图等. 图像的灰度直方图就描述了图像中灰度分布情况,能 ...

  7. 数字图像处理 直方图规定化 MATLAB实验

    一.原理 直方图规定化是使原图像灰度直方图变成规定形状的直方图而对图像做修正的增强方法. 二.步骤 ①读入原图像huafen.jpg,并显示图像及其直方图: ②读入参考图像rice.tif,并显示图像 ...

  8. 直方图匹配(直方图规定化)

    直方图处理可以增加图像的动态范围,但是直方图处理针对的是图像整体偏暗偏亮(注意是整体),若一幅图像即存在偏暗又存在偏亮的区域,此时想要增加图像的动态范围,不宜采用直方图处理.(例如想要增加偏暗区域的动 ...

  9. Python实现图像直方图规定化(直方图匹配)-附完整代码

    以下内容需要直方图均衡化.规定化知识 均衡化:https://blog.csdn.net/macunshi/article/details/79815870 规定化:https://blog.csdn ...

最新文章

  1. Image Generation
  2. Android View关系图
  3. 网站的高性能架构-性能测试方法
  4. unity2017.1.0f3与旧的粒子系统不兼容
  5. 机器学习实战(四)——基于概率论的分类方法:朴素贝叶斯
  6. 理解K8S的编排和网络
  7. 最新的ndkr20编译c_NDKr20使用clang编译ffmpeg
  8. 彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系
  9. 当10年BI数据总监遇到烂需求、烂数据时,他做了这几件事
  10. 阿里云智能开放平台团队何登成:解码云计算的 2B 服务基因 | 问底中国 IT 技术演进...
  11. 20191130每日一句
  12. 【Chrome插件】使用FE助手-百度WEB前端助手
  13. MDK/KEIL4/KEIL5 安装教程
  14. 163手机邮箱如何注册登陆?
  15. 魔百和CM201-1 线机教程 救砖(大部分情况能用)
  16. java tea collection_Javaの集合学习
  17. Kotlin 第一弹:自定义 ViewGroup 实现流式标签控件
  18. 计算机数制详解及相互转换(二进制、八进制、十进制、十六进制)
  19. $.each()的理解
  20. ubuntu 16.04 更改 ipv6、numa、thp、io scheduler

热门文章

  1. 股票融资全面解决方案
  2. 2017最新整理python全栈工程师系统培训之路精品课程(全套)
  3. 地址转换和端口映射及内网穿透的区别
  4. 基于DNN的鼻咽癌鼻咽淋巴瘤数据处理
  5. 华为鲲鹏HCIA-Kunpeng Application Developer V1.5考试样题
  6. 卷积核大小对网络参数和计算量的影响
  7. Python 时间处理/datetime/arrow/日期处理
  8. 【钟表识别】基于计算机视觉实现钟表时间识别含Matlab源码
  9. CVE-2022-1388 F5 BIG-IP权限绕过命令执行漏洞复现
  10. win10怎么更改账户名称_如何更改电脑系统账户名称?让你的名称看起来高大上,快来学习吧...