【Emgu.CV教程】第21篇 、色彩处理之ConvertTo()函数改变图像的亮度和对比度

news/2024/7/21 5:11:45 标签: 计算机视觉, c#, 图像处理, Emgu.CV

        先画重点:

  1. 亮度是指图像的整体明亮程度。增加亮度会使图像整体变得更加明亮,而减少亮度则会使图像变暗。
  2. 对比度是指图像中不同区域之间亮度差异的程度。它衡量了图像中最亮和最暗区域之间的差异。对比度高的图像明暗差异大,而对比度低就是明暗差异不明显。对比度可以通过调整图像中像素的亮度值来改变。增加亮度差异会增加对比度,而减少亮度差异则会降低对比度。

        注意啊,亮度是亮度、对比度是对比度。图像整理亮度大,不代表对比度大;对比度大的图像,也有可能整体看上去有些暗。基本上网上的教程都没有举例子说明,我就不一样了,先看一副名画:

        不同亮度、对比度的四种效果如下: 

        这四张图一对比,是不是马上秒杀其它作者的讲解。亮度好理解,像素值越接近255,就是越亮。一张纯白的图片,是最亮的,但是对比度是最低的,因为整副图片没有明暗差别。 对比度就是亮的区域和暗的区域差别有多大。您看上面那个低亮度、高对比度的图片。虽然整体都很黑,但是原图亮的部分,也就是桌子上的地球仪那块,是不是比其它区域还是要亮一些。低亮度低对比度那张图,就是整体上都很亮,但是最亮的部分比最暗的部分没差多少。

        上面四种效果是我用PhotoShop调出来的,Emgu.CV中也有对应的函数,就是ConvertTo()函数,之前在第十一篇文章里面介绍过,是这样说的:

        这个函数除了可以改变图像深度类型以外,还可以改变图像的亮度和对比度。它是利用了这个公式:

        g(x)=α.f(x)+β

        这就是一种线性转换关系。f(x) 是源图像像素值;g(x) 是目标图像像素值;参数α代表增益,控制对比度;β代表偏置参数,控制亮度。分别取不同的值,得出效果如下图:

        代码很简单,用法如下:

Mat dstMat = new Mat(); // 目标图像
Mat tempMat = srcMat.Clone(); // 原图深拷贝
tempMat.ConvertTo(dstMat, tempMat.Depth, a, b);

        ConvertTo()函数改变图像亮度和对比度时,如果α = 1, β = 0,这时候输出的结果和原图是相同的。读者们,还是要多多练习才能体会出亮度、对比度的差异,这篇文章就讲到这里。

原创不易,请勿抄袭。共同进步,相互学习。 


http://www.niftyadmin.cn/n/5301034.html

相关文章

内网离线搭建之----nginx配置ssl高可用

一、证书生成 1.生成服务端私钥 openssl genrsa -des3 -out server.key 2048 2.去除server.key密码 ps:否则每次用到都需要输入密码 openssl rsa -in server.key -out server.key 3.生成证书的签名 ps:使用机构颁发证书的到这一步就可以了&#xff…

MAVEN依赖生成后idea依然爆红问题

以下是对MAVEN依赖生成后idea依然爆红问题的一种猜测 ----- 碰到解决不了可以试一下(也请大佬们指正) 把所有后端服务停了(当微服务项目件存在依赖相互引用的情况时,在install时可能影响到新包的生成,因为存在包占用&…

28、商城系统(十):ElasticSearch的映射,nginx下载安装,es分词器,springboot整合es

目录 一、Mapping映射 1.es7删除类型 2.es给字段设置字段类型,即映射 (1)创建映射

Python通过用户输入两个数字并计算两个

通过用户输入两个数字,并计算两个 以下实例为通过用户输入两个数字,并计算两个数字之和: 实例(Python 3.0) # -*- coding: UTF-8 -*-# Filename : test.py # author by : www.dida100.com# 用户输入数字 num1 input(输入第一个数字&#…

微服务(12)

目录 56.k8s是怎么进行服务注册的? 57.k8s集群外流量怎么访问Pod? 58.k8s数据持久化的方式有哪些? 59.Relica Set和Replication Controller之间有什么区别? 60.什么是Service Mesh(服务网格)&#x…

atoi函数的模拟实现

这里强力推荐一篇文章 http://t.csdnimg.cn/kWuAm 详细解析了atoi函数以及其模拟实现,我这里就不说了。 这里作者先把自己模拟的代码给大家看一下。 int add(char* arr) {char* arr2 arr;while (*arr!-48){arr;}arr--;int sum 0;int n 0;while (arr ! (arr2-…

面试 Java 框架八股文五问五答第四期

面试 Java 框架八股文五问五答第四期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的! ⭐点赞⭐收藏⭐不迷路!⭐ 1)什么是设计模式? 设计模式是一套被反复使用、多数人…

HTML的简单介绍

文章目录 1. HTML1.1 HTML 基础认识1.2 快速生成代码框架1.3 HTML 基础标签 1. HTML 1.1 HTML 基础认识 什么是HTML呢? HTML叫做超文本标记语言。超文本:例如图片,视频,文本,声音,表格,链接等…