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画像');
補足
kmeeさんご回答ありがとうございます。 追記回答させていただきます。 > ・どんな環境で実行させたいのか?(OS、CPU等) 液晶テレビで表示させたいです。 >・どんな実行方法を望んでいるのか?(GUI,CUI) コマンド操作は、あまりやったことがないのですが たぶん今回の場合は、CUIだと思います。 GUIで操作できるものがあれば教えてください。 >・その「廃番」のソフトは何なのか?同じソフトを紹介してしまうかもしれません。 見つけたソフトは、下記になります。 OPTPiX(廃番) http://www.webtech.co.jp/imesta/xmp/#f_xmp >・対象ファイルの形式は?単にRGBが並んだだけのRAWファイルなのか、 PNG,JPGなどの特定のフォーマットなのか JPG,TIFのファイルになります。 使っているOSは、windows7です。 以上です。 よろしくお願いします。