gpt4 book ai didi

c++ - 从 wiki 实现白平衡算法

转载 作者:行者123 更新时间:2023-11-28 03:19:09 24 4
gpt4 key购买 nike

我想从 wiki 实现一些白平衡算法 http://en.wikipedia.org/wiki/Color_balance

它们只是一些简单的矩阵操作openCV是否提供任何函数来做一些乘法在一组像素上,如下所示?

示例,2 x 2、3 channel 垫 A =

0 0 0 1 1 1
2 2 2 3 3 3

3 x 3, 1 channel 垫 B =

1 0 0
0 2 0
0 0 3

A x B = C 和 C =

0 0 0 1 2 3
2 4 6 3 6 9

我写了一些通用函数来处理像素转换但我更喜欢 openCV 的内置功能,如果它存在的话openCV的功能可能会做一些优化

template<typename T, typename UnaryFunctor>
void transform_channel(cv::Mat &src, int channel, UnaryFunctor functor)
{
int const channels = src.channels();
if(channels == 1 && src.isContinuous()){
return transform_continuous_channel<T>(src, functor);
}

for(int row = 0; row != src.rows; ++row)
{
auto dst_ptr = get_pointer<T>(src, row, channel);
for(int col = 0; col != src.cols; ++col){
*dst_ptr = functor(*dst_ptr);
dst_ptr += channels;
}
}
}

最佳答案

您会注意到颜色平衡运算仅由对角矩阵组成,对应于标量的逐元素乘法。因此,您示例中的转换将是:

image = image.mul(cv::Scalar(1,2,3));

对于 3 channel 图像。我不知道应用任意像素级矩阵变换的函数。

关于c++ - 从 wiki 实现白平衡算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15974166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com