图片转换rbg MATLAB,RGB图像转换到L*u*v*空间(matlab)

①RGB—XYZ

%% Convert RGB to XYZ

function XYZ = rgb2xyz(image)

T = (1/0.17697)*[0.49, 0.31, 0.20; 0.17697, 0.81240, 0.01063; 0.00, 0.01, 0.99];

R = image(:,:,1);

G = image(:,:,2);

B = image(:,:,3);

XYZ(:,:,1) = T(1)*R + T(4)*G + T(7)*B; % X

XYZ(:,:,2) = T(2)*R + T(5)*G + T(8)*B; % Y

XYZ(:,:,3) = T(3)*R + T(6)*G + T(9)*B; % Z

end

②XYZ—Luv*

%% Convert XYZ to Luv

function LUV = xyz2luv(image)

whiteP = [0.950456,1,1.088754]; %白点的XYZ值

un = 4*whiteP(1) / (whiteP(1)+15*whiteP(2)+3*whiteP(3));

vn = 9*whiteP(2) / (whiteP(1)+15*whiteP(2)+3*whiteP(3));

Y = image(:,:,2);

U = 4*image(:,:,1) ./ (image(:,:,1) + 15*image(:,:,2) + 3*image(:,:,3));

V = 9*image(:,:,2) ./ (image(:,:,1) + 15*image(:,:,2) + 3*image(:,:,3));

L = zeros(size(Y));

for i = 1:size(Y,1)

for j = 1:size(Y,2)

if Y(i, j) <= 0.008856

L(i, j) = 903.3*Y(i, j);

else

L(i, j) = 116*Y(i, j)^(1/3) - 16;

end

end

end

LUV(:,:,1) = L;

LUV(:,:,2) = 13 * L .* (U - un);

LUV(:,:,3) = 13 * L .* (V - vn);

end

麻瓜写于2019/01/14

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值