色彩校正矩阵(线性、RGB)

61(30天)
本Hendrickson
本Hendrickson 2021年8月26日
我一直在玩新的色彩校正函数的图像处理工具箱,和我有一个小难题。我的解决方案是 更好的 当我使用伽马校正(lin2rgb())在计算/应用色彩校正矩阵(来自measureColor ())。平均Delta_E一半左右。我没有色彩大师,但认为这是标准保持图像线性应用矩阵在计算/(人在实践上是非常有力的 https://www.imatest.com/docs/colormatrix/线性 )。任何人都有一些了解为什么这样?这是我的代码和解决方案然后没有伽马校正前的色彩校正。(注:线性demosaiced图像,验证了dJ策划灰色芯片信号基本上反对他们的意思是光谱相对于红光& calChartMeasure measureColor()函数添加了一些基准标记的东西)
清晰的所有;
关闭所有;
calibrationIm =“s1500.raw”;
%导入原始图像校准
J = rawImport (calibrationIm);
% demosaic原始拜耳数据
dJ = uint8 (demosaicing_v2(双(J),“梯度”));
图;
直方图(dJ)
saveas (gcf“Histogram_Demosaicked.png”)
图;
imshow (dJ)
saveas (gcf“Image_Demosicked.png”)
δE %测量
[dchart, dcolorTable dccm] = calChartMeasure (dJ);
图;
displayChart (dchart);
saveas (gcf“原始图表Location.png”)
图;
displayColorPatch (dcolorTable);
saveas (gcf“生δE values.png”)
图;
plotChromaticity (dcolorTable)
saveas (gcf“色度Correction.png之前”)
%应用伽马校正
gJ = lin2rgb (dJ);
图;
imshow (gJ)
saveas (gcf“Image_GammaCorrected.png”)
[gchart, gcolorTable gccm] = calChartMeasure (gJ);
图;
displayChart (gchart);
saveas (gcf“伽马图表Location.png”)
图;
displayColorPatch (gcolorTable);
saveas (gcf“γδE values.png”)
图;
plotChromaticity (gcolorTable)
saveas (gcf“色度Gamma.png后”)
%应用色彩校正矩阵
ccJ = imapplymatrix (gccm (1:3,:), gJ gccm (4:));
% ccJ = imapplymatrix (gccm (1:3,:), gJ);
图;
imshow (ccJ)
saveas (gcf“Image_ColorCorrected.png”)
[ccchart, cccolorTable ccccm] = calChartMeasure (ccJ);
图;
displayChart (ccchart);
saveas (gcf“CCM图表Location.png”)
图;
displayColorPatch (cccolorTable);
saveas (gcf“CCMδE values.png”)
图;
plotChromaticity (cccolorTable)
saveas (gcf“色度CCM.png后”)
删除=意味着(cccolorTable.Delta_E);
关闭所有;
3评论
本Hendrickson
本Hendrickson 2021年8月30日
这也没什么特别的。我做的一些示例代码,我发现在文档。
函数(图表、colorTable ccm) = calChartMeasure (dJ)
%使用基准点
blackPoint = drawpoint;
whitePoint = drawpoint;
darkSkinPoint = drawpoint;
bluishGreenPoint = drawpoint;
cornerPoints = [blackPoint.Position;
whitePoint.Position;
darkSkinPoint.Position;
bluishGreenPoint.Position];
图= colorChecker (dJ,“RegistrationPoints”,cornerPoints);
δE %测量
[colorTable, ccm] = measureColor(图);

登录置评。

答案(3)

本Hendrickson
本Hendrickson 2021年9月3日
所以,我听到从Mathworks, measureColor()函数在sRGB确实是等一个形象。也锁定在rgb2lab假设的d50光源()阶段的过程。我将继续努力发展自己的过程(仍然摇摇欲坠的关于如何构建和优化变换矩阵)来改进这些结果。但这个特定问题是关闭的。

图像分析
图像分析 2021年9月3日
本:
是的,它使用sRGB和D50。我有自己的颜色校准过程就像你想发展。我使用D65,我从发表D50值,然后回到XYZ,然后实验室D65吗
但这是一种毫无意义的讨论的δE图表从单个图像。真的没关系,有点武断。例如假设你了照片,你在做什么和得到了三角洲Es。现在假设你曝光时间切半,三角洲Es在这黑暗的形象。δEs将更大,也许两倍,大约。但是你的实际对象和照明它并没有改变。
我甚至没有颜色 正确的 图像。我 校准 图像。有一个区别。颜色 修正 基本上是获得一个新的RGB图像从RGB图像。在图像分析中,谁真正关心呢?不需要,除非你只是想正确视觉图像用于某些目的,就像把一堆照片带不同的暴露在一个屏幕上。我所做的就是色彩 校准 这是任意的RGB图像转换成实验室颜色空间。那么所有的测量所有的图像都是在实验室完成的图像。然后你可以计算δE从一个图像到另一看到多少你的实际对象改变颜色。当然你可能需要开发一个RGB-to-LAB函数为每个图像如果他们采取不同的图像捕捉的条件下。
所以比较你的图像任意sRGB形象确实不需要或有用的,可能会误导人,取决于你想做什么。
顺便说一下,我一直在做颜色科学几十年来和授课。
请看附呈。
1评论
本Hendrickson
本Hendrickson 2022年4月20日
嗨图像分析。长时间没有聊天。我最近回到这个问题一段时间后,它仍是缠着我。为什么这个过程的Matlab版本(γ= > ccm)工作?我读过的一切都是显式,推导线性图像矩阵应该做,这是有道理的,因为它的做线性代数。它与麦克白图表上的灰色芯片这一事实本身不是身体上线性(原始反射),但 感知线性(线性亮度在实验室空间/线性RGB D50引用值)?

登录置评。


Jeroen Van der poel他
Jeroen Van der poel他 2022年6月2日
嘿@image专家。我有一个问题如果你也算颜色矩阵专业。我们有xrite colorchart和使用上虽然上给我们好的结果一旦我们试图把新矩阵dng文件结果是一个点,我们只是想要雇佣的人。这是你做的东西吗?

下载188bet金宝搏


释放

R2021a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!