色彩空间Lab和RGB互转的Matlab代码

matlab颜色空间转换RGB转换到lab function Image = rgb2lab(Image) if size(Image,3) ~= 3      error('im 一定要为3通道颜色图像空间');  end  if ~isa(Image,'double')      Image = double(Image)/255;  end    R = invgammacorrection(Image(:,:,1));  G = i... 阅读详情

来源:http://www.mathworks.com/matlabcentral/fileexchange/24009-rgb2lab/content/RGB2Lab.m和http://www.mathworks.com/matlabcentral/fileexchange/24010-lab2rgb/content/Lab2RGB.m。

RGB2Lab:

function [L,a,b] = RGB2Lab(R,G,B)
%RGB2LAB Convert an image from RGB to CIELAB
%
% function [L, a, b] = RGB2Lab(R, G, B)
% function [L, a, b] = RGB2Lab(I)
% function I = RGB2Lab(...)
%
% RGB2Lab takes red, green, and blue matrices, or a single M x N x 3 image, 
% and returns an image in the CIELAB color space.  RGB values can be
% either between 0 and 1 or between 0 and 255.  Values for L are in the
% range [0,100] while a and b are roughly in the range [-110,110].  The
% output is of type double.
%
% This transform is based on ITU-R Recommendation BT.709 using the D65
% white point reference. The error in transforming RGB -> Lab -> RGB is
% approximately 10^-5.  
%
% See also LAB2RGB.

% By Mark Ruzon from C code by Yossi Rubner, 23 September 1997.
% Updated for MATLAB 5 28 January 1998.
% Updated for MATLAB 7 30 March 2009.

if nargin == 1
  B = double(R(:,:,3));
  G = double(R(:,:,2));
  R = double(R(:,:,1));
end

if max(max(R)) > 1.0 || max(max(G)) > 1.0 || max(max(B)) > 1.0
  R = double(R) / 255;
  G = double(G) / 255;
  B = double(B) / 255;
end

% Set a threshold
T = 0.008856;

[M, N] = size(R);
s = M * N;
RGB = [reshape(R,1,s); reshape(G,1,s); reshape(B,1,s)];

% RGB to XYZ
MAT = [0.412453 0.357580 0.180423;
       0.212671 0.715160 0.072169;
       0.019334 0.119193 0.950227];
XYZ = MAT * RGB;

% Normalize for D65 white point
X = XYZ(1,:) / 0.950456;
Y = XYZ(2,:);
Z = XYZ(3,:) / 1.088754;

XT = X > T;
YT = Y > T;
ZT = Z > T;

Y3 = Y.^(1/3); 

fX = XT .* X.^(1/3) + (~XT) .* (7.787 .* X + 16/116);
fY = YT .* Y3 + (~YT) .* (7.787 .* Y + 16/116);
fZ = ZT .* Z.^(1/3) + (~ZT) .* (7.787 .* Z + 16/116);

L = reshape(YT .* (116 * Y3 - 16.0) + (~YT) .* (903.3 * Y), M, N);
a = reshape(500 * (fX - fY), M, N);
b = reshape(200 * (fY - fZ), M, N);

if nargout < 2
  L = cat(3,L,a,b);
end
Lab2RGB

function [R, G, B] = Lab2RGB(L, a, b)
%LAB2RGB Convert an image from CIELAB to RGB
%
% function [R, G, B] = Lab2RGB(L, a, b)
% function [R, G, B] = Lab2RGB(I)
% function I = Lab2RGB(...)
%
% Lab2RGB takes L, a, and b double matrices, or an M x N x 3 double
% image, and returns an image in the RGB color space.  Values for L are in
% the range [0,100] while a* and b* are roughly in the range [-110,110].
% If 3 outputs are specified, the values will be returned as doubles in the
% range [0,1], otherwise the values will be uint8s in the range [0,255].
%
% This transform is based on ITU-R Recommendation BT.709 using the D65
% white point reference. The error in transforming RGB -> Lab -> RGB is
% approximately 10^-5.  
%
% See also RGB2LAB. 

% By Mark Ruzon from C code by Yossi Rubner, 23 September 1997.
% Updated for MATLAB 5 28 January 1998.
% Fixed a bug in conversion back to uint8 9 September 1999.
% Updated for MATLAB 7 30 March 2009.

if nargin == 1
  b = L(:,:,3);
  a = L(:,:,2);
  L = L(:,:,1);
end

% Thresholds
T1 = 0.008856;
T2 = 0.206893;

[M, N] = size(L);
s = M * N;
L = reshape(L, 1, s);
a = reshape(a, 1, s);
b = reshape(b, 1, s);

% Compute Y
fY = ((L + 16) / 116) .^ 3;
YT = fY > T1;
fY = (~YT) .* (L / 903.3) + YT .* fY;
Y = fY;

% Alter fY slightly for further calculations
fY = YT .* (fY .^ (1/3)) + (~YT) .* (7.787 .* fY + 16/116);

% Compute X
fX = a / 500 + fY;
XT = fX > T2;
X = (XT .* (fX .^ 3) + (~XT) .* ((fX - 16/116) / 7.787));

% Compute Z
fZ = fY - b / 200;
ZT = fZ > T2;
Z = (ZT .* (fZ .^ 3) + (~ZT) .* ((fZ - 16/116) / 7.787));

% Normalize for D65 white point
X = X * 0.950456;
Z = Z * 1.088754;

% XYZ to RGB
MAT = [ 3.240479 -1.537150 -0.498535;
       -0.969256  1.875992  0.041556;
        0.055648 -0.204043  1.057311];

RGB = max(min(MAT * [X; Y; Z], 1), 0);

R = reshape(RGB(1,:), M, N);
G = reshape(RGB(2,:), M, N);
B = reshape(RGB(3,:), M, N); 

if nargout < 2
  R = uint8(round(cat(3,R,G,B) * 255));
end

photoshop中RGB与LAB空间的相互转换 工作需要,要RGB和LAB互相转换,要得到某一个RGB值对应的LAB值,所以,MATLAB和Opencv什么的就没法用了,只能自己找。 网上很多代码,也都是正确效果,比如http://blog.sina.com.cn/s/blog_46e3af5b0100u7wt.html 这篇文章里的代码,能够正确的RGB和LAB互相转换。 但是发现使用photoshop取图像上某点的RGB转换得到的LAB 阅读详情

相关推荐

【彩色图像直方图统计】matlab统计RGB、HSV、Lab图像灰度,以直方图形式显示

这里统计了最全的matlab画直方图的方法,各个色彩空间(RGB/HSV/Lab)的都包含,相信这对大家都有帮助。。。 彩色图像直方图统计统计图像直方图,进行灰度级线性分段增强灰度分段线性变换实现代码绘制彩色图像直方图绘制彩色直方图方法一绘制彩色直方图方法二将图像映射到HSV视觉接近的颜色空间中,计算统计在该空间的直方图绘制Lab颜色空间分量图和分量直方图makecform和applycform函数实现代码资源传送门「❤️ 感谢大家」 统计图像直方图,进行灰度级线性分段增强 灰度分段线性变换 在某些情况下,

左手の明天的博客 7954

matlab中RGB空间转化为LAB空间的颜色转换

颜色空间转换

fhy567888的博客 2514

MATLAB实现的RGB到LAB颜色空间转换程序

RGB颜色空间是由红(R)、绿(G)、蓝(B)三个颜色通道组合而成,是计算机屏幕显示中最常用的加色模型。每个通道一般由8位表示,允许256个不同的强度值(从0到255)。RGB颜色空间的特性主要包括:组合性:通过不同强度的RGB三基色混合,可以组合出几乎所有颜色。设备依赖性:不同的显示设备(如电脑屏幕、电视、手机屏幕)有不同的RGB色彩实现,因此在设备间颜色表现存在差异。非线性关系。

weixin_33622085的博客 1187

RGB转到LAB颜色空间,matlab和opencv内嵌函数使用的区别

opencv中采用的是 cvCvtColor(image, lab_image, CV_BGR2LAB) 其中lab_image三通道L,a,b的值都是大于100的值,并不是在规定范围内(L: [0, 100], a: [-128, 127], b: [-128, 127])  对应Matlab中的,相同的情况可以采用 cform = makecform('srgb2lab', 'Adap

kernlen的专栏 7129

Lab2RGB:将图像从 CIELAB 色彩空间转换为 RGB 色彩空间。-matlab开发

CIELAB 是 RGB 的非线性变换,其中两种颜色之间的欧几里得距离等于它们的感知距离(距离小于 ~10 个单位)。 处理彩色图像的算法通常会在 CIELAB 中产生更好的结果。 此处实施的方程式来自 Charles Poynton 的颜色常见问题解答。

rgb2lab程序matlab实现RGB到LAB转换

matlab小程序实现RGB到LAB的转换

matlabrgb和波长的换算_色彩空间Lab和RGB互转的Matlab代码

来源:http://www.mathworks.com/matlabcentral/fileexchange/24009-rgb2lab/content/RGB2Lab.m和http://www.mathworks.com/matlabcentral/fileexchange/24010-lab2rgb/content/Lab2RGB.m。RGB2Lab:function [L,a,b] = RG...

weixin_42314711的博客 1389

lab到rgb空间的转换

实现lab空间到rgb空间的转换。转换后的rgb空间以3维8位整数表示

MATLAB图像处理:RGB、HSV、YCbCr、LAB色彩空间

在数字图像处理中,彩色图像的表示与处理是核心任务之一,不同的色彩空间用于满足不同场景的需求。MATLAB提供了丰富的函数支持多种色彩空间的表示与转换。本文将深入解析RGB、HSV等常见色彩空间的数学原理、转换方法及其实际应用,并提供可直接运行的代码示例。

weixin_31268759的博客 3260

Lab to RGB:a .m 文件将 L*a*b* 转换为 RGB-matlab开发

这允许用户输入 Lab 值并转换为 XYZ 和 RGB。

RGB2Lab_rgb转lab色彩通道matlab算法_

matlabRGB 色彩通道转LAB色彩通道的算法

Verilog和Matlab实现RGB888互转YUV444

在RGB色彩空间中,R、G、B三个分量的属性是独立的,每个分量数字越大,对应的颜色占比就越大。

主要分享学习中的知识和遇到的问题 2704

Transformer时序预测避坑指南:TFT在风电场的5个实战经验

本文分享了Temporal Fusion Transformer在风电场功率预测中的五个实战经验,涵盖数据预处理、模型调优、显存优化、注意力机制解读及在线部署。针对风电数据噪声大、概念漂移等挑战,提供了从构建数据质量标签到高效超参调优的具体方案,并强调利用Transformer架构的可解释性进行业务洞察,助力实现稳健的工业级时序预测。

bert9linguist的博客 462

RGB转为Lab色彩空间的偏色检测

RGB转为Lab色彩空间的偏色检测 步骤: 第一步:将RGB转为LAB空间 第二步:在LAB空间内进行偏色检测 公式: 1)RGB----LAB 其中的rgb为原始图像的3个通道的值;Lab为转换之后的值;Yn、Xn、Zn一般为100,95.047,108.883;M是一个矩阵,如下图所示: 2)根据公式K=M/V进行偏色检测 直接贴代码:` clc,clear; f=imread(‘H:\fo...

weixin_44036568的博客 2098

【项目实战-MATLAB】:基于机器学习的虹膜识别系统设计

虹膜识别主要包括虹膜定位、虹膜裁剪、极坐标变换、归一化、HOG特征提取、虹膜识别六个主要步骤。本系统采用MATLAB作为开发工具实现 主要算法:霍夫变换预处理 HOG特征提取 SVM进行识别

qq_45047246的博客 6537

利用AI辅助工具Codex在30分钟内高效生成发明专利说明书草案

Codex 是什么?简单说,它是 OpenAI 推出的一个高级 AI 工作平台,最初定位是软件开发辅助工具,但现在它的能力边界已经远远超出了写代码。根据 OpenAI 官方信息,每周有超过 500 万人使用 Codex,其中 40% 的新用户是非开发者,包括分析师、营销人员、研究人员等。这意味着 Codex 正在从一个程序员专属工具,演变为一个面向广泛知识工作者的生产力中枢。 那么,它和我们今天要谈的“写发明专利”有什么关系?核心在于 Codex 的“角色专属插件”和“上下文构建”能力。它不再只是根据零散的

weixin_29053067的博客 320

【MATLAB】RGB,HSV,LAB

转自http://hao.qinz.net/comments.php?y=08&m=07&entry=entry080727-033517

apsvvfb的专栏 3158

实践指南——【SPSS操作解析】线性混合效应模型在重复测量数据中的应用

本文详细解析了线性混合效应模型在重复测量数据分析中的应用,并提供了SPSS操作指南。文章阐述了该模型如何通过区分固定效应与随机效应,有效处理数据非独立性和缺失值问题,从而获得更可靠的统计推断。

oo7890的博客 552

MATLAB 将RGB颜色空间转为HSI颜色空间、LAB颜色空间 原理及程序

一张彩色图像是由R、G、B三个通道组成,所以首先需要将彩色图像分为三个通道的图像。 以下是对猫图进行单通道提取得到的图像。 HSI颜色空间 HSI[Hue-Saturation-Intensity(Lightness),HSI或HSL]颜色模型用H、S、I三参数描述颜色特性,其中H定义颜色的频率,称为色调;S表示颜色的深浅程度,称为饱和度;I表示强度或亮度。 当人观察一个彩色物体时,用色调、饱和度、亮度来描述物体的颜色。色调是描述纯色的属性(纯黄色、橘黄或者红色);饱和度给出一种纯色被白光稀释的程度的度量

qq_43266432的博客 2万+

system_server_lowmem真的是内存不足吗?

Android系统中的system_server_lowmem真的表示系统的内存遇到瓶颈了吗?以及遇到这类日志该如何分析系统的内存,本文会回答这个问题。

jidapenglin28的专栏 513

流体动力学仿真软件:CFX_(10).案例实践:复杂流场分析

在“Phases”选项卡中,定义参与仿真的不同相。例如,如果您要分析气液两相流,可以定义“Air”和“Water”两个相。

kkchenjj的博客 1690

CIE RGB、CIE XYZ、 Lab空间转换

颜色空间转换CIE RGB转化到CIE XYZCIE XYZ到Lab空间 CIE RGB转化到CIE XYZ 由于CIE RGB空间在描述色彩时会出现负值,因此为了方便计算(1931年),CIE提出了一种新的色彩空间 CIE XYZ。 转换公式如下: 可见,该变换为线性变换。 进行逆变换时矩阵求逆即可。 CIE XYZ到Lab空间 Lab空间的L代表亮度,a和b为颜色对立维度。注意,此Lab空间一般指CIE 1976(L*, a*, b*) 色彩空间,而非Hunter 1948 L, a, b色彩空间。因

qq_38528731的博客 1万+

【Go语言实战】(9) gRPC 实现一个简单微服务

文章目录写在前面1. 安装1.1 grpc1.2 proto1.3 protobuf2. 编写代码2.1 初始化项目2.2 编写proto2.3 编写服务端2.4 实现客户端3. 演示 写在前面 这一次我们用gRPC实现获取用户的信息 1. 安装 1.1 grpc grpc的安装直接go get即可 go get google.golang.org/grpc 1.2 proto 下载proto,我是下载这个的。 然后解压出来把bin目录放在直接放在系统变量当中 1.3 protobuf 我们在

面向生活编程 3272

【Matlab 图像】LAB 色彩空间分析

名称 在开始之前,先明确一下Lab颜色空间(Lab color space)的名字: Lab的全称是CIELAB,有时候也写成CIE Lab* 这里的CIE代表International Commission on Illumination(国际照明委员会),它是一个关于光照、颜色等的国际权威组织。 通道 Lab是由一个亮度通道(channel)和两个颜色通道组成的。在Lab颜色空间中,每个颜色用L、a、b三个数字表示,各个分量的含义是这样的: L*代表亮度 a*代表从绿色到红色的分量 b*代表从蓝色

赵继超的笔记 7975

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

图像色彩空间大揭秘!从生活场景到代码实操,一文搞懂

文章摘要: 色彩空间是描述和转换颜色的规则系统,不同场景适用不同色彩空间。RGB用于电子屏幕(如手机、电视),通过红绿蓝三原色组合呈现鲜艳色彩;CMYK专为印刷设计,通过青、品红、黄、黑油墨减法混合还原真实色彩;YUV将亮度与色度分离,适合视频压缩传输;Lab则接近人眼感知,用于专业调色。MATLAB脚本可直观对比各色彩空间效果。选择色彩空间需匹配场景需求:电子显示用RGB,印刷用CMYK,视频用YUV,专业调色用Lab。理解色彩空间能优化色彩呈现效率与准确性。

民乐团扒谱机的博客 1634

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: Android中OpenCv编译的时候一些错误的总结
下一篇: 位操作整理
Virgilio
博客等级 码龄17年 33粉丝 22原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值