通过灰度线性映射增强图像对比度

Halcon中如何通过灰度线性映射增强图片对比度呢?不急,我先讲点其他的。

如果你用过Photoshop,那么想必对增强图像的对比度很熟悉。在Photoshop中,我们对下面这张图执行“色阶”调整:

执行“色阶”调整:可以观察到图片的对比度明显增强。(白的更白,黑的更黑了

它的原理是这样的:将原图中灰度值小于55的点全部强制置为0,将灰度值高于140的点强制置为255,并且将55~140之间的色阶强行拓宽均匀映射到0~255之间,其效果是图像对比度增强了。如下图所示:

如果还不好理解,那么再看看在Photoshop中用“曲线”调整对比度:

再看看:

执行“曲线”调整之前,“曲线”是上图中的蓝线,斜率为1,即y = x。输入灰阶是多少,输出灰阶也是多少

调整之后,蓝线变成了一条斜率更大的直线,它经过(55, 0)(140, 255)这两个点。该直线斜率为: 255.0 / (140 - 55) = 3

该直线可表示为:y = 3x -  55 * 3

设Min = 55, Max = 140

则该直线可表示为:y = k * x - Min * k , 其中:k = 255.0/(Max - Min)

我们在曲线中这样调整增强对比度的原理与之前在“色阶”中调整的原理相同。

再回到Halcon中。Halcon中灰度值映射的算子主要有scale_image_maxscale_imagescale_image_max类似于Photoshop中的自动对比度,不易于精确控制,而scale_image则更好控制。

scale_image(Image : ImageScaled : Mult, Add : )

其输出图像与输入图像、输入参数的关系如下:

g' := g * Mult + Add (g是输入图像Image,g' 是输出图像ImageScaled)

我们再对比一下之前我们“曲线”调整中得出的公式:y = k * x - Min * k , 其中:k = 255.0/(Max - Min)

可以类比得:Mult = k, Add =  - Min * k, 即Mult = k, Add =  - Min * Mult

但是将Mult、Add作为参数的函数功能不太直观,最好将Max、Min作为函数的参数,因此我封装出了scale_gray_map (Image, Image2, Min, Max)函数,该函数的内容如下:

Mult := 255.0 / (Max - Min)
Add := -Mult * Min
scale_image (Image, Image2, Mult, Add)
return ()

具体如下图所示:

Halcon中这种增强对比度的方法同样适用于多通道的彩色图像。

通过灰度线性映射增强图像对比度实现PS中的色阶的更多相关文章

  1. 学习 opencv---(5) 创建Trackbar(活动条) &图像对比度,亮度值调整

    学习如何在opencv 中用trackbar 函数创建和使用 轨迹条,以及图像对比度,亮度值的动态调整 一.OpenCV中轨迹条(Trackbar)的创建和使用 [1]创建轨迹条-----create ...

  2. opencv ,亮度调整【【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整

    http://blog.csdn.net/poem_qianmo/article/details/21479533 [OpenCV入门教程之六] 创建Trackbar & 图像对比度.亮度值调 ...

  3. opencv 3 core组件进阶(2 ROI区域图像叠加&图像混合;分离颜色通道、多通道图像混合;图像对比度,亮度值调整)

    ROI区域图像叠加&图像混合 #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp&g ...

  4. PS中的图像知识

    图像处理对于前端工作来说是一个不能回避的问题,ps技术也是我们必备的技能.用法可以在使用中不断的熟练,但针对前端技术本身的一些知识点,需要我们平时不断的积累才能够在使用中不出现问题. 如今的办公,已经 ...

  5. 从视频文件中读入数据-->将数据转换为灰度图-->对图像做canny边缘检测-->将这三个结构显示在一个图像中

    //从视频文件中读入数据-->将数据转换为灰度图-->对图像做canny边缘检测-->将这三个结构显示在一个图像中 //作者:sandy //时间:2015-10-10 #inclu ...

  6. opencv3.2.0图像对比度与亮度调整

    ##名称:图像对象度与对比度调整(由轨迹条分别控制对比度和亮度值) ##平台:QT5.7.1+opencv3.2.0 ##时间:2017年12月13日 /***********建立QT控制台程序*** ...

  7. 图像对比度调整的simulink仿真总结

    图像对比度调整可以由一个模块contrast adjustment 完成,参数有输入范围和输出范围,计算过程由以下公式决定 解释一下,当input<=low_in的时候输出的值是low_out+ ...

  8. 图像滤镜艺术---PS图像转手绘特效实现方案

    原文:图像滤镜艺术---PS图像转手绘特效实现方案 手绘效果实现方案 本文介绍一种PS手绘效果的实现方案,PS步骤来自网络,本文介绍代码实现过程. 整体看来,虽然效果还是有很大差异,但是已经有了这种特 ...

  9. 图像滤镜艺术--PS平均(滤镜-模糊-平均)效果

    原文:图像滤镜艺术--PS平均(滤镜-模糊-平均)效果 本文介绍PS中滤镜-模糊-平均模糊的效果实现: 这个效果很简单,原理如下: 1,统计全图像素的R,G,B值得和sumR,sumG,sumB; 2 ...

随机推荐

  1. SSM项目搭建

    1.新建包 com.javen.controller com.javen.service com.javen.dao com.javen.domain com.javen.mapper 2.log4j ...

  2. BZOJ3457 : Ring

    根据Polya定理: \[ans=\frac{\sum_{d|n}\varphi(d)cal(\frac{n}{d})}{n}\] 其中$cal(n)$表示长度为$n$的无限循环后包含$S$的串的数量 ...

  3. shell脚本使用技巧3--调试

    1.使用-x,开启shell脚本的跟踪调试功能 ex:bash -x script.sh or sh -x script.sh 2.使用set -x 和 set +x对脚本进行部分调试(输入中间的内容 ...

  4. windows配置java运行环境

    配置jdk环境    https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html 配置tomcat环境      https://j ...

  5. redis:aof恢复与rdb服务器间迁移

    1. aof恢复与rdb服务器间迁移: 1.1. Aof恢复: 如果不小心执行了flushdb或flushall了怎么办? (1)立马执行命令:shutdown nosave 关闭服务器,为了防止其他 ...

  6. vscode rn代码格式化配置

    安装Beautify和React-beautify扩展程序,并在项目根目录创建配置文件.jsbeautifyrc,并复制下面代码到此配置文件里: { "mode": "b ...

  7. 微信小程序中遮罩层的滚动穿透问题

    如果弹出层没有滚动事件: <view wx:if="{{alert}}" catchtouchmove="myCatchTouch"> <te ...

  8. django之ORM补充

    本篇导航: QuerySet 中介模型 查询优化 extra 一.QuerySet 1.可切片 使用Python 的切片语法来限制查询集记录的数目 .它等同于SQL 的LIMIT 和OFFSET 子句 ...

  9. javaScript系列 [06]-javaScript和this

    在javaScript系列 [01]-javaScript函数基础这篇文章中我已经简单介绍了JavaScript语言在函数使用中this的指向问题,虽然篇幅不长,但其实最重要的部分已经讲清楚了,这篇文 ...

  10. 修复恢复"可疑"的SQLServer数据库

    今天机房突然断电,DB连不上了,提示 无法打开数据库'MyDB'.恢复操作已将该数据库标记为 SUSPECT. 原因是断电导致DB文件损坏 通过SQL Server Management Studio ...