다른 바이어 패턴을 가진 원본 이미지가 있습니다. 이것은 채널을 분리하기 위해 구현 한 것입니다. 이것은 수천 개의 큰 이미지에서 실행되기 때문에 속도가 매우 중요합니다.바이어 이미지를 컬러 채널로 분리 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의 일정한 힘을 빠른 경우. 원한다면,'% 2' 대신에'& 1'을 시도해 볼 수도 있습니다.하지만 차이는 없습니다. –