155GIT1 / 10. cvičení: Porovnání verzí

Z GeoWikiCZ
Řádek 57: Řádek 57:
* obrázek ve stupních šedi: [http://upload.wikimedia.org/wikipedia/commons/f/fa/Grayscale_8bits_palette_sample_image.png příklad]
* obrázek ve stupních šedi: [http://upload.wikimedia.org/wikipedia/commons/f/fa/Grayscale_8bits_palette_sample_image.png příklad]
* indexovaný obrázek: [http://upload.wikimedia.org/wikipedia/commons/7/7c/Adaptative_8bits_palette_sample_image.png příklad]
* indexovaný obrázek: [http://upload.wikimedia.org/wikipedia/commons/7/7c/Adaptative_8bits_palette_sample_image.png příklad]
* RGB-obrázek: [https://upload.wikimedia.org/wikipedia/commons/0/0f/32_bit.png příklad]
* RGB-obrázek: [https://en.wikipedia.org/wiki/File:RGB_24bits_palette_sample_image.jpg#/media/File:Parrot.red.macaw.1.arp.750pix.jpg příklad]
<source lang=octave>
<source lang=octave>
% binární rastr
% binární rastr

Verze z 24. 4. 2019, 07:54

Obrazová data

Náplň cvičení

  1. načtení obrazových dat imread(), imshow()
  2. základní informace imfinfo()
  3. binary, indexed, grayscale a truecolor
  4. příkazy image(), imagesc(), barevné schéma colormap()
  5. převod do odstínů šedi rgb2ind -> ind2gray
  6. rozklad obrázku na jednotlivé vrstvy RGB

Ukázky

Načtení obrázku do matice

Data: https://upload.wikimedia.org/wikipedia/commons/a/ae/Aristotle_Altemps_Inv8575.jpg

% načtení z URL
jmeno1 = 'Aristotle_Altemps_Inv8575.jpg';
obr1 = imread(jmeno1);
size(obr1)
% zobrazení obrázku v grafickém okně
imshow(obr1)
% zobrazení metadat
imfinfo(jmeno1)

Poznámka: Matlab i novější verze Octave umí číst data i přes protokol HTTP/HTTPS:

url1 = 'https://upload.wikimedia.org/wikipedia/commons/a/ae/Aristotle_Altemps_Inv8575.jpg';
obr1 = imread(url1);

Zobrazení matice jako obrázku

obr2 = rand(100, 100) * 255;
image(obr2)
colormap('gray')

% škálovat data tak, aby bylo využito celé barevné schéma
figure()
imagesc(obr2)
colormap('gray')

figure()
imagesc([0 50], [0 50], obr2)
colormap('gray')

Typy obrazových dat

Jednotlivé obrázky ke stažení do pracovního adresáře z následujících url:

% binární rastr
obr3 = round(rand(25, 25));
ob = imagesc(obr3) % vs. image(), viz níže
% obr3_1 = 255 * round(rand(25, 25));
% image(obr3)
% image(obr3_1)
colormap('gray')
% rastr v odstínech šedi
jmeno4 = 'Grayscale_8bits_palette_sample_image.png';
obr4 = imread(jmeno4);
size(obr4)
% indexovaný rastr
jmeno5 = 'Adaptative_8bits_palette_sample_image.png';
obr5 = imread(jmeno5);
size(obr5)
[obr5, cmap5] = imread(jmeno5);
size(cmap5)
imshow(obr5)
imshow(obr5, cmap5)
% true color (RGB)
jmeno6 = '32_bit.png';
obr6 = imread(jmeno6);
size(obr6)
imshow(obr6)

Konverze typů obrazových dat

% RGB na indexovaný rastr
% Matlab
[obr6_i, cmap6] = rgb2ind(obr6, 256);
% Octave
[obr6_i, cmap6] = rgb2ind(obr6);
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]))

Poznámka pro Octave: Funkce mat2gray je součástí balíčku "image", který lze doinstalovat příkazem: pkg install image.