155GIT1 / 10. cvičení: Porovnání verzí
Řádek 63: | Řádek 63: | ||
<source lang=octave> | <source lang=octave> | ||
% RGB na indexovaný | % RGB na indexovaný rastr | ||
[obr6_i, cmap6] = rgb2ind(obr6, 256); | [obr6_i, cmap6] = rgb2ind(obr6, 256); | ||
size(obr6) | size(obr6) | ||
size(obr6_i) | size(obr6_i) | ||
size(cmap6) | size(cmap6) | ||
% indexovaný na odstíny šedi | % indexovaný rastr na odstíny šedi | ||
obr5_g = ind2gray(obr5, cmap5); | obr5_g = ind2gray(obr5, cmap5); | ||
imshow(obr5, cmap5) | imshow(obr5, cmap5) | ||
figure() | figure() | ||
imshow(obr5_g) | imshow(obr5_g) | ||
% formalne existuji i funkce pro opacny prevod, napr. | |||
% odstíny šedi na indexovaný rastr | |||
[obr5_i, cmap5_i] = gray2ind(obr5_g); | |||
figure() | |||
imshow(obr5_i, cmap5_i) | |||
</source> | </source> | ||
Verze z 27. 4. 2016, 10:24
Obrazová data
Náplň cvičení
- načtení obrázku
imread(), imshow()
- základní informace
imfinfo()
- binary, indexed, greyscale a truecolor
- příkazy
image()
,imagesc()
, barevné schémacolormap()
- převod do odstínů šedi
rgb2ind -> ind2gray
- rozklad obrázku na jednotlivé vrstvy RGB
Ukázky
Načtení obrázku do matice
% načtení z URL
url1 = 'https://upload.wikimedia.org/wikipedia/commons/a/ae/Aristotle_Altemps_Inv8575.jpg';
obr1 = imread(url1);
size(obr1)
% zobrazení obrázku v grafickém okně
imshow(obr1)
% zobrazení metadat
imfinfo(url1)
Zobrazení matice jako obrázku
obr2 = rand(100, 100) * 255;
image(obr2)
% škálovat data, tak aby bylo využito célé barevné schéma
figure()
imagesc([0 50], [0 50], obr2)
% nastavit vlastní barevné schéma
colormap('gray')
Typy obrazových dat
% binární rastr
obr3 = round(rand(25, 25));
ob = imagesc(obr3) % vs. image()
colormap('gray')
% rastr v odstínech šedi
obr4 = imread('http://upload.wikimedia.org/wikipedia/commons/f/fa/Grayscale_8bits_palette_sample_image.png');
size(obr4)
% indexovaný rastr
obr5 = imread('http://upload.wikimedia.org/wikipedia/commons/7/7c/Adaptative_8bits_palette_sample_image.png');
size(obr5)
[obr5, cmap5] = imread('http://upload.wikimedia.org/wikipedia/commons/7/7c/Adaptative_8bits_palette_sample_image.png');
size(cmap5)
imshow(obr5)
imshow(obr5, cmap5)
% true color (RGB)
obr6 = imread('http://upload.wikimedia.org/wikipedia/commons/6/69/Truecolor.png');
size(obr6)
Konverze typů obrazových dat
% RGB na indexovaný rastr
[obr6_i, cmap6] = rgb2ind(obr6, 256);
size(obr6)
size(obr6_i)
size(cmap6)
% indexovaný rastr na odstíny šedi
obr5_g = ind2gray(obr5, cmap5);
imshow(obr5, cmap5)
figure()
imshow(obr5_g)
% formalne existuji i funkce pro opacny prevod, napr.
% odstíny šedi na indexovaný rastr
[obr5_i, cmap5_i] = gray2ind(obr5_g);
figure()
imshow(obr5_i, cmap5_i)
Rozklad na vrstvy RGB
size(obr6)
R = obr6;
G = obr6;
B = obr6;
size(R)
% vynulování
R(:,:,[2 3]) = 0;
G(:,:,[1 3]) = 0;
B(:,:,[1 2]) = 0;
% test
size(R)
R(1,:,1)
R(1,:,2)
R(1,:,3)
% vykreslení vrstev RGB
figure()
subplot(3,1,1)
imshow(R)
subplot(3,1,2)
imshow(G)
subplot(3,1,3)
imshow(B)
% převod do stupňů šedi
figure()
subplot(3,1,1)
imshow(mat2gray(R(:,:,1), [0, 255]))
subplot(3,1,2)
imshow(mat2gray(G(:,:,2), [0, 255]))
subplot(3,1,3)
imshow(mat2gray(B(:,:,3), [0, 255]))