简介

LAB颜色空间在计算机视觉中经常被使用,知道L,A,B三个通道的取值范围有一定的意义。

OpenCV获取LAB取值范围

下面是一段实验代码,用于获取LAB的取值范围。

基本思路是,排列组合所有RGB可能,然后转变成LAB,在所得LAB中求取最大最小值。


#include <iostream>
#include <vector>
using namespace std;

#include <opencv2/opencv.hpp>
using namespace cv;

int main(int argc, char** argv){

  Mat img(256, 256, CV_32FC3);

  vector<float> pv(256);

  // pixel color is in [0.f, 1.f];
  for (int t = 0; t < 256; t++){
    pv[t] = t / 255.f;
  }

  Mat img_lab;
  vector<Mat> mv;

  float min_l = FLT_MAX, max_l = FLT_MIN;
  float min_a = FLT_MAX, max_a = FLT_MIN;
  float min_b = FLT_MAX, max_b = FLT_MIN;

  for (int c1 = 0; c1 < 256; c1++){
    for (int c2 = 0; c2 < 256; c2++){
      for (int c3 = 0; c3 < 256; c3++){
        img.at<Vec3f>(c2, c3) = Vec3f(pv[c1], pv[c2], pv[c3]);
      }
    }

    cvtColor(img, img_lab, CV_BGR2Lab);

    cv::split(img_lab, mv);
    double min_val, max_val;
    cv::Point min_loc, max_loc;
    cv::minMaxLoc(mv[0], &min_val, &max_val, &min_loc, &max_loc); // L
    if (min_l > min_val) min_l = min_val;
    if (max_l < max_val) max_l = max_val;

    cv::minMaxLoc(mv[1], &min_val, &max_val, &min_loc, &max_loc); // A
    if (min_a > min_val) min_a = min_val;
    if (max_a < max_val) max_a = max_val;

    cv::minMaxLoc(mv[2], &min_val, &max_val, &min_loc, &max_loc); // B
    if (min_b > min_val) min_b = min_val;
    if (max_b < max_val) max_b = max_val;

    imshow("test", img);
    waitKey(10);
    cout << "step : " << c1 << endl;
  }

  cout << "L [" << min_l << ", " << max_l << "]" << endl;
  cout << "A [" << min_a << ", " << max_a << "]" << endl;
  cout << "B [" << min_b << ", " << max_b << "]" << endl;

  return 0;
}

LAB颜色空间各通道的取值范围的更多相关文章

  1. Lab颜色空间

    原文:http://blog.csdn.net/carson2005/article/details/7200440 同RGB颜色空间相比,Lab是一种不常用的色彩空间.它是在1931年国际照明委员会 ...

  2. 【js jQuery】map集合 循环迭代取值---以及 map、json对象、list、array循环迭代的方法和区别

    后台给前台传来一个map @ResponseBody @RequestMapping(value = "getSys") public Map<Long,String> ...

  3. web(六)css的基本语法、取值与单位

    css语法包含如下部分: 选择器:用于选择需要添加样式的元素. 属性(property):样式的属性名称,例如color代表颜色. 取值与单位:属性对应的值以及单位. 语法规则:css的某些固定语法. ...

  4. 如何解决流程开发中SheetRadioButtonList页面取值问题

    分享一个常见的取值问题. 应用场景: SheetRadioButtonList控件,点击其中一项执行事件操作.如果是页面加载的情况下,值就无法取到. 具体原因如下: 我给SheetRadioButto ...

  5. jQuery radio的取值与赋值

    取值: $("input[name='radioName']:checked").val(); 赋值: $("input[name='radioName'][value= ...

  6. python通过函数改变变量取值

    严格讲应该是"通过函数调用,改变引用对象".python中,要区分"变量名"和"对象" 如果是类的对象,是引用类型的,那么可以通过函数调用, ...

  7. jsf初学selectOneMenu 绑定与取值

    jsf 的selectOneMenu 最后生成的<select>标签.这里涉及到一个binding 起初一直不知道是干嘛的,后来参考了其他文章.就相当于在asp.net 中如:<as ...

  8. CYQ.Data 快速开发之UI(赋值、取值、绑定)原理

    昨夜园子猴子问了几个我CYQ.Data使用的小问题,经过简单解答后,他表示“妈妈再也不用担心我的学习",并于事后以资鼓励,希望这框架越走越好. 除了技术上的交流,双方在生活,S上面的问题上也 ...

  9. EditText的inputType常用取值

    最近经过实际试验,总结了InputType几个常用取值表示的含义: 1.none, text, textVisiblePassword: 无任何输入限制 2.textMultiLine: 允许多行输入 ...

随机推荐

  1. 部署上次的Hapi到Windows+Docker,WindowsDocker

    前言: 理论的就不多说了,具体的架构看图.web这里是上篇文章开发的Hapi服务,数据库Mysql,废话不多说,粗略的画了下,架构图如下: Mysql镜像拉取,配置 数据库镜像查找 docker se ...

  2. [LeetCode] String Compression 字符串压缩

    Given an array of characters, compress it in-place. The length after compression must always be smal ...

  3. 用js来实现那些数据结构07(链表01-链表的实现)

    前面讲解了数组,栈和队列.其实大家回想一下.它们有很多相似的地方.甚至栈和队列这两种数据结构在js中的实现方式也都是基于数组.无论增删的方式.遵循的原则如何,它们都是有序集合的列表.在js中,我们新建 ...

  4. 手动导入xmpp后,再使用cocoapods的时候出现的问题

    最新的cocoapod导入xmpp的时候,会出现循环依赖,所以撸主选择了手动导入. 一开始还用的挺开心的,后来,使用cocoapods导入其他的框架,发现调用的时候总是报错. Undefined sy ...

  5. [POI2009]KAM-Pebbles

    题目描述 Johny and Margaret are playing "pebbles". Initially there is a certain number of pebb ...

  6. [bzoj1488][HNOI2009]图的同构——Polya定理

    题目大意 求两两互不同构的含n个点的简单图有多少种. 简单图是关联一对顶点的无向边不多于一条的不含自环的图. a图与b图被认为是同构的是指a图的顶点经过一定的重新标号以后,a图的顶点集和边集能完全与b ...

  7. ●BZOJ 2149 拆迁队

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2149 题解: 斜率优化DP,栈维护凸包,LIS,分治(我也不晓得是不是CDQ分治...) 一 ...

  8. bzoj 1880: [Sdoi2009]Elaxia的路线

    Description 最近,Elaxia和w的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间.Elaxia和w每天都要奔波于宿舍和实验室之间,他们 希 ...

  9. bzoj4518[Sdoi2016]征途 斜率优化dp

    4518: [Sdoi2016]征途 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1657  Solved: 915[Submit][Status] ...

  10. 【Python3.6+Django2.0+Xadmin2.0系列教程之三(入门篇-下)】学生信息管理系统

    上一篇我们已经初步的构建起了一个学生管理系统的模型,现在接着来继续完善它吧. 1.上传图片/文件等资源 有时候需要添加一些附件,例如,新生刚入学,大家相互之间还不熟悉,希望能通过照片来加深印象,并且方 ...