RGBからYUVへの変換(Matlab)についての質問です.
先ほども質問させていただきましたが,
画像に誤りがあった為再度投稿させていただきます.
貴重なスペースを無駄に使用してしまい大変申し訳ありません.
>>
現在Matlabを勉強中の者です.
160*120ピクセルの画像の色空間を
RGBからYUV(YCbCr)へ変換するプログラムを考えているのですが,
以下のソースコードで大まかな点はあっているでしょうか?
実際にYUVへ変換後,画像を表示したところ,
元画像とは色調が変わってしまい頭を抱えています.
画像を表示する際のカラーマップに問題があるのでしょうか.
ご教授お願い致します.
% 画像ファイルの読込
pictureRgb = imread('./data/gazou0.bmp');
pictureYcbcr = imread('./data/gazou0.bmp');
% YCbCr空間(フルレンジ)への変換
pictureYcbcr(:,:,1) = uint8(0.257 * double(pictureRgb(:,:,1)) + 0.504 * double(pictureRgb(:,:,2))...
+ 0.098 * double(pictureRgb(:,:,3))+16.0);
pictureYcbcr(:,:,2) = uint8(-0.148 * double(pictureRgb(:,:,1)) - 0.291 * double(pictureRgb(:,:,2))...
+ 0.439 * double(pictureRgb(:,:,3))+128.0);
pictureYcbcr(:,:,3) = uint8(0.439 * double(pictureRgb(:,:,1)) - 0.368 * double(pictureRgb(:,:,2))...
+ 0.071 * double(pictureRgb(:,:,3))+128.0);
%R成分の表示
subplot(3,3,1);
image(pictureRgb(:,:,1));
axis image; axis off;
title('R 成分');
%G成分の表示
subplot(3,3,2);
image(pictureRgb(:,:,2));
axis image; axis off;
title('G 成分');
%B成分の表示
subplot(3,3,3);
image(pictureRgb(:,:,3));
axis image; axis off;
title('B 成分');
%---------------------------
%Y成分の表示
subplot(3,3,4);
image(pictureYcbcr(:,:,1));
axis image; axis off;
title('Y 成分');
%Cb成分の表示
subplot(3,3,5);
image(pictureYcbcr(:,:,2));
axis image; axis off;
title('Cb成分');
%Cr成分の表示
subplot(3,3,6);
image(pictureYcbcr(:,:,3));
axis image; axis off;
title('Cr成分');
%---------------------------
%原画像の表示
subplot(3,3,7);
image(pictureRgb);
axis image; axis off;
title('元画像');
%YUV画像の表示
subplot(3,3,8);
image(pictureYcbcr);
axis image; axis off;
title('YUV画像');
お礼
ありがとうございます、大変参考になりました。