LAB颜色空间各通道的取值范围
简介
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颜色空间各通道的取值范围的更多相关文章
- Lab颜色空间
原文:http://blog.csdn.net/carson2005/article/details/7200440 同RGB颜色空间相比,Lab是一种不常用的色彩空间.它是在1931年国际照明委员会 ...
- 【js jQuery】map集合 循环迭代取值---以及 map、json对象、list、array循环迭代的方法和区别
后台给前台传来一个map @ResponseBody @RequestMapping(value = "getSys") public Map<Long,String> ...
- web(六)css的基本语法、取值与单位
css语法包含如下部分: 选择器:用于选择需要添加样式的元素. 属性(property):样式的属性名称,例如color代表颜色. 取值与单位:属性对应的值以及单位. 语法规则:css的某些固定语法. ...
- 如何解决流程开发中SheetRadioButtonList页面取值问题
分享一个常见的取值问题. 应用场景: SheetRadioButtonList控件,点击其中一项执行事件操作.如果是页面加载的情况下,值就无法取到. 具体原因如下: 我给SheetRadioButto ...
- jQuery radio的取值与赋值
取值: $("input[name='radioName']:checked").val(); 赋值: $("input[name='radioName'][value= ...
- python通过函数改变变量取值
严格讲应该是"通过函数调用,改变引用对象".python中,要区分"变量名"和"对象" 如果是类的对象,是引用类型的,那么可以通过函数调用, ...
- jsf初学selectOneMenu 绑定与取值
jsf 的selectOneMenu 最后生成的<select>标签.这里涉及到一个binding 起初一直不知道是干嘛的,后来参考了其他文章.就相当于在asp.net 中如:<as ...
- CYQ.Data 快速开发之UI(赋值、取值、绑定)原理
昨夜园子猴子问了几个我CYQ.Data使用的小问题,经过简单解答后,他表示“妈妈再也不用担心我的学习",并于事后以资鼓励,希望这框架越走越好. 除了技术上的交流,双方在生活,S上面的问题上也 ...
- EditText的inputType常用取值
最近经过实际试验,总结了InputType几个常用取值表示的含义: 1.none, text, textVisiblePassword: 无任何输入限制 2.textMultiLine: 允许多行输入 ...
随机推荐
- javascript/TypeScript 生成GUID
export const guid = () => { return `xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g, functi ...
- mysql sql语句执行时是否使用索引检查方法
在日常开发中,使用到的数据表经常都会有索引,这些索引可能是开发人员/DBA建表时创建的,也可能是在使用过程中新增的.合理的使用索引,可以加快数据库查询速度.然而,在实际开发工作中,会出现有些sql语句 ...
- springcloud分布式事务终极探讨
2018阿里云全部产品优惠券(好东东,强烈推荐)领取地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userC ...
- 【Matplotlib-01】Python 绘图库 Matplotlib 入门教程
环境: Windows10 python3.6.4 numpy1.14.1 matplotlib2.1.2 工具:Cmder 目录: 1.线性图 2.散点图 3.饼状图 4.条形图 5.直方图 例1: ...
- python3+dlib人脸识别及情绪分析
一.介绍 我想做的是基于人脸识别的表情(情绪)分析.看到网上也是有很多的开源库提供使用,为开发提供了很大的方便.我选择目前用的比较多的dlib库进行人脸识别与特征标定.使用python也缩短了开发周期 ...
- Hibernate--对象关系
在hibernate中,关联关系映射分为单向关联和双向关联.共有七种关系 ·@Many To One ·@One To Many(单向) ·@One To Many(多向) ·@One To One( ...
- 最快的3x3中值模糊
10.1国庆后,知名博主:laviewpbt http://www.cnblogs.com/Imageshop/ 发起了一个优化3x3中值模糊的小活动. 俺也参加其中,今天博主laviewpbt ...
- [POI 2007]ZAP-Queries
Description Byteasar the Cryptographer works on breaking the code of BSA (Byteotian Security Agency) ...
- ●POJ 2079 Triangle
题链: http://poj.org/problem?id=2079 题解: 计算几何,凸包,旋转卡壳 复杂度O(N^2),(O(N)什么的就不说了,我觉得我看过的O(N)方法正确性都有问题,虽然有些 ...
- 音频自动增益 与 静音检测 算法 附完整C代码
前面分享过一个算法<音频增益响度分析 ReplayGain 附完整C代码示例> 主要用于评估一定长度音频的音量强度, 而分析之后,很多类似的需求,肯定是做音频增益,提高音量诸如此类做法. ...