isp图像处理(3.1) ccm插值的得出与图像经过ccm变换

一,两个ccm矩阵进行插值

cv::Mat ccmMatrix1 = (cv::Mat_(3, 3) <<
1.0, 2.0, 3.0,
4.0, 5.0, 6.0,
7.0, 8.0, 9.0
);
cv::Mat ccmMatrix2 = (cv::Mat_(3, 3) <<
10.0, 11.0, 12.0,
13.0, 14.0, 15.0,
16.0, 17.0, 18.0
);

// 插值参数(0.0表示完全使用ccmMatrix1,1.0表示完全使用ccmMatrix2)
double alpha = 0.5;

// 计算插值后的CCM矩阵
cv::Mat ccmMatrixInterpolated = alpha * ccmMatrix1 + (1.0 - alpha) * ccmMatrix2;

// 打印插值后的CCM矩阵
std::cout << "Interpolated CCM Matrix: " << std::endl << ccmMatrixInterpolated << std::endl;

二,三个ccm矩阵进行插值

(三个矩阵进行线性插值可以根据target距离的远近来分配权重)

cv::Mat ccmMatrix1 = (cv::Mat_<double>(3, 3) <<
    1.0, 2.0, 3.0,
    4.0, 5.0, 6.0,
    7.0, 8.0, 9.0
);
cv::Mat ccmMatrix2 = (cv::Mat_<double>(3, 3) <<
    10.0, 11.0, 12.0,
    13.0, 14.0, 15.0,
    16.0, 17.0, 18.0
);
cv::Mat ccmMatrix3 = (cv::Mat_<double>(3, 3) <<
    19.0, 20.0, 21.0,
    22.0, 23.0, 24.0,
    25.0, 26.0, 27.0
);

// 插值参数(0.0表示完全使用ccmMatrix1,1.0表示完全使用ccmMatrix2)
double alpha = 0.5;
double beta = 0.5;

// 计算插值后的CCM矩阵
cv::Mat ccmMatrixInterpolated1 = alpha * ccmMatrix1 + (1.0 - alpha) * ccmMatrix2;
cv::Mat ccmMatrixInterpolated2 = beta * ccmMatrixInterpolated1 + (1.0 - beta) * ccmMatrix3;

// 打印插值后的CCM矩阵
std::cout << "Interpolated CCM Matrix: " << std::endl << ccmMatrixInterpolated2 << std::endl;

在这个例子中,我们首先创建了三个CCM矩阵,然后定义了两个插值参数alpha和beta。然后,我们使用线性插值公式来计算插值后的CCM矩阵。最后,我们将插值后的CCM矩阵打印出来。

请注意,你需要将ccmMatrix1、ccmMatrix2和ccmMatrix3中的数据替换为你的实际数据。此外,你可以根据你的需求来调整插值参数alpha和beta。

然后我们将得到的ccm矩阵乘上r,g,b三通道的图像
代码如下

// 加载图像
cv::Mat image = cv::imread("path_to_your_image.jpg");

// 将图像转换为浮点数类型
image.convertTo(image, CV_32F);

// 校正图像的颜色
for (int i = 0; i < image.rows; ++i)
{
	for (int j = 0; j < image.cols; ++j)
	{
		cv::Vec3f& pixel = image.at<cv::Vec3f>(i, j);
		pixel == ccmMatrix * pixel;
	}
}

// 保存校正后的图像
cv::imwrite("corrected_image.jpg", image);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值