yuv2rgb

        這裏指的YUV實際是YcrCb了 8  ) YUV2RGB的轉換公式本身是很簡單的,但是牽涉到浮點運算,所以,如果要實現快速算法,算法結構本身沒什麼好研究的了,主要是採用整型運算或者查表來加快計算速度。
首先可以推導得到轉換公式爲:

        R = Y + 1.4075 *(V-128)
        G = Y – 0.3455 *(U –128) – 0.7169 *(V –128)
        B = Y + 1.779 *(U – 128)

要用整型運算代替浮點運算,當然是要用移位的辦法了,我們可以很容易得到下列算法:

        u = YUVdata[UPOS] - 128;
        v = YUVdata[VPOS] - 128;

        rdif = v + ((v * 103) >> 8);
        invgdif = ((u * 88) >> 8) +((v * 183) >> 8);
        bdif = u +( (u*198) >> 8);

        r = YUVdata[YPOS] + rdif;
        g = YUVdata[YPOS] - invgdif;
        b = YUVdata[YPOS] + bdif;

爲了防止出現溢出,還需要判錯計算的結果是否在0-255範圍內,做類似下面的判斷。

        if (r>255)
            r=255;
        if (r<0)
            r=0;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章