Issuu on Google+

Sprawozdanie Techniki obrazowania medycznego Spotkanie 10, 26/05/2011 Daria Panek, Martyna Rumin Funkcje Matlaba: im2bw(I, level) - zamiana na obraz binarny, I to jest obrazek pierwotny, level – określa jak mają zostad zastąpione wszystkie piksele obrazu wejściowego powyżej poziomu luminancji o wartości 1 (biały) i zastępuje wszystkie inne piksele o wartości 0 ( czarny). Wartości level mogą mieścid się w granicach *0,1+. bwmorph( BW, operation) – stosowany w operacjach morfologicznych, tworzenie binarnego obrazu BW. Bwhitmiss (BW, SE1, SE2) - wykonuje działanie zdefiniowanych przez elementy struktury SE1, SE2. Piksele, które mają kształt mieszczący się w granicach SE1 zostają zachowane wówczas gdy nie pasują do granic SE2. Elementy SE1 i SE2 nie powinny mied żadnych elementów zachodzących na siebie. imerode (IM, SE) – funkcja usuwająca drobne wypustki i nierówności występujące na brzegach obiektów. Można ją traktowad jako filtr minimalny, czyli operator, który każdemu punktowi przypisuje minimum z wartości sąsiadów. Operacja zwana erozją. Pojęcie to, można rozszerzyd na obrazy posiadające wiele stopni szarości, a nawet kolorowe. Jest to zbiór punktów centralnych wszystkich elementów strukturalnych, które w całości mieszczą się we wnętrzu obszaru X. W implementacji komputerowej erozja jednostkowa polega na usunięciu tych wszystkich punktów obrazu o wartości 1, które posiadają chod jednego sąsiada o wartości 0.

Imdilate (IM, SE) – operacja dylacji, zakłada, że istnieje nieregularny obszar na obrazie X i koło B o promieniu r, które będzie elementem strukturalnym. Wówczas figura po dylatacji jest zbiorem środków wszystkich kół B, dla których chod jeden punkt pokrywa się z jakimkolwiek punktem figury właściwej. Można definiowad ją jako filtr maksymalny.

Strel (shape, parameters) - tworzy element strukturalny o określonym kształcie.

Imclose (IM, SE) – operacja zamknięcia morfologicznego. Zamknięcie = dylacja + erozja. Wypełnia wąskie wcięcia i zatoki, dobre otwory wewnątrz obiektu, nie zmienia wielkości zasadniczej części. Może połączyd leżące blisko siebie obiekty. Imopen (IM, SE) – operacja otwarcia morfologicznego. Otwarcie = erozja +dylacja. Otwarcie usuwa drobne obiekty, drobne szczegóły, jak półwyspy i wypustki, nie zmieniając wielkości zasadniczej figury. Istnieje możliwośd rozłączenia niektórych obiektów z przewężeniami. Imtophat (IM, SE) - wykonuje filtrowanie morfologiczne top- hat obrazu IM. Top- hat oblicza morfologiczne otwarcie obrazu ( przy użyciu funkcji Imogen), a następnie odejmuje wynik z oryginalnego obrazu. Imtophat wykorzystuje elementy struktury SE. Operacja morfologiczna górny-kapelusz. Funkcja zwraca róznice pomiedzy obrazem, a jego otwarciem.


Imbothat (IM, SE) wykonuje filtrowanie morfologiczne bottom- hat obrazu IM. Operacja morfologiczna dolny-kapelusz, polega na odjęciu od zamknięcia obrazu samego obrazu. Jest uogólnioną formą dla obrazów monochromatycznych. fspecial (‘type’, parametry opcjonalne) – funkcja służąca do filtracji poprawiającej obraz.

M-pliki 1). W pliku ‘morfo_demo_1.m’ mogliśmy zaobserwować efekt działania erozji i zjawisko otwarcia. O to efekt :

Widzimy, że erozja powoduje tak zwane usuwanie drobnych wypustek i nierówności na brzegach obiektów. Na wynik erozji ma wpływ nie tylko rozmiar elementu strukturalnego- ES, co widad na obrazku ‘ erozja 1x przy dużym ES’, a także ile razy będzie ona wykonana. Wielokrotną erozje widad na obrazku ‘ Po erozji 5x’ , gdzie bez problemu możemy zaobserwowad jak dużo oryginalnego obrazu zostało usunięte.


Jeśli chodzi o zjawisko otwarcia ( czyli, erozję + dylatację) to widzimy znaczną różnice między otwarciem przez użycie funkcji bwmorph a ręcznym wykonaniem . Podstawowa różnica to wielkośd- ES czyli elementu strukturalnego .  BW2 = bwmorph(obraz ,’operation’)=> gdzie w naszym przypadku : P1otw2=bwmorph(P,'open'); Wartość ES ma wartość domyślną jako macierz jedynek 3x3 (ones(3,3)).  W otwarciu ręcznym ustawiamy ręcznie wartości o jakie należy edytowad obrazek, wartości filtracji morfologicznej. Dzięki temu możemy efektywniej stymulowad jakie obiektu mają zniknąd, a jakie mają pozostad. W funkcji tej używamy początkowo filtracji morfologicznej o elemencie strukturalnym ES, następnie definiujemy parametr ES2 jako odwrotnośd kwadratu ES. W koocowym etapie na obiekt, który przeszedł erozję z elementem strukturalnym ES poddajemy następnej filtracji używając tym razem parametru ES2. P1otw=morf1(P1er,ES2inv,1,0); => gdzie w naszym przypadku: P1er – to obraz powstały po pierwszej filtracji z elementem strukturalnym ES ES2inv- to element strukturalny będący odwrotnością kwadratu parametru ES 1 – oznacza jakiego koloru będzie nasz obiekt, piksel o szarości większej od tła 0 – oznacza jakiego koloru będzie tło ‘piksel zgaszony’ 2).Plik ‘morfo_demo_2.m’ . Zjawisko ścieniania.

Operacja ścinania polega na ‘ściągnięciu’ warstwy wierzchniej obiektu. W procesie tym wartość punktu nie zmienia sie, gdy ES nie pokrywa sie z jego sąsiedztwem lub zmienia jego wartość na zero, gdy ES pasuje do sąsiedztwa rozpatrywanego punktu.


Efekty pliku:

Rys 1. Efekt pliku morfo_demo_2.m Różnica między efektami a i b związana jest z rodzajem ścieniania. Mamy do czynienia z:

W ścienianiu z obracaniem, ES jest przy pomocy funkcji imrotate obrócenie w lewą stronę.

obracane o 90˚. Nastąpiło 3 krotne

ESth_2=ones(3,3); ESth_2(1,1)=2; P_thin_2=morf1(P,ESth_2,0,3); ESth_2=imrotate(ESth_2,90); P_thin_2=morf1(P_thin_2,ESth_2,0,3); ESth_2=imrotate(ESth_2,90); P_thin_2=morf1(P_thin_2,ESth_2,0,3); ESth_2=imrotate(ESth_2,90); P_thin_2=morf1(P_thin_2,ESth_2,0,3); Ścinanie może być przeprowadzane także przez funkcję bwmorph z parametrem ’thin’: P_szk_3=bwmorph(P,'thin',K); Im większe będzie K tym większy będzie efekt ścinania


K=1;

K=2;

K=3;

3). Plik ‘morfo_demo_3.m’ . Porównanie trzech metod szkieletyzacji. Szkielet figury to zbiór punktów równoodległych od przynajmniej dwóch punktów należących do tej figury. Szkielet figury można wyznaczyd stosując operacje ścinania.

Rys.2 Efekty pliku morfo_demo_3.m


Na rys 2. a i b szkieletyzacja przebiega zgodnie z powyższym schematem. a). Przy szkieletyzacji z pojedynczym ES mieliśmy do czynienia z 4 krotnym obrotem obracanie ( o kąt 90 ˚ za pomocą funkcji imrotate) , a następnie czynnośd została powtórzona 8 razy. ESszk_1=[2,0,2;2,1,2;1,1,1]; P_szk_1=P; for k=1:8; P_szk_1=morf1(P_szk_1,ESszk_1,0,3); ESszk_1=imrotate(ESszk_1,90); P_szk_1=morf1(P_szk_1,ESszk_1,0,3); ESszk_1=imrotate(ESszk_1,90); P_szk_1=morf1(P_szk_1,ESszk_1,0,3); ESszk_1=imrotate(ESszk_1,90); P_szk_1=morf1(P_szk_1,ESszk_1,0,3); end;

b). W przypadku szkieletyzacji z obracaniem z podwójnym ES mieliśmy 4 krotne obracanie , a potem jeszcze całą procedurę powtarzaliśmy 6-krotnie. ESszk_2a=[1,1,1;2,1,2;0,0,0]; ESszk_2b=[1,2,1;2,1,2;0,0,0]; P_szk_2=P; for k=1:6; P_szk_2=morf1(P_szk_2,ESszk_2a,0,3); P_szk_2=morf1(P_szk_2,ESszk_2b,0,3); ESszk_2a=imrotate(ESszk_2a,90); ESszk_2b=imrotate(ESszk_2b,90); P_szk_2=morf1(P_szk_2,ESszk_2a,0,3); P_szk_2=morf1(P_szk_2,ESszk_2b,0,3); ESszk_2a=imrotate(ESszk_2a,90); ESszk_2b=imrotate(ESszk_2b,90); P_szk_2=morf1(P_szk_2,ESszk_2a,0,3); P_szk_2=morf1(P_szk_2,ESszk_2b,0,3); ESszk_2a=imrotate(ESszk_2a,90); ESszk_2b=imrotate(ESszk_2b,90); P_szk_2=morf1(P_szk_2,ESszk_2a,0,3); P_szk_2=morf1(P_szk_2,ESszk_2b,0,3); Szkieletyzację można wykonad przy użyciu funkcji: bwmorph(obraz, ’skel’); W zależności od wartości K, efekt szkieletyzacji jest inny, podobnie jak w ścienianiu im większe będzie K tym nasz obiekt będzie miał węższe krawędzie. K=1;

K=3;

K=5;


4). Plik ‘morfo_demo_4.m’. Przykład operacji „top-hat”.

Początkowo zmieniamy obrazek, na zapis binarny. Używamy do tego funkcji: Pbw=im2bw(P,T);  gdzie P- wczytany obrazek, typu double T- to poziom, który definiujemy, ile pikseli ma zostad zamienionych. Wartośd ta ma mieścid się pomiędzy 01.

Obraz oryginalny

Obraz po binaryzacji

Następnie ściągamy warstwę wierzchnią naszego obiektu, czyli realizujemy proces ścinania metodą tophat. Powoduje nam to, że na obrazuje zostają jedynie uwypuklone szczegóły obrazu. Pbw_tophat=bwmorph(Pbw,'tophat');

Funkcja tophat zwraca nam obraz, od którego została odjęta filtracja morfologiczna otwarcia obrazu ( erozji, a następnie dylacji). Pbw_bothat=bwmorph(Pbw,'bothat');


Funkcja Botha zwraca nam obraz, od którego została odjęta filtracja morfologiczna zamknięcia oryginalnego obrazu (dylacja, a nastpnie erozja). Przekrój 3D przez obrazek wczytujemy funkcja: mesh(P); Dzięki temu uzyskujemy:

Dla wersji monochromatycznej: IM=double(imread('obrazek.jpg'))/255; IM=rgb2gray(IM); figure(2);imshow(IM); ES1=ones(3,3); IM2= imtophat(IM, ES1); figure(1); subplot(1,2,1); imshow(IM2); title('imtophat'); IM3= imbothat(IM, ES1); figure(1); subplot(1,2,2); imshow(IM3); title('imbothat');

Wczytany obrazek:

Wersja monochromatyczna:

axis tight ij;.


Imtophat:

Imbothat:

Filtr minimum/maximum użyty za pomocą funkcji ordfilt2 ,gdzie: B = ordfilt2(A, order, domain), oznacza, że elementy obrazu A zostają uporządkowane przez funkcję order po przez zestaw elementów znajdujących się w domenie, która realizuje również filtr medianowy. ES1=ones(3,3); P=ceil(max(IM(: ))); P2=ceil(min(IM(: ))); B = ordfilt2(IM,P,ES1); C=ordifilt2(IM,P2,ES2); figure(1); subplot(1,2,1);imshow(B); title('Po zastosowaniu filtru max'); subplot(1,2,2);imshow(C); title('Po zastosowaniu filtru min');

Obraz oryginalny

Po zastosowaniu filtru max

Zastosowanie funkcji imerode & imdilate: ES1=ones(3,3); A=imerode(IM, ES1); subplot(1,2,1);imshow(A); title('imerode'); B=imdilate(IM, ES1); subplot(1,2,2);imshow(B); title('imdilate');

Po zastosowaniu filtru min


‘imerode’

‘imdilate’

Funkcje imopen/imclose: A=imclose(IM, ES1); subplot(1,2,1);imshow(A); title('imclose'); B=imopen(IM, ES1); subplot(1,2,2);imshow(B); title('imopen');

Imopen

imclose


Sprawozdanie morfologia