我有一个具有不同拜耳图案的原始图像。 这是我为了分离频道而实施的。 速度在这里非常重要,因为这将会在成千上万的大型图像上运行。将拜耳图像分离为彩色通道C++
可以请您提出代码优化。 我知道%(模)不是很快,我怎么能取代这个例子?
感谢
void Utilities::SeparateChannels(int** _image, int*& gr, int*& r, int*& b, int*& gb,int _width, int _height, int _colorOrder)
{
//swith case the color Order
int counter_R = 0;
int counter_GR = 0;
int counter_GB = 0;
int counter_B = 0;
switch (_colorOrder)
{
//rggb
case 0:
for (int i = 0; i < _height; i++)
{
for (int j = 0; j < _width; j++)
{
if (i % 2 == 0 && j % 2 == 0)
{
r[counter_R] = _image[i][j];
counter_R++;
}
else if (i % 2 == 0 && j % 2 == 1)
{
gr[counter_GR] = _image[i][j];
counter_GR++;
}
else if (i % 2 == 1 && j % 2 == 0)
{
gb[counter_GB] = _image[i][j];
counter_GB++;
}
else if (i % 2 == 1 && j % 2 == 1)
{
b[counter_B] = _image[i][j];
counter_B++;
}
}
}
break;
default:
break;
}
}
实际上,模通常是非常* *快当第二操作数是2的恒定功率,因为它总是似乎是在上面的代码。如果你愿意,你可以试试'&1'而不是'%2',但它可能没有任何区别。 – 2014-11-01 23:28:18