Я хочу преобразовать RGB-изображение в YUV и восстановить его. Но когда я вычислил в MATLAB, я нашел изображение не совсем верно для оригинала. вот моя операция в Matlab! вот мой код:как преобразовать RGB в YUV в interger, а затем восстановить
%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 .i хотите, чтобы YUV 8 бит interger, может кто-нибудь мне помочь? ?
Я предполагаю, что вы хотите сделать это вручную, не используя встроенные функции MATLAB, правильно? – hbaderts
Вы имеете в виду, что я понимаю этот метод с реальными оптическими датчиками CMOS ??? –
Нет, вопрос в том, может ли решение содержать команды MATLAB, такие как 'rgb2ycbcr()', или вы хотите сделать это, используя формулы, такие как 'Y0 = 0.256788 * R + 0.504129 * G + 0.097906 * B + 16;'? – hbaderts