Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

10.03.

2022, 14:43 lab1_skrypt

%zadanie 1

%wczytanie obrazu rgb jako

ImRGB = imread('sunflowers.bmp');

%macierz transformacji

%YUV

H = [0.2126 0.7152 0.0722;...

-0.09991 -0.33609 0.436;...

0.615 -0.55861 -0.05639];

%YIQ

B = [0.299 0.587 0.114;...

0.5959 -0.2746 -0.3213;...

0.2115 -0.5227 0.3132];

%YCbCr

C = [0.299 0.587 0.114;...

-0.1687 -0.3313 0.5;...

0.5 -0.4187 -0.0813];

%wywołanie zad1a

ImYUV2 = zad1(ImRGB, H);

%zad1b

ImYCbCr = zad1(ImRGB, C);

%normalizacja do wyswietlenia

ImYUV2 = ImYUV2-min(ImYUV2(:));

ImYUV2 = ImYUV2/max(ImYUV2(:));

imshow(ImYUV2)

%zadanie 3

bwRGB = imread('A_RGB.bmp');

bwYcbCr = imread('A_YCbCr.bmp');

bwYUV = imread('A_YUV.bmp');

cRGB = zadanie3(bwRGB, bwYcbCr, bwYUV);

figure(4); imshow(uint8(cRGB));

%zadanie1 funkcja

function ImYUV = zad1 (ImRGB, H)

[y,x,pomoc] = size(ImRGB);%znalezienie rozmiaru

ImT = zeros(y,x);%obraz na którym wykonujemy czynności/na razie jest podwójnej precyji

%obraz wyjsciowy YUV w postaci zmiennoprzecinkowej

for i = 1:y

for j = 1:x %oddzielamy średnikiem żeby macierze można było od razu pomnożyć

%kanał 1 to czerwone, 2 zielone a 3 niebieskie

RGB = double([ImRGB(i,j,1);ImRGB(i,j,2);ImRGB(i,j,3)]);

YUV = H*RGB;

ImT(i,j,1:3) = [YUV(1) YUV(2) YUV(3)];

end

end

ImYUV = ImT;

end

%zadanie3 funkcja

function cRGB = zadanie3(bwRGB, bwYcbCr, bwYUV)

A = [1/3 1/3 1/3;...

file:///C:/Users/student/Desktop/tmp/html/lab1_skrypt.html 1/3
10.03.2022, 14:43 lab1_skrypt
0.299 0.587, 0.144;...

0.2126 0.7152 0.0722];

[y, x] = size(bwRGB);

cRGB = zeros(y,x,3);

for i = 1:x

for j = 1:y

b = double([bwRGB(j,i);bwYcbCr(j,i);bwYUV(j,i)]);

a = linsolve(A,b); a = a';

cRGB(j,i,1) = a(1);

cRGB(j,i,2) = a(2);

cRGB(j,i,3) = a(3);

end

end

end

file:///C:/Users/student/Desktop/tmp/html/lab1_skrypt.html 2/3
10.03.2022, 14:43 lab1_skrypt

Published with MATLAB® R2017a


file:///C:/Users/student/Desktop/tmp/html/lab1_skrypt.html 3/3

You might also like