在处理图像的过程中常常需要对图像的不同格式进行处理。
例如需要将rgb转换为lab,它们分属于不同的颜色空间。
一般来说rgb中,r、g、b的取值范围为(0,255)或者在(0,1)之间。
而lab中,l的范围为(0,100),a、b范围为(-120,120)。
而在转化过程中,通常需要将rgb先转化为xyz控件,然后再转换为lab空间。
因此需要用到两个函数,分别为,rgb2xyz,rgb2lab
下面是一段代码:
rgb2lab,来自:http://server.cs.ucf.edu/~vision/Code/ColorSpaces/rgb2lab.m
- functiony=rgb2lab(im)
- %rgb2lab(image)
- %ConvertedeRGBparaLAB
-
%Defineasconstantes
- Xn=95.13;
- Yn=100.0;
- Zn=108.86;
-
disp('IniciandoaconversaodeRGBparaLAB');
- %ConvertedeRGBparaXYZ
- xyz=rgb2xyz(im);
- bx=xyz(:,:,1);
- by=xyz(:,:,2);
- bz=xyz(:,:,3);
- %CalculaX/Xn,Y/YneZ/Zn
- bx=bx/Xn;
- by=by/Yn;
- bz=bz/Zn;
- %Determinaoselem.maioresouiguaisa8.856E-3
- bin=(bx>=8.856E-3);
- f_x=(bin.*bx).^(1/3);
- bin=(by>=8.856E-3);
- yyn=(bin.*by).^(1/3);
- f_y=yyn;
- bin=(bz>=8.856E-3);
- f_z=(bin.*bz).^(1/3);
- l=(116*yyn)-16;
- %Determinaoselem.menoresque8.856E-3
- bin=(bx<8.856E-3);
- f_x=f_x+(7.787*(bin.*bx)+(16/116));
- bin=(by<8.856E-3);
- yyn=(bin.*by);
- f_y=f_y+(7.787*yyn+(16/116));
- bin=(bz<8.856E-3);
- f_z=f_z+(7.787*(bin.*bz)+(16/116));
- %CalculaL,AeB
- l=l+(903.3*(yyn.^(1/3)));
- a=(500*l).*(f_x-f_y);
- b=(200*l).*(f_y-f_z);
- y(:,:,1)=l;
- y(:,:,2)=a;
- y(:,:,3)=b;
另外一端代码,rgb2xyz,来自:http://scien.stanford.edu/class/psych221/projects/08/JaeMoPark/appendix/rgb2xyz.m
- function[xyz]=rgb2xyz(rgb)
-
a=double(rgb);
- mat=[.49.31.20;.17697.81240.01063;.00.01.99];
- mat=(1/.17697)*mat;
- R=a(:,:,1);
- G=a(:,:,2);
- B=a(:,:,3);
- [m,n]=size(R);
- RGB=[R(:)G(:)B(:)]';
- XYZ=mat*RGB;
- X=XYZ(1,:);x=reshape(X,m,n);
- Y=XYZ(2,:);y=reshape(Y,m,n);
- Z=XYZ(3,:);z=reshape(Z,m,n);
- xyz=zeros(size(a));
- xyz(:,:,1)=x;
- xyz(:,:,2)=y;
- xyz(:,:,3)=z;
- end
分享到:
相关推荐
将RGB图像转换成LAB颜色空间图像,LAB颜色空间各个颜色分量的自相关性最小。具体转换内容参见matlab源代码
RGB到LAB颜色空间转换在图像处理领域中是一个常见的任务,特别是在色彩分析...在提供的压缩包文件`rgb2lab`中,可能包含了这个函数的源代码和其他相关示例。你可以详细研究这些代码以更好地理解和应用RGB到LAB的转换。
`ColorTransform`可能是包含这些转换函数的源代码文件,可能包括了线性化、XYZ转换以及Lab转换的函数定义。`www.pudn.com.txt`可能是关于这个转换程序的说明文档或者示例数据。 编写这样的转换程序,需要注意以下几...
2. 使用内置函数转换:MATLAB的`rgb2lab`函数可以直接将RGB图像转换为Lab图像。例如,如果你有一个名为`img_RGB`的RGB图像矩阵,可以使用以下代码进行转换: ```matlab img_Lab = rgb2lab(img_RGB); ``` `rgb2...
本主题将深入探讨RGB到Lab颜色空间转换的MATLAB实现,这对于理解图像处理和色彩科学至关重要。 RGB颜色空间是我们最常见的颜色模型,它基于人眼对红、绿、蓝三原色的感知。然而,在某些应用中,如色彩校正、图像...
在提供的压缩包文件"RGB2LAB"中,很可能包含了实现这个转换的Delphi源代码。通过查看和分析这段代码,我们可以学习到如何在实际项目中处理颜色空间转换,并理解背后的数学原理。此外,代码中提到的“与PS转换的数值...
本资源提供了关于RGB和LAB色彩模型转换的源代码,这对于理解和实现色彩处理功能非常有帮助。 RGB色彩模型是我们日常生活中最常见的一种颜色表示方式,代表红(Red)、绿(Green)和蓝(Blue)三种基本颜色的组合。...
本资源“RGB颜色转换.rar”提供了一份易语言编写的源代码,用于实现RGB颜色之间的转换。 RGB颜色模型的工作原理是通过三种基色的不同比例混合来创建几乎所有的颜色。每种颜色(红、绿、蓝)都有一个强度值,通常用0...
源代码可能会包含多个步骤,如校正、线性化和色彩空间的转换函数。这些源码对于理解色彩处理的内部机制和在易语言环境中进行色彩操作具有很高的学习价值。 综上所述,易语言RGB和LAB色彩转换涉及到RGB、XYZ和Hunter...
本实验室关于如何使用 MATLAB 开发一个 `.m` 文件,将色彩空间中的 L*a*b*(也称为 CIELAB)值转换为 RGB 值。L*a*b* 颜色空间是基于人眼对颜色感知的模型,而 RGB 是显示器和许多数字设备使用的颜色模型,它基于红...
6. 颜色空间转换:RGB到灰度、HSV、Lab等颜色空间的转换,以适应不同的分析需求。 7. 特征提取:如角点检测(Harris角点、Shi-Tomasi)、SIFT、SURF等,用于图像识别和匹配。 8. 图像变换:傅里叶变换、小波变换,...
内容概要:本文档提供了通过 OpenCV 实现将 RGB 图像转化为 LCH 颜色空间的方法步骤,先是从 RGB 转换为 LAB 再转换成 LCH,展示了一个简单的 C++ 代码实例完成这一操作流程,并对原图及转化后的图像进行了显示。...
`SIFT.java`可能是实现SIFT算法的源代码文件,它可能包含了关键点检测、描述符计算等核心功能。 另一方面,`colorspace.jar`可能是一个包含颜色空间转换函数的Java类库,允许程序在RGB和Lab之间进行转换。在提取...
在MATLAB中进行颜色空间转换,可以利用`rgb2lab`函数将RGB图像转换为Lab颜色空间。这个过程涉及到色彩空间的线性化、标准观察者颜色匹配函数、色彩空间转换矩阵以及非线性转换等多个步骤。 在"rgb转lab代码matlab-...
此外,还可能包含色彩空间转换的代码,如从RGB转换到HSV或Lab空间。 在实际应用中,这些源代码可以作为模块化组件,根据需求组合使用。例如,你可以先用去噪算法预处理图像,再应用边缘检测找出感兴趣的对象。...
另一个文件"Lab4-RGB"可能是实际的源代码或者编译后的可执行文件。如果是一个源代码项目,它可能包含了上述提到的图像处理步骤的实现。为了学习和理解,你需要打开源代码,查看其组织结构、函数定义和调用,以及如何...
本资源提供了一个自动白平衡转换的源代码,适合学习者进行研究和实践。 自动白平衡的基本原理是根据图像中的颜色分布来调整色彩,使得在不同光照条件下拍摄的图像都能呈现出中性灰的颜色。这个过程通常涉及到色彩...
rgb转lab代码matlab 小号emantic我法师大号OCALËnhancement 该项目根据给定的关键字生成本地图像增强功能。 该存储库包含重现本文中介绍的结果所必需的源代码(ICIP 2017) 为了生成语义分割掩码,请参考 例子: ...
1. **颜色空间转换**:代码首先可能将原始图像从sRGB或其他颜色空间转换为更适合分析的颜色空间,如HSV(色相、饱和度、亮度)或Lab。这是因为某些颜色空间更能反映人类视觉感知的颜色差异。 2. **颜色直方图计算**...