文档

illumpca

使用主成分分析(PCA)估计光源

语法

光源= illumpca(A)
光源= illumpca(A,百分比)
光源= illumpca(___、名称、值)

描述

例子

光源= illumpca (一个估计RGB图像中场景的照度一个使用主成分分析(PCA)从较大的颜色差异中提取。

光源= illumpca (一个百分比使用指定的最暗和最亮像素的百分比估计照明。

光源= illumpca (___名称,值使用名称-值对来控制其他选项来估计照明。

例子

全部折叠

打开一个图像并显示它。指定可选的放大倍率以缩小显示图像的大小。

A = imread(“foosball.jpg”);图imshow (,“InitialMagnification”、25)标题(原始图像的

主成分分析假设RGB值是线性的。然而,JPEG文件格式将图像保存在伽玛校正的sRGB颜色空间中。方法撤消gamma校正rgb2lin函数。

A_lin = rgb2lin(A);

从最暗和最亮的3.5%像素(默认百分比)估计场景照明。因为输入图像是线性的,所以illumpca函数返回线性RGB颜色空间中的光源,

光源= illumpca(A_lin)
光源=1×30.4075 0.5547 0.7254

的第三个系数光源是最大的,这与图像的蓝色色调一致。

通过提供估计的光源来校正颜色chromadapt函数。

B_lin = chromadapt(A_lin,光源,“色彩”“linear-rgb”);

若要在屏幕上正确显示白平衡图像,请使用lin2rgb函数。

B = lin2rgb(B_lin);

显示校正后的图像,设置可选放大倍率。

图imshow (B,“InitialMagnification”、25)标题(“使用主成分分析的白平衡图像”

输入参数

全部折叠

输入RGB图像,指定为实数,非稀疏,——- - - - - -n3数组。

数据类型:||uint8|uint16

为光源估计保留的像素百分比,指定为范围(0,50)中的数值标量。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

名称-值对参数

的可选逗号分隔对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在单引号内(' ').您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:illuminant = illumpca(I,'Mask',m)使用图像中的像素子集估计场景光源,根据二进制掩码选择,

全部折叠

图像掩码,指定为由逗号分隔的对组成“面具”和一个——- - - - - -n逻辑或数字数组。掩码表示输入图像的像素一个在估计光源时使用。计算不包括像素一个对应掩码值为0。默认情况下,掩码都是1,所有像素都在一个都包括在估算中。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑

输出参数

全部折叠

估计的场景照明,作为一个3元素数字行向量返回。这三个元素对应着光源的红、绿、蓝值。

数据类型:

提示

  • 该算法假定光照均匀,RGB值为线性。如果您正在处理非线性sRGB或adobergb图像,请使用rgb2lin函数在使用前撤销gamma校正illumpca.方法将经过色彩调整的图像转换回sRGB或adobergblin2rgb函数。

算法

像素颜色表示为RGB颜色空间中的向量。该算法根据颜色在图像中平均颜色上的投影的亮度或范数来排序。该算法只保留最暗和最亮的颜色,按照这个顺序。然后对颜色子集进行主成分分析(PCA)。主成分分析的第一个分量表示光源估计。

参考文献

[1]郑栋梁,迪利普·k·普拉萨德,迈克尔·s·布朗。颜色恒常性的光源估计:为什么空间域方法工作和颜色分布的作用。美国光学学会学报A.Vol. 31, no . 5, 2014, pp. 1049-1058。

在R2017b中引入

这个话题有用吗?