2015-01-14 2 views
0

matlab R2013a에서 rgb2ycbcr 함수를 사용하여 RGB를 YCBCR 색상 공간으로 변경했습니다. 그리고 YCBCR의 각 채널을 jpeg 이미지로 저장했습니다. 그런 다음 jpeg 이미지 (예 : CB 채널)를 읽었지만 JPEG 값 이미지가 저장되기 전에 채널 CB와 다른 것을 발견했습니다. 왜 이런 일이 생길까요? 여기 내 코드입니다 : YCbCr 채널이 jpeg 이미지로 저장된 이유는 무엇입니까?

I = imread('pic.jpg'); % // 'pic.jpg' is an unin8 rgb image 
YCBCR = rgb2ycbcr(I); 
Y = YCBCR(:,:,1); 
CB = YCBCR(:,:,2); 
CR = YCBCR(:,:,3); 

imwrite(Y,'F:\CASIA V1.0\Y.jpg','jpg'); 
imwrite(CB,'F:\CASIA V1.0\CB.jpg','jpg'); 
imwrite(CR,'F:\CASIA V1.0\CR.jpg','jpg'); 

그런 다음 나는 CB.jpg 읽고, 나는 픽셀 값이 YCBCR(:,:,2)에서 사람들과 다른 발견했다. 내 코드에 문제가 있습니까? 아무도 내 질문에 대답 할 수 있다면 매우 감사 할 것입니다.

답변

2

imwrite를 사용하여 이미지를 jpg로 저장하면 이미지를 파일로 저장하기 전에 jpeg 압축을 실행합니다. 기본적으로 압축 품질은 원본의 75 %로 설정됩니다. 압축 된 이미지에서 압축 된 이미지로 변경되는 일부 픽셀 값 뒤에 이유가있는 것 같습니다.

+0

감사합니다. 정말 도움이됩니다! –

관련 문제