halcon实现直方图匹配(直方图规定化)
目录
- 前言
- 代码
- 结果
前言
图像增强有直方图均衡和直方图规定化,我们经常使用均衡化处理图像,而规定化似乎很少用到,今天参考直方图匹配这篇文章实现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实现直方图匹配(直方图规定化)相关推荐
- 第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 ...
- 直方图匹配(直方图规定化)
直方图处理可以增加图像的动态范围,但是直方图处理针对的是图像整体偏暗偏亮(注意是整体),若一幅图像即存在偏暗又存在偏亮的区域,此时想要增加图像的动态范围,不宜采用直方图处理.(例如想要增加偏暗区域的动 ...
- c++ opencv 图像处理:直方图处理(直方图均衡化,直方图匹配(规定化))
文章目录 前言 一.直方图(histogram) 二.直方图处理 1.直方图均衡化 2.直方图匹配(规定化) 三.opencv函数总结 1.equalizeHist图像均衡化 2.calcHist获取 ...
- 数字图像处理:直方图匹配或规定化Histogram Matching (Specification)原理及感悟
☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython ░ 注意:本文是<数字图像直方图匹配或规定化Histogram Matching ( ...
- 在OpenCV下写的直方图匹配(直方图规定化)C++源码!
直方图匹配的原理就不多作解释了,我曾经还将MATLAB源码改写成过C源码,详情可见我的博文 根据MATLAB的histeq函数改写的运行在OpenCV下的直方图规定化C源码! 本文已转移到 https ...
- 直方图匹配(规定化)
直方图匹配 直方图均衡技术,可以自动地确定变换函数,而产生具有均匀直方图的输出图像.但是不同图像出现的问题不尽相同,有时根据图像的某种缺陷,我们需要得到处理后具有特殊直方图的图像.均衡化这样单一的方法 ...
- 直方图规定化(直方图匹配)
在介绍直方图规定化之前,先介绍一下统计直方图和累积直方图.参考自:http://blog.csdn.net/tkp2014/article/details/40151515 对颜色特征的表达方式有许多 ...
- 直方图应用:直方图均衡化,直方图匹配,对比直方图
直方图均衡化 直方图均衡化(Histogram Equalization)是直方图最典型的应用,是图像点运算的一种.对于一幅输入图像,通过运算产生一幅输出图像,点运算是指输出图像的每个像素点的灰度值由 ...
- 【OpenCV】直方图应用:直方图均衡化,直方图匹配,对比直方图
本文链接:https://blog.csdn.net/xiaowei_cqu/article/details/7606607 ...
- 直方图均衡化和直方图匹配
一.直方图均衡化 直方图均衡化,这样柱条具有均匀分布的高度,平均利用了可用的亮度级,从而能在所有的亮度级上较好地展现细节信息. 直方图均衡化算法分为三个步骤, •第一步是统计直方图每 ...
最新文章
- CUDA error: an illegal memory access was encountered
- 解密:面部特征点检测的关键技术
- 【算法入门漫画】:“排序算法” 大总结
- 腾讯云首次公开边缘计算网络开源平台,拥抱5G与万物互联
- [转]Some Cool Tips for .NET
- 混淆矩阵-python
- Bailian3178 开关电灯【模拟】
- ADFS3.0 Customizing the AD FS Sign-in Pages
- 堆内存与栈内存能不能共享,不能,,通俗的比较,堆主要用来存放对象的,栈主要是用来执行程序的...
- 海思Hi2115 NB-IOT资料,Hi2115芯片模块介绍
- dnf服务器的ini配置文件,dnf分辨率配置文件在哪 | 手游网游页游攻略大全
- 根据给出的关系矩阵,判断该关系所具有的特性
- php 内网/外网ip判断
- 关于nuxt sass-loader 报错 in ./pages/index.vue?vuetype=styleindex=0id=2a183b29lang=scssscoped=true
- js(javascript)和jq(jquery)常见问题(持续更新)
- matlab normx-x0_【 MATLAB 】norm ( Vector and matrix norms )(向量范数以及矩阵范数)
- Dubbo的多种序列化算法
- 进入和使用WinRE恢复环境
- QT Widget.cpp重新命名、报错“xxxx“ was not declared in this scope
- 微信定向流量_我和我的小伙伴都玩微信定向流量了