我想將RGB圖片轉換爲YUV,並將其還原。但是當我在MATLAB中計算時,發現圖片並不完全正確。這裏是我在matlab中的操作! 這裏是我的代碼:如何將RGB轉換爲YUV在整數,然後恢復
%M file
clear all;
clc;
RGB = imread('11111.bmp');
figure;imshow(RGB);
R = RGB(:,:,1);
G = RGB(:,:,2);
B = RGB(:,:,3);
Y0= 0.256788*R + 0.504129*G + 0.097906*B + 16;
U0=-0.148223*R - 0.290993*G + 0.439216*B + 128;
V0= 0.439216*R - 0.367788*G - 0.071427*B + 128;
Y= uint8(min(255,max(0,Y0)));% i want 8 bit YUV
U= uint8(min(255,max(0,U0)));
V= uint8(min(255,max(0,V0)));
RGB1R=Y+1.14 *V;
RGB1G=Y-0.39 *U-0.58*V;
RGB1B=Y+2.03*U;
RGB1=cat(3, RGB1R, RGB1G, RGB1B);
figure; imshow(RGB1);
%M file
應該指出的是,圖像是膠囊內鏡image.you可以得到它在wwww.gastrolab.net。我希望YUV是8位整數,可能有人幫助我嗎? ?
我假設你想這樣做,而不是使用MATLAB的內置函數,對吧? – hbaderts 2015-03-25 09:08:45
你的意思是我用一個真正的CMOS光學傳感器實現這種方法? – 2015-03-26 08:00:29
不,問題是:該解決方案是否可以包含像'rgb2ycbcr()這樣的MATLAB命令?或者您是否想要使用像'Y0 = 0.256788 * R + 0.504129 * G + 0.097906 * B + 16'這樣的公式來做到這一點? – hbaderts 2015-03-26 08:38:34