• 大小: 657B
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: 其他
  • 标签: rgb2luv  

资源简介

本代码实现了rgb颜色空间到luv颜色空间的转换

资源截图

代码片段和文件信息

%此程序将RGB装换到LUV
%原理是先将图像由RGB空间变换到CIEXYZ空间,
%再由CIEXYZ空间变换到Luv空间

%作者:Genghis_Yang
%E-mail: yangcheng2503@163.com

function [ luv ] = rgb2luv( rgb0 )

[m n] = size( rgb0 );
rgb = double( rgb0 );
luv = rgb;

X0 = (0.607+0.174+0.201);
Y0 = (0.299+0.587+0.114);
Z0 = (      0.066+1.117);

% Y0 = 1.0 
u20 = 4*X0/(X0+15*Y0+3*Z0);
v20 = 9*Y0/(X0+15*Y0+3*Z0);

for i=1:m
    for j=1:3:n
        if (rgb(ij)<=20)
            r=8.715e-4*rgb(ij);
        else
            r=power((rgb(ij)+25.245)/280.2452.22);
        end

        if (rgb(ij+1)<=20)
            g=8.715e-4*rgb(ij+1);
        else
            g=power((rgb(ij+1)+25.245)/280.2452.22);
        end

        if (rgb(ij+2)<=20)
            b=8.715e-4*rgb(ij+2);
        else
            b=power((rgb(ij+2)+25.245)/280.2452.22);
        end

        X = 0.412453*r + 0.357580*g + 0.180423*b;
        Y = 0.212671*r + 0.715160*g + 0.072169*b;
        Z = 0.019334*r + 0.119193*g + 0.950227*b;

        if (X==0.0 && Y==0.0 && Z==0.0)
            x=1.0/3.0;
            y=1.0/3.0;
        else
            den=X+Y+Z;
            x=X/den;
            y=Y/den;
        end

        den=-2*x+12*y+3;
        u2=4*x/den;
        v2=9*y/den;

        if (Y>0.008856)
            luv(ij)=(116*power(Y1.0/3.0)-16);
        else
            luv(ij)=903.3*Y;
        end

        luv(ij+1)=13*luv(ij)*(u2-u20);
        luv(ij+2)=13*luv(ij)*(v2-v20);
    end
end

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1456  2009-05-15 00:42  rgb2luv.m

----------- ---------  ---------- -----  ----

                 1456                    1


评论

共有 条评论

相关资源