在处理图像的过程中常常需要对图像的不同格式进行处理。
例如需要将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
分享到:
相关推荐
这是一个matlab 程序,是把rgb图像转换为lab
matlab下的LAB转换为RGB的代码实例
可以实现彩色图像由RGB到LAB空间的转换,代码可以直接运行
RGB颜色转换为lab,编程大师编写,可用,效果较好,运行即可。
将RGB图像转换成LAB颜色空间图像,LAB颜色空间各个颜色分量的自相关性最小。具体转换内容参见matlab源代码
RGB与LAB转换方法
matlab小程序实现RGB到LAB的转换
图像RGB空间和Lab空间相互转换的两段matlab代码。
颜色格式转换RGB转LAB
Matlab代码RGB颜色空间转换LAB
比较好的色域转换工具,希望帮助大家学习。
颜色空间转换,把rgb彩色图像转换到lab颜色空间,用于提取颜色
RGB和Lab颜色空间互相转换Matlab代码,亲测,非常好
this matlab code is about translating RGB pixel to Lab pixel
实现的是RGB颜色空间到Lab颜色空间的转换,并显示一幅图像在Lab各个通道分别显示的效果,直接运行main.m即可
这是一份RGB与Lab空间转换的代码,代码简洁好用,可以在opencv2中调用
用labview实现数据从rgb空间到lab空间的转换!程序简单,方便操作.
rgb到lab色彩空间转换,转换快速有效 失真率低
LAB2RGB空间转换函数,主程序读取图像后调用该函数,即可实现空间转换。
RGB转换为IHS IHS转换为RGB matlab代码