目录

  • 前言
  • 代码
  • 结果

前言

图像增强有直方图均衡和直方图规定化,我们经常使用均衡化处理图像,而规定化似乎很少用到,今天参考直方图匹配这篇文章实现halcon的直方图规定化以供参考。
直方图规定化步骤:
1、计算源图像和需要规定化图像的累计直方图;
2、计算两个累计直方图各阶差的绝对值,得到一个256 x 256的矩阵, 再计算每行的最小值所在的灰度阶作为映射关系(Lut表);
3、使用Lut表进行灰度映射。

代码

dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
dev_set_draw ('margin')
dev_update_off ()
dev_update_window ('off')* 读入模板图和要规定化的图
read_image (ImageModel, 'C:/Users/86188/Desktop/Model.jpeg')
read_image (ImageToBeConverted, 'C:/Users/86188/Desktop/ToBeConverted.jpeg')
count_channels (ImageModel, ModelChannels)
count_channels (ImageToBeConverted, Channels)
if(ModelChannels == 3)decompose3 (ImageModel, Image1, Image2, Image3)concat_obj (Image1, Image2, ModelConcat)concat_obj (ModelConcat, Image3, ModelConcat)decompose3 (ImageToBeConverted, Image1, Image2, Image3)concat_obj (Image1, Image2, ToBeConvertedConcat)concat_obj (ToBeConvertedConcat, Image3, ToBeConvertedConcat)
elsergb1_to_gray (ImageModel, ModelConcat)rgb1_to_gray (ImageToBeConverted, ToBeConvertedConcat)
endifgen_empty_obj (ImageResult)
count_obj (ModelConcat, Number)
for index := 1 to Number by 1select_obj (ModelConcat, ImageModelSelect, index)select_obj (ToBeConvertedConcat, ImageToBeConvertedSelect, index)* 1、计算源图像和需要规定化图像的累计直方图gray_histo (ImageModelSelect, ImageModelSelect, AbsoluteHistoModel, RelativeHistoModel)gray_histo (ImageToBeConvertedSelect, ImageToBeConvertedSelect, AbsoluteHistoToBeConverted, RelativeHistoToBeConverted)ModelAccuTuple := []ToBeConvertedAccuTuple := []pre_val := 0for i := 0 to 255 by 1pre_val := pre_val + real(AbsoluteHistoModel[i])tuple_concat (ModelAccuTuple, pre_val, ModelAccuTuple)endfortuple_div (ModelAccuTuple, pre_val, ModelAccuTuple)pre_val := 0for i := 0 to 255 by 1pre_val := pre_val + real(AbsoluteHistoToBeConverted[i])tuple_concat (ToBeConvertedAccuTuple, pre_val, ToBeConvertedAccuTuple)endfortuple_div (ToBeConvertedAccuTuple, pre_val, ToBeConvertedAccuTuple)* 2、计算两个累计直方图各阶差的绝对值,得到一个256 x 256的矩阵, 再计算每阶的最小值所在的灰度阶作为映射关系table := []for i := 0 to 255 by 1oneLeve := []for j := 0 to 255 by 1diffAbs := abs(ModelAccuTuple[i] - ToBeConvertedAccuTuple[j])tuple_concat (oneLeve, diffAbs, oneLeve)endfortuple_sort_index (oneLeve, Indices)tuple_concat (table, Indices[0], table)endfor* 3、使用Lut表进行灰度映射lut_trans (ImageToBeConvertedSelect, ImageConverted, table)concat_obj (ImageResult, ImageConverted, ImageResult)
endfor
count_obj (ImageResult, Number1)
if(Number1 == 3)select_obj (ImageResult, ImageR, 1)select_obj (ImageResult, ImageG, 2)select_obj (ImageResult, ImageB, 3)compose3 (ImageR, ImageG, ImageB, ImageResult)
endif

结果

ImageModel

ImageToBeConverted

ImageResult

直方图效果不好就不放了(▔□▔)/("▔□▔)/("▔□▔)/

halcon实现直方图匹配(直方图规定化)相关推荐

  1. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波9 - 直方图处理 - 直方图匹配(规定化)灰度图像,彩色图像都适用

    直方图匹配(规定化) 连续灰度 s=T(r)=(L−1)∫0rpr(w)dw(3.17)s = T(r) = (L-1) \int_{0}^{r} p_r(w) \text{d} w \tag{3.1 ...

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

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

  3. c++ opencv 图像处理:直方图处理(直方图均衡化,直方图匹配(规定化))

    文章目录 前言 一.直方图(histogram) 二.直方图处理 1.直方图均衡化 2.直方图匹配(规定化) 三.opencv函数总结 1.equalizeHist图像均衡化 2.calcHist获取 ...

  4. 数字图像处理:直方图匹配或规定化Histogram Matching (Specification)原理及感悟

    ☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython ░ 注意:本文是<数字图像直方图匹配或规定化Histogram Matching ( ...

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

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

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

    直方图匹配 直方图均衡技术,可以自动地确定变换函数,而产生具有均匀直方图的输出图像.但是不同图像出现的问题不尽相同,有时根据图像的某种缺陷,我们需要得到处理后具有特殊直方图的图像.均衡化这样单一的方法 ...

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

    在介绍直方图规定化之前,先介绍一下统计直方图和累积直方图.参考自:http://blog.csdn.net/tkp2014/article/details/40151515 对颜色特征的表达方式有许多 ...

  8. 直方图应用:直方图均衡化,直方图匹配,对比直方图

    直方图均衡化 直方图均衡化(Histogram Equalization)是直方图最典型的应用,是图像点运算的一种.对于一幅输入图像,通过运算产生一幅输出图像,点运算是指输出图像的每个像素点的灰度值由 ...

  9. 【OpenCV】直方图应用:直方图均衡化,直方图匹配,对比直方图

    本文链接:https://blog.csdn.net/xiaowei_cqu/article/details/7606607                                       ...

  10. 直方图均衡化和直方图匹配

    一.直方图均衡化          直方图均衡化,这样柱条具有均匀分布的高度,平均利用了可用的亮度级,从而能在所有的亮度级上较好地展现细节信息. 直方图均衡化算法分为三个步骤, •第一步是统计直方图每 ...

最新文章

  1. CUDA error: an illegal memory access was encountered
  2. 解密:面部特征点检测的关键技术
  3. 【算法入门漫画】:“排序算法” 大总结
  4. 腾讯云首次公开边缘计算网络开源平台,拥抱5G与万物互联
  5. [转]Some Cool Tips for .NET
  6. 混淆矩阵-python
  7. Bailian3178 开关电灯【模拟】
  8. ADFS3.0 Customizing the AD FS Sign-in Pages
  9. 堆内存与栈内存能不能共享,不能,,通俗的比较,堆主要用来存放对象的,栈主要是用来执行程序的...
  10. 海思Hi2115 NB-IOT资料,Hi2115芯片模块介绍
  11. dnf服务器的ini配置文件,dnf分辨率配置文件在哪 | 手游网游页游攻略大全
  12. 根据给出的关系矩阵,判断该关系所具有的特性
  13. php 内网/外网ip判断
  14. 关于nuxt sass-loader 报错 in ./pages/index.vue?vuetype=styleindex=0id=2a183b29lang=scssscoped=true
  15. js(javascript)和jq(jquery)常见问题(持续更新)
  16. matlab normx-x0_【 MATLAB 】norm ( Vector and matrix norms )(向量范数以及矩阵范数)
  17. Dubbo的多种序列化算法
  18. 进入和使用WinRE恢复环境
  19. QT Widget.cpp重新命名、报错“xxxx“ was not declared in this scope
  20. 微信定向流量_我和我的小伙伴都玩微信定向流量了

热门文章

  1. 机器学习实战pdf原文内容分享
  2. 省级c语言笔试题,C语言笔试题库.doc
  3. 企业微信工具栏获取外部联系人unionid
  4. 微信unionID和openID区别
  5. 数学一年级应用题_小学一年级数学应用题100道
  6. 开源免费etl作业批量调度必备软件 Taskctl Free应用版
  7. 修改注册表解决 Win7 DbgView 不显示调试信息
  8. WIN7通过mount挂载nfs配置root权限,解决不可写的问题
  9. OPPO R9sPlus怎么刷机 OPPO R9sPlus的刷机教程 OPPO R9sPlus完美解除账号锁
  10. Oracle密码过期问题,设置永不过期