ISP图像调试----CCM

本文探讨了在图像处理中,由于传感器差异和AWB模块影响,如何通过CCM(色彩补偿矩阵)在RGB域进行校正。文章详细解释了CCM的工作原理,并介绍了转盘调试法和使用24色卡进行色彩校准的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.1 背景
由于不同厂家sensor的RGB响应曲线与人眼不同,且图像经过ISP Pipeline中AWB模块处理后存在偏差,因此需要在RGB域进行颜色校正以还原人眼感知效果,CCM模块在ISP Pipeline中位置如图所示:
在这里插入图片描述

1.2 CCM含义
如下是CCM的公式,其中[R,G,B]表示上一个模块即demosaic模块对图像进行插值后每个像素的RGB值; [R’ G’ B’]表示经过CCM模块后每个像素的RGB值;由公式1.2可以看出C11、C21和C31分别决定经过CCM后每个像素红色通道的饱和度、红通道中绿色的比例和红通道中蓝色的比例;C12、C22和C32分别决定经过CCM后每个像素绿色通道中红色的比例、绿色的饱和度和绿色通道中蓝色的比例;C13、C23和C33分别决定经过CCM后每个像素蓝色通道中红色的比例、蓝色通道中绿色的比例和蓝色通道的饱和度。
在这里插入图片描述

2.1 转盘调试法
在这里插入图片描述
在这里插入图片描述

2.2 24色卡RGB值在这里插入图片描述在这里插入图片描述

3、经验

以在调试中经常遇到的问题为例加以说明,当遇到蓝色偏紫的问题时,可以减少蓝色通道中的红色分量比例(即C13),为了满足式1.3,同时增加红色的饱和度(即C11);当绿色偏黄时,可以减少绿色中的红分量比例(即C12),为了满足式1.3,同时增加红色的饱和度(即C11);当红色偏橙时,可以减少红色中的绿色分量比例(C21),为了满足式1.3,同时增加绿色的饱和度(C22),或者增加红色中的蓝色分量比例(C31),为了满足式1.3,同时减小蓝色的饱和度(C23),当红色偏蓝时反之。三原色的色彩偏差调好后,便可根据具体问题继续微调,肤色偏黄,增加绿色中的蓝分量比例(C32);肤色偏红,增加蓝色中的红色分量比例(C13);黄色偏红,增加蓝色中的红分量比例(C13),或者减少蓝色中的绿色分量的比例(C23),黄色偏绿反之。

### ISP中的CCM实现 在图像信号处理(ISP)管道中,颜色校正矩阵(CCM)用于调整传感器捕捉的颜色以匹配人类感知的真实世界颜色[^1]。下面是一个简单的MATLAB函数来实现基于CCM的颜色矫正: ```matlab function correctedImage = applyColorCorrectionMatrix(image, ccm) % 将输入图片转换成double类型并缩放到0-1之间 imageDouble = im2double(image); % 提取RGB通道数据 rChannel = imageDouble(:, :, 1)'; gChannel = imageDouble(:, :, 2)'; bChannel = imageDouble(:, :, 3)'; % 组织像素值以便于矩阵乘法操作 pixelValues = [rChannel(:), gChannel(:), bChannel(:)]'; % 应用颜色校正矩阵 correctedPixelValues = ccm * pixelValues; % 归一化处理后的像素值以防溢出 maxVal = max(correctedPixelValues, [], 'all'); minVal = min(correctedPixelValues, [], 'all'); normalizedCorrectedPixels = (correctedPixelValues - minVal) ./ (maxVal - minVal); % 返回到原始尺寸并将范围恢复至0-1间 sizeOfOriginalImage = size(rChannel); reshapedChannels = reshape(normalizedCorrectedPixels', prod(sizeOfOriginalImage), []); correctedImage(:,:,1) = permute(reshape(reshapedChannels(:,1),sizeOfOriginalImage)', [2,1]); correctedImage(:,:,2) = permute(reshape(reshapedChannels(:,2),sizeOfOriginalImage)', [2,1]); correctedImage(:,:,3) = permute(reshape(reshapedChannels(:,3),sizeOfOriginalImage)', [2,1]); end ``` 此代码片段定义了一个名为`applyColorCorrectionMatrix`的函数,该函数接收两个参数:一个是待纠正的图像;另一个是要应用的颜色校正矩阵(ccm)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值