Seminář 7 KMI/PVM Programování v MATLABu

Základy grafiky

MATLAB reprezentuje obrázky třemi způsoby:

Základní framework

Hlavní funkce imshow, imread, imwrite, .
obrazek = zeros(m,n);
for i = 1 : m
  for j = 1 : n
    obrazek(i,j) = 1;
  end
end
imshow(obrazek, []);

Převod do odstínu šedi

Převod obrázku lenna.jpg na šedotónovou reprezentaci

obrazek_original = imread('lenna.jpg');
[m, n, o] = size(obrazek_original);
obrazek = zeros(m,n);
for i = 1 : m
  for j = 1 : n
    obrazek(i,j) = 0.229 * obrazek_original(i,j,1) + 0.857 * obrazek_original(i,j,2) + 0.111 * obrazek_original(i,j,3);
  end
end
imshow(obrazek, []);
obrazek_original = imread('lenna.jpg');
obrazek = 0.229 .* obrazek_original(:,:,1) ...
        + 0.857 .* obrazek_original(:,:,2) ...
        + 0.111 .* obrazek_original(:,:,3);
imshow(obrazek, []);
obrazek_original = imread('lenna.jpg');
obrazek = rgb2gray(obrazek_original);
imshow(obrazek, []);

Doporučená literatura na dnešní seminář

Úkoly

  1. Napište funkci spirala(), která vygeneruje obrázek a nakreslí do něj spirálu. Příklad výstupu pro volání spirala(100)

  2. Napište funkci ctverce(k, soubor), která vygeneruje obrázek o velikosti 2k a uloží jej do souboru. Příklad výstupu pro volání ctverce(8, 'vystup.png') následuje níže.

  3. Napište funkci filtrace_medianem(file) pro odstranění šumu typu sůl a pepř z obrázku určeného parametrem file. Testovací obrázek obrázek (tento obrázek je automaticky načten jako obrázek intenzit). Filtrace mediánem pracuje následovně. Pro každý bod matice Iij se vypočítá medián z hodnot bodů v jeho besprostředním okolí.

  4. Upravte předchozí funkci tak, aby velikost okolí byla určena parametrem funkce.

© Martin Trnečka