2013-10-18 2 views
5

RGB 이미지를 YCbCr 색 공간으로 변환해야하지만 색상 변이 문제가 있습니다. 모든 공식을 사용하고 동일한 결과를 얻었습니다. RGB to YCbCr 변환 문제

cbcr[0] = int(0.299*rgb[0] + 0.587*rgb[1] + 0.114*rgb[2]) #Y 
    cbcr[1] = int(-0.1687*rgb[0] - 0.3313*rgb[1] + 0.5*rgb[2] + 128) #Cb 
    cbcr[2] = int(0.5*rgb[0] - 0.4187*rgb[1] - 0.0813*rgb[2] + 128) #Cr 

파이썬

에서

공식 난 내가 데이터를 기록하기 위해 다른 방법으로 같은 이미지를 얻을 것을 알고 있지만, 내가 잘못된 색상 결과를 얻었다.

http://i.imgur.com/zHuv8yq.png 원래

http://i.imgur.com/Ek2WEA1.png 결과

그래서 내가 정상 이미지를 얻을 또는의 YCbCr 4로 RGB PNG로 변환하는 방법 : 2 : 2?

+0

좋아, 난 새로운 질문이 있습니다 (약) 작동합니다. 어떻게 YUV 팔레트로 이미지를 저장할 수 있습니까? 내 말은 - YUV 색상 값이 있지만 이미지를 저장하거나 병합하려고하면 YCbCr이 아닌 RGB 색상 표에서 색상이 나옵니다. – Runnko

답변

5

def _ycc(r, g, b): # in (0,255) range 
    y = .299*r + .587*g + .114*b 
    cb = 128 -.168736*r -.331364*g + .5*b 
    cr = 128 +.5*r - .418688*g - .081312*b 
    return y, cb, cr 

def _rgb(y, cb, cr): 
    r = y + 1.402 * (cr-128) 
    g = y - .34414 * (cb-128) - .71414 * (cr-128) 
    b = y + 1.772 * (cb-128) 
    return r, g, b 

>>> c = _ycc(10, 20, 30) 
>>> _rgb(*c) 
(10.000005760000002, 20.000681726399996, 29.996457920000005) 

See also Wikipedia