0
matlab에는 rgb2ycbcr 함수가 있습니다.이 함수는 입력 이미지 표현에 따라 여러 범위를 사용하지만이 모든 범위는 양수 값을 고려합니다. 대신 나는이 음모어떻게 음의 값을 가진 범위를 고려하여 YCbCr로 이미지를 변환 할 수 있습니까?
내가 어떻게 할 수에서 나의 값을 표현하고자하는?
matlab에는 rgb2ycbcr 함수가 있습니다.이 함수는 입력 이미지 표현에 따라 여러 범위를 사용하지만이 모든 범위는 양수 값을 고려합니다. 대신 나는이 음모어떻게 음의 값을 가진 범위를 고려하여 YCbCr로 이미지를 변환 할 수 있습니까?
내가 어떻게 할 수에서 나의 값을 표현하고자하는?
출력을 rgb2ycbcr
에서 -1에서 +1 범위로 매핑 할 수 있습니다. 예를 들어, 에서 출력되는 Cb 및 Cr의 가능한 범위 중 하나는 [16 240]이며 interp1
을 사용하여 쉽게 다시 매핑 할 수 있습니다. 아래의 코드에서 Cb는 출력 행렬의 Cb 열을 rgb2ycbcr
에서 나타냅니다. 약간의 변형 작업이 필요할 수 있습니다.
CbNew = interp1([16, 240], [-1, 1], Cb);
잠재적 인 세 가지 범위가 상호 배타적이므로 출력 데이터를 고려할 때 자동으로 적절한 재 매핑을 찾을 수도 있습니다. 동일한 매핑이 Cr에도 적용됩니다.
if any(Cb < 1)
CbRange = [16/255, 240/255];
elseif any(Cb < 250)
CbRange = [16, 240];
elseif any(Cb < 61681)
CbRange = [4112, 61680];
else
%\\suggest throwing an error here, since the above should cover all possible output
end
CbNew = interp1(CbRange, [-1, 1], Cb);
2를 곱한 다음 1을 뺄 수 없습니까? (또는 초기 범위에 따라 필요한 요소가 필요합니다.) –