图像处理之色相、饱和度、明度

1 色相、饱和度、明度定义

  色彩三要素(Elements of color)色彩可用的色调(色相)、饱和度(纯度)和明度来描述。人眼看到的任一彩色光都是这三个特性的综合效果,这三个特性即是色彩的三要素,其中色调与光波的波长有直接关系,亮度和饱和度与光波的幅度有关。

1.1 色相定义

  色彩是由于物体上的物理性的光反射到人眼视神经上所产生的感觉。色的不同是由光的波长的长短差别所决定的。作为色相,指的是这些不同波长的色的情况。波长最长的是红色,最短的是紫色。把红、橙、黄、绿、蓝、紫和处在它们各自之间的红橙、黄橙、黄绿、蓝绿、蓝紫、红紫这6种中间色——共计12种色作为色相环。在色相环上排列的色是纯度高的色,被称为纯色。这些色在环上的位置是根据视觉和感觉的相等间隔来进行安排的。用类似这样的方法还可以再分出差别细微的多种色来。在色相环上,与环中心对称,并在180度的位置两端的色被称为互补色

                            

1.2 饱和度定义

  用数值表示色的鲜艳或鲜明的程度称之为彩度。有彩色的各种色都具有彩度值,无彩色的色的彩度值为0,对于有彩色的色的彩度(纯度)的高低,区别方法是根据这种色中含灰色的程度来计算的。彩度由于色相的不同而不同,而且即使是相同的色相,因为明度的不同,彩度也会随之变化的。

                        

1.3 明度定义

  表示色所具有的亮度和暗度被称为明度。计算明度的基准是灰度测试卡。黑色为0,白色为10,在0—10之间等间隔的排列为9个阶段。色彩可以分为有彩色和无彩色,但后者仍然存在着明度。作为有彩色,每种色各自的亮度、暗度在灰度测试卡上都具有相应的位置值。彩度高的色对明度有很大的影响,不太容易辨别。在明亮的地方鉴别色的明度比较容易的,在暗的地方就难以鉴别。

                          

2 色相、饱和度、明度调节

  常在RGB色彩空间调整亮度与饱和度不是很直观,而HSL彩色空可以很直观表示出每个像素的饱和度与亮度。所以首先读取图像的像素RGB值然后再转换到HSL空间得到饱和度与亮度值,调整以后再从HSL空间转换到RGB空间的RGB值,对每个像素完成这样的调整就完成图像的亮度与饱和度调整。

3 饱和度调节源码实现

 1 #include "highgui.h"
 2 #include "cv.h"
 3 #include "stdio.h"
 4 IplImage* src = 0;
 5 int g_switch_value = 0;
 6 int value=0;
 7 int main( )//int argc,char**argv)
 8 {
 9     src = cvLoadImage("11.bmp", 1);
10     CvSize cvSz = cvGetSize(src);
11     IplImage* h_plane = cvCreateImage( cvGetSize(src), 8, 1 );
12     IplImage* s_plane = cvCreateImage( cvGetSize(src), 8, 1 );
13     IplImage* v_plane = cvCreateImage( cvGetSize(src), 8, 1 );
14     cvCvtColor(src,src,CV_RGB2HSV);//RGB转为HSV空间
15     cvCvtPixToPlane( src,h_plane, s_plane, v_plane, 0 ); //HSV分为H,S,V三个分量
16     cvNamedWindow("src",1);
17     cvCreateTrackbar("bar","src",&g_switch_value,200,NULL);
18     unsigned char* pTest = (uchar*)s_plane->imageData;
19     int m=src->height;
20     int n=src->width;
21     printf("%d\n",m);//输出图像的长和宽
22     printf("%d\n",n);
23     while(1)
24     {
25       if(cvGetTrackbarPos("bar","src")!=value)
26       {
27        for(int y=0;y<m;y++)
28        {
29         for( int x=0; x<n; x++ )
30         {
31             pTest[y*n+x] +=cvGetTrackbarPos("bar","src")-value;//pTest[y*n+x]+g_switch_value;
32         }
33        }
34        value=cvGetTrackbarPos("bar","src");
35       }
36        cvCvtPlaneToPix( h_plane, s_plane, v_plane, 0, src );
37        cvCvtColor(src,src,CV_HSV2RGB);
38        cvShowImage("src",src);
39        if(cvWaitKey (15)==27) break;                        //按Esc退出
40      }
41        cvReleaseImage(&src);
42        cvDestroyWindow("src");
43        return 0;
44 }
时间: 2024-10-09 08:07:21

图像处理之色相、饱和度、明度的相关文章

photoshop:调整图层之色相/饱和度

色相/饱和度:快速调色及调整图片色彩浓淡明暗 面板主要参数:色相.饱和度.明度 色相用来改变颜色:顺序按红-黄-绿-青-蓝-洋红 饱和度用来控制色彩浓淡 明度控制色彩明暗 勾选"着色",图片会变成单色 受影响区域: photoshop:调整图层之色相/饱和度,布布扣,bubuko.com

shader颜色调整:色相,明度,饱和度,对比度

Shader "Unlit/Colorful" { Properties { _MainTex ("Texture", 2D) = "white" {} _BrightnessAmount("Brightness Amount", Range(0.0, 2.0)) = 1.0 _SaturationAmount("Saturation Amount", Range(0.0, 2.0)) = 1.0 _Con

颜色矩阵 滤镜 ColorMatrix 色相 饱和度 亮度

颜色矩阵原理 色彩的三要素 1.色相.色相通俗的说就是"颜色",色相的改变就是颜色的改变,色相的调节伴随着红橙黄绿蓝紫的变化. 2.亮度.明度通俗的说就是"光照度",明度的改变就是光照在物体上带来的改变,明度的调节伴随着越高,光越强,越泛白(就像过曝一样,往白色上偏离):越低,光越弱,越往黑里偏 3.饱和度.饱和度通俗的说就是"色彩的纯度",饱和度的改变会影响颜色的鲜艳程度,以红色为例子,越高,越接近红色,越低则越接近灰色(黑白) 在编程中有时候

关于色相\饱和度

说白了就是控制你要调整的范围,选范围,加范围,减范围. 不过这个范围的变化参照是色相,所以你才会觉得高深,其实还是简单.

前端知识杂烩(HTML[5]?+CSS篇)

1. CSS 优先级算法如何计算?2.如何居中div?如何居中一个浮动元素?如何让绝对定位的div居中?3.用纯CSS创建一个三角形的原理是什么?4. 如何解决inline-block元素的空白间距(i与li之间有看不见的空白间隔是什么原因引起的?有什么解决办法?5.CSS强制文本在一行内显示若有多余字符则使用省略号表示6.css中伪类属性修改a标签的样式:7. HTML dl 标签8. 置换元素与不可置换元素9.HTML的Doctype作用? 严格模式与混杂模式如何区分?它们有何意义?10.

【CSS进阶】CSS 颜色体系详解

说到 CSS 颜色,相比大家都不会陌生,本文是我个人对 CSS 颜色体系的一个系统总结与学习,分享给大家. 先用一张图直观的感受一下与 CSS 颜色相关大概覆盖了哪些内容. 接下来的行文内容大概会按照这个顺序进行,内容十分基础,可选择性跳到相应内容处阅读. 色彩关键字 嗯,色彩关键字很好理解.它表示一个具体的颜色值,且它不区分大小写.譬如这样 color:red 的 red 即是一个色彩关键字. 在 CSS3 之前,也就是 CSS 标准 2,一共包含了 17 个基本颜色,分别是: 而到了 CSS

神奇的 conic-gradient 圆锥渐变

感谢 LeaVerou 大神,让我们可以提前使用上这么美妙的属性. conic-gradient 是个什么?说到 conic-gradient ,就不得不提的它的另外两个兄弟: linear-gradient : 线性渐变 radial-gradient : 径向渐变 说这两个应该还是有很多人了解并且使用过的.CSS3 新增的线性渐变及径向渐变给 CSS 世界带来了很大的变化. 而 conic-gradient ,表示圆锥渐变,另外一种渐变方式,给 CSS 世界带来了更多可能. 下面进入正文,本

程序员需要了解的东西-备

规范篇 首先你需要学习的是三大平台的官方设计规范. iOS开发者需要学习Android和WP平台的规范吗?需知,他山之石可以攻玉,在这些规范中都有一些理念是通用的,学习别家平台的设计可以为本平台的设计提供新思路. 苹果人机界面指南 谷歌 Material Design 微软 Windows8 Style 苹果人机界面指南 官方网站: iOS Human Interface Guidelines Apple Watch Human Interface Guidelines 在线阅读中文版: iOS

3-4笔刷的详细设定

http://www.missyuan.com/thread-350742-1-1.html [F5]即可调出画笔调板 Ctrl+u    色相饱和度明度调节 间距选项 实际上我们前面所使用笔刷,可以看作是由许多圆点排列而成的.如果我们把间距设为100%,就可以看到头尾相接依次排列的各个圆点,如下左图.如果设为200%,就会看到圆点之间有明显的间隙,其间隙正好足够再放一个圆点.如下右图.由此可以看出,那个间距实际就是每两个圆点的圆心距离,间距越大圆点之间的距离也越大.使用较大的笔刷的时候要适当降