zoukankan      html  css  js  c++  java
  • MATLAB 中几个颜色空间的坐标范围

    在一些图象处理的程序中,我们经常要在不同的颜色空间操作,而且经常要把各颜色空间的坐标转化到 [0,1] 之间,这就需要知道一些常用颜色空间的坐标范围。

    虽然可以通过颜色空间转化的公式推导这些范围,但是不同的颜色空间转换的程序之间总是有细微的差别。

    本文记录了 MATLAB 2011b 中用 makecform, applycform 进行转换得到 LAB, LUV, xyY 空间的坐标范围。

    代码如下:

     1 R = 0:255;
     2 
     3 cxyz = makecform('srgb2xyz');
     4 cs = {'lab', 'uvl', 'xyl'};
     5 c = {makecform('xyz2lab'), makecform('xyz2uvl'), makecform('xyz2xyl')};
     6 max1 = ones(3,3)*(-Inf); min1 = ones(3,3)*Inf;
     7 
     8 for i = 1:length(c)
     9     fprintf('%s ...
    ', cs{i});
    10     for r = R
    11         if mod(r, 8) == 0, fprintf('r=%d...
    ',r);end
    12         [g b] = meshgrid(R,R);
    13         rgb = ([r*ones(2^16,1) g(:) b(:)])/255;
    14         xyz = applycform(rgb, cxyz);
    15         dest = applycform(xyz, c{i});
    16         tmpmax = max(dest); tmpmin = min(dest);
    17         max1(i,:) = max(max1(i,:), tmpmax);
    18         min1(i,:) = min(min1(i,:), tmpmin);
    19     end
    20 end
    21 for i = 1:length(cs)
    22     fprintf('
    %s:
    ', cs{i});
    23     for j = 1:3
    24         fprintf('%d: [%.2f, %.2f]
    ', j,min1(i,j), max1(i,j));
    25     end
    26 end

    打印结果如下:

    lab:
    1: [0.00, 100.00]
    2: [-79.25, 93.55]
    3: [-112.04, 93.40]

    uvl:
    1: [0.00, 0.46]
    2: [0.00, 0.38]
    3: [0.00, 1.00]

    xyl:
    1: [0.00, 0.65]
    2: [0.00, 0.60]
    3: [0.00, 1.00]

  • 相关阅读:
    Node.js 0.12: 正确发送HTTP POST请求
    pm2 常用命令
    IntelliJ IDEA Configuring projects
    socket.io入门整理教程
    幂等函数
    Linux 下 ps 命令
    Linux 下 tail 命令
    Linux下chmod命令
    Linux下ll命令与ls -l
    Thrift——初学
  • 原文地址:https://www.cnblogs.com/shalijiang/p/3721764.html
Copyright © 2011-2022 走看看