2

強度のイコライゼーションのために、Android でこの opencv コードを使用しています。実行時間は、1 フレーム (720x480) あたり約 300 ミリ秒です。時間の最適化の可能性について考えている人はいますか?

コードは次のとおりです。

        cvtColor(image, hsvImage, CV_BGR2HSV);
        // Get intensity
        intensity = hsvImage.at<Vec3b>((int)reference.Point_::y, (int)reference.Point_::x);
        float value = (float)REGULAR_INTENSITY / intensity[2];
        float saturation = (float)REGULAR_SATURATION / intensity[1];
        if (counter == 15 && (int)intensity[2] < REGULAR_INTENSITY) {
            equalization = false;
        }
        // Modify intensity
        float transformedSaturation, transformedValue;
        for(int i = 0; i < hsvImage.rows; i++) {
            unsigned char *data = hsvImage.ptr(i);
            for(int j = 0; j < hsvImage.cols; j++) {
                transformedSaturation = (uchar)*++data * saturation;
                if (transformedSaturation > MAX_COLOR) {
                    transformedSaturation = MAX_COLOR;
                }
                *data++ = transformedSaturation;
                transformedValue = (uchar)*data * value;
                if (transformedValue > MAX_COLOR) {
                    transformedValue = MAX_COLOR;
                }
                *data++ = transformedValue;
            }
        }
        cvtColor(hsvImage, image, CV_HSV2BGR);
4

1 に答える 1

2

OpenCV transformを使用してみましたか? 最適化されていると思いますが、飽和キャストについてはわかりません(つまり、> max_colorの場合、=最大色)

于 2012-10-09T15:45:29.767 に答える