5. Odstranění šumu a segmentace obrazu pomocí binární morfologie

Zadání

  1. Odstraňte šum pomocí operací opening a closing. Použijte funkce erode a dilate.
  2. Srovnejte výsledek s odstraněním šumu pomocí mediánové filtrace (použijte funkci medfilt2).
  3. Nalezněte horizontální pruhy pomocí operace opening s vhodně zvoleným strukturním elementem.
  4. Nalezněte vertikální pruhy pomocí operace opening s vhodně zvoleným strukturním elementem.
  5. Pomocí obrazů získaných v bodech 3 a 4 segmentujte vstupní (tj. původní) obraz na dva obrazy. Jeden s horizontálními pruhy, druhý s vertikálními pruhy.

Vyřešení

Pro zpracování předchozích úkolů jsem napsal program mor.m, který je standardním M-filem Matlabu.

Tento program načte vstupní obrázek segmorph.tif, na který aplikuje funkce opening a closing s vhodnými parametry, čímž odstraní šum salt and pepper. Tento šum následně odstraňuje i filtr median s velikostí 3x3. Pro segmentaci vodorovných pruhů jsem použil funkci opening a matici B=ones(1,100). Pro segmentaci svislých pruhů jsem použil opět matici B, ale inverzní.

% nacteni obrazku
im=double(imread('segmorph.tif'));
% zobrazeni poskozeneho obrazku
figure(1); imshow(im,[]);

% operace otevreni a uzavreni se zobrazenim obrazku
% s odstranenym sumem
b1=[1 0 1;0 1 0;1 0 1];
oim=opening(im,b1);
b2=ones(3);
cim=closing(oim,b2);
figure(2); imshow(cim,[]);

% odstraneni sumu pomoci filtru median (3x3)
med=medfilt2(im);
figure(3); imshow(med,[]);

% nalezeni svislych a vodorovnych pruhu
b3=ones(1,100);
vim=opening(cim,bh);
sim=opening(cim,bh');

% zobrazeni a ulozeni na disk
figure(4); imshow(vim,[]); imwrite(vim,'vodorovny.tif','tif');
figure(5); imshow(sim,[]); imwrite(sim,'svisly.tif','tif');

Funkce opening a closing jsou následující:

% OPENING(image)
%
% eroze nasledovana dilataci (skripta ZSO str. 184)
%

function [oim]=opening(im,b);
oim=dilate(erode(im,b),b);
% CLOSING(image)
%
% dilatace nasledovana erozi (skripta ZSO str. 185)
%

function [cim]=closing(im,b);
cim=erode(dilate(im,b),b);
původní obrázekpo operacích opening a closingfiltrace mediánem 3x3
original po operacich opening a closing po filtru median

Výsledkem jsou tyto dva obrázky (svisly.tif a vodorovny.tif), kde jsou odděleny svislé a vodorovné pruhy.

svisle pruhy vodorovne pruhy